From e34027ea58e075f1a4b3a667d9f063ed20bd23bf Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 26 Oct 2023 19:01:25 +0300 Subject: [PATCH 001/461] unified tx syntax - prototype --- .../contract_base/wrappers/send_wrapper.rs | 6 + .../src/types/interaction/function_call.rs | 21 +- framework/base/src/types/interaction/mod.rs | 12 + framework/base/src/types/interaction/tx.rs | 327 ++++++++++++++++++ .../base/src/types/interaction/tx_data.rs | 38 ++ .../base/src/types/interaction/tx_from.rs | 26 ++ .../base/src/types/interaction/tx_gas.rs | 7 + .../types/interaction/tx_normalize_call.rs | 91 +++++ .../base/src/types/interaction/tx_payment.rs | 209 +++++++++++ framework/base/src/types/interaction/tx_to.rs | 18 + .../wrapped/egld_or_esdt_token_identifier.rs | 2 +- .../wrapped/egld_or_esdt_token_payment.rs | 23 ++ .../src/types/managed/wrapped/egld_payment.rs | 30 ++ .../types/managed/wrapped/managed_option.rs | 15 +- .../base/src/types/managed/wrapped/mod.rs | 2 + 15 files changed, 809 insertions(+), 18 deletions(-) create mode 100644 framework/base/src/types/interaction/tx.rs create mode 100644 framework/base/src/types/interaction/tx_data.rs create mode 100644 framework/base/src/types/interaction/tx_from.rs create mode 100644 framework/base/src/types/interaction/tx_gas.rs create mode 100644 framework/base/src/types/interaction/tx_normalize_call.rs create mode 100644 framework/base/src/types/interaction/tx_payment.rs create mode 100644 framework/base/src/types/interaction/tx_to.rs create mode 100644 framework/base/src/types/managed/wrapped/egld_payment.rs diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index 78f4f045d6..aa7ae5c653 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -15,6 +15,7 @@ use crate::{ types::{ BigUint, ContractCall, ContractCallNoPayment, EgldOrEsdtTokenIdentifier, EsdtTokenPayment, ManagedAddress, ManagedArgBuffer, ManagedBuffer, ManagedType, ManagedVec, TokenIdentifier, + TxBase, }, }; @@ -70,6 +71,11 @@ where ContractCallNoPayment::new(to, endpoint_name) } + #[inline] + pub fn tx(&self) -> TxBase { + TxBase::new() + } + /// Sends EGLD to a given address, directly. /// Used especially for sending EGLD to regular accounts. #[inline] diff --git a/framework/base/src/types/interaction/function_call.rs b/framework/base/src/types/interaction/function_call.rs index a2140f14fa..ae12687b26 100644 --- a/framework/base/src/types/interaction/function_call.rs +++ b/framework/base/src/types/interaction/function_call.rs @@ -9,11 +9,7 @@ use crate::{ ManagedTypeApi, ESDT_MULTI_TRANSFER_FUNC_NAME, ESDT_NFT_TRANSFER_FUNC_NAME, ESDT_TRANSFER_FUNC_NAME, }, - formatter::SCLowerHex, - types::{ - EsdtTokenPayment, ManagedAddress, ManagedBuffer, ManagedBufferCachedBuilder, ManagedVec, - MultiValueEncoded, - }, + types::{EsdtTokenPayment, ManagedAddress, ManagedBuffer, ManagedVec, MultiValueEncoded}, }; use super::ManagedArgBuffer; @@ -62,15 +58,14 @@ where self.arg_buffer.push_multi_arg(arg); self } +} - pub fn to_call_data_string(&self) -> ManagedBuffer { - let mut result = ManagedBufferCachedBuilder::default(); - result.append_managed_buffer(&self.function_name); - for arg in self.arg_buffer.raw_arg_iter() { - result.append_bytes(b"@"); - SCLowerHex::fmt(&*arg, &mut result); - } - result.into_managed_buffer() +impl From<()> for FunctionCall +where + Api: ManagedTypeApi, +{ + fn from(_: ()) -> Self { + FunctionCall::empty() } } diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index 3de007ee79..8efeba7b03 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -14,6 +14,12 @@ mod contract_call_with_multi_esdt; mod contract_deploy; mod function_call; mod managed_arg_buffer; +mod tx; +mod tx_data; +mod tx_from; +mod tx_gas; +mod tx_payment; +mod tx_to; pub use async_call::AsyncCall; pub use async_call_promises::AsyncCallPromises; @@ -31,3 +37,9 @@ pub use contract_call_with_multi_esdt::ContractCallWithMultiEsdt; pub use contract_deploy::{new_contract_deploy, ContractDeploy}; pub use function_call::FunctionCall; pub use managed_arg_buffer::ManagedArgBuffer; +pub use tx::*; +pub use tx_data::*; +pub use tx_from::*; +pub use tx_gas::*; +pub use tx_payment::*; +pub use tx_to::*; diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs new file mode 100644 index 0000000000..7b1da10187 --- /dev/null +++ b/framework/base/src/types/interaction/tx.rs @@ -0,0 +1,327 @@ +use core::marker::PhantomData; + +use multiversx_sc_codec::TopEncodeMulti; + +use crate::{ + api::CallTypeApi, + types::{ + BigUint, EgldPayment, EsdtTokenPayment, ManagedAddress, ManagedBuffer, ManagedVec, + MultiEsdtPayment, + }, +}; + +use super::{AsyncCall, ExplicitGas, FunctionCall, TxData, TxFrom, TxGas, TxPayment, TxTo}; + +pub struct Tx +where + Api: CallTypeApi + 'static, + From: TxFrom, + To: TxTo, + Payment: TxPayment, + Gas: TxGas, + Data: TxData, +{ + pub(super) _phantom: PhantomData, + pub from: From, + pub to: To, + pub payment: Payment, + pub gas: Gas, + pub data: Data, +} + +impl Tx +where + Api: CallTypeApi + 'static, + From: TxFrom, + To: TxTo, + Payment: TxPayment, + Gas: TxGas, + Data: TxData, +{ + #[inline] + pub fn nothing(self) -> Tx { + Tx { + _phantom: PhantomData, + from: self.from, + to: self.to, + payment: self.payment, + gas: self.gas, + data: self.data, + } + } +} + +pub type TxBase = Tx; + +impl TxBase +where + Api: CallTypeApi + 'static, +{ + #[inline] + pub fn new() -> Self { + Tx { + _phantom: PhantomData, + from: (), + to: (), + payment: (), + gas: (), + data: (), + } + } +} + +impl Tx +where + Api: CallTypeApi + 'static, + To: TxTo, + Payment: TxPayment, + Gas: TxGas, + Data: TxData, +{ + #[inline] + pub fn from(self, from: From) -> Tx + where + From: TxFrom, + { + Tx { + _phantom: PhantomData, + from, + to: self.to, + payment: self.payment, + gas: self.gas, + data: self.data, + } + } +} + +impl Tx +where + Api: CallTypeApi + 'static, + From: TxFrom, + Payment: TxPayment, + Gas: TxGas, + Data: TxData, +{ + #[inline] + pub fn to(self, to: To) -> Tx + where + To: TxTo, + { + Tx { + _phantom: PhantomData, + from: self.from, + to, + payment: self.payment, + gas: self.gas, + data: self.data, + } + } +} + +impl Tx +where + Api: CallTypeApi + 'static, + From: TxFrom, + To: TxTo, + Gas: TxGas, + Data: TxData, +{ + #[inline] + pub fn with_egld_transfer( + self, + egld_amount: BigUint, + ) -> Tx, Gas, Data> { + Tx { + _phantom: PhantomData, + from: self.from, + to: self.to, + payment: EgldPayment { value: egld_amount }, + gas: self.gas, + data: self.data, + } + } +} + +impl Tx +where + Api: CallTypeApi + 'static, + From: TxFrom, + To: TxTo, + Gas: TxGas, + Data: TxData, +{ + /// Adds a single ESDT token transfer to a contract call. + /// + /// Can be called multiple times on the same call. + #[inline] + pub fn with_esdt_transfer>>( + self, + payment: P, + ) -> Tx, Gas, Data> { + let mut payments = ManagedVec::new(); + payments.push(payment.into()); + Tx { + _phantom: PhantomData, + from: self.from, + to: self.to, + payment: payments, + gas: self.gas, + data: self.data, + } + } +} + +impl Tx, Gas, Data> +where + Api: CallTypeApi + 'static, + From: TxFrom, + To: TxTo, + Gas: TxGas, + Data: TxData, +{ + /// Adds a single ESDT token transfer to a contract call. + /// + /// Can be called multiple times on the same call. + #[inline] + pub fn with_esdt_transfer>>( + mut self, + payment: P, + ) -> Tx, Gas, Data> { + self.payment.push(payment.into()); + self + } +} + +impl Tx +where + Api: CallTypeApi + 'static, + From: TxFrom, + To: TxTo, + Payment: TxPayment, + Data: TxData, +{ + /// Sets an explicit gas limit to the call. + #[inline] + pub fn with_gas_limit(self, gas_limit: u64) -> Tx { + Tx { + _phantom: PhantomData, + from: self.from, + to: self.to, + payment: self.payment, + gas: ExplicitGas(gas_limit), + data: self.data, + } + } +} + +impl Tx +where + Api: CallTypeApi + 'static, + From: TxFrom, + To: TxTo, + Payment: TxPayment, + Gas: TxGas, +{ + #[inline] + pub fn call>>( + self, + call: F, + ) -> Tx> { + Tx { + _phantom: PhantomData, + from: self.from, + to: self.to, + payment: self.payment, + gas: self.gas, + data: call.into(), + } + } + + #[inline] + pub fn function_name>>( + self, + function_name: N, + ) -> Tx> { + Tx { + _phantom: PhantomData, + from: self.from, + to: self.to, + payment: self.payment, + gas: self.gas, + data: FunctionCall::new(function_name), + } + } +} + +impl Tx> +where + Api: CallTypeApi + 'static, + From: TxFrom, + To: TxTo, + Payment: TxPayment, + Gas: TxGas, +{ + #[inline] + pub fn argument(mut self, arg: &T) -> Self { + self.data = self.data.argument(arg); + self + } +} + +impl Tx, Payment, Gas, FunctionCall> +where + Api: CallTypeApi + 'static, + From: TxFrom, + Payment: TxPayment, + Gas: TxGas, +{ + pub fn normalize_tx( + self, + ) -> Tx, EgldPayment, Gas, FunctionCall> { + let result = self.payment.convert_tx_data(&self.from, self.to, self.data); + Tx { + _phantom: PhantomData, + from: self.from, + to: result.to, + payment: result.egld_payment, + gas: self.gas, + data: result.fc, + } + } +} + +impl Tx, Payment, (), FunctionCall> +where + Api: CallTypeApi + 'static, + Payment: TxPayment, +{ + pub fn async_call(self) -> AsyncCall { + let normalized = self.normalize_tx(); + AsyncCall { + to: normalized.to, + egld_payment: normalized.payment.value, + function_call: normalized.data, + callback_call: None, + } + } +} + +impl Tx, Payment, ExplicitGas, FunctionCall> +where + Api: CallTypeApi + 'static, + Payment: TxPayment, +{ + #[cfg(feature = "promises")] + pub fn async_call_promise(self) -> super::AsyncCallPromises { + let explicit_gas_limit = self.gas.0; + let normalized = self.normalize_tx(); + super::AsyncCallPromises { + to: normalized.to, + egld_payment: normalized.payment.value, + function_call: normalized.data, + explicit_gas_limit, + extra_gas_for_callback: 0, + callback_call: None, + } + } +} diff --git a/framework/base/src/types/interaction/tx_data.rs b/framework/base/src/types/interaction/tx_data.rs new file mode 100644 index 0000000000..440cdbdcb3 --- /dev/null +++ b/framework/base/src/types/interaction/tx_data.rs @@ -0,0 +1,38 @@ +use crate::{ + api::ManagedTypeApi, + formatter::SCLowerHex, + types::{ManagedBuffer, ManagedBufferCachedBuilder}, +}; + +use super::FunctionCall; + +pub trait TxData +where + Api: ManagedTypeApi, +{ + fn to_call_data_string(&self) -> ManagedBuffer; +} + +impl TxData for () +where + Api: ManagedTypeApi, +{ + fn to_call_data_string(&self) -> ManagedBuffer { + ManagedBuffer::new() + } +} + +impl TxData for FunctionCall +where + Api: ManagedTypeApi, +{ + fn to_call_data_string(&self) -> ManagedBuffer { + let mut result = ManagedBufferCachedBuilder::default(); + result.append_managed_buffer(&self.function_name); + for arg in self.arg_buffer.raw_arg_iter() { + result.append_bytes(b"@"); + SCLowerHex::fmt(&*arg, &mut result); + } + result.into_managed_buffer() + } +} diff --git a/framework/base/src/types/interaction/tx_from.rs b/framework/base/src/types/interaction/tx_from.rs new file mode 100644 index 0000000000..984f537ad1 --- /dev/null +++ b/framework/base/src/types/interaction/tx_from.rs @@ -0,0 +1,26 @@ +use crate::{api::CallTypeApi, contract_base::BlockchainWrapper, types::ManagedAddress}; + +pub trait TxFrom +where + Api: CallTypeApi, +{ + fn to_address(&self) -> ManagedAddress; +} + +impl TxFrom for () +where + Api: CallTypeApi, +{ + fn to_address(&self) -> ManagedAddress { + BlockchainWrapper::::new().get_sc_address() + } +} + +impl TxFrom for ManagedAddress +where + Api: CallTypeApi, +{ + fn to_address(&self) -> ManagedAddress { + self.clone() + } +} diff --git a/framework/base/src/types/interaction/tx_gas.rs b/framework/base/src/types/interaction/tx_gas.rs new file mode 100644 index 0000000000..475a15d1bf --- /dev/null +++ b/framework/base/src/types/interaction/tx_gas.rs @@ -0,0 +1,7 @@ +pub trait TxGas {} + +impl TxGas for () {} + +pub struct ExplicitGas(pub u64); + +impl TxGas for ExplicitGas {} diff --git a/framework/base/src/types/interaction/tx_normalize_call.rs b/framework/base/src/types/interaction/tx_normalize_call.rs new file mode 100644 index 0000000000..8a9cfb4fde --- /dev/null +++ b/framework/base/src/types/interaction/tx_normalize_call.rs @@ -0,0 +1,91 @@ +use core::marker::PhantomData; + +use crate::{ + api::CallTypeApi, + types::{BigUint, EgldPayment, ManagedAddress}, +}; + +use super::{AsyncCall, FunctionCall, Tx, TxData, TxFrom, TxGas}; + +/// Encodes +pub type NormalizedTx = + Tx, EgldPayment, Gas, FunctionCall>; + +pub trait TxNormalizeCall +where + Api: CallTypeApi + 'static, + From: TxFrom, + Gas: TxGas, +{ + fn normalize_call(self) -> NormalizedTx; +} + +impl TxNormalizeCall + for Tx, (), Gas, Call> +where + Api: CallTypeApi + 'static, + From: TxFrom, + Gas: TxGas, + Call: TxData + Into>, +{ + fn normalize_call(self) -> NormalizedTx { + Tx { + _phantom: PhantomData, + from: self.from, + to: self.to, + payment: EgldPayment { + value: BigUint::zero(), + }, + gas: self.gas, + data: self.data.into(), + } + } +} + +impl TxNormalizeCall + for Tx, EgldPayment, Gas, Call> +where + Api: CallTypeApi + 'static, + From: TxFrom, + Gas: TxGas, + Call: TxData + Into>, +{ + fn normalize_call(self) -> NormalizedTx { + Tx { + _phantom: PhantomData, + from: self.from, + to: self.to, + payment: self.payment, + gas: self.gas, + data: self.data.into(), + } + } +} + +impl NormalizedTx +where + Api: CallTypeApi + 'static, + From: TxFrom, + Gas: TxGas, +{ + fn async_call(self) -> AsyncCall { + AsyncCall { + to: self.to, + egld_payment: self.payment.value, + function_call: self.data, + callback_call: None, + } + } + + // #[cfg(feature = "promises")] + // fn async_call_promise(self) -> super::AsyncCallPromises { + // super::AsyncCallPromises { + // to: self.basic.to, + // egld_payment: self.egld_payment, + // function_call: self.basic.function_call, + // explicit_gas_limit: self.basic.explicit_gas_limit, + // extra_gas_for_callback: 0, + // callback_call: None, + // } + // } +} diff --git a/framework/base/src/types/interaction/tx_payment.rs b/framework/base/src/types/interaction/tx_payment.rs new file mode 100644 index 0000000000..e36d43cfc5 --- /dev/null +++ b/framework/base/src/types/interaction/tx_payment.rs @@ -0,0 +1,209 @@ +use crate::{ + api::{CallTypeApi, ManagedTypeApi}, + types::{ + EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EgldPayment, EsdtTokenPayment, + ManagedAddress, MultiEsdtPayment, + }, +}; + +use super::{FunctionCall, TxFrom}; + +/// Temporary structure for returning a normalized transfer. +pub struct PaymentConversionResult +where + Api: ManagedTypeApi, +{ + pub to: ManagedAddress, + pub egld_payment: EgldPayment, + pub fc: FunctionCall, +} + +pub trait TxPayment +where + Api: CallTypeApi, +{ + fn convert_tx_data( + self, + from: &From, + to: ManagedAddress, + fc: FunctionCall, + ) -> PaymentConversionResult + where + From: TxFrom; +} + +impl TxPayment for () +where + Api: CallTypeApi, +{ + fn convert_tx_data( + self, + _from: &From, + to: ManagedAddress, + fc: FunctionCall, + ) -> PaymentConversionResult + where + From: TxFrom, + { + PaymentConversionResult { + to, + egld_payment: EgldPayment::no_payment(), + fc, + } + } +} + +impl TxPayment for EgldPayment +where + Api: CallTypeApi, +{ + fn convert_tx_data( + self, + _from: &From, + to: ManagedAddress, + fc: FunctionCall, + ) -> PaymentConversionResult + where + From: TxFrom, + { + PaymentConversionResult { + to, + egld_payment: self, + fc, + } + } +} + +impl TxPayment for EsdtTokenPayment +where + Api: CallTypeApi, +{ + fn convert_tx_data( + self, + from: &From, + to: ManagedAddress, + fc: FunctionCall, + ) -> PaymentConversionResult + where + From: TxFrom, + { + if self.token_nonce == 0 { + convert_tx_data_fungible(self, to, fc) + } else { + convert_tx_data_nft(self, from.to_address(), to, fc) + } + } +} + +impl TxPayment for MultiEsdtPayment +where + Api: CallTypeApi, +{ + fn convert_tx_data( + self, + from: &From, + to: ManagedAddress, + fc: FunctionCall, + ) -> PaymentConversionResult + where + From: TxFrom, + { + match self.len() { + 0 => ().convert_tx_data(from, to, fc), + 1 => self.get(0).convert_tx_data(from, to, fc), + _ => convert_tx_data_multi(self, from.to_address(), to, fc), + } + } +} + +impl TxPayment for EgldOrEsdtTokenPayment +where + Api: CallTypeApi, +{ + fn convert_tx_data( + self, + from: &From, + to: ManagedAddress, + fc: FunctionCall, + ) -> PaymentConversionResult + where + From: TxFrom, + { + self.map_egld_or_esdt( + (to, fc), + |(to, fc), amount| EgldPayment::from(amount).convert_tx_data(from, to, fc), + |(to, fc), esdt_payment| esdt_payment.convert_tx_data(from, to, fc), + ) + } +} + +impl TxPayment for EgldOrMultiEsdtPayment +where + Api: CallTypeApi, +{ + fn convert_tx_data( + self, + from: &From, + to: ManagedAddress, + fc: FunctionCall, + ) -> PaymentConversionResult + where + From: TxFrom, + { + match self { + EgldOrMultiEsdtPayment::Egld(egld_amount) => { + EgldPayment::from(egld_amount).convert_tx_data(from, to, fc) + }, + EgldOrMultiEsdtPayment::MultiEsdt(multi_esdt_payment) => { + multi_esdt_payment.convert_tx_data(from, to, fc) + }, + } + } +} + +fn convert_tx_data_fungible( + payment: EsdtTokenPayment, + to: ManagedAddress, + fc: FunctionCall, +) -> PaymentConversionResult +where + Api: ManagedTypeApi, +{ + PaymentConversionResult { + to, + egld_payment: EgldPayment::no_payment(), + fc: fc.convert_to_single_transfer_fungible_call(payment), + } +} + +fn convert_tx_data_nft( + payment: EsdtTokenPayment, + from: ManagedAddress, + to: ManagedAddress, + fc: FunctionCall, +) -> PaymentConversionResult +where + Api: ManagedTypeApi, +{ + PaymentConversionResult { + to: from, + egld_payment: EgldPayment::no_payment(), + fc: fc.convert_to_single_transfer_nft_call(&to, payment), + } +} + +fn convert_tx_data_multi( + payment: MultiEsdtPayment, + from: ManagedAddress, + to: ManagedAddress, + fc: FunctionCall, +) -> PaymentConversionResult +where + Api: ManagedTypeApi, +{ + PaymentConversionResult { + to: from, + egld_payment: EgldPayment::no_payment(), + fc: fc.convert_to_multi_transfer_esdt_call(&to, payment), + } +} diff --git a/framework/base/src/types/interaction/tx_to.rs b/framework/base/src/types/interaction/tx_to.rs new file mode 100644 index 0000000000..88d3e7a427 --- /dev/null +++ b/framework/base/src/types/interaction/tx_to.rs @@ -0,0 +1,18 @@ +use crate::{api::ManagedTypeApi, types::ManagedAddress}; + +pub trait TxTo +where + Api: ManagedTypeApi, +{ +} + +impl TxTo for () where Api: ManagedTypeApi {} + +pub trait TxToSpecified: TxTo +where + Api: ManagedTypeApi, +{ +} + +impl TxTo for ManagedAddress where Api: ManagedTypeApi {} +impl TxToSpecified for ManagedAddress where Api: ManagedTypeApi {} diff --git a/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs b/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs index 3e7ae8afb5..ed2c7083a7 100644 --- a/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs +++ b/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs @@ -26,7 +26,7 @@ use crate as multiversx_sc; // required by the ManagedVecItem derive #[repr(transparent)] #[derive(ManagedVecItem, Clone)] pub struct EgldOrEsdtTokenIdentifier { - data: ManagedOption>, + pub(crate) data: ManagedOption>, } impl EgldOrEsdtTokenIdentifier { diff --git a/framework/base/src/types/managed/wrapped/egld_or_esdt_token_payment.rs b/framework/base/src/types/managed/wrapped/egld_or_esdt_token_payment.rs index ed76946617..8d5e692610 100644 --- a/framework/base/src/types/managed/wrapped/egld_or_esdt_token_payment.rs +++ b/framework/base/src/types/managed/wrapped/egld_or_esdt_token_payment.rs @@ -53,6 +53,29 @@ impl EgldOrEsdtTokenPayment { ) } + /// Equivalent to a `match { Egld | Esdt }`. + /// + /// Context passed on from function to closures, to avoid ownership issues. + /// More precisely, since only one of the two closures `for_egld` and `for_esdt` is called, + /// it is ok for them to have fully owned access to anything from the environment. + /// The compiler doesn't know that only one of them can ever be called, + /// so if we pass context to both closures, it will complain that they are moved twice.. + pub fn map_egld_or_esdt(self, context: Context, for_egld: D, for_esdt: F) -> U + where + D: FnOnce(Context, BigUint) -> U, + F: FnOnce(Context, EsdtTokenPayment) -> U, + { + if self.token_identifier.data.is_some() { + let token_identifier = unsafe { self.token_identifier.data.unwrap_no_check() }; + for_esdt( + context, + EsdtTokenPayment::new(token_identifier, self.token_nonce, self.amount), + ) + } else { + for_egld(context, self.amount) + } + } + pub fn into_tuple(self) -> (EgldOrEsdtTokenIdentifier, u64, BigUint) { (self.token_identifier, self.token_nonce, self.amount) } diff --git a/framework/base/src/types/managed/wrapped/egld_payment.rs b/framework/base/src/types/managed/wrapped/egld_payment.rs new file mode 100644 index 0000000000..f4c190e899 --- /dev/null +++ b/framework/base/src/types/managed/wrapped/egld_payment.rs @@ -0,0 +1,30 @@ +use crate::{api::ManagedTypeApi, types::BigUint}; + +/// Simple newtype wrapper around a BigUint value. +/// +/// Its purpose is to indicate +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct EgldPayment +where + Api: ManagedTypeApi + 'static, +{ + pub value: BigUint, +} + +impl From> for EgldPayment +where + Api: ManagedTypeApi + 'static, +{ + fn from(value: BigUint) -> Self { + EgldPayment { value } + } +} + +impl EgldPayment +where + Api: ManagedTypeApi + 'static, +{ + pub fn no_payment() -> Self { + EgldPayment::from(BigUint::zero()) + } +} diff --git a/framework/base/src/types/managed/wrapped/managed_option.rs b/framework/base/src/types/managed/wrapped/managed_option.rs index 64766f43db..99160ff5cd 100644 --- a/framework/base/src/types/managed/wrapped/managed_option.rs +++ b/framework/base/src/types/managed/wrapped/managed_option.rs @@ -73,9 +73,16 @@ where !self.is_none() } + /// Assumes that value is Some and unwraps without checking. + /// + /// Must always be called under an `if` checking `.is_some()`, otherwise will lead to undefined behaviour. + pub unsafe fn unwrap_no_check(self) -> T { + T::from_handle(self.handle) + } + pub fn into_option(self) -> Option { if self.is_some() { - Some(T::from_handle(self.handle)) + Some(unsafe { self.unwrap_no_check() }) } else { None } @@ -91,7 +98,7 @@ where pub fn unwrap_or_else T>(self, f: F) -> T { if self.is_some() { - T::from_handle(self.handle) + unsafe { self.unwrap_no_check() } } else { f() } @@ -107,7 +114,7 @@ where F: FnOnce(T) -> U, { if self.is_some() { - ManagedOption::::some(f(T::from_handle(self.handle))) + ManagedOption::::some(f(unsafe { self.unwrap_no_check() })) } else { ManagedOption::::none() } @@ -119,7 +126,7 @@ where F: FnOnce(T) -> U, { if self.is_some() { - f(T::from_handle(self.handle)) + f(unsafe { self.unwrap_no_check() }) } else { default() } diff --git a/framework/base/src/types/managed/wrapped/mod.rs b/framework/base/src/types/managed/wrapped/mod.rs index 8ac485fa38..dee1161f44 100644 --- a/framework/base/src/types/managed/wrapped/mod.rs +++ b/framework/base/src/types/managed/wrapped/mod.rs @@ -1,6 +1,7 @@ mod egld_or_esdt_token_identifier; mod egld_or_esdt_token_payment; mod egld_or_multi_esdt_payment; +mod egld_payment; mod encoded_managed_vec_item; mod esdt_token_data; mod esdt_token_payment; @@ -21,6 +22,7 @@ mod token_identifier; pub use egld_or_esdt_token_identifier::EgldOrEsdtTokenIdentifier; pub use egld_or_esdt_token_payment::EgldOrEsdtTokenPayment; pub use egld_or_multi_esdt_payment::EgldOrMultiEsdtPayment; +pub use egld_payment::EgldPayment; pub(crate) use encoded_managed_vec_item::EncodedManagedVecItem; pub use esdt_token_data::EsdtTokenData; pub use esdt_token_payment::{EsdtTokenPayment, MultiEsdtPayment}; From 669ff3a742f0a2f1715d22022e00a98b73dc590c Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 31 Oct 2023 12:37:15 +0200 Subject: [PATCH 002/461] unified tx syntax - transfer-execute --- .../src/rewards_distribution.rs | 10 +- .../composability/vault/src/vault.rs | 13 +- .../src/contract_base/contract_base_trait.rs | 8 +- .../wrappers/send_raw_wrapper.rs | 12 +- .../contract_base/wrappers/send_wrapper.rs | 6 - .../interaction/contract_call_no_payment.rs | 5 + framework/base/src/types/interaction/tx.rs | 131 +++++++++++++++--- .../base/src/types/interaction/tx_data.rs | 10 ++ .../base/src/types/interaction/tx_gas.rs | 32 ++++- .../types/interaction/tx_normalize_call.rs | 91 ------------ .../base/src/types/interaction/tx_payment.rs | 113 +++++++++++++++ framework/base/src/types/interaction/tx_to.rs | 30 +++- .../wrapped/egld_or_multi_esdt_payment.rs | 9 ++ 13 files changed, 330 insertions(+), 140 deletions(-) delete mode 100644 framework/base/src/types/interaction/tx_normalize_call.rs diff --git a/contracts/examples/rewards-distribution/src/rewards_distribution.rs b/contracts/examples/rewards-distribution/src/rewards_distribution.rs index 59672da272..da8492e19e 100644 --- a/contracts/examples/rewards-distribution/src/rewards_distribution.rs +++ b/contracts/examples/rewards-distribution/src/rewards_distribution.rs @@ -267,10 +267,12 @@ pub trait RewardsDistribution: } } - self.send() - .direct_non_zero_egld(&caller, &total_egld_reward); - self.send().direct_multi(&caller, &rewards); - self.send().direct_multi(&caller, &nfts); + self.tx().to(&caller).egld(total_egld_reward).transfer(); + self.tx().to(&caller).multi_esdt(rewards).transfer(); + self.tx() + .to(&caller) + .multi_esdt(nfts.clone_value()) + .transfer(); } fn claim_reward_token( diff --git a/contracts/feature-tests/composability/vault/src/vault.rs b/contracts/feature-tests/composability/vault/src/vault.rs index 4cebf5bc43..758aa4444b 100644 --- a/contracts/feature-tests/composability/vault/src/vault.rs +++ b/contracts/feature-tests/composability/vault/src/vault.rs @@ -151,10 +151,12 @@ pub trait Vault { let caller = self.blockchain().get_caller(); if let Some(esdt_token_id) = token.into_esdt_option() { - self.send() - .direct_esdt(&caller, &esdt_token_id, nonce, &amount); + self.tx() + .to(caller) + .esdt((esdt_token_id, nonce, amount)) + .transfer(); } else { - self.send().direct_egld(&caller, &amount); + self.tx().to(caller).egld(amount).transfer(); } } @@ -172,7 +174,7 @@ pub trait Vault { all_payments.push(EsdtTokenPayment::new(token_id, nonce, amount)); } - self.send().direct_multi(&caller, &all_payments); + self.tx().to(caller).multi_esdt(all_payments).transfer(); } #[payable("*")] @@ -210,8 +212,7 @@ pub trait Vault { )); } - self.send() - .direct_multi(&self.blockchain().get_caller(), &new_tokens); + self.tx().to_caller().multi_esdt(new_tokens).transfer(); } #[event("accept_funds")] diff --git a/framework/base/src/contract_base/contract_base_trait.rs b/framework/base/src/contract_base/contract_base_trait.rs index cec45dfa0f..bf5fcc7654 100644 --- a/framework/base/src/contract_base/contract_base_trait.rs +++ b/framework/base/src/contract_base/contract_base_trait.rs @@ -2,7 +2,7 @@ use super::{ BlockchainWrapper, CallValueWrapper, CryptoWrapper, ErrorHelper, ManagedSerializer, SendRawWrapper, SendWrapper, StorageRawWrapper, }; -use crate::api::VMApi; +use crate::{api::VMApi, types::TxBase}; /// Interface to be used by the actual smart contract code. /// @@ -26,6 +26,12 @@ pub trait ContractBase: Sized { SendWrapper::new() } + /// Starts the declaration of a new transaction. + #[inline] + fn tx(&self) -> TxBase { + TxBase::new() + } + /// Low-level functionality related to sending transactions from the current contract. /// /// For almost all cases contracts should instead use `self.send()` and `ContractCall`. 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 5635c0b44a..5d290369df 100644 --- a/framework/base/src/contract_base/wrappers/send_raw_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_raw_wrapper.rs @@ -79,20 +79,12 @@ where &self, to: &ManagedAddress, token: &TokenIdentifier, - egld_value: &BigUint, + value: &BigUint, gas_limit: u64, endpoint_name: &ManagedBuffer, arg_buffer: &ManagedArgBuffer, ) -> Result<(), &'static [u8]> { - self.transfer_esdt_nft_execute( - to, - token, - 0, - egld_value, - gas_limit, - endpoint_name, - arg_buffer, - ) + self.transfer_esdt_nft_execute(to, token, 0, value, gas_limit, endpoint_name, arg_buffer) } #[allow(clippy::too_many_arguments)] diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index aa7ae5c653..78f4f045d6 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -15,7 +15,6 @@ use crate::{ types::{ BigUint, ContractCall, ContractCallNoPayment, EgldOrEsdtTokenIdentifier, EsdtTokenPayment, ManagedAddress, ManagedArgBuffer, ManagedBuffer, ManagedType, ManagedVec, TokenIdentifier, - TxBase, }, }; @@ -71,11 +70,6 @@ where ContractCallNoPayment::new(to, endpoint_name) } - #[inline] - pub fn tx(&self) -> TxBase { - TxBase::new() - } - /// Sends EGLD to a given address, directly. /// Used especially for sending EGLD to regular accounts. #[inline] diff --git a/framework/base/src/types/interaction/contract_call_no_payment.rs b/framework/base/src/types/interaction/contract_call_no_payment.rs index 7198f71cd1..c8866ddf55 100644 --- a/framework/base/src/types/interaction/contract_call_no_payment.rs +++ b/framework/base/src/types/interaction/contract_call_no_payment.rs @@ -14,6 +14,7 @@ use super::{ contract_call_exec::UNSPECIFIED_GAS_LIMIT, contract_call_with_egld::ContractCallWithEgld, contract_call_with_multi_esdt::ContractCallWithMultiEsdt, ContractCall, ContractCallWithAnyPayment, ContractCallWithEgldOrSingleEsdt, FunctionCall, ManagedArgBuffer, + Tx, }; /// Holds metadata for calling another contract, without payments. @@ -166,4 +167,8 @@ where pub fn into_function_call(self) -> FunctionCall { self.function_call } + + pub fn tx(self) -> Tx> { + Tx::new().call(self.function_call) + } } diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 7b1da10187..f173ef3dfb 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -4,13 +4,16 @@ use multiversx_sc_codec::TopEncodeMulti; use crate::{ api::CallTypeApi, + contract_base::BlockchainWrapper, types::{ BigUint, EgldPayment, EsdtTokenPayment, ManagedAddress, ManagedBuffer, ManagedVec, MultiEsdtPayment, }, }; -use super::{AsyncCall, ExplicitGas, FunctionCall, TxData, TxFrom, TxGas, TxPayment, TxTo}; +use super::{ + AsyncCall, ExplicitGas, FunctionCall, TxData, TxFrom, TxGas, TxPayment, TxTo, TxToSpecified, +}; pub struct Tx where @@ -38,6 +41,7 @@ where Gas: TxGas, Data: TxData, { + /// TODO: does nothing, delete, added for easier copy-paste. #[inline] pub fn nothing(self) -> Tx { Tx { @@ -53,12 +57,12 @@ where pub type TxBase = Tx; -impl TxBase +impl Default for TxBase where Api: CallTypeApi + 'static, { #[inline] - pub fn new() -> Self { + fn default() -> Self { Tx { _phantom: PhantomData, from: (), @@ -70,6 +74,16 @@ where } } +impl TxBase +where + Api: CallTypeApi + 'static, +{ + #[inline] + pub fn new() -> Self { + Self::default() + } +} + impl Tx where Api: CallTypeApi + 'static, @@ -78,7 +92,6 @@ where Gas: TxGas, Data: TxData, { - #[inline] pub fn from(self, from: From) -> Tx where From: TxFrom, @@ -102,7 +115,6 @@ where Gas: TxGas, Data: TxData, { - #[inline] pub fn to(self, to: To) -> Tx where To: TxTo, @@ -116,6 +128,11 @@ where data: self.data, } } + + pub fn to_caller(self) -> Tx, Payment, Gas, Data> { + let caller = BlockchainWrapper::::new().get_caller(); + self.to(caller) + } } impl Tx @@ -126,11 +143,7 @@ where Gas: TxGas, Data: TxData, { - #[inline] - pub fn with_egld_transfer( - self, - egld_amount: BigUint, - ) -> Tx, Gas, Data> { + pub fn egld(self, egld_amount: BigUint) -> Tx, Gas, Data> { Tx { _phantom: PhantomData, from: self.from, @@ -143,6 +156,47 @@ where } impl Tx +where + Api: CallTypeApi + 'static, + From: TxFrom, + To: TxTo, + Gas: TxGas, + Data: TxData, +{ + /// Adds a single ESDT token transfer to a transaction. + /// + /// Since this is the first ESDT payment, a single payment tx is produced. Can be called again for multiple payments. + pub fn esdt>>( + self, + payment: P, + ) -> Tx, Gas, Data> { + Tx { + _phantom: PhantomData, + from: self.from, + to: self.to, + payment: payment.into(), + gas: self.gas, + data: self.data, + } + } + + /// Adds a collection of ESDT payments to a transaction. + pub fn multi_esdt( + self, + payments: MultiEsdtPayment, // TODO: references + ) -> Tx, Gas, Data> { + Tx { + _phantom: PhantomData, + from: self.from, + to: self.to, + payment: payments, + gas: self.gas, + data: self.data, + } + } +} + +impl Tx, Gas, Data> where Api: CallTypeApi + 'static, From: TxFrom, @@ -153,12 +207,12 @@ where /// Adds a single ESDT token transfer to a contract call. /// /// Can be called multiple times on the same call. - #[inline] pub fn with_esdt_transfer>>( self, payment: P, ) -> Tx, Gas, Data> { let mut payments = ManagedVec::new(); + payments.push(self.payment); payments.push(payment.into()); Tx { _phantom: PhantomData, @@ -182,7 +236,6 @@ where /// Adds a single ESDT token transfer to a contract call. /// /// Can be called multiple times on the same call. - #[inline] pub fn with_esdt_transfer>>( mut self, payment: P, @@ -223,9 +276,9 @@ where Gas: TxGas, { #[inline] - pub fn call>>( + pub fn call>>( self, - call: F, + call: FC, ) -> Tx> { Tx { _phantom: PhantomData, @@ -268,17 +321,20 @@ where } } -impl Tx, Payment, Gas, FunctionCall> +impl Tx> where Api: CallTypeApi + 'static, From: TxFrom, + To: TxToSpecified, Payment: TxPayment, Gas: TxGas, { pub fn normalize_tx( self, ) -> Tx, EgldPayment, Gas, FunctionCall> { - let result = self.payment.convert_tx_data(&self.from, self.to, self.data); + let result = self + .payment + .convert_tx_data(&self.from, self.to.into_address(), self.data); Tx { _phantom: PhantomData, from: self.from, @@ -290,9 +346,10 @@ where } } -impl Tx, Payment, (), FunctionCall> +impl Tx> where Api: CallTypeApi + 'static, + To: TxToSpecified, Payment: TxPayment, { pub fn async_call(self) -> AsyncCall { @@ -306,9 +363,10 @@ where } } -impl Tx, Payment, ExplicitGas, FunctionCall> +impl Tx> where Api: CallTypeApi + 'static, + To: TxToSpecified, Payment: TxPayment, { #[cfg(feature = "promises")] @@ -325,3 +383,40 @@ where } } } + +impl Tx +where + Api: CallTypeApi + 'static, + From: TxFrom, + To: TxToSpecified, + Payment: TxPayment, + Gas: TxGas, + FC: TxData + Into>, +{ + pub fn transfer_execute(self) { + if self.payment.is_no_payment() && self.data.is_no_call() { + return; + } + + let gas_limit = self.gas.resolve_gas::(); + self.payment.perform_transfer_execute( + self.to.to_address_ref(), + gas_limit, + self.data.into(), + ); + } +} + +impl Tx +where + Api: CallTypeApi + 'static, + From: TxFrom, + To: TxToSpecified, + Payment: TxPayment, + Gas: TxGas, +{ + /// Syntactic sugar, only allowed for simple transfers. + pub fn transfer(self) { + self.transfer_execute() + } +} diff --git a/framework/base/src/types/interaction/tx_data.rs b/framework/base/src/types/interaction/tx_data.rs index 440cdbdcb3..e49038a1f7 100644 --- a/framework/base/src/types/interaction/tx_data.rs +++ b/framework/base/src/types/interaction/tx_data.rs @@ -10,6 +10,8 @@ pub trait TxData where Api: ManagedTypeApi, { + fn is_no_call(&self) -> bool; + fn to_call_data_string(&self) -> ManagedBuffer; } @@ -17,6 +19,10 @@ impl TxData for () where Api: ManagedTypeApi, { + fn is_no_call(&self) -> bool { + true + } + fn to_call_data_string(&self) -> ManagedBuffer { ManagedBuffer::new() } @@ -26,6 +32,10 @@ impl TxData for FunctionCall where Api: ManagedTypeApi, { + fn is_no_call(&self) -> bool { + self.is_empty() + } + fn to_call_data_string(&self) -> ManagedBuffer { let mut result = ManagedBufferCachedBuilder::default(); result.append_managed_buffer(&self.function_name); diff --git a/framework/base/src/types/interaction/tx_gas.rs b/framework/base/src/types/interaction/tx_gas.rs index 475a15d1bf..dcb37140b7 100644 --- a/framework/base/src/types/interaction/tx_gas.rs +++ b/framework/base/src/types/interaction/tx_gas.rs @@ -1,7 +1,33 @@ -pub trait TxGas {} +use crate::api::{BlockchainApiImpl, CallTypeApi}; -impl TxGas for () {} +use super::contract_call_exec::TRANSFER_EXECUTE_DEFAULT_LEFTOVER; + +pub trait TxGas { + fn resolve_gas(&self) -> u64 + where + Api: CallTypeApi + 'static; +} + +impl TxGas for () { + fn resolve_gas(&self) -> u64 + where + Api: CallTypeApi + 'static, + { + let mut gas_left = Api::blockchain_api_impl().get_gas_left(); + if gas_left > TRANSFER_EXECUTE_DEFAULT_LEFTOVER { + gas_left -= TRANSFER_EXECUTE_DEFAULT_LEFTOVER; + } + gas_left + } +} pub struct ExplicitGas(pub u64); -impl TxGas for ExplicitGas {} +impl TxGas for ExplicitGas { + fn resolve_gas(&self) -> u64 + where + Api: CallTypeApi + 'static, + { + self.0 + } +} diff --git a/framework/base/src/types/interaction/tx_normalize_call.rs b/framework/base/src/types/interaction/tx_normalize_call.rs deleted file mode 100644 index 8a9cfb4fde..0000000000 --- a/framework/base/src/types/interaction/tx_normalize_call.rs +++ /dev/null @@ -1,91 +0,0 @@ -use core::marker::PhantomData; - -use crate::{ - api::CallTypeApi, - types::{BigUint, EgldPayment, ManagedAddress}, -}; - -use super::{AsyncCall, FunctionCall, Tx, TxData, TxFrom, TxGas}; - -/// Encodes -pub type NormalizedTx = - Tx, EgldPayment, Gas, FunctionCall>; - -pub trait TxNormalizeCall -where - Api: CallTypeApi + 'static, - From: TxFrom, - Gas: TxGas, -{ - fn normalize_call(self) -> NormalizedTx; -} - -impl TxNormalizeCall - for Tx, (), Gas, Call> -where - Api: CallTypeApi + 'static, - From: TxFrom, - Gas: TxGas, - Call: TxData + Into>, -{ - fn normalize_call(self) -> NormalizedTx { - Tx { - _phantom: PhantomData, - from: self.from, - to: self.to, - payment: EgldPayment { - value: BigUint::zero(), - }, - gas: self.gas, - data: self.data.into(), - } - } -} - -impl TxNormalizeCall - for Tx, EgldPayment, Gas, Call> -where - Api: CallTypeApi + 'static, - From: TxFrom, - Gas: TxGas, - Call: TxData + Into>, -{ - fn normalize_call(self) -> NormalizedTx { - Tx { - _phantom: PhantomData, - from: self.from, - to: self.to, - payment: self.payment, - gas: self.gas, - data: self.data.into(), - } - } -} - -impl NormalizedTx -where - Api: CallTypeApi + 'static, - From: TxFrom, - Gas: TxGas, -{ - fn async_call(self) -> AsyncCall { - AsyncCall { - to: self.to, - egld_payment: self.payment.value, - function_call: self.data, - callback_call: None, - } - } - - // #[cfg(feature = "promises")] - // fn async_call_promise(self) -> super::AsyncCallPromises { - // super::AsyncCallPromises { - // to: self.basic.to, - // egld_payment: self.egld_payment, - // function_call: self.basic.function_call, - // explicit_gas_limit: self.basic.explicit_gas_limit, - // extra_gas_for_callback: 0, - // callback_call: None, - // } - // } -} diff --git a/framework/base/src/types/interaction/tx_payment.rs b/framework/base/src/types/interaction/tx_payment.rs index e36d43cfc5..6daa4ebd27 100644 --- a/framework/base/src/types/interaction/tx_payment.rs +++ b/framework/base/src/types/interaction/tx_payment.rs @@ -1,5 +1,6 @@ use crate::{ api::{CallTypeApi, ManagedTypeApi}, + contract_base::SendRawWrapper, types::{ EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EgldPayment, EsdtTokenPayment, ManagedAddress, MultiEsdtPayment, @@ -22,6 +23,8 @@ pub trait TxPayment where Api: CallTypeApi, { + fn is_no_payment(&self) -> bool; + fn convert_tx_data( self, from: &From, @@ -30,12 +33,23 @@ where ) -> PaymentConversionResult where From: TxFrom; + + fn perform_transfer_execute( + self, + to: &ManagedAddress, + gas_limit: u64, + fc: FunctionCall, + ); } impl TxPayment for () where Api: CallTypeApi, { + fn is_no_payment(&self) -> bool { + true + } + fn convert_tx_data( self, _from: &From, @@ -51,12 +65,25 @@ where fc, } } + + fn perform_transfer_execute( + self, + to: &ManagedAddress, + gas_limit: u64, + fc: FunctionCall, + ) { + EgldPayment::no_payment().perform_transfer_execute(to, gas_limit, fc); + } } impl TxPayment for EgldPayment where Api: CallTypeApi, { + fn is_no_payment(&self) -> bool { + self.value == 0u32 + } + fn convert_tx_data( self, _from: &From, @@ -72,12 +99,31 @@ where fc, } } + + fn perform_transfer_execute( + self, + to: &ManagedAddress, + gas_limit: u64, + fc: FunctionCall, + ) { + let _ = SendRawWrapper::::new().direct_egld_execute( + to, + &self.value, + gas_limit, + &fc.function_name, + &fc.arg_buffer, + ); + } } impl TxPayment for EsdtTokenPayment where Api: CallTypeApi, { + fn is_no_payment(&self) -> bool { + self.amount == 0u32 + } + fn convert_tx_data( self, from: &From, @@ -93,12 +139,25 @@ where convert_tx_data_nft(self, from.to_address(), to, fc) } } + + fn perform_transfer_execute( + self, + to: &ManagedAddress, + gas_limit: u64, + fc: FunctionCall, + ) { + MultiEsdtPayment::from_single_item(self).perform_transfer_execute(to, gas_limit, fc) + } } impl TxPayment for MultiEsdtPayment where Api: CallTypeApi, { + fn is_no_payment(&self) -> bool { + self.is_empty() + } + fn convert_tx_data( self, from: &From, @@ -114,12 +173,31 @@ where _ => convert_tx_data_multi(self, from.to_address(), to, fc), } } + + fn perform_transfer_execute( + self, + to: &ManagedAddress, + gas_limit: u64, + fc: FunctionCall, + ) { + let _ = SendRawWrapper::::new().multi_esdt_transfer_execute( + to, + &self, + gas_limit, + &fc.function_name, + &fc.arg_buffer, + ); + } } impl TxPayment for EgldOrEsdtTokenPayment where Api: CallTypeApi, { + fn is_no_payment(&self) -> bool { + self.amount == 0u32 + } + fn convert_tx_data( self, from: &From, @@ -135,12 +213,31 @@ where |(to, fc), esdt_payment| esdt_payment.convert_tx_data(from, to, fc), ) } + + fn perform_transfer_execute( + self, + to: &ManagedAddress, + gas_limit: u64, + fc: FunctionCall, + ) { + self.map_egld_or_esdt( + (to, fc), + |(to, fc), amount| { + EgldPayment::from(amount).perform_transfer_execute(to, gas_limit, fc) + }, + |(to, fc), esdt_payment| esdt_payment.perform_transfer_execute(to, gas_limit, fc), + ) + } } impl TxPayment for EgldOrMultiEsdtPayment where Api: CallTypeApi, { + fn is_no_payment(&self) -> bool { + self.is_empty() + } + fn convert_tx_data( self, from: &From, @@ -159,6 +256,22 @@ where }, } } + + fn perform_transfer_execute( + self, + to: &ManagedAddress, + gas_limit: u64, + fc: FunctionCall, + ) { + match self { + EgldOrMultiEsdtPayment::Egld(egld_amount) => { + EgldPayment::from(egld_amount).perform_transfer_execute(to, gas_limit, fc) + }, + EgldOrMultiEsdtPayment::MultiEsdt(multi_esdt_payment) => { + multi_esdt_payment.perform_transfer_execute(to, gas_limit, fc) + }, + } + } } fn convert_tx_data_fungible( diff --git a/framework/base/src/types/interaction/tx_to.rs b/framework/base/src/types/interaction/tx_to.rs index 88d3e7a427..62aad803a7 100644 --- a/framework/base/src/types/interaction/tx_to.rs +++ b/framework/base/src/types/interaction/tx_to.rs @@ -12,7 +12,35 @@ pub trait TxToSpecified: TxTo where Api: ManagedTypeApi, { + fn to_address_ref(&self) -> &ManagedAddress; + + fn into_address(self) -> ManagedAddress; } impl TxTo for ManagedAddress where Api: ManagedTypeApi {} -impl TxToSpecified for ManagedAddress where Api: ManagedTypeApi {} +impl TxToSpecified for ManagedAddress +where + Api: ManagedTypeApi, +{ + fn to_address_ref(&self) -> &ManagedAddress { + self + } + + fn into_address(self) -> ManagedAddress { + self + } +} + +impl TxTo for &ManagedAddress where Api: ManagedTypeApi {} +impl TxToSpecified for &ManagedAddress +where + Api: ManagedTypeApi, +{ + fn to_address_ref(&self) -> &ManagedAddress { + self + } + + fn into_address(self) -> ManagedAddress { + self.clone() + } +} diff --git a/framework/base/src/types/managed/wrapped/egld_or_multi_esdt_payment.rs b/framework/base/src/types/managed/wrapped/egld_or_multi_esdt_payment.rs index c71aa249d7..730f7b22a9 100644 --- a/framework/base/src/types/managed/wrapped/egld_or_multi_esdt_payment.rs +++ b/framework/base/src/types/managed/wrapped/egld_or_multi_esdt_payment.rs @@ -24,3 +24,12 @@ pub enum EgldOrMultiEsdtPayment { } impl CodecFromSelf for EgldOrMultiEsdtPayment where M: ManagedTypeApi {} + +impl EgldOrMultiEsdtPayment { + pub fn is_empty(&self) -> bool { + match self { + EgldOrMultiEsdtPayment::Egld(egld_value) => egld_value == &0u32, + EgldOrMultiEsdtPayment::MultiEsdt(esdt_payments) => esdt_payments.is_empty(), + } + } +} From ae054e168cbceb041382cc72101917257aa13e31 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sun, 5 Nov 2023 02:30:54 +0200 Subject: [PATCH 003/461] unified tx syntax - blackbox prototype --- .../tests/adder_blackbox_with_values_test.rs | 16 ++- .../base/src/types/interaction/annotated.rs | 49 +++++++ .../interaction/contract_call_no_payment.rs | 2 +- .../src/types/interaction/expr_address.rs | 85 ++++++++++++ .../base/src/types/interaction/expr_sc.rs | 109 +++++++++++++++ .../src/types/interaction/function_call.rs | 13 +- .../types/interaction/managed_arg_buffer.rs | 4 + framework/base/src/types/interaction/mod.rs | 8 ++ framework/base/src/types/interaction/tx.rs | 131 ++++++++++++------ .../src/types/interaction/tx_environment.rs | 66 +++++++++ .../base/src/types/interaction/tx_from.rs | 25 +++- .../base/src/types/interaction/tx_payment.rs | 4 +- framework/base/src/types/interaction/tx_to.rs | 33 +---- .../src/types/managed/basic/managed_buffer.rs | 20 +++ .../types/managed/wrapped/managed_address.rs | 12 +- framework/scenario/src/facade.rs | 1 + .../scenario/src/facade/contract_info.rs | 51 +++++++ .../src/facade/scenario_world_steps_tx.rs | 79 +++++++++++ 18 files changed, 623 insertions(+), 85 deletions(-) create mode 100644 framework/base/src/types/interaction/annotated.rs create mode 100644 framework/base/src/types/interaction/expr_address.rs create mode 100644 framework/base/src/types/interaction/expr_sc.rs create mode 100644 framework/base/src/types/interaction/tx_environment.rs create mode 100644 framework/scenario/src/facade/scenario_world_steps_tx.rs diff --git a/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs b/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs index 62173c5cce..061432c95f 100644 --- a/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs @@ -1,5 +1,8 @@ use adder::*; -use multiversx_sc::storage::mappers::SingleValue; +use multiversx_sc::{ + storage::mappers::SingleValue, + types::{AddressExpr, ScExpr}, +}; use multiversx_sc_scenario::{api::StaticApi, num_bigint::BigUint, scenario_model::*, *}; const ADDER_PATH_EXPR: &str = "file:output/adder.wasm"; @@ -41,12 +44,11 @@ fn adder_blackbox_with_values() { .call(adder_contract.sum()) .expect_value(SingleValue::from(BigUint::from(5u32))), ) - .sc_call( - ScCallStep::new() - .from(owner_address) - .to(&adder_contract) - .call(adder_contract.add(3u32)), - ) + .tx(|tx| { + tx.from(AddressExpr("owner")) + .to(ScExpr("adder")) + .call(adder_contract.add(3u32)) + }) .check_state_step( CheckStateStep::new() .put_account(owner_address, CheckAccount::new()) diff --git a/framework/base/src/types/interaction/annotated.rs b/framework/base/src/types/interaction/annotated.rs new file mode 100644 index 0000000000..2814f95444 --- /dev/null +++ b/framework/base/src/types/interaction/annotated.rs @@ -0,0 +1,49 @@ +use crate::{ + api::ManagedTypeApi, + types::{ManagedAddress, ManagedBuffer}, +}; + +pub trait AnnotatedValue +where + Api: ManagedTypeApi, +{ + fn annotation(&self) -> ManagedBuffer; + + fn into_value(self) -> T; + + fn with_value_ref(&self, f: F); +} + +impl AnnotatedValue> for ManagedAddress +where + Api: ManagedTypeApi, +{ + fn annotation(&self) -> ManagedBuffer { + self.hex_expr() + } + + fn into_value(self) -> ManagedAddress { + self + } + + fn with_value_ref)>(&self, f: F) { + f(self) + } +} + +impl AnnotatedValue> for &ManagedAddress +where + Api: ManagedTypeApi, +{ + fn annotation(&self) -> crate::types::ManagedBuffer { + self.hex_expr() + } + + fn into_value(self) -> ManagedAddress { + self.clone() + } + + fn with_value_ref)>(&self, f: F) { + f(self) + } +} diff --git a/framework/base/src/types/interaction/contract_call_no_payment.rs b/framework/base/src/types/interaction/contract_call_no_payment.rs index c8866ddf55..5471c2a9e8 100644 --- a/framework/base/src/types/interaction/contract_call_no_payment.rs +++ b/framework/base/src/types/interaction/contract_call_no_payment.rs @@ -168,7 +168,7 @@ where self.function_call } - pub fn tx(self) -> Tx> { + pub fn tx(self) -> Tx> { Tx::new().call(self.function_call) } } diff --git a/framework/base/src/types/interaction/expr_address.rs b/framework/base/src/types/interaction/expr_address.rs new file mode 100644 index 0000000000..305d833cc8 --- /dev/null +++ b/framework/base/src/types/interaction/expr_address.rs @@ -0,0 +1,85 @@ +use core::ptr; + +use crate::{ + api::CallTypeApi, + types::{ManagedAddress, ManagedBuffer}, +}; + +use super::{AnnotatedValue, TxFrom, TxFromSpecified}; + +const ADDRESS_PREFIX: &str = "address:"; + +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub struct AddressExpr(pub &'static str); + +impl AnnotatedValue> for AddressExpr +where + Api: CallTypeApi, +{ + fn annotation(&self) -> ManagedBuffer { + let mut result = ManagedBuffer::new_from_bytes(ADDRESS_PREFIX.as_bytes()); + result.append_bytes(self.0.as_bytes()); + result + } + + fn into_value(self) -> ManagedAddress { + let expr: [u8; 32] = self.eval_to_array(); + expr.into() + } + + fn with_value_ref)>(&self, f: F) { + let expr: [u8; 32] = self.eval_to_array(); + let ma = expr.into(); + f(&ma); + } +} +impl TxFrom for AddressExpr +where + Api: CallTypeApi, +{ + fn resolve_address(&self) -> ManagedAddress { + let expr: [u8; 32] = self.eval_to_array(); + expr.into() + } +} +impl TxFromSpecified for AddressExpr where Api: CallTypeApi {} + +impl AddressExpr { + pub const fn eval_to_array(&self) -> [u8; 32] { + let result = [b'_'; 32]; + let expr_bytes = self.0.as_bytes(); + let mut len = expr_bytes.len(); + if len > 32 { + len = 32; + } + unsafe { + ptr::copy_nonoverlapping(expr_bytes.as_ptr(), result.as_ptr() as *mut u8, len); + } + result + } +} + +#[cfg(test)] +pub mod tests { + use super::*; + + fn assert_eq_eval(expr: &'static str, expected: &[u8; 32]) { + assert_eq!(&AddressExpr(expr).eval_to_array(), expected); + } + + #[test] + fn test_address_value() { + assert_eq_eval("", b"________________________________"); + assert_eq_eval("a", b"a_______________________________"); + assert_eq_eval("a\x05", b"a\x05______________________________"); + assert_eq_eval("an_address", b"an_address______________________"); + assert_eq_eval( + "12345678901234567890123456789012", + b"12345678901234567890123456789012", + ); + assert_eq_eval( + "123456789012345678901234567890123", + b"12345678901234567890123456789012", + ); + } +} diff --git a/framework/base/src/types/interaction/expr_sc.rs b/framework/base/src/types/interaction/expr_sc.rs new file mode 100644 index 0000000000..f83bfe3149 --- /dev/null +++ b/framework/base/src/types/interaction/expr_sc.rs @@ -0,0 +1,109 @@ +use core::ptr; + +use crate::{ + api::CallTypeApi, + types::{ManagedAddress, ManagedBuffer}, +}; + +use super::{AnnotatedValue, TxFrom, TxFromSpecified, TxTo, TxToSpecified}; + +const SC_PREFIX: &str = "sc:"; + +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub struct ScExpr<'a>(pub &'a str); + +impl<'a, Api> AnnotatedValue> for ScExpr<'a> +where + Api: CallTypeApi, +{ + fn annotation(&self) -> ManagedBuffer { + let mut result = ManagedBuffer::new_from_bytes(SC_PREFIX.as_bytes()); + result.append_bytes(self.0.as_bytes()); + result + } + + fn into_value(self) -> ManagedAddress { + let expr: [u8; 32] = self.eval_to_array(); + expr.into() + } + + fn with_value_ref)>(&self, f: F) { + let expr: [u8; 32] = self.eval_to_array(); + let ma = expr.into(); + f(&ma); + } +} +impl<'a, Api> TxFrom for ScExpr<'a> +where + Api: CallTypeApi, +{ + fn resolve_address(&self) -> ManagedAddress { + let expr: [u8; 32] = self.eval_to_array(); + expr.into() + } +} +impl<'a, Api> TxFromSpecified for ScExpr<'a> where Api: CallTypeApi {} +impl<'a, Api> TxTo for ScExpr<'a> where Api: CallTypeApi {} +impl<'a, Api> TxToSpecified for ScExpr<'a> where Api: CallTypeApi {} + +impl<'a> ScExpr<'a> { + pub const fn eval_to_array(&self) -> [u8; 32] { + let result = *b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00______________________"; + let expr_bytes = self.0.as_bytes(); + let mut len = expr_bytes.len(); + if len > 22 { + len = 22; + } + unsafe { + ptr::copy_nonoverlapping( + expr_bytes.as_ptr(), + result.as_ptr().offset(10) as *mut u8, + len, + ); + } + result + } +} + +#[cfg(test)] +pub mod tests { + use super::*; + + fn assert_eq_eval(expr: &'static str, expected: &[u8; 32]) { + assert_eq!(&ScExpr(expr).eval_to_array(), expected); + } + + #[test] + fn test_address_value() { + assert_eq_eval( + "", + b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00______________________", + ); + assert_eq_eval( + "a", + b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00a_____________________", + ); + assert_eq_eval( + "12345678901234567890120s", + b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x001234567890123456789012", + ); + } + + // #[test] + // fn test_sc_address() { + // let context = InterpreterContext::default(); + // assert_eq!( + // b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00a_____________________".to_vec(), + // interpret_string("sc:a", &context) + // ); + // assert_eq!( + // b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x001234567890123456789012".to_vec(), + // interpret_string("sc:12345678901234567890120s", &context) + // ); + // // trims excess + // assert_eq!( + // b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x001234567890123456789012".to_vec(), + // interpret_string("sc:12345678901234567890120sx", &context) + // ); + // } +} diff --git a/framework/base/src/types/interaction/function_call.rs b/framework/base/src/types/interaction/function_call.rs index ae12687b26..bfe74958dc 100644 --- a/framework/base/src/types/interaction/function_call.rs +++ b/framework/base/src/types/interaction/function_call.rs @@ -6,13 +6,13 @@ use multiversx_sc_codec::{ use crate::{ abi::{TypeAbi, TypeName}, api::{ - ManagedTypeApi, ESDT_MULTI_TRANSFER_FUNC_NAME, ESDT_NFT_TRANSFER_FUNC_NAME, + CallTypeApi, ManagedTypeApi, ESDT_MULTI_TRANSFER_FUNC_NAME, ESDT_NFT_TRANSFER_FUNC_NAME, ESDT_TRANSFER_FUNC_NAME, }, types::{EsdtTokenPayment, ManagedAddress, ManagedBuffer, ManagedVec, MultiValueEncoded}, }; -use super::ManagedArgBuffer; +use super::{ContractCallNoPayment, ManagedArgBuffer}; /// Encodes a function call on the blockchain, composed of a function name and its encoded arguments. /// @@ -69,6 +69,15 @@ where } } +impl From> for FunctionCall +where + Api: CallTypeApi, +{ + fn from(ccnp: ContractCallNoPayment) -> Self { + ccnp.function_call + } +} + impl TopEncodeMulti for FunctionCall where Api: ManagedTypeApi, diff --git a/framework/base/src/types/interaction/managed_arg_buffer.rs b/framework/base/src/types/interaction/managed_arg_buffer.rs index b0cee5db30..7af6346c7b 100644 --- a/framework/base/src/types/interaction/managed_arg_buffer.rs +++ b/framework/base/src/types/interaction/managed_arg_buffer.rs @@ -172,6 +172,10 @@ where pub fn into_vec_of_buffers(self) -> ManagedVec> { self.data } + + pub fn iter_buffers(&self) -> ManagedVecRefIterator> { + ManagedVecRefIterator::new(&self.data) + } } impl ManagedArgBuffer diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index 8efeba7b03..b44ff66d0f 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -1,3 +1,4 @@ +mod annotated; mod async_call; mod async_call_promises; mod back_transfers; @@ -12,15 +13,19 @@ mod contract_call_with_egld; mod contract_call_with_egld_or_single_esdt; mod contract_call_with_multi_esdt; mod contract_deploy; +mod expr_address; +mod expr_sc; mod function_call; mod managed_arg_buffer; mod tx; mod tx_data; +mod tx_environment; mod tx_from; mod tx_gas; mod tx_payment; mod tx_to; +pub use annotated::*; pub use async_call::AsyncCall; pub use async_call_promises::AsyncCallPromises; pub use back_transfers::BackTransfers; @@ -35,10 +40,13 @@ pub use contract_call_with_egld::ContractCallWithEgld; pub use contract_call_with_egld_or_single_esdt::ContractCallWithEgldOrSingleEsdt; pub use contract_call_with_multi_esdt::ContractCallWithMultiEsdt; pub use contract_deploy::{new_contract_deploy, ContractDeploy}; +pub use expr_address::AddressExpr; +pub use expr_sc::ScExpr; pub use function_call::FunctionCall; pub use managed_arg_buffer::ManagedArgBuffer; pub use tx::*; pub use tx_data::*; +pub use tx_environment::*; pub use tx_from::*; pub use tx_gas::*; pub use tx_payment::*; diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index f173ef3dfb..93d0ff6b04 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -12,12 +12,14 @@ use crate::{ }; use super::{ - AsyncCall, ExplicitGas, FunctionCall, TxData, TxFrom, TxGas, TxPayment, TxTo, TxToSpecified, + AsyncCall, ExplicitGas, FunctionCall, TxData, TxEnvironemnt, TxFrom, TxGas, TxPayment, TxTo, + TxToSpecified, TxFromSpecified, }; -pub struct Tx +pub struct Tx where Api: CallTypeApi + 'static, + Env: TxEnvironemnt, From: TxFrom, To: TxTo, Payment: TxPayment, @@ -25,6 +27,7 @@ where Data: TxData, { pub(super) _phantom: PhantomData, + pub env: Env, pub from: From, pub to: To, pub payment: Payment, @@ -32,9 +35,10 @@ where pub data: Data, } -impl Tx +impl Tx where Api: CallTypeApi + 'static, + Env: TxEnvironemnt, From: TxFrom, To: TxTo, Payment: TxPayment, @@ -43,9 +47,10 @@ where { /// TODO: does nothing, delete, added for easier copy-paste. #[inline] - pub fn nothing(self) -> Tx { + pub fn nothing(self) -> Tx { Tx { _phantom: PhantomData, + env: self.env, from: self.from, to: self.to, payment: self.payment, @@ -55,16 +60,18 @@ where } } -pub type TxBase = Tx; +pub type TxBaseWithEnv = Tx; -impl Default for TxBase +impl TxBaseWithEnv where Api: CallTypeApi + 'static, + Env: TxEnvironemnt, { #[inline] - fn default() -> Self { + pub fn new_with_env(env: Env) -> Self { Tx { _phantom: PhantomData, + env, from: (), to: (), payment: (), @@ -74,6 +81,18 @@ where } } +pub type TxBase = Tx; + +impl Default for TxBase +where + Api: CallTypeApi + 'static, +{ + #[inline] + fn default() -> Self { + Self::new_with_env(()) + } +} + impl TxBase where Api: CallTypeApi + 'static, @@ -84,20 +103,24 @@ where } } -impl Tx +impl Tx where Api: CallTypeApi + 'static, + Env: TxEnvironemnt, To: TxTo, Payment: TxPayment, Gas: TxGas, Data: TxData, { - pub fn from(self, from: From) -> Tx + pub fn from(self, from: From) -> Tx where - From: TxFrom, + From: TxFromSpecified, { + let mut env = self.env; + env.annotate_from(&from); Tx { _phantom: PhantomData, + env, from, to: self.to, payment: self.payment, @@ -107,20 +130,24 @@ where } } -impl Tx +impl Tx where Api: CallTypeApi + 'static, + Env: TxEnvironemnt, From: TxFrom, Payment: TxPayment, Gas: TxGas, Data: TxData, { - pub fn to(self, to: To) -> Tx + pub fn to(self, to: To) -> Tx where - To: TxTo, + To: TxToSpecified, { + let mut env = self.env; + env.annotate_to(&to); Tx { _phantom: PhantomData, + env, from: self.from, to, payment: self.payment, @@ -129,23 +156,28 @@ where } } - pub fn to_caller(self) -> Tx, Payment, Gas, Data> { + pub fn to_caller(self) -> Tx, Payment, Gas, Data> { let caller = BlockchainWrapper::::new().get_caller(); self.to(caller) } } -impl Tx +impl Tx where Api: CallTypeApi + 'static, + Env: TxEnvironemnt, From: TxFrom, To: TxTo, Gas: TxGas, Data: TxData, { - pub fn egld(self, egld_amount: BigUint) -> Tx, Gas, Data> { + pub fn egld( + self, + egld_amount: BigUint, + ) -> Tx, Gas, Data> { Tx { _phantom: PhantomData, + env: self.env, from: self.from, to: self.to, payment: EgldPayment { value: egld_amount }, @@ -155,9 +187,10 @@ where } } -impl Tx +impl Tx where Api: CallTypeApi + 'static, + Env: TxEnvironemnt, From: TxFrom, To: TxTo, Gas: TxGas, @@ -169,9 +202,10 @@ where pub fn esdt>>( self, payment: P, - ) -> Tx, Gas, Data> { + ) -> Tx, Gas, Data> { Tx { _phantom: PhantomData, + env: self.env, from: self.from, to: self.to, payment: payment.into(), @@ -184,9 +218,10 @@ where pub fn multi_esdt( self, payments: MultiEsdtPayment, // TODO: references - ) -> Tx, Gas, Data> { + ) -> Tx, Gas, Data> { Tx { _phantom: PhantomData, + env: self.env, from: self.from, to: self.to, payment: payments, @@ -196,9 +231,10 @@ where } } -impl Tx, Gas, Data> +impl Tx, Gas, Data> where Api: CallTypeApi + 'static, + Env: TxEnvironemnt, From: TxFrom, To: TxTo, Gas: TxGas, @@ -210,12 +246,13 @@ where pub fn with_esdt_transfer>>( self, payment: P, - ) -> Tx, Gas, Data> { + ) -> Tx, Gas, Data> { let mut payments = ManagedVec::new(); payments.push(self.payment); payments.push(payment.into()); Tx { _phantom: PhantomData, + env: self.env, from: self.from, to: self.to, payment: payments, @@ -225,9 +262,10 @@ where } } -impl Tx, Gas, Data> +impl Tx, Gas, Data> where Api: CallTypeApi + 'static, + Env: TxEnvironemnt, From: TxFrom, To: TxTo, Gas: TxGas, @@ -239,15 +277,16 @@ where pub fn with_esdt_transfer>>( mut self, payment: P, - ) -> Tx, Gas, Data> { + ) -> Tx, Gas, Data> { self.payment.push(payment.into()); self } } -impl Tx +impl Tx where Api: CallTypeApi + 'static, + Env: TxEnvironemnt, From: TxFrom, To: TxTo, Payment: TxPayment, @@ -255,9 +294,13 @@ where { /// Sets an explicit gas limit to the call. #[inline] - pub fn with_gas_limit(self, gas_limit: u64) -> Tx { + pub fn with_gas_limit( + self, + gas_limit: u64, + ) -> Tx { Tx { _phantom: PhantomData, + env: self.env, from: self.from, to: self.to, payment: self.payment, @@ -267,9 +310,10 @@ where } } -impl Tx +impl Tx where Api: CallTypeApi + 'static, + Env: TxEnvironemnt, From: TxFrom, To: TxTo, Payment: TxPayment, @@ -279,9 +323,10 @@ where pub fn call>>( self, call: FC, - ) -> Tx> { + ) -> Tx> { Tx { _phantom: PhantomData, + env: self.env, from: self.from, to: self.to, payment: self.payment, @@ -294,9 +339,10 @@ where pub fn function_name>>( self, function_name: N, - ) -> Tx> { + ) -> Tx> { Tx { _phantom: PhantomData, + env: self.env, from: self.from, to: self.to, payment: self.payment, @@ -306,9 +352,10 @@ where } } -impl Tx> +impl Tx> where Api: CallTypeApi + 'static, + Env: TxEnvironemnt, From: TxFrom, To: TxTo, Payment: TxPayment, @@ -321,9 +368,10 @@ where } } -impl Tx> +impl Tx> where Api: CallTypeApi + 'static, + Env: TxEnvironemnt, From: TxFrom, To: TxToSpecified, Payment: TxPayment, @@ -331,12 +379,13 @@ where { pub fn normalize_tx( self, - ) -> Tx, EgldPayment, Gas, FunctionCall> { + ) -> Tx, EgldPayment, Gas, FunctionCall> { let result = self .payment - .convert_tx_data(&self.from, self.to.into_address(), self.data); + .convert_tx_data(&self.from, self.to.into_value(), self.data); Tx { _phantom: PhantomData, + env: self.env, from: self.from, to: result.to, payment: result.egld_payment, @@ -346,7 +395,7 @@ where } } -impl Tx> +impl Tx> where Api: CallTypeApi + 'static, To: TxToSpecified, @@ -363,7 +412,7 @@ where } } -impl Tx> +impl Tx> where Api: CallTypeApi + 'static, To: TxToSpecified, @@ -384,7 +433,7 @@ where } } -impl Tx +impl Tx where Api: CallTypeApi + 'static, From: TxFrom, @@ -399,15 +448,15 @@ where } let gas_limit = self.gas.resolve_gas::(); - self.payment.perform_transfer_execute( - self.to.to_address_ref(), - gas_limit, - self.data.into(), - ); + + self.to.with_value_ref(|to| { + self.payment + .perform_transfer_execute(to, gas_limit, self.data.into()); + }); } } -impl Tx +impl Tx where Api: CallTypeApi + 'static, From: TxFrom, diff --git a/framework/base/src/types/interaction/tx_environment.rs b/framework/base/src/types/interaction/tx_environment.rs new file mode 100644 index 0000000000..62c90ab47f --- /dev/null +++ b/framework/base/src/types/interaction/tx_environment.rs @@ -0,0 +1,66 @@ +use core::marker::PhantomData; + +use crate::{ + api::CallTypeApi, + types::{ManagedAddress, ManagedBuffer}, +}; + +use super::AnnotatedValue; + +pub trait TxEnvironemnt +where + Api: CallTypeApi, +{ + fn annotate_from(&mut self, from: &From) + where + From: AnnotatedValue>; + + fn annotate_to(&mut self, to: &To) + where + To: AnnotatedValue>; +} + +impl TxEnvironemnt for () +where + Api: CallTypeApi, +{ + fn annotate_from(&mut self, _from: &From) + where + From: AnnotatedValue>, + { + } + + fn annotate_to(&mut self, _to: &To) + where + To: AnnotatedValue>, + { + } +} + +pub struct TxTestingEnvironemnt +where + Api: CallTypeApi, +{ + pub(super) _phantom: PhantomData, + pub from_annotation: ManagedBuffer, + pub to_annotation: ManagedBuffer, +} + +impl TxEnvironemnt for TxTestingEnvironemnt +where + Api: CallTypeApi, +{ + fn annotate_from(&mut self, from: &From) + where + From: AnnotatedValue>, + { + self.from_annotation = from.annotation(); + } + + fn annotate_to(&mut self, to: &To) + where + To: AnnotatedValue>, + { + self.to_annotation = to.annotation(); + } +} diff --git a/framework/base/src/types/interaction/tx_from.rs b/framework/base/src/types/interaction/tx_from.rs index 984f537ad1..5edba3f2a5 100644 --- a/framework/base/src/types/interaction/tx_from.rs +++ b/framework/base/src/types/interaction/tx_from.rs @@ -1,17 +1,25 @@ use crate::{api::CallTypeApi, contract_base::BlockchainWrapper, types::ManagedAddress}; +use super::AnnotatedValue; + pub trait TxFrom where Api: CallTypeApi, { - fn to_address(&self) -> ManagedAddress; + fn resolve_address(&self) -> ManagedAddress; +} + +pub trait TxFromSpecified: TxFrom + AnnotatedValue> +where + Api: CallTypeApi, +{ } impl TxFrom for () where Api: CallTypeApi, { - fn to_address(&self) -> ManagedAddress { + fn resolve_address(&self) -> ManagedAddress { BlockchainWrapper::::new().get_sc_address() } } @@ -20,7 +28,18 @@ impl TxFrom for ManagedAddress where Api: CallTypeApi, { - fn to_address(&self) -> ManagedAddress { + fn resolve_address(&self) -> ManagedAddress { self.clone() } } +impl TxFromSpecified for ManagedAddress where Api: CallTypeApi {} + +impl TxFrom for &ManagedAddress +where + Api: CallTypeApi, +{ + fn resolve_address(&self) -> ManagedAddress { + (*self).clone() + } +} +impl TxFromSpecified for &ManagedAddress where Api: CallTypeApi {} diff --git a/framework/base/src/types/interaction/tx_payment.rs b/framework/base/src/types/interaction/tx_payment.rs index 6daa4ebd27..95ad62fae1 100644 --- a/framework/base/src/types/interaction/tx_payment.rs +++ b/framework/base/src/types/interaction/tx_payment.rs @@ -136,7 +136,7 @@ where if self.token_nonce == 0 { convert_tx_data_fungible(self, to, fc) } else { - convert_tx_data_nft(self, from.to_address(), to, fc) + convert_tx_data_nft(self, from.resolve_address(), to, fc) } } @@ -170,7 +170,7 @@ where match self.len() { 0 => ().convert_tx_data(from, to, fc), 1 => self.get(0).convert_tx_data(from, to, fc), - _ => convert_tx_data_multi(self, from.to_address(), to, fc), + _ => convert_tx_data_multi(self, from.resolve_address(), to, fc), } } diff --git a/framework/base/src/types/interaction/tx_to.rs b/framework/base/src/types/interaction/tx_to.rs index 62aad803a7..bf7e44e2be 100644 --- a/framework/base/src/types/interaction/tx_to.rs +++ b/framework/base/src/types/interaction/tx_to.rs @@ -1,5 +1,7 @@ use crate::{api::ManagedTypeApi, types::ManagedAddress}; +use super::AnnotatedValue; + pub trait TxTo where Api: ManagedTypeApi, @@ -8,39 +10,14 @@ where impl TxTo for () where Api: ManagedTypeApi {} -pub trait TxToSpecified: TxTo +pub trait TxToSpecified: TxTo + AnnotatedValue> where Api: ManagedTypeApi, { - fn to_address_ref(&self) -> &ManagedAddress; - - fn into_address(self) -> ManagedAddress; } impl TxTo for ManagedAddress where Api: ManagedTypeApi {} -impl TxToSpecified for ManagedAddress -where - Api: ManagedTypeApi, -{ - fn to_address_ref(&self) -> &ManagedAddress { - self - } - - fn into_address(self) -> ManagedAddress { - self - } -} +impl TxToSpecified for ManagedAddress where Api: ManagedTypeApi {} impl TxTo for &ManagedAddress where Api: ManagedTypeApi {} -impl TxToSpecified for &ManagedAddress -where - Api: ManagedTypeApi, -{ - fn to_address_ref(&self) -> &ManagedAddress { - self - } - - fn into_address(self) -> ManagedAddress { - self.clone() - } -} +impl TxToSpecified for &ManagedAddress where Api: ManagedTypeApi {} diff --git a/framework/base/src/types/managed/basic/managed_buffer.rs b/framework/base/src/types/managed/basic/managed_buffer.rs index 7c08f32699..3e4347aa1d 100644 --- a/framework/base/src/types/managed/basic/managed_buffer.rs +++ b/framework/base/src/types/managed/basic/managed_buffer.rs @@ -159,6 +159,26 @@ where } } +impl From for ManagedBuffer +where + M: ManagedTypeApi, +{ + #[inline] + fn from(s: crate::types::heap::String) -> Self { + Self::new_from_bytes(s.as_bytes()) + } +} + +impl From<&crate::types::heap::String> for ManagedBuffer +where + M: ManagedTypeApi, +{ + #[inline] + fn from(s: &crate::types::heap::String) -> Self { + Self::new_from_bytes(s.as_bytes()) + } +} + impl Default for ManagedBuffer { #[inline] fn default() -> Self { diff --git a/framework/base/src/types/managed/wrapped/managed_address.rs b/framework/base/src/types/managed/wrapped/managed_address.rs index 1ce1524bb6..be24c8e99b 100644 --- a/framework/base/src/types/managed/wrapped/managed_address.rs +++ b/framework/base/src/types/managed/wrapped/managed_address.rs @@ -8,10 +8,12 @@ use crate::{ NestedDecode, NestedDecodeInput, NestedEncode, NestedEncodeOutput, TopDecode, TopDecodeInput, TopEncode, TopEncodeOutput, TryStaticCast, }, - formatter::{hex_util::encode_bytes_as_hex, FormatByteReceiver, SCLowerHex}, + formatter::{hex_util::encode_bytes_as_hex, FormatBuffer, FormatByteReceiver, SCLowerHex}, types::{heap::Address, ManagedBuffer, ManagedByteArray, ManagedType}, }; +use super::ManagedBufferCachedBuilder; + #[repr(transparent)] #[derive(Clone)] pub struct ManagedAddress { @@ -250,6 +252,14 @@ impl SCLowerHex for ManagedAddress { } } +impl ManagedAddress { + pub fn hex_expr(&self) -> ManagedBuffer { + let mut result = ManagedBufferCachedBuilder::new_from_slice(b"0x"); + result.append_lower_hex(self); + result.into_managed_buffer() + } +} + impl core::fmt::Debug for ManagedAddress { fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { f.debug_struct("ManagedAddress") diff --git a/framework/scenario/src/facade.rs b/framework/scenario/src/facade.rs index f53625895e..60fb9f4d83 100644 --- a/framework/scenario/src/facade.rs +++ b/framework/scenario/src/facade.rs @@ -4,6 +4,7 @@ mod scenario_world; mod scenario_world_runner; mod scenario_world_steps; mod scenario_world_steps_deprecated; +mod scenario_world_steps_tx; mod scenario_world_whitebox; mod whitebox_contract; diff --git a/framework/scenario/src/facade/contract_info.rs b/framework/scenario/src/facade/contract_info.rs index 35b3ee1afb..0e4f2619d9 100644 --- a/framework/scenario/src/facade/contract_info.rs +++ b/framework/scenario/src/facade/contract_info.rs @@ -1,5 +1,10 @@ use std::ops::{Deref, DerefMut}; +use multiversx_sc::{ + api::CallTypeApi, + types::{AnnotatedValue, ManagedBuffer, TxFrom, TxFromSpecified, TxTo, TxToSpecified}, +}; + use crate::multiversx_sc::{ api::ManagedTypeApi, codec::{CodecFrom, EncodeErrorHandler, TopEncode, TopEncodeOutput}, @@ -90,3 +95,49 @@ impl CodecFrom> for Address {} impl CodecFrom<&ContractInfo

> for Address {} impl CodecFrom> for ManagedAddress {} impl CodecFrom<&ContractInfo

> for ManagedAddress {} + +impl AnnotatedValue> for &ContractInfo

+where + Api: CallTypeApi, + P: ProxyObjBase, +{ + fn annotation(&self) -> ManagedBuffer { + self.scenario_address_expr.original.as_str().into() + } + + fn into_value(self) -> ManagedAddress { + (&self.scenario_address_expr.value).into() + } + + fn with_value_ref)>(&self, f: F) { + let ma: ManagedAddress = (&self.scenario_address_expr.value).into(); + f(&ma); + } +} +impl TxFrom for &ContractInfo

+where + Api: CallTypeApi, + P: ProxyObjBase, +{ + fn resolve_address(&self) -> ManagedAddress { + (&self.scenario_address_expr.value).into() + } +} +impl TxFromSpecified for &ContractInfo

+where + Api: CallTypeApi, + P: ProxyObjBase, +{ +} +impl TxTo for &ContractInfo

+where + Api: CallTypeApi, + P: ProxyObjBase, +{ +} +impl TxToSpecified for &ContractInfo

+where + Api: CallTypeApi, + P: ProxyObjBase, +{ +} diff --git a/framework/scenario/src/facade/scenario_world_steps_tx.rs b/framework/scenario/src/facade/scenario_world_steps_tx.rs new file mode 100644 index 0000000000..be7763bd58 --- /dev/null +++ b/framework/scenario/src/facade/scenario_world_steps_tx.rs @@ -0,0 +1,79 @@ +use std::path::PathBuf; + +use multiversx_sc::types::{ + AnnotatedValue, FunctionCall, ManagedAddress, Tx, TxBaseWithEnv, TxEnvironemnt, + TxFromSpecified, TxGas, TxPayment, TxToSpecified, +}; + +use crate::{api::StaticApi, facade::ScenarioWorld, scenario_model::ScCallStep}; + +#[derive(Default, Debug, Clone)] +pub struct ScenarioTxEnvironment { + pub context_path: PathBuf, + pub from_annotation: Option, + pub to_annotation: Option, +} + +impl TxEnvironemnt for ScenarioTxEnvironment { + fn annotate_from(&mut self, to: &From) + where + From: AnnotatedValue>, + { + self.from_annotation = Some(to.annotation().to_string()) + } + + fn annotate_to(&mut self, to: &To) + where + To: AnnotatedValue>, + { + self.to_annotation = Some(to.annotation().to_string()) + } +} + +pub type TxScenarioBase = TxBaseWithEnv; + +pub trait ScenarioTx { + fn run_as_scenario_step(self, world: &mut ScenarioWorld); +} + +impl ScenarioWorld { + fn tx_env(&self) -> ScenarioTxEnvironment { + ScenarioTxEnvironment { + context_path: self.current_dir.clone(), + ..Default::default() + } + } + + pub fn tx(&mut self, f: F) -> &mut Self + where + STx: ScenarioTx, + F: FnOnce(TxScenarioBase) -> STx, + { + let env = self.tx_env(); + let tx_base = TxScenarioBase::new_with_env(env); + let tx = f(tx_base); + tx.run_as_scenario_step(self); + self + } +} + +impl ScenarioTx + for Tx> +where + From: TxFromSpecified, + To: TxToSpecified, + Payment: TxPayment, + Gas: TxGas, +{ + fn run_as_scenario_step(self, world: &mut ScenarioWorld) { + let mut step = ScCallStep::new() + .from(self.env.from_annotation.unwrap().as_str()) + .to(self.env.to_annotation.unwrap().as_str()) + .function(self.data.function_name.to_string().as_str()); + for arg in self.data.arg_buffer.iter_buffers() { + step = step.argument(arg.to_vec()); + } + + world.sc_call(step); + } +} From dc2d895d31103b85b30abb20cf6848a9e275d4c1 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 7 Nov 2023 23:11:50 +0200 Subject: [PATCH 004/461] unified tx syntax - tx env refactor --- .../src/contract_base/contract_base_trait.rs | 9 +- .../base/src/types/interaction/annotated.rs | 28 +- .../interaction/contract_call_no_payment.rs | 6 +- .../src/types/interaction/expr_address.rs | 20 +- .../base/src/types/interaction/expr_sc.rs | 24 +- framework/base/src/types/interaction/mod.rs | 10 +- framework/base/src/types/interaction/tx.rs | 347 ++++++------------ .../base/src/types/interaction/tx_data.rs | 20 +- .../base/src/types/interaction/tx_env.rs | 52 +++ .../base/src/types/interaction/tx_env_sc.rs | 145 ++++++++ .../src/types/interaction/tx_environment.rs | 66 ---- .../base/src/types/interaction/tx_from.rs | 37 +- .../base/src/types/interaction/tx_gas.rs | 38 +- .../base/src/types/interaction/tx_payment.rs | 165 +++++---- framework/base/src/types/interaction/tx_to.rs | 20 +- .../scenario/src/facade/contract_info.rs | 35 +- .../src/facade/scenario_world_steps_tx.rs | 37 +- 17 files changed, 558 insertions(+), 501 deletions(-) create mode 100644 framework/base/src/types/interaction/tx_env.rs create mode 100644 framework/base/src/types/interaction/tx_env_sc.rs delete mode 100644 framework/base/src/types/interaction/tx_environment.rs diff --git a/framework/base/src/contract_base/contract_base_trait.rs b/framework/base/src/contract_base/contract_base_trait.rs index bf5fcc7654..342b9ea61d 100644 --- a/framework/base/src/contract_base/contract_base_trait.rs +++ b/framework/base/src/contract_base/contract_base_trait.rs @@ -2,7 +2,10 @@ use super::{ BlockchainWrapper, CallValueWrapper, CryptoWrapper, ErrorHelper, ManagedSerializer, SendRawWrapper, SendWrapper, StorageRawWrapper, }; -use crate::{api::VMApi, types::TxBase}; +use crate::{ + api::VMApi, + types::{Tx, TxBaseWithEnv, TxScEnv}, +}; /// Interface to be used by the actual smart contract code. /// @@ -28,8 +31,8 @@ pub trait ContractBase: Sized { /// Starts the declaration of a new transaction. #[inline] - fn tx(&self) -> TxBase { - TxBase::new() + fn tx(&self) -> TxBaseWithEnv> { + Tx::new_tx_from_sc() } /// Low-level functionality related to sending transactions from the current contract. diff --git a/framework/base/src/types/interaction/annotated.rs b/framework/base/src/types/interaction/annotated.rs index 2814f95444..9463ed7c12 100644 --- a/framework/base/src/types/interaction/annotated.rs +++ b/framework/base/src/types/interaction/annotated.rs @@ -3,47 +3,49 @@ use crate::{ types::{ManagedAddress, ManagedBuffer}, }; -pub trait AnnotatedValue +use super::TxEnv; + +pub trait AnnotatedValue where - Api: ManagedTypeApi, + Env: TxEnv, { - fn annotation(&self) -> ManagedBuffer; + fn annotation(&self, _env: &Env) -> ManagedBuffer; fn into_value(self) -> T; fn with_value_ref(&self, f: F); } -impl AnnotatedValue> for ManagedAddress +impl AnnotatedValue> for ManagedAddress where - Api: ManagedTypeApi, + Env: TxEnv, { - fn annotation(&self) -> ManagedBuffer { + fn annotation(&self, _env: &Env) -> ManagedBuffer { self.hex_expr() } - fn into_value(self) -> ManagedAddress { + fn into_value(self) -> ManagedAddress { self } - fn with_value_ref)>(&self, f: F) { + fn with_value_ref)>(&self, f: F) { f(self) } } -impl AnnotatedValue> for &ManagedAddress +impl AnnotatedValue> for &ManagedAddress where - Api: ManagedTypeApi, + Env: TxEnv, { - fn annotation(&self) -> crate::types::ManagedBuffer { + fn annotation(&self, _env: &Env) -> crate::types::ManagedBuffer { self.hex_expr() } - fn into_value(self) -> ManagedAddress { + fn into_value(self) -> ManagedAddress { self.clone() } - fn with_value_ref)>(&self, f: F) { + fn with_value_ref)>(&self, f: F) { f(self) } } diff --git a/framework/base/src/types/interaction/contract_call_no_payment.rs b/framework/base/src/types/interaction/contract_call_no_payment.rs index 5471c2a9e8..69057da3e9 100644 --- a/framework/base/src/types/interaction/contract_call_no_payment.rs +++ b/framework/base/src/types/interaction/contract_call_no_payment.rs @@ -14,7 +14,7 @@ use super::{ contract_call_exec::UNSPECIFIED_GAS_LIMIT, contract_call_with_egld::ContractCallWithEgld, contract_call_with_multi_esdt::ContractCallWithMultiEsdt, ContractCall, ContractCallWithAnyPayment, ContractCallWithEgldOrSingleEsdt, FunctionCall, ManagedArgBuffer, - Tx, + Tx, TxScEnv, }; /// Holds metadata for calling another contract, without payments. @@ -168,7 +168,7 @@ where self.function_call } - pub fn tx(self) -> Tx> { - Tx::new().call(self.function_call) + pub fn tx(self) -> Tx, (), (), (), (), FunctionCall> { + Tx::new_tx_from_sc().call(self.function_call) } } diff --git a/framework/base/src/types/interaction/expr_address.rs b/framework/base/src/types/interaction/expr_address.rs index 305d833cc8..69a13cd6e3 100644 --- a/framework/base/src/types/interaction/expr_address.rs +++ b/framework/base/src/types/interaction/expr_address.rs @@ -5,44 +5,44 @@ use crate::{ types::{ManagedAddress, ManagedBuffer}, }; -use super::{AnnotatedValue, TxFrom, TxFromSpecified}; +use super::{AnnotatedValue, TxEnv, TxFrom, TxFromSpecified}; const ADDRESS_PREFIX: &str = "address:"; #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub struct AddressExpr(pub &'static str); -impl AnnotatedValue> for AddressExpr +impl AnnotatedValue> for AddressExpr where - Api: CallTypeApi, + Env: TxEnv, { - fn annotation(&self) -> ManagedBuffer { + fn annotation(&self, _env: &Env) -> ManagedBuffer { let mut result = ManagedBuffer::new_from_bytes(ADDRESS_PREFIX.as_bytes()); result.append_bytes(self.0.as_bytes()); result } - fn into_value(self) -> ManagedAddress { + fn into_value(self) -> ManagedAddress { let expr: [u8; 32] = self.eval_to_array(); expr.into() } - fn with_value_ref)>(&self, f: F) { + fn with_value_ref)>(&self, f: F) { let expr: [u8; 32] = self.eval_to_array(); let ma = expr.into(); f(&ma); } } -impl TxFrom for AddressExpr +impl TxFrom for AddressExpr where - Api: CallTypeApi, + Env: TxEnv, { - fn resolve_address(&self) -> ManagedAddress { + fn resolve_address(&self, _env: &Env) -> ManagedAddress { let expr: [u8; 32] = self.eval_to_array(); expr.into() } } -impl TxFromSpecified for AddressExpr where Api: CallTypeApi {} +impl TxFromSpecified for AddressExpr where Env: TxEnv {} impl AddressExpr { pub const fn eval_to_array(&self) -> [u8; 32] { diff --git a/framework/base/src/types/interaction/expr_sc.rs b/framework/base/src/types/interaction/expr_sc.rs index f83bfe3149..a5ba6a5e82 100644 --- a/framework/base/src/types/interaction/expr_sc.rs +++ b/framework/base/src/types/interaction/expr_sc.rs @@ -5,46 +5,46 @@ use crate::{ types::{ManagedAddress, ManagedBuffer}, }; -use super::{AnnotatedValue, TxFrom, TxFromSpecified, TxTo, TxToSpecified}; +use super::{AnnotatedValue, TxEnv, TxFrom, TxFromSpecified, TxTo, TxToSpecified}; const SC_PREFIX: &str = "sc:"; #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub struct ScExpr<'a>(pub &'a str); -impl<'a, Api> AnnotatedValue> for ScExpr<'a> +impl<'a, Env> AnnotatedValue> for ScExpr<'a> where - Api: CallTypeApi, + Env: TxEnv, { - fn annotation(&self) -> ManagedBuffer { + fn annotation(&self, _env: &Env) -> ManagedBuffer { let mut result = ManagedBuffer::new_from_bytes(SC_PREFIX.as_bytes()); result.append_bytes(self.0.as_bytes()); result } - fn into_value(self) -> ManagedAddress { + fn into_value(self) -> ManagedAddress { let expr: [u8; 32] = self.eval_to_array(); expr.into() } - fn with_value_ref)>(&self, f: F) { + fn with_value_ref)>(&self, f: F) { let expr: [u8; 32] = self.eval_to_array(); let ma = expr.into(); f(&ma); } } -impl<'a, Api> TxFrom for ScExpr<'a> +impl<'a, Env> TxFrom for ScExpr<'a> where - Api: CallTypeApi, + Env: TxEnv, { - fn resolve_address(&self) -> ManagedAddress { + fn resolve_address(&self, _env: &Env) -> ManagedAddress { let expr: [u8; 32] = self.eval_to_array(); expr.into() } } -impl<'a, Api> TxFromSpecified for ScExpr<'a> where Api: CallTypeApi {} -impl<'a, Api> TxTo for ScExpr<'a> where Api: CallTypeApi {} -impl<'a, Api> TxToSpecified for ScExpr<'a> where Api: CallTypeApi {} +impl<'a, Env> TxFromSpecified for ScExpr<'a> where Env: TxEnv {} +impl<'a, Env> TxTo for ScExpr<'a> where Env: TxEnv {} +impl<'a, Env> TxToSpecified for ScExpr<'a> where Env: TxEnv {} impl<'a> ScExpr<'a> { pub const fn eval_to_array(&self) -> [u8; 32] { diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index b44ff66d0f..f8589bbf0d 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -1,3 +1,5 @@ +#![allow(unused)] // TEMP + mod annotated; mod async_call; mod async_call_promises; @@ -19,7 +21,8 @@ mod function_call; mod managed_arg_buffer; mod tx; mod tx_data; -mod tx_environment; +mod tx_env; +mod tx_env_sc; mod tx_from; mod tx_gas; mod tx_payment; @@ -46,8 +49,11 @@ pub use function_call::FunctionCall; pub use managed_arg_buffer::ManagedArgBuffer; pub use tx::*; pub use tx_data::*; -pub use tx_environment::*; +pub use tx_env::*; +pub use tx_env_sc::*; pub use tx_from::*; pub use tx_gas::*; pub use tx_payment::*; pub use tx_to::*; + +pub type TxScBase = TxBaseWithEnv>; diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 93d0ff6b04..60b26b71e1 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -12,21 +12,19 @@ use crate::{ }; use super::{ - AsyncCall, ExplicitGas, FunctionCall, TxData, TxEnvironemnt, TxFrom, TxGas, TxPayment, TxTo, - TxToSpecified, TxFromSpecified, + AsyncCall, ExplicitGas, FunctionCall, TxData, TxEnv, TxFrom, TxFromSpecified, TxGas, TxPayment, + TxScEnv, TxTo, TxToSpecified, }; -pub struct Tx +pub struct Tx where - Api: CallTypeApi + 'static, - Env: TxEnvironemnt, - From: TxFrom, - To: TxTo, - Payment: TxPayment, - Gas: TxGas, - Data: TxData, + Env: TxEnv, + From: TxFrom, + To: TxTo, + Payment: TxPayment, + Gas: TxGas, + Data: TxData, { - pub(super) _phantom: PhantomData, pub env: Env, pub from: From, pub to: To, @@ -35,21 +33,19 @@ where pub data: Data, } -impl Tx +impl Tx where - Api: CallTypeApi + 'static, - Env: TxEnvironemnt, - From: TxFrom, - To: TxTo, - Payment: TxPayment, - Gas: TxGas, - Data: TxData, + Env: TxEnv, + From: TxFrom, + To: TxTo, + Payment: TxPayment, + Gas: TxGas, + Data: TxData, { /// TODO: does nothing, delete, added for easier copy-paste. #[inline] - pub fn nothing(self) -> Tx { + pub fn nothing(self) -> Tx { Tx { - _phantom: PhantomData, env: self.env, from: self.from, to: self.to, @@ -60,17 +56,15 @@ where } } -pub type TxBaseWithEnv = Tx; +pub type TxBaseWithEnv = Tx; -impl TxBaseWithEnv +impl TxBaseWithEnv where - Api: CallTypeApi + 'static, - Env: TxEnvironemnt, + Env: TxEnv, { #[inline] pub fn new_with_env(env: Env) -> Self { Tx { - _phantom: PhantomData, env, from: (), to: (), @@ -81,45 +75,35 @@ where } } -pub type TxBase = Tx; +// impl Default for TxBaseWithEnv<()> { +// #[inline] +// fn default() -> Self { +// Self::new_with_env(()) +// } +// } -impl Default for TxBase -where - Api: CallTypeApi + 'static, -{ - #[inline] - fn default() -> Self { - Self::new_with_env(()) - } -} - -impl TxBase -where - Api: CallTypeApi + 'static, -{ - #[inline] - pub fn new() -> Self { - Self::default() - } -} +// impl TxBaseWithEnv<()> { +// #[inline] +// pub fn new() -> Self { +// Self::default() +// } +// } -impl Tx +impl Tx where - Api: CallTypeApi + 'static, - Env: TxEnvironemnt, - To: TxTo, - Payment: TxPayment, - Gas: TxGas, - Data: TxData, + Env: TxEnv, + To: TxTo, + Payment: TxPayment, + Gas: TxGas, + Data: TxData, { - pub fn from(self, from: From) -> Tx + pub fn from(self, from: From) -> Tx where - From: TxFromSpecified, + From: TxFromSpecified, { let mut env = self.env; env.annotate_from(&from); Tx { - _phantom: PhantomData, env, from, to: self.to, @@ -130,23 +114,21 @@ where } } -impl Tx +impl Tx where - Api: CallTypeApi + 'static, - Env: TxEnvironemnt, - From: TxFrom, - Payment: TxPayment, - Gas: TxGas, - Data: TxData, + Env: TxEnv, + From: TxFrom, + Payment: TxPayment, + Gas: TxGas, + Data: TxData, { - pub fn to(self, to: To) -> Tx + pub fn to(self, to: To) -> Tx where - To: TxToSpecified, + To: TxToSpecified, { let mut env = self.env; env.annotate_to(&to); Tx { - _phantom: PhantomData, env, from: self.from, to, @@ -156,27 +138,25 @@ where } } - pub fn to_caller(self) -> Tx, Payment, Gas, Data> { - let caller = BlockchainWrapper::::new().get_caller(); + pub fn to_caller(self) -> Tx, Payment, Gas, Data> { + let caller = BlockchainWrapper::::new().get_caller(); self.to(caller) } } -impl Tx +impl Tx where - Api: CallTypeApi + 'static, - Env: TxEnvironemnt, - From: TxFrom, - To: TxTo, - Gas: TxGas, - Data: TxData, + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, + Data: TxData, { pub fn egld( self, - egld_amount: BigUint, - ) -> Tx, Gas, Data> { + egld_amount: BigUint, + ) -> Tx, Gas, Data> { Tx { - _phantom: PhantomData, env: self.env, from: self.from, to: self.to, @@ -187,24 +167,22 @@ where } } -impl Tx +impl Tx where - Api: CallTypeApi + 'static, - Env: TxEnvironemnt, - From: TxFrom, - To: TxTo, - Gas: TxGas, - Data: TxData, + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, + Data: TxData, { /// Adds a single ESDT token transfer to a transaction. /// /// Since this is the first ESDT payment, a single payment tx is produced. Can be called again for multiple payments. - pub fn esdt>>( + pub fn esdt>>( self, payment: P, - ) -> Tx, Gas, Data> { + ) -> Tx, Gas, Data> { Tx { - _phantom: PhantomData, env: self.env, from: self.from, to: self.to, @@ -217,10 +195,9 @@ where /// Adds a collection of ESDT payments to a transaction. pub fn multi_esdt( self, - payments: MultiEsdtPayment, // TODO: references - ) -> Tx, Gas, Data> { + payments: MultiEsdtPayment, // TODO: references + ) -> Tx, Gas, Data> { Tx { - _phantom: PhantomData, env: self.env, from: self.from, to: self.to, @@ -231,27 +208,25 @@ where } } -impl Tx, Gas, Data> +impl Tx, Gas, Data> where - Api: CallTypeApi + 'static, - Env: TxEnvironemnt, - From: TxFrom, - To: TxTo, - Gas: TxGas, - Data: TxData, + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, + Data: TxData, { /// Adds a single ESDT token transfer to a contract call. /// /// Can be called multiple times on the same call. - pub fn with_esdt_transfer>>( + pub fn with_esdt_transfer>>( self, payment: P, - ) -> Tx, Gas, Data> { + ) -> Tx, Gas, Data> { let mut payments = ManagedVec::new(); payments.push(self.payment); payments.push(payment.into()); Tx { - _phantom: PhantomData, env: self.env, from: self.from, to: self.to, @@ -262,44 +237,38 @@ where } } -impl Tx, Gas, Data> +impl Tx, Gas, Data> where - Api: CallTypeApi + 'static, - Env: TxEnvironemnt, - From: TxFrom, - To: TxTo, - Gas: TxGas, - Data: TxData, + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, + Data: TxData, { /// Adds a single ESDT token transfer to a contract call. /// /// Can be called multiple times on the same call. - pub fn with_esdt_transfer>>( + pub fn with_esdt_transfer>>( mut self, payment: P, - ) -> Tx, Gas, Data> { + ) -> Tx, Gas, Data> { self.payment.push(payment.into()); self } } -impl Tx +impl Tx where - Api: CallTypeApi + 'static, - Env: TxEnvironemnt, - From: TxFrom, - To: TxTo, - Payment: TxPayment, - Data: TxData, + Env: TxEnv, + From: TxFrom, + To: TxTo, + Payment: TxPayment, + Data: TxData, { /// Sets an explicit gas limit to the call. #[inline] - pub fn with_gas_limit( - self, - gas_limit: u64, - ) -> Tx { + pub fn with_gas_limit(self, gas_limit: u64) -> Tx { Tx { - _phantom: PhantomData, env: self.env, from: self.from, to: self.to, @@ -310,22 +279,20 @@ where } } -impl Tx +impl Tx where - Api: CallTypeApi + 'static, - Env: TxEnvironemnt, - From: TxFrom, - To: TxTo, - Payment: TxPayment, - Gas: TxGas, + Env: TxEnv, + From: TxFrom, + To: TxTo, + Payment: TxPayment, + Gas: TxGas, { #[inline] - pub fn call>>( + pub fn call>>( self, call: FC, - ) -> Tx> { + ) -> Tx> { Tx { - _phantom: PhantomData, env: self.env, from: self.from, to: self.to, @@ -336,12 +303,11 @@ where } #[inline] - pub fn function_name>>( + pub fn function_name>>( self, function_name: N, - ) -> Tx> { + ) -> Tx> { Tx { - _phantom: PhantomData, env: self.env, from: self.from, to: self.to, @@ -352,14 +318,13 @@ where } } -impl Tx> +impl Tx> where - Api: CallTypeApi + 'static, - Env: TxEnvironemnt, - From: TxFrom, - To: TxTo, - Payment: TxPayment, - Gas: TxGas, + Env: TxEnv, + From: TxFrom, + To: TxTo, + Payment: TxPayment, + Gas: TxGas, { #[inline] pub fn argument(mut self, arg: &T) -> Self { @@ -368,23 +333,22 @@ where } } -impl Tx> +impl Tx> where - Api: CallTypeApi + 'static, - Env: TxEnvironemnt, - From: TxFrom, - To: TxToSpecified, - Payment: TxPayment, - Gas: TxGas, + Env: TxEnv, + From: TxFrom, + To: TxToSpecified, + Payment: TxPayment, + Gas: TxGas, { pub fn normalize_tx( self, - ) -> Tx, EgldPayment, Gas, FunctionCall> { - let result = self - .payment - .convert_tx_data(&self.from, self.to.into_value(), self.data); + ) -> Tx, EgldPayment, Gas, FunctionCall> + { + let result = + self.payment + .convert_tx_data(&self.env, &self.from, self.to.into_value(), self.data); Tx { - _phantom: PhantomData, env: self.env, from: self.from, to: result.to, @@ -394,78 +358,3 @@ where } } } - -impl Tx> -where - Api: CallTypeApi + 'static, - To: TxToSpecified, - Payment: TxPayment, -{ - pub fn async_call(self) -> AsyncCall { - let normalized = self.normalize_tx(); - AsyncCall { - to: normalized.to, - egld_payment: normalized.payment.value, - function_call: normalized.data, - callback_call: None, - } - } -} - -impl Tx> -where - Api: CallTypeApi + 'static, - To: TxToSpecified, - Payment: TxPayment, -{ - #[cfg(feature = "promises")] - pub fn async_call_promise(self) -> super::AsyncCallPromises { - let explicit_gas_limit = self.gas.0; - let normalized = self.normalize_tx(); - super::AsyncCallPromises { - to: normalized.to, - egld_payment: normalized.payment.value, - function_call: normalized.data, - explicit_gas_limit, - extra_gas_for_callback: 0, - callback_call: None, - } - } -} - -impl Tx -where - Api: CallTypeApi + 'static, - From: TxFrom, - To: TxToSpecified, - Payment: TxPayment, - Gas: TxGas, - FC: TxData + Into>, -{ - pub fn transfer_execute(self) { - if self.payment.is_no_payment() && self.data.is_no_call() { - return; - } - - let gas_limit = self.gas.resolve_gas::(); - - self.to.with_value_ref(|to| { - self.payment - .perform_transfer_execute(to, gas_limit, self.data.into()); - }); - } -} - -impl Tx -where - Api: CallTypeApi + 'static, - From: TxFrom, - To: TxToSpecified, - Payment: TxPayment, - Gas: TxGas, -{ - /// Syntactic sugar, only allowed for simple transfers. - pub fn transfer(self) { - self.transfer_execute() - } -} diff --git a/framework/base/src/types/interaction/tx_data.rs b/framework/base/src/types/interaction/tx_data.rs index e49038a1f7..3f8da83eed 100644 --- a/framework/base/src/types/interaction/tx_data.rs +++ b/framework/base/src/types/interaction/tx_data.rs @@ -4,39 +4,39 @@ use crate::{ types::{ManagedBuffer, ManagedBufferCachedBuilder}, }; -use super::FunctionCall; +use super::{FunctionCall, TxEnv}; -pub trait TxData +pub trait TxData where - Api: ManagedTypeApi, + Env: TxEnv, { fn is_no_call(&self) -> bool; - fn to_call_data_string(&self) -> ManagedBuffer; + fn to_call_data_string(&self) -> ManagedBuffer; } -impl TxData for () +impl TxData for () where - Api: ManagedTypeApi, + Env: TxEnv, { fn is_no_call(&self) -> bool { true } - fn to_call_data_string(&self) -> ManagedBuffer { + fn to_call_data_string(&self) -> ManagedBuffer { ManagedBuffer::new() } } -impl TxData for FunctionCall +impl TxData for FunctionCall where - Api: ManagedTypeApi, + Env: TxEnv, { fn is_no_call(&self) -> bool { self.is_empty() } - fn to_call_data_string(&self) -> ManagedBuffer { + fn to_call_data_string(&self) -> ManagedBuffer { let mut result = ManagedBufferCachedBuilder::default(); result.append_managed_buffer(&self.function_name); for arg in self.arg_buffer.raw_arg_iter() { diff --git a/framework/base/src/types/interaction/tx_env.rs b/framework/base/src/types/interaction/tx_env.rs new file mode 100644 index 0000000000..c9746b36aa --- /dev/null +++ b/framework/base/src/types/interaction/tx_env.rs @@ -0,0 +1,52 @@ +use core::marker::PhantomData; + +use crate::{ + api::CallTypeApi, + types::{ManagedAddress, ManagedBuffer}, +}; + +use super::AnnotatedValue; + +pub trait TxEnv: Sized { + type Api: CallTypeApi; + + fn annotate_from(&mut self, from: &From) + where + From: AnnotatedValue>; + + fn annotate_to(&mut self, to: &To) + where + To: AnnotatedValue>; + + fn resolve_sender_address(&self) -> ManagedAddress; + + fn default_gas(&self) -> u64; +} + +// pub struct TxTestingEnvironemnt +// where +// Api: CallTypeApi, +// { +// pub(super) _phantom: PhantomData, +// pub from_annotation: ManagedBuffer, +// pub to_annotation: ManagedBuffer, +// } + +// impl TxEnv for TxTestingEnvironemnt +// where +// Api: CallTypeApi, +// { +// fn annotate_from(&mut self, from: &From) +// where +// From: AnnotatedValue>, +// { +// self.from_annotation = from.annotation(); +// } + +// fn annotate_to(&mut self, to: &To) +// where +// To: AnnotatedValue>, +// { +// self.to_annotation = to.annotation(); +// } +// } diff --git a/framework/base/src/types/interaction/tx_env_sc.rs b/framework/base/src/types/interaction/tx_env_sc.rs new file mode 100644 index 0000000000..b7f5a18bb4 --- /dev/null +++ b/framework/base/src/types/interaction/tx_env_sc.rs @@ -0,0 +1,145 @@ +use core::marker::PhantomData; + +use crate::{ + api::{BlockchainApiImpl, CallTypeApi}, + contract_base::BlockchainWrapper, + types::{ManagedAddress, ManagedBuffer}, +}; + +use super::{ + contract_call_exec::TRANSFER_EXECUTE_DEFAULT_LEFTOVER, AnnotatedValue, AsyncCall, ExplicitGas, + FunctionCall, Tx, TxBaseWithEnv, TxData, TxEnv, TxFrom, TxGas, TxPayment, TxToSpecified, +}; + +pub struct TxScEnv +where + Api: CallTypeApi, +{ + _phantom: PhantomData, +} + +impl Default for TxScEnv +where + Api: CallTypeApi, +{ + fn default() -> Self { + Self { + _phantom: PhantomData, + } + } +} + +impl TxBaseWithEnv> +where + Api: CallTypeApi, +{ + pub fn new_tx_from_sc() -> Self { + Tx::new_with_env(TxScEnv::default()) + } +} + +impl TxEnv for TxScEnv +where + Api: CallTypeApi, +{ + type Api = Api; + + fn annotate_from(&mut self, _from: &From) + where + From: AnnotatedValue>, + { + } + + fn annotate_to(&mut self, _to: &To) + where + To: AnnotatedValue>, + { + } + + fn resolve_sender_address(&self) -> ManagedAddress { + BlockchainWrapper::::new().get_sc_address() + } + + fn default_gas(&self) -> u64 { + let mut gas_left = Api::blockchain_api_impl().get_gas_left(); + if gas_left > TRANSFER_EXECUTE_DEFAULT_LEFTOVER { + gas_left -= TRANSFER_EXECUTE_DEFAULT_LEFTOVER; + } + gas_left + } +} + +impl Tx, (), To, Payment, (), FunctionCall> +where + Api: CallTypeApi, + To: TxToSpecified>, + Payment: TxPayment>, +{ + pub fn async_call(self) -> AsyncCall { + let normalized = self.normalize_tx(); + AsyncCall { + to: normalized.to, + egld_payment: normalized.payment.value, + function_call: normalized.data, + callback_call: None, + } + } +} + +impl Tx, (), To, Payment, ExplicitGas, FunctionCall> +where + Api: CallTypeApi, + To: TxToSpecified>, + Payment: TxPayment>, +{ + #[cfg(feature = "promises")] + pub fn async_call_promise(self) -> super::AsyncCallPromises { + let explicit_gas_limit = self.gas.0; + let normalized = self.normalize_tx(); + super::AsyncCallPromises { + to: normalized.to, + egld_payment: normalized.payment.value, + function_call: normalized.data, + explicit_gas_limit, + extra_gas_for_callback: 0, + callback_call: None, + } + } +} + +impl Tx, From, To, Payment, Gas, FC> +where + Api: CallTypeApi, + From: TxFrom>, + To: TxToSpecified>, + Payment: TxPayment>, + Gas: TxGas>, + FC: TxData> + Into>, +{ + pub fn transfer_execute(self) { + if self.payment.is_no_payment() && self.data.is_no_call() { + return; + } + + let gas_limit = self.gas.resolve_gas(&self.env); + + self.to.with_value_ref(|to| { + self.payment + .perform_transfer_execute(&self.env, to, gas_limit, self.data.into()); + }); + } +} + +impl Tx, From, To, Payment, Gas, ()> +where + Api: CallTypeApi, + From: TxFrom>, + To: TxToSpecified>, + Payment: TxPayment>, + Gas: TxGas>, +{ + /// Syntactic sugar, only allowed for simple transfers. + pub fn transfer(self) { + self.transfer_execute() + } +} diff --git a/framework/base/src/types/interaction/tx_environment.rs b/framework/base/src/types/interaction/tx_environment.rs deleted file mode 100644 index 62c90ab47f..0000000000 --- a/framework/base/src/types/interaction/tx_environment.rs +++ /dev/null @@ -1,66 +0,0 @@ -use core::marker::PhantomData; - -use crate::{ - api::CallTypeApi, - types::{ManagedAddress, ManagedBuffer}, -}; - -use super::AnnotatedValue; - -pub trait TxEnvironemnt -where - Api: CallTypeApi, -{ - fn annotate_from(&mut self, from: &From) - where - From: AnnotatedValue>; - - fn annotate_to(&mut self, to: &To) - where - To: AnnotatedValue>; -} - -impl TxEnvironemnt for () -where - Api: CallTypeApi, -{ - fn annotate_from(&mut self, _from: &From) - where - From: AnnotatedValue>, - { - } - - fn annotate_to(&mut self, _to: &To) - where - To: AnnotatedValue>, - { - } -} - -pub struct TxTestingEnvironemnt -where - Api: CallTypeApi, -{ - pub(super) _phantom: PhantomData, - pub from_annotation: ManagedBuffer, - pub to_annotation: ManagedBuffer, -} - -impl TxEnvironemnt for TxTestingEnvironemnt -where - Api: CallTypeApi, -{ - fn annotate_from(&mut self, from: &From) - where - From: AnnotatedValue>, - { - self.from_annotation = from.annotation(); - } - - fn annotate_to(&mut self, to: &To) - where - To: AnnotatedValue>, - { - self.to_annotation = to.annotation(); - } -} diff --git a/framework/base/src/types/interaction/tx_from.rs b/framework/base/src/types/interaction/tx_from.rs index 5edba3f2a5..83db2cb85a 100644 --- a/framework/base/src/types/interaction/tx_from.rs +++ b/framework/base/src/types/interaction/tx_from.rs @@ -1,45 +1,46 @@ use crate::{api::CallTypeApi, contract_base::BlockchainWrapper, types::ManagedAddress}; -use super::AnnotatedValue; +use super::{AnnotatedValue, TxEnv}; -pub trait TxFrom +pub trait TxFrom where - Api: CallTypeApi, + Env: TxEnv, { - fn resolve_address(&self) -> ManagedAddress; + fn resolve_address(&self, env: &Env) -> ManagedAddress; } -pub trait TxFromSpecified: TxFrom + AnnotatedValue> +pub trait TxFromSpecified: + TxFrom + AnnotatedValue> where - Api: CallTypeApi, + Env: TxEnv, { } -impl TxFrom for () +impl TxFrom for () where - Api: CallTypeApi, + Env: TxEnv, { - fn resolve_address(&self) -> ManagedAddress { - BlockchainWrapper::::new().get_sc_address() + fn resolve_address(&self, env: &Env) -> ManagedAddress { + env.resolve_sender_address() } } -impl TxFrom for ManagedAddress +impl TxFrom for ManagedAddress where - Api: CallTypeApi, + Env: TxEnv, { - fn resolve_address(&self) -> ManagedAddress { + fn resolve_address(&self, _env: &Env) -> ManagedAddress { self.clone() } } -impl TxFromSpecified for ManagedAddress where Api: CallTypeApi {} +impl TxFromSpecified for ManagedAddress where Env: TxEnv {} -impl TxFrom for &ManagedAddress +impl TxFrom for &ManagedAddress where - Api: CallTypeApi, + Env: TxEnv, { - fn resolve_address(&self) -> ManagedAddress { + fn resolve_address(&self, _env: &Env) -> ManagedAddress { (*self).clone() } } -impl TxFromSpecified for &ManagedAddress where Api: CallTypeApi {} +impl TxFromSpecified for &ManagedAddress where Env: TxEnv {} diff --git a/framework/base/src/types/interaction/tx_gas.rs b/framework/base/src/types/interaction/tx_gas.rs index dcb37140b7..eec6693837 100644 --- a/framework/base/src/types/interaction/tx_gas.rs +++ b/framework/base/src/types/interaction/tx_gas.rs @@ -1,33 +1,31 @@ use crate::api::{BlockchainApiImpl, CallTypeApi}; -use super::contract_call_exec::TRANSFER_EXECUTE_DEFAULT_LEFTOVER; +use super::{contract_call_exec::TRANSFER_EXECUTE_DEFAULT_LEFTOVER, TxEnv}; -pub trait TxGas { - fn resolve_gas(&self) -> u64 - where - Api: CallTypeApi + 'static; +pub trait TxGas +where + Env: TxEnv, +{ + fn resolve_gas(&self, env: &Env) -> u64; } -impl TxGas for () { - fn resolve_gas(&self) -> u64 - where - Api: CallTypeApi + 'static, - { - let mut gas_left = Api::blockchain_api_impl().get_gas_left(); - if gas_left > TRANSFER_EXECUTE_DEFAULT_LEFTOVER { - gas_left -= TRANSFER_EXECUTE_DEFAULT_LEFTOVER; - } - gas_left +impl TxGas for () +where + Env: TxEnv, +{ + fn resolve_gas(&self, env: &Env) -> u64 { + env.default_gas() } } pub struct ExplicitGas(pub u64); -impl TxGas for ExplicitGas { - fn resolve_gas(&self) -> u64 - where - Api: CallTypeApi + 'static, - { +impl TxGas for ExplicitGas +where + Env: TxEnv, +{ + #[inline] + fn resolve_gas(&self, _env: &Env) -> u64 { self.0 } } diff --git a/framework/base/src/types/interaction/tx_payment.rs b/framework/base/src/types/interaction/tx_payment.rs index 95ad62fae1..747b6ac3bf 100644 --- a/framework/base/src/types/interaction/tx_payment.rs +++ b/framework/base/src/types/interaction/tx_payment.rs @@ -1,13 +1,15 @@ +use num_traits::Zero; + use crate::{ api::{CallTypeApi, ManagedTypeApi}, contract_base::SendRawWrapper, types::{ - EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EgldPayment, EsdtTokenPayment, + BigUint, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EgldPayment, EsdtTokenPayment, ManagedAddress, MultiEsdtPayment, }, }; -use super::{FunctionCall, TxFrom}; +use super::{FunctionCall, TxEnv, TxFrom}; /// Temporary structure for returning a normalized transfer. pub struct PaymentConversionResult @@ -19,32 +21,34 @@ where pub fc: FunctionCall, } -pub trait TxPayment +pub trait TxPayment where - Api: CallTypeApi, + Env: TxEnv, { fn is_no_payment(&self) -> bool; fn convert_tx_data( self, + env: &Env, from: &From, - to: ManagedAddress, - fc: FunctionCall, - ) -> PaymentConversionResult + to: ManagedAddress, + fc: FunctionCall, + ) -> PaymentConversionResult where - From: TxFrom; + From: TxFrom; fn perform_transfer_execute( self, - to: &ManagedAddress, + env: &Env, + to: &ManagedAddress, gas_limit: u64, - fc: FunctionCall, + fc: FunctionCall, ); } -impl TxPayment for () +impl TxPayment for () where - Api: CallTypeApi, + Env: TxEnv, { fn is_no_payment(&self) -> bool { true @@ -52,12 +56,13 @@ where fn convert_tx_data( self, + _env: &Env, _from: &From, - to: ManagedAddress, - fc: FunctionCall, - ) -> PaymentConversionResult + to: ManagedAddress, + fc: FunctionCall, + ) -> PaymentConversionResult where - From: TxFrom, + From: TxFrom, { PaymentConversionResult { to, @@ -68,17 +73,19 @@ where fn perform_transfer_execute( self, - to: &ManagedAddress, + env: &Env, + to: &ManagedAddress, gas_limit: u64, - fc: FunctionCall, + fc: FunctionCall, ) { - EgldPayment::no_payment().perform_transfer_execute(to, gas_limit, fc); + EgldPayment::no_payment().perform_transfer_execute(env, to, gas_limit, fc); + // perform_transfer_execute_egld(BigUint::zero(), to, gas_limit, fc); } } -impl TxPayment for EgldPayment +impl TxPayment for EgldPayment where - Api: CallTypeApi, + Env: TxEnv, { fn is_no_payment(&self) -> bool { self.value == 0u32 @@ -86,12 +93,13 @@ where fn convert_tx_data( self, + _env: &Env, _from: &From, - to: ManagedAddress, - fc: FunctionCall, - ) -> PaymentConversionResult + to: ManagedAddress, + fc: FunctionCall, + ) -> PaymentConversionResult where - From: TxFrom, + From: TxFrom, { PaymentConversionResult { to, @@ -102,11 +110,12 @@ where fn perform_transfer_execute( self, - to: &ManagedAddress, + _env: &Env, + to: &ManagedAddress, gas_limit: u64, - fc: FunctionCall, + fc: FunctionCall, ) { - let _ = SendRawWrapper::::new().direct_egld_execute( + let _ = SendRawWrapper::::new().direct_egld_execute( to, &self.value, gas_limit, @@ -116,9 +125,9 @@ where } } -impl TxPayment for EsdtTokenPayment +impl TxPayment for EsdtTokenPayment where - Api: CallTypeApi, + Env: TxEnv, { fn is_no_payment(&self) -> bool { self.amount == 0u32 @@ -126,33 +135,35 @@ where fn convert_tx_data( self, + env: &Env, from: &From, - to: ManagedAddress, - fc: FunctionCall, - ) -> PaymentConversionResult + to: ManagedAddress, + fc: FunctionCall, + ) -> PaymentConversionResult where - From: TxFrom, + From: TxFrom, { if self.token_nonce == 0 { convert_tx_data_fungible(self, to, fc) } else { - convert_tx_data_nft(self, from.resolve_address(), to, fc) + convert_tx_data_nft(self, from.resolve_address(env), to, fc) } } fn perform_transfer_execute( self, - to: &ManagedAddress, + env: &Env, + to: &ManagedAddress, gas_limit: u64, - fc: FunctionCall, + fc: FunctionCall, ) { - MultiEsdtPayment::from_single_item(self).perform_transfer_execute(to, gas_limit, fc) + MultiEsdtPayment::from_single_item(self).perform_transfer_execute(env, to, gas_limit, fc); } } -impl TxPayment for MultiEsdtPayment +impl TxPayment for MultiEsdtPayment where - Api: CallTypeApi, + Env: TxEnv, { fn is_no_payment(&self) -> bool { self.is_empty() @@ -160,27 +171,29 @@ where fn convert_tx_data( self, + env: &Env, from: &From, - to: ManagedAddress, - fc: FunctionCall, - ) -> PaymentConversionResult + to: ManagedAddress, + fc: FunctionCall, + ) -> PaymentConversionResult where - From: TxFrom, + From: TxFrom, { match self.len() { - 0 => ().convert_tx_data(from, to, fc), - 1 => self.get(0).convert_tx_data(from, to, fc), - _ => convert_tx_data_multi(self, from.resolve_address(), to, fc), + 0 => ().convert_tx_data(env, from, to, fc), + 1 => self.get(0).convert_tx_data(env, from, to, fc), + _ => convert_tx_data_multi(self, from.resolve_address(env), to, fc), } } fn perform_transfer_execute( self, - to: &ManagedAddress, + _env: &Env, + to: &ManagedAddress, gas_limit: u64, - fc: FunctionCall, + fc: FunctionCall, ) { - let _ = SendRawWrapper::::new().multi_esdt_transfer_execute( + let _ = SendRawWrapper::::new().multi_esdt_transfer_execute( to, &self, gas_limit, @@ -190,9 +203,9 @@ where } } -impl TxPayment for EgldOrEsdtTokenPayment +impl TxPayment for EgldOrEsdtTokenPayment where - Api: CallTypeApi, + Env: TxEnv, { fn is_no_payment(&self) -> bool { self.amount == 0u32 @@ -200,39 +213,41 @@ where fn convert_tx_data( self, + env: &Env, from: &From, - to: ManagedAddress, - fc: FunctionCall, - ) -> PaymentConversionResult + to: ManagedAddress, + fc: FunctionCall, + ) -> PaymentConversionResult where - From: TxFrom, + From: TxFrom, { self.map_egld_or_esdt( (to, fc), - |(to, fc), amount| EgldPayment::from(amount).convert_tx_data(from, to, fc), - |(to, fc), esdt_payment| esdt_payment.convert_tx_data(from, to, fc), + |(to, fc), amount| EgldPayment::from(amount).convert_tx_data(env, from, to, fc), + |(to, fc), esdt_payment| esdt_payment.convert_tx_data(env, from, to, fc), ) } fn perform_transfer_execute( self, - to: &ManagedAddress, + env: &Env, + to: &ManagedAddress, gas_limit: u64, - fc: FunctionCall, + fc: FunctionCall, ) { self.map_egld_or_esdt( (to, fc), |(to, fc), amount| { - EgldPayment::from(amount).perform_transfer_execute(to, gas_limit, fc) + EgldPayment::from(amount).perform_transfer_execute(env, to, gas_limit, fc) }, - |(to, fc), esdt_payment| esdt_payment.perform_transfer_execute(to, gas_limit, fc), + |(to, fc), esdt_payment| esdt_payment.perform_transfer_execute(env, to, gas_limit, fc), ) } } -impl TxPayment for EgldOrMultiEsdtPayment +impl TxPayment for EgldOrMultiEsdtPayment where - Api: CallTypeApi, + Env: TxEnv, { fn is_no_payment(&self) -> bool { self.is_empty() @@ -240,35 +255,37 @@ where fn convert_tx_data( self, + env: &Env, from: &From, - to: ManagedAddress, - fc: FunctionCall, - ) -> PaymentConversionResult + to: ManagedAddress, + fc: FunctionCall, + ) -> PaymentConversionResult where - From: TxFrom, + From: TxFrom, { match self { EgldOrMultiEsdtPayment::Egld(egld_amount) => { - EgldPayment::from(egld_amount).convert_tx_data(from, to, fc) + EgldPayment::from(egld_amount).convert_tx_data(env, from, to, fc) }, EgldOrMultiEsdtPayment::MultiEsdt(multi_esdt_payment) => { - multi_esdt_payment.convert_tx_data(from, to, fc) + multi_esdt_payment.convert_tx_data(env, from, to, fc) }, } } fn perform_transfer_execute( self, - to: &ManagedAddress, + env: &Env, + to: &ManagedAddress, gas_limit: u64, - fc: FunctionCall, + fc: FunctionCall, ) { match self { EgldOrMultiEsdtPayment::Egld(egld_amount) => { - EgldPayment::from(egld_amount).perform_transfer_execute(to, gas_limit, fc) + EgldPayment::from(egld_amount).perform_transfer_execute(env, to, gas_limit, fc) }, EgldOrMultiEsdtPayment::MultiEsdt(multi_esdt_payment) => { - multi_esdt_payment.perform_transfer_execute(to, gas_limit, fc) + multi_esdt_payment.perform_transfer_execute(env, to, gas_limit, fc) }, } } diff --git a/framework/base/src/types/interaction/tx_to.rs b/framework/base/src/types/interaction/tx_to.rs index bf7e44e2be..af733870dd 100644 --- a/framework/base/src/types/interaction/tx_to.rs +++ b/framework/base/src/types/interaction/tx_to.rs @@ -1,23 +1,23 @@ use crate::{api::ManagedTypeApi, types::ManagedAddress}; -use super::AnnotatedValue; +use super::{AnnotatedValue, TxEnv}; -pub trait TxTo +pub trait TxTo where - Api: ManagedTypeApi, + Env: TxEnv, { } -impl TxTo for () where Api: ManagedTypeApi {} +impl TxTo for () where Env: TxEnv {} -pub trait TxToSpecified: TxTo + AnnotatedValue> +pub trait TxToSpecified: TxTo + AnnotatedValue> where - Api: ManagedTypeApi, + Env: TxEnv, { } -impl TxTo for ManagedAddress where Api: ManagedTypeApi {} -impl TxToSpecified for ManagedAddress where Api: ManagedTypeApi {} +impl TxTo for ManagedAddress where Env: TxEnv {} +impl TxToSpecified for ManagedAddress where Env: TxEnv {} -impl TxTo for &ManagedAddress where Api: ManagedTypeApi {} -impl TxToSpecified for &ManagedAddress where Api: ManagedTypeApi {} +impl TxTo for &ManagedAddress where Env: TxEnv {} +impl TxToSpecified for &ManagedAddress where Env: TxEnv {} diff --git a/framework/scenario/src/facade/contract_info.rs b/framework/scenario/src/facade/contract_info.rs index 0e4f2619d9..8376e859f8 100644 --- a/framework/scenario/src/facade/contract_info.rs +++ b/framework/scenario/src/facade/contract_info.rs @@ -1,8 +1,7 @@ use std::ops::{Deref, DerefMut}; -use multiversx_sc::{ - api::CallTypeApi, - types::{AnnotatedValue, ManagedBuffer, TxFrom, TxFromSpecified, TxTo, TxToSpecified}, +use multiversx_sc::types::{ + AnnotatedValue, ManagedBuffer, TxEnv, TxFrom, TxFromSpecified, TxTo, TxToSpecified, }; use crate::multiversx_sc::{ @@ -96,48 +95,48 @@ impl CodecFrom<&ContractInfo

> for Address {} impl CodecFrom> for ManagedAddress {} impl CodecFrom<&ContractInfo

> for ManagedAddress {} -impl AnnotatedValue> for &ContractInfo

+impl AnnotatedValue> for &ContractInfo

where - Api: CallTypeApi, + Env: TxEnv, P: ProxyObjBase, { - fn annotation(&self) -> ManagedBuffer { + fn annotation(&self, _env: &Env) -> ManagedBuffer { self.scenario_address_expr.original.as_str().into() } - fn into_value(self) -> ManagedAddress { + fn into_value(self) -> ManagedAddress { (&self.scenario_address_expr.value).into() } - fn with_value_ref)>(&self, f: F) { - let ma: ManagedAddress = (&self.scenario_address_expr.value).into(); + fn with_value_ref)>(&self, f: F) { + let ma: ManagedAddress = (&self.scenario_address_expr.value).into(); f(&ma); } } -impl TxFrom for &ContractInfo

+impl TxFrom for &ContractInfo

where - Api: CallTypeApi, + Env: TxEnv, P: ProxyObjBase, { - fn resolve_address(&self) -> ManagedAddress { + fn resolve_address(&self, _env: &Env) -> ManagedAddress { (&self.scenario_address_expr.value).into() } } -impl TxFromSpecified for &ContractInfo

+impl TxFromSpecified for &ContractInfo

where - Api: CallTypeApi, + Env: TxEnv, P: ProxyObjBase, { } -impl TxTo for &ContractInfo

+impl TxTo for &ContractInfo

where - Api: CallTypeApi, + Env: TxEnv, P: ProxyObjBase, { } -impl TxToSpecified for &ContractInfo

+impl TxToSpecified for &ContractInfo

where - Api: CallTypeApi, + Env: TxEnv, P: ProxyObjBase, { } diff --git a/framework/scenario/src/facade/scenario_world_steps_tx.rs b/framework/scenario/src/facade/scenario_world_steps_tx.rs index be7763bd58..d0f6dcf499 100644 --- a/framework/scenario/src/facade/scenario_world_steps_tx.rs +++ b/framework/scenario/src/facade/scenario_world_steps_tx.rs @@ -1,8 +1,8 @@ use std::path::PathBuf; use multiversx_sc::types::{ - AnnotatedValue, FunctionCall, ManagedAddress, Tx, TxBaseWithEnv, TxEnvironemnt, - TxFromSpecified, TxGas, TxPayment, TxToSpecified, + AnnotatedValue, FunctionCall, ManagedAddress, Tx, TxBaseWithEnv, TxEnv, TxFromSpecified, TxGas, + TxPayment, TxToSpecified, }; use crate::{api::StaticApi, facade::ScenarioWorld, scenario_model::ScCallStep}; @@ -14,23 +14,34 @@ pub struct ScenarioTxEnvironment { pub to_annotation: Option, } -impl TxEnvironemnt for ScenarioTxEnvironment { +impl TxEnv for ScenarioTxEnvironment { + type Api = StaticApi; + fn annotate_from(&mut self, to: &From) where - From: AnnotatedValue>, + From: AnnotatedValue>, { - self.from_annotation = Some(to.annotation().to_string()) + self.from_annotation = Some(to.annotation(self).to_string()) } fn annotate_to(&mut self, to: &To) where - To: AnnotatedValue>, + To: AnnotatedValue>, { - self.to_annotation = Some(to.annotation().to_string()) + self.to_annotation = Some(to.annotation(self).to_string()) + } + + fn resolve_sender_address(&self) -> ManagedAddress { + panic!("Explicit sender address expected") + } + + fn default_gas(&self) -> u64 { + // TODO: annotate + 5_000_000 } } -pub type TxScenarioBase = TxBaseWithEnv; +pub type TxScenarioBase = TxBaseWithEnv; pub trait ScenarioTx { fn run_as_scenario_step(self, world: &mut ScenarioWorld); @@ -58,12 +69,12 @@ impl ScenarioWorld { } impl ScenarioTx - for Tx> + for Tx> where - From: TxFromSpecified, - To: TxToSpecified, - Payment: TxPayment, - Gas: TxGas, + From: TxFromSpecified, + To: TxToSpecified, + Payment: TxPayment, + Gas: TxGas, { fn run_as_scenario_step(self, world: &mut ScenarioWorld) { let mut step = ScCallStep::new() From 32a0843336db55c09f22db585e909c72163fc230 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 9 Nov 2023 20:50:30 +0200 Subject: [PATCH 005/461] unified tx sytax - sc async callback --- .../contract_base/wrappers/send_wrapper.rs | 22 ++- .../base/src/types/interaction/async_call.rs | 62 +++----- .../src/types/interaction/callback_closure.rs | 13 +- .../types/interaction/contract_call_exec.rs | 13 +- .../interaction/contract_call_no_payment.rs | 2 +- framework/base/src/types/interaction/mod.rs | 6 + framework/base/src/types/interaction/tx.rs | 138 ++++++++++++++---- .../src/types/interaction/tx_async_call.rs | 65 +++++++++ .../interaction/tx_async_call_promises.rs | 119 +++++++++++++++ .../base/src/types/interaction/tx_callback.rs | 28 ++++ .../base/src/types/interaction/tx_data.rs | 8 + .../base/src/types/interaction/tx_env_sc.rs | 42 +----- .../src/facade/scenario_world_steps_tx.rs | 4 +- 13 files changed, 389 insertions(+), 133 deletions(-) create mode 100644 framework/base/src/types/interaction/tx_async_call.rs create mode 100644 framework/base/src/types/interaction/tx_async_call_promises.rs create mode 100644 framework/base/src/types/interaction/tx_callback.rs diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index 78f4f045d6..62f99b767c 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -15,6 +15,7 @@ use crate::{ types::{ BigUint, ContractCall, ContractCallNoPayment, EgldOrEsdtTokenIdentifier, EsdtTokenPayment, ManagedAddress, ManagedArgBuffer, ManagedBuffer, ManagedType, ManagedVec, TokenIdentifier, + Tx, }, }; @@ -314,10 +315,10 @@ where nonce: u64, amount: BigUint, ) -> ! { - ContractCallNoPayment::::new(to, ManagedBuffer::new()) - .with_esdt_transfer((token, nonce, amount)) - .async_call() - .call_and_exit_ignore_callback() + Tx::new_tx_from_sc() + .to(to) + .esdt((token, nonce, amount)) + .async_call_and_exit() } /// Performs a simple ESDT/NFT transfer, but via async call. @@ -339,10 +340,7 @@ where if amount == 0 { return; } - ContractCallNoPayment::::new(to, ManagedBuffer::new()) - .with_esdt_transfer((token, nonce, amount)) - .async_call() - .call_and_exit_ignore_callback() + self.transfer_esdt_via_async_call(to, token, nonce, amount) } /// Sends multiple ESDT tokens to a target address, via an async call. @@ -351,10 +349,10 @@ where to: ManagedAddress, payments: ManagedVec>, ) -> ! { - ContractCallNoPayment::::new(to, ManagedBuffer::new()) - .with_multi_token_transfer(payments) - .async_call() - .call_and_exit_ignore_callback() + Tx::new_tx_from_sc() + .to(to) + .multi_esdt(payments) + .async_call_and_exit() } /// Creates a call to the `ClaimDeveloperRewards` builtin function. diff --git a/framework/base/src/types/interaction/async_call.rs b/framework/base/src/types/interaction/async_call.rs index 9c5554baba..bcc07bcced 100644 --- a/framework/base/src/types/interaction/async_call.rs +++ b/framework/base/src/types/interaction/async_call.rs @@ -1,60 +1,46 @@ use crate::{ api::{CallTypeApi, StorageWriteApi}, contract_base::SendRawWrapper, - types::{BigUint, CallbackClosure, ManagedAddress}, + types::{BigUint, CallbackClosure, EgldPayment, ManagedAddress}, }; -use super::FunctionCall; +use super::{FunctionCall, Tx, TxAsyncCallCallback, TxScEnv}; -#[must_use] -pub struct AsyncCall -where - SA: CallTypeApi + 'static, -{ - pub(crate) to: ManagedAddress, - pub(crate) egld_payment: BigUint, - pub(crate) function_call: FunctionCall, - pub(crate) callback_call: Option>, -} +pub type AsyncCall = Tx< + TxScEnv, + (), + ManagedAddress, + EgldPayment, + (), + FunctionCall, + Option>, +>; #[allow(clippy::return_self_not_must_use)] -impl AsyncCall +impl AsyncCall where - SA: CallTypeApi, + Api: CallTypeApi, { - pub fn with_callback(self, callback_call: CallbackClosure) -> Self { - AsyncCall { - callback_call: Some(callback_call), - ..self - } + pub fn with_callback(mut self, callback_call: CallbackClosure) -> Self { + self.callback = Some(callback_call); + self } } -impl AsyncCall +impl AsyncCall where - SA: CallTypeApi, + Api: CallTypeApi + StorageWriteApi, { - pub fn call_and_exit_ignore_callback(&self) -> ! { - SendRawWrapper::::new().async_call_raw( - &self.to, - &self.egld_payment, - &self.function_call.function_name, - &self.function_call.arg_buffer, - ) + pub fn call_and_exit_ignore_callback(self) -> ! { + self.async_call_and_exit() } } -impl AsyncCall +impl AsyncCall where - SA: CallTypeApi + StorageWriteApi, + Api: CallTypeApi + StorageWriteApi, { - pub fn call_and_exit(&self) -> ! { - // first, save the callback closure - if let Some(callback_call) = &self.callback_call { - callback_call.save_to_storage::(); - } - - // last, send the async call, which will kill the execution - self.call_and_exit_ignore_callback() + pub fn call_and_exit(self) -> ! { + self.async_call_and_exit() } } diff --git a/framework/base/src/types/interaction/callback_closure.rs b/framework/base/src/types/interaction/callback_closure.rs index 98b6fece64..a8884695f7 100644 --- a/framework/base/src/types/interaction/callback_closure.rs +++ b/framework/base/src/types/interaction/callback_closure.rs @@ -28,11 +28,22 @@ pub const CALLBACK_CLOSURE_STORAGE_BASE_KEY: &[u8] = b"CB_CLOSURE"; /// /// In both cases the framework hides all the magic, the developer shouldn't worry about it. #[derive(TopEncode)] -pub struct CallbackClosure { +pub struct CallbackClosure +where + M: ManagedTypeApi + ErrorApi, +{ pub(super) callback_name: &'static str, pub(super) closure_args: ManagedArgBuffer, } +pub struct CallbackClosureWithGas +where + M: ManagedTypeApi + ErrorApi, +{ + pub(super) closure: CallbackClosure, + pub(super) gas_for_callback: u64, +} + /// Syntactical sugar to help macros to generate code easier. /// Unlike calling `CallbackClosure::::new`, here types can be inferred from the context. pub fn new_callback_call(callback_name: &'static str) -> CallbackClosure diff --git a/framework/base/src/types/interaction/contract_call_exec.rs b/framework/base/src/types/interaction/contract_call_exec.rs index f374d1801b..f5e875a41f 100644 --- a/framework/base/src/types/interaction/contract_call_exec.rs +++ b/framework/base/src/types/interaction/contract_call_exec.rs @@ -14,7 +14,7 @@ use crate::{ }, }; -use super::{AsyncCall, ContractCallNoPayment, ContractCallWithEgld}; +use super::{AsyncCall, ContractCallNoPayment, ContractCallWithEgld, Tx}; use crate::api::managed_types::handles::HandleConstraints; /// Using max u64 to represent maximum possible gas, @@ -66,12 +66,11 @@ where } pub(super) fn async_call(self) -> AsyncCall { - AsyncCall { - to: self.basic.to, - egld_payment: self.egld_payment, - function_call: self.basic.function_call, - callback_call: None, - } + Tx::new_tx_from_sc() + .to(self.basic.to) + .egld(self.egld_payment) + .call(self.basic.function_call) + .callback(None) } #[cfg(feature = "promises")] diff --git a/framework/base/src/types/interaction/contract_call_no_payment.rs b/framework/base/src/types/interaction/contract_call_no_payment.rs index 69057da3e9..4fc75125a5 100644 --- a/framework/base/src/types/interaction/contract_call_no_payment.rs +++ b/framework/base/src/types/interaction/contract_call_no_payment.rs @@ -168,7 +168,7 @@ where self.function_call } - pub fn tx(self) -> Tx, (), (), (), (), FunctionCall> { + pub fn tx(self) -> Tx, (), (), (), (), FunctionCall, ()> { Tx::new_tx_from_sc().call(self.function_call) } } diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index f8589bbf0d..8be51394e2 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -20,6 +20,9 @@ mod expr_sc; mod function_call; mod managed_arg_buffer; mod tx; +mod tx_async_call; +mod tx_async_call_promises; +mod tx_callback; mod tx_data; mod tx_env; mod tx_env_sc; @@ -48,6 +51,9 @@ pub use expr_sc::ScExpr; pub use function_call::FunctionCall; pub use managed_arg_buffer::ManagedArgBuffer; pub use tx::*; +pub use tx_async_call::*; +pub use tx_async_call_promises::*; +pub use tx_callback::*; pub use tx_data::*; pub use tx_env::*; pub use tx_env_sc::*; diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 60b26b71e1..e24fa6d539 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -12,11 +12,12 @@ use crate::{ }; use super::{ - AsyncCall, ExplicitGas, FunctionCall, TxData, TxEnv, TxFrom, TxFromSpecified, TxGas, TxPayment, - TxScEnv, TxTo, TxToSpecified, + AsyncCall, ExplicitGas, FunctionCall, TxCallback, TxData, TxDataFunctionCall, TxEnv, TxFrom, + TxFromSpecified, TxGas, TxPayment, TxScEnv, TxTo, TxToSpecified, }; -pub struct Tx +#[must_use] +pub struct Tx where Env: TxEnv, From: TxFrom, @@ -24,6 +25,7 @@ where Payment: TxPayment, Gas: TxGas, Data: TxData, + Callback: TxCallback, { pub env: Env, pub from: From, @@ -31,9 +33,10 @@ where pub payment: Payment, pub gas: Gas, pub data: Data, + pub callback: Callback, } -impl Tx +impl Tx where Env: TxEnv, From: TxFrom, @@ -41,10 +44,11 @@ where Payment: TxPayment, Gas: TxGas, Data: TxData, + Callback: TxCallback, { /// TODO: does nothing, delete, added for easier copy-paste. #[inline] - pub fn nothing(self) -> Tx { + pub fn nothing(self) -> Tx { Tx { env: self.env, from: self.from, @@ -52,11 +56,12 @@ where payment: self.payment, gas: self.gas, data: self.data, + callback: self.callback, } } } -pub type TxBaseWithEnv = Tx; +pub type TxBaseWithEnv = Tx; impl TxBaseWithEnv where @@ -71,6 +76,7 @@ where payment: (), gas: (), data: (), + callback: (), } } } @@ -89,15 +95,16 @@ where // } // } -impl Tx +impl Tx where Env: TxEnv, To: TxTo, Payment: TxPayment, Gas: TxGas, Data: TxData, + Callback: TxCallback, { - pub fn from(self, from: From) -> Tx + pub fn from(self, from: From) -> Tx where From: TxFromSpecified, { @@ -110,19 +117,21 @@ where payment: self.payment, gas: self.gas, data: self.data, + callback: self.callback, } } } -impl Tx +impl Tx where Env: TxEnv, From: TxFrom, Payment: TxPayment, Gas: TxGas, Data: TxData, + Callback: TxCallback, { - pub fn to(self, to: To) -> Tx + pub fn to(self, to: To) -> Tx where To: TxToSpecified, { @@ -135,27 +144,31 @@ where payment: self.payment, gas: self.gas, data: self.data, + callback: self.callback, } } - pub fn to_caller(self) -> Tx, Payment, Gas, Data> { + pub fn to_caller( + self, + ) -> Tx, Payment, Gas, Data, Callback> { let caller = BlockchainWrapper::::new().get_caller(); self.to(caller) } } -impl Tx +impl Tx where Env: TxEnv, From: TxFrom, To: TxTo, Gas: TxGas, Data: TxData, + Callback: TxCallback, { pub fn egld( self, egld_amount: BigUint, - ) -> Tx, Gas, Data> { + ) -> Tx, Gas, Data, Callback> { Tx { env: self.env, from: self.from, @@ -163,17 +176,19 @@ where payment: EgldPayment { value: egld_amount }, gas: self.gas, data: self.data, + callback: self.callback, } } } -impl Tx +impl Tx where Env: TxEnv, From: TxFrom, To: TxTo, Gas: TxGas, Data: TxData, + Callback: TxCallback, { /// Adds a single ESDT token transfer to a transaction. /// @@ -181,7 +196,7 @@ where pub fn esdt>>( self, payment: P, - ) -> Tx, Gas, Data> { + ) -> Tx, Gas, Data, Callback> { Tx { env: self.env, from: self.from, @@ -189,6 +204,7 @@ where payment: payment.into(), gas: self.gas, data: self.data, + callback: self.callback, } } @@ -196,7 +212,7 @@ where pub fn multi_esdt( self, payments: MultiEsdtPayment, // TODO: references - ) -> Tx, Gas, Data> { + ) -> Tx, Gas, Data, Callback> { Tx { env: self.env, from: self.from, @@ -204,17 +220,20 @@ where payment: payments, gas: self.gas, data: self.data, + callback: self.callback, } } } -impl Tx, Gas, Data> +impl + Tx, Gas, Data, Callback> where Env: TxEnv, From: TxFrom, To: TxTo, Gas: TxGas, Data: TxData, + Callback: TxCallback, { /// Adds a single ESDT token transfer to a contract call. /// @@ -222,7 +241,7 @@ where pub fn with_esdt_transfer>>( self, payment: P, - ) -> Tx, Gas, Data> { + ) -> Tx, Gas, Data, Callback> { let mut payments = ManagedVec::new(); payments.push(self.payment); payments.push(payment.into()); @@ -233,17 +252,20 @@ where payment: payments, gas: self.gas, data: self.data, + callback: self.callback, } } } -impl Tx, Gas, Data> +impl + Tx, Gas, Data, Callback> where Env: TxEnv, From: TxFrom, To: TxTo, Gas: TxGas, Data: TxData, + Callback: TxCallback, { /// Adds a single ESDT token transfer to a contract call. /// @@ -251,23 +273,27 @@ where pub fn with_esdt_transfer>>( mut self, payment: P, - ) -> Tx, Gas, Data> { + ) -> Tx, Gas, Data, Callback> { self.payment.push(payment.into()); self } } -impl Tx +impl Tx where Env: TxEnv, From: TxFrom, To: TxTo, Payment: TxPayment, Data: TxData, + Callback: TxCallback, { /// Sets an explicit gas limit to the call. #[inline] - pub fn with_gas_limit(self, gas_limit: u64) -> Tx { + pub fn with_gas_limit( + self, + gas_limit: u64, + ) -> Tx { Tx { env: self.env, from: self.from, @@ -275,23 +301,25 @@ where payment: self.payment, gas: ExplicitGas(gas_limit), data: self.data, + callback: self.callback, } } } -impl Tx +impl Tx where Env: TxEnv, From: TxFrom, To: TxTo, Payment: TxPayment, Gas: TxGas, + Callback: TxCallback, { #[inline] pub fn call>>( self, call: FC, - ) -> Tx> { + ) -> Tx, Callback> { Tx { env: self.env, from: self.from, @@ -299,6 +327,7 @@ where payment: self.payment, gas: self.gas, data: call.into(), + callback: self.callback, } } @@ -306,7 +335,7 @@ where pub fn function_name>>( self, function_name: N, - ) -> Tx> { + ) -> Tx, Callback> { Tx { env: self.env, from: self.from, @@ -314,17 +343,20 @@ where payment: self.payment, gas: self.gas, data: FunctionCall::new(function_name), + callback: self.callback, } } } -impl Tx> +impl + Tx, Callback> where Env: TxEnv, From: TxFrom, To: TxTo, Payment: TxPayment, Gas: TxGas, + Callback: TxCallback, { #[inline] pub fn argument(mut self, arg: &T) -> Self { @@ -333,21 +365,62 @@ where } } -impl Tx> +impl Tx +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Payment: TxPayment, + Gas: TxGas, + Data: TxData, +{ + #[inline] + pub fn callback( + self, + callback: Callback, + ) -> Tx + where + Callback: TxCallback, + { + Tx { + env: self.env, + from: self.from, + to: self.to, + payment: self.payment, + gas: self.gas, + data: self.data, + callback, + } + } +} + +impl Tx where Env: TxEnv, From: TxFrom, To: TxToSpecified, Payment: TxPayment, Gas: TxGas, + FC: TxDataFunctionCall, + Callback: TxCallback, { pub fn normalize_tx( self, - ) -> Tx, EgldPayment, Gas, FunctionCall> - { - let result = - self.payment - .convert_tx_data(&self.env, &self.from, self.to.into_value(), self.data); + ) -> Tx< + Env, + From, + ManagedAddress, + EgldPayment, + Gas, + FunctionCall, + Callback, + > { + let result = self.payment.convert_tx_data( + &self.env, + &self.from, + self.to.into_value(), + self.data.into(), + ); Tx { env: self.env, from: self.from, @@ -355,6 +428,7 @@ where payment: result.egld_payment, gas: self.gas, data: result.fc, + callback: self.callback, } } } diff --git a/framework/base/src/types/interaction/tx_async_call.rs b/framework/base/src/types/interaction/tx_async_call.rs new file mode 100644 index 0000000000..27d6e2a194 --- /dev/null +++ b/framework/base/src/types/interaction/tx_async_call.rs @@ -0,0 +1,65 @@ +use crate::{ + api::{CallTypeApi, StorageWriteApi}, + contract_base::SendRawWrapper, + types::{BigUint, CallbackClosure, ManagedAddress}, +}; + +use super::{ + FunctionCall, Tx, TxCallback, TxDataFunctionCall, TxEnv, TxPayment, TxScEnv, TxToSpecified, +}; + +pub trait TxAsyncCallCallback: TxCallback> +where + Api: CallTypeApi, +{ + fn save_callback_closure_to_storage(&self); +} + +impl TxAsyncCallCallback for () +where + Api: CallTypeApi, +{ + fn save_callback_closure_to_storage(&self) {} +} + +impl TxCallback> for CallbackClosure where Api: CallTypeApi {} +impl TxAsyncCallCallback for CallbackClosure +where + Api: CallTypeApi + StorageWriteApi, +{ + fn save_callback_closure_to_storage(&self) { + self.save_to_storage::(); + } +} + +impl TxCallback> for Option> where Api: CallTypeApi {} +impl TxAsyncCallCallback for Option> +where + Api: CallTypeApi + StorageWriteApi, +{ + fn save_callback_closure_to_storage(&self) { + if let Some(closure) = self { + closure.save_callback_closure_to_storage(); + } + } +} + +impl Tx, (), To, Payment, (), FC, Callback> +where + Api: CallTypeApi, + To: TxToSpecified>, + Payment: TxPayment>, + FC: TxDataFunctionCall>, + Callback: TxAsyncCallCallback, +{ + pub fn async_call_and_exit(self) -> ! { + let normalized = self.normalize_tx(); + normalized.callback.save_callback_closure_to_storage(); + SendRawWrapper::::new().async_call_raw( + &normalized.to, + &normalized.payment.value, + &normalized.data.function_name, + &normalized.data.arg_buffer, + ) + } +} diff --git a/framework/base/src/types/interaction/tx_async_call_promises.rs b/framework/base/src/types/interaction/tx_async_call_promises.rs new file mode 100644 index 0000000000..55282d708a --- /dev/null +++ b/framework/base/src/types/interaction/tx_async_call_promises.rs @@ -0,0 +1,119 @@ +use crate::{ + api::{const_handles, CallTypeApi}, + contract_base::SendRawWrapper, + types::{BigUint, CallbackClosure, ManagedAddress, ManagedBuffer, ManagedType}, +}; + +use super::{ + callback_closure::CallbackClosureWithGas, ExplicitGas, FunctionCall, Tx, TxCallback, TxGas, + TxPayment, TxScEnv, TxToSpecified, +}; + +pub trait TxPromisesCallback: TxCallback> +where + Api: CallTypeApi, +{ + fn callback_name(&self) -> &'static str; + + fn overwrite_with_serialized_args(&self, cb_closure_args_serialized: &mut ManagedBuffer); + + fn gas_for_callback(&self) -> u64; +} + +impl TxPromisesCallback for () +where + Api: CallTypeApi, +{ + fn callback_name(&self) -> &'static str { + "" + } + + fn overwrite_with_serialized_args(&self, cb_closure_args_serialized: &mut ManagedBuffer) { + cb_closure_args_serialized.overwrite(&[]); + } + + fn gas_for_callback(&self) -> u64 { + 0 + } +} + +impl TxCallback> for CallbackClosureWithGas where Api: CallTypeApi {} +impl TxPromisesCallback for CallbackClosureWithGas +where + Api: CallTypeApi, +{ + fn callback_name(&self) -> &'static str { + self.closure.callback_name + } + + fn overwrite_with_serialized_args(&self, cb_closure_args_serialized: &mut ManagedBuffer) { + self.closure + .closure_args + .serialize_overwrite(cb_closure_args_serialized); + } + + fn gas_for_callback(&self) -> u64 { + self.gas_for_callback + } +} + +impl + Tx, (), To, Payment, Gas, FunctionCall, CallbackClosure> +where + Api: CallTypeApi, + To: TxToSpecified>, + Payment: TxPayment>, + Gas: TxGas>, +{ + pub fn gas_for_callback( + self, + gas: u64, + ) -> Tx, (), To, Payment, Gas, FunctionCall, CallbackClosureWithGas> + { + Tx { + env: self.env, + from: self.from, + to: self.to, + payment: self.payment, + gas: self.gas, + data: self.data, + callback: CallbackClosureWithGas { + closure: self.callback, + gas_for_callback: gas, + }, + } + } +} + +impl + Tx, (), To, Payment, ExplicitGas, FunctionCall, Callback> +where + Api: CallTypeApi, + To: TxToSpecified>, + Payment: TxPayment>, + Callback: TxPromisesCallback, +{ + // #[cfg(feature = "promises")] + pub fn async_call_promise(self) { + let callback_name = self.callback.callback_name(); + let mut cb_closure_args_serialized = + ManagedBuffer::::from_raw_handle(const_handles::MBUF_TEMPORARY_1); + self.callback + .overwrite_with_serialized_args(&mut cb_closure_args_serialized); + let extra_gas_for_callback = self.callback.gas_for_callback(); + + let normalized = self.normalize_tx(); + + SendRawWrapper::::new().create_async_call_raw( + &normalized.to, + &normalized.payment.value, + &normalized.data.function_name, + &normalized.data.arg_buffer, + callback_name, + callback_name, + normalized.gas.0, + extra_gas_for_callback, + &cb_closure_args_serialized, + ) + } +} diff --git a/framework/base/src/types/interaction/tx_callback.rs b/framework/base/src/types/interaction/tx_callback.rs new file mode 100644 index 0000000000..a7e5710e21 --- /dev/null +++ b/framework/base/src/types/interaction/tx_callback.rs @@ -0,0 +1,28 @@ +use crate::{ + api::ManagedTypeApi, + formatter::SCLowerHex, + types::{ManagedBuffer, ManagedBufferCachedBuilder}, +}; + +use super::{FunctionCall, TxEnv}; + +pub trait TxCallback +where + Env: TxEnv, +{ +} + +pub trait TxRunnableCallback: TxCallback +where + Env: TxEnv, +{ + fn run_callback(self, env: &Env); +} + +impl TxCallback for () where Env: TxEnv {} +impl TxRunnableCallback for () +where + Env: TxEnv, +{ + fn run_callback(self, _env: &Env) {} +} diff --git a/framework/base/src/types/interaction/tx_data.rs b/framework/base/src/types/interaction/tx_data.rs index 3f8da83eed..f76f9edb4a 100644 --- a/framework/base/src/types/interaction/tx_data.rs +++ b/framework/base/src/types/interaction/tx_data.rs @@ -15,6 +15,12 @@ where fn to_call_data_string(&self) -> ManagedBuffer; } +pub trait TxDataFunctionCall: TxData + Into> +where + Env: TxEnv, +{ +} + impl TxData for () where Env: TxEnv, @@ -27,6 +33,7 @@ where ManagedBuffer::new() } } +impl TxDataFunctionCall for () where Env: TxEnv {} impl TxData for FunctionCall where @@ -46,3 +53,4 @@ where result.into_managed_buffer() } } +impl TxDataFunctionCall for FunctionCall where Env: TxEnv {} diff --git a/framework/base/src/types/interaction/tx_env_sc.rs b/framework/base/src/types/interaction/tx_env_sc.rs index b7f5a18bb4..16ef20b8ab 100644 --- a/framework/base/src/types/interaction/tx_env_sc.rs +++ b/framework/base/src/types/interaction/tx_env_sc.rs @@ -69,45 +69,7 @@ where } } -impl Tx, (), To, Payment, (), FunctionCall> -where - Api: CallTypeApi, - To: TxToSpecified>, - Payment: TxPayment>, -{ - pub fn async_call(self) -> AsyncCall { - let normalized = self.normalize_tx(); - AsyncCall { - to: normalized.to, - egld_payment: normalized.payment.value, - function_call: normalized.data, - callback_call: None, - } - } -} - -impl Tx, (), To, Payment, ExplicitGas, FunctionCall> -where - Api: CallTypeApi, - To: TxToSpecified>, - Payment: TxPayment>, -{ - #[cfg(feature = "promises")] - pub fn async_call_promise(self) -> super::AsyncCallPromises { - let explicit_gas_limit = self.gas.0; - let normalized = self.normalize_tx(); - super::AsyncCallPromises { - to: normalized.to, - egld_payment: normalized.payment.value, - function_call: normalized.data, - explicit_gas_limit, - extra_gas_for_callback: 0, - callback_call: None, - } - } -} - -impl Tx, From, To, Payment, Gas, FC> +impl Tx, From, To, Payment, Gas, FC, ()> where Api: CallTypeApi, From: TxFrom>, @@ -130,7 +92,7 @@ where } } -impl Tx, From, To, Payment, Gas, ()> +impl Tx, From, To, Payment, Gas, (), ()> where Api: CallTypeApi, From: TxFrom>, diff --git a/framework/scenario/src/facade/scenario_world_steps_tx.rs b/framework/scenario/src/facade/scenario_world_steps_tx.rs index d0f6dcf499..436339cde4 100644 --- a/framework/scenario/src/facade/scenario_world_steps_tx.rs +++ b/framework/scenario/src/facade/scenario_world_steps_tx.rs @@ -69,7 +69,7 @@ impl ScenarioWorld { } impl ScenarioTx - for Tx> + for Tx, ()> where From: TxFromSpecified, To: TxToSpecified, @@ -85,6 +85,6 @@ where step = step.argument(arg.to_vec()); } - world.sc_call(step); + world.sc_call(&mut step); } } From 31c051eb2b99dd74fe722f286f3f7dd74b78501a Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 9 Nov 2023 20:51:34 +0200 Subject: [PATCH 006/461] clippy fix --- framework/base/src/types/managed/wrapped/managed_option.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/framework/base/src/types/managed/wrapped/managed_option.rs b/framework/base/src/types/managed/wrapped/managed_option.rs index 99160ff5cd..1fe4366eb0 100644 --- a/framework/base/src/types/managed/wrapped/managed_option.rs +++ b/framework/base/src/types/managed/wrapped/managed_option.rs @@ -75,6 +75,8 @@ where /// Assumes that value is Some and unwraps without checking. /// + /// # Safety + /// /// Must always be called under an `if` checking `.is_some()`, otherwise will lead to undefined behaviour. pub unsafe fn unwrap_no_check(self) -> T { T::from_handle(self.handle) From ea6c6bd321ad98506ad2d564dd827f13fad98012 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 10 Nov 2023 02:28:11 +0200 Subject: [PATCH 007/461] unified tx sytax - transfer-execute fix --- framework/base/src/types/interaction/mod.rs | 1 + .../base/src/types/interaction/tx_async_te.rs | 58 +++++++++++++++++++ .../base/src/types/interaction/tx_env_sc.rs | 37 ------------ 3 files changed, 59 insertions(+), 37 deletions(-) create mode 100644 framework/base/src/types/interaction/tx_async_te.rs diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index 8be51394e2..ebb0d4d67f 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -22,6 +22,7 @@ mod managed_arg_buffer; mod tx; mod tx_async_call; mod tx_async_call_promises; +mod tx_async_te; mod tx_callback; mod tx_data; mod tx_env; diff --git a/framework/base/src/types/interaction/tx_async_te.rs b/framework/base/src/types/interaction/tx_async_te.rs new file mode 100644 index 0000000000..4f7dfc292b --- /dev/null +++ b/framework/base/src/types/interaction/tx_async_te.rs @@ -0,0 +1,58 @@ +use core::marker::PhantomData; + +use crate::{ + api::{BlockchainApiImpl, CallTypeApi}, + contract_base::BlockchainWrapper, + types::{ManagedAddress, ManagedBuffer}, +}; + +use super::{ + contract_call_exec::TRANSFER_EXECUTE_DEFAULT_LEFTOVER, AnnotatedValue, AsyncCall, ExplicitGas, + FunctionCall, Tx, TxBaseWithEnv, TxData, TxEnv, TxFrom, TxGas, TxPayment, TxScEnv, + TxToSpecified, +}; + +impl Tx, From, To, Payment, Gas, FC, ()> +where + Api: CallTypeApi, + From: TxFrom>, + To: TxToSpecified>, + Payment: TxPayment>, + Gas: TxGas>, + FC: TxData> + Into>, +{ + fn transfer_execute_with_gas(self, gas_limit: u64) { + self.to.with_value_ref(|to| { + self.payment + .perform_transfer_execute(&self.env, to, gas_limit, self.data.into()); + }); + } + + pub fn transfer_execute(self) { + let gas_limit: u64; + if self.data.is_no_call() { + if self.payment.is_no_payment() { + return; + } else { + gas_limit = 0; + } + } else { + gas_limit = self.gas.resolve_gas(&self.env); + } + + self.transfer_execute_with_gas(gas_limit); + } +} + +impl Tx, From, To, Payment, (), (), ()> +where + Api: CallTypeApi, + From: TxFrom>, + To: TxToSpecified>, + Payment: TxPayment>, +{ + /// Only allowed for simple transfers. + pub fn transfer(self) { + self.transfer_execute_with_gas(0) + } +} diff --git a/framework/base/src/types/interaction/tx_env_sc.rs b/framework/base/src/types/interaction/tx_env_sc.rs index 16ef20b8ab..05fa0265be 100644 --- a/framework/base/src/types/interaction/tx_env_sc.rs +++ b/framework/base/src/types/interaction/tx_env_sc.rs @@ -68,40 +68,3 @@ where gas_left } } - -impl Tx, From, To, Payment, Gas, FC, ()> -where - Api: CallTypeApi, - From: TxFrom>, - To: TxToSpecified>, - Payment: TxPayment>, - Gas: TxGas>, - FC: TxData> + Into>, -{ - pub fn transfer_execute(self) { - if self.payment.is_no_payment() && self.data.is_no_call() { - return; - } - - let gas_limit = self.gas.resolve_gas(&self.env); - - self.to.with_value_ref(|to| { - self.payment - .perform_transfer_execute(&self.env, to, gas_limit, self.data.into()); - }); - } -} - -impl Tx, From, To, Payment, Gas, (), ()> -where - Api: CallTypeApi, - From: TxFrom>, - To: TxToSpecified>, - Payment: TxPayment>, - Gas: TxGas>, -{ - /// Syntactic sugar, only allowed for simple transfers. - pub fn transfer(self) { - self.transfer_execute() - } -} From d8ebcf5cca385d11c5259f838bcaf8d06bbe9c6a Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 10 Nov 2023 18:07:46 +0200 Subject: [PATCH 008/461] unified tx sytax - test callback prototype --- .../tests/adder_blackbox_with_values_test.rs | 3 +++ framework/base/src/types/interaction/tx.rs | 14 ------------- framework/scenario/src/facade.rs | 3 +++ .../scenario/src/facade/scenario_callbacks.rs | 19 +++++++++++++++++ .../src/facade/scenario_world_steps_tx.rs | 21 +++++++++++++------ framework/scenario/src/lib.rs | 2 +- 6 files changed, 41 insertions(+), 21 deletions(-) create mode 100644 framework/scenario/src/facade/scenario_callbacks.rs diff --git a/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs b/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs index 061432c95f..62e74e77a8 100644 --- a/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs @@ -48,6 +48,9 @@ fn adder_blackbox_with_values() { tx.from(AddressExpr("owner")) .to(ScExpr("adder")) .call(adder_contract.add(3u32)) + .callback(WithTxResult(|response| { + assert!(response.tx_error.is_success()); + })) }) .check_state_step( CheckStateStep::new() diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index e24fa6d539..b115b5e297 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -81,20 +81,6 @@ where } } -// impl Default for TxBaseWithEnv<()> { -// #[inline] -// fn default() -> Self { -// Self::new_with_env(()) -// } -// } - -// impl TxBaseWithEnv<()> { -// #[inline] -// pub fn new() -> Self { -// Self::default() -// } -// } - impl Tx where Env: TxEnv, diff --git a/framework/scenario/src/facade.rs b/framework/scenario/src/facade.rs index 60fb9f4d83..b6e2eef3a8 100644 --- a/framework/scenario/src/facade.rs +++ b/framework/scenario/src/facade.rs @@ -1,5 +1,6 @@ mod contract_info; mod debugger_backend; +mod scenario_callbacks; mod scenario_world; mod scenario_world_runner; mod scenario_world_steps; @@ -9,5 +10,7 @@ mod scenario_world_whitebox; mod whitebox_contract; pub use contract_info::ContractInfo; +pub use scenario_callbacks::*; pub use scenario_world::ScenarioWorld; +pub use scenario_world_steps_tx::*; pub use whitebox_contract::WhiteboxContract; diff --git a/framework/scenario/src/facade/scenario_callbacks.rs b/framework/scenario/src/facade/scenario_callbacks.rs new file mode 100644 index 0000000000..1429f7ed16 --- /dev/null +++ b/framework/scenario/src/facade/scenario_callbacks.rs @@ -0,0 +1,19 @@ +use multiversx_sc::types::{TxCallback, TxRunnableCallback}; + +use crate::scenario_model::TxResponse; + +use super::ScenarioTxEnvironment; + +pub struct WithTxResult(pub F) +where + F: FnOnce(&TxResponse); + +impl TxCallback for WithTxResult where F: FnOnce(&TxResponse) {} +impl TxRunnableCallback for WithTxResult +where + F: FnOnce(&TxResponse), +{ + fn run_callback(self, env: &ScenarioTxEnvironment) { + (self.0)(env.response.as_ref().unwrap()) + } +} diff --git a/framework/scenario/src/facade/scenario_world_steps_tx.rs b/framework/scenario/src/facade/scenario_world_steps_tx.rs index 436339cde4..ad8134edca 100644 --- a/framework/scenario/src/facade/scenario_world_steps_tx.rs +++ b/framework/scenario/src/facade/scenario_world_steps_tx.rs @@ -2,16 +2,21 @@ use std::path::PathBuf; use multiversx_sc::types::{ AnnotatedValue, FunctionCall, ManagedAddress, Tx, TxBaseWithEnv, TxEnv, TxFromSpecified, TxGas, - TxPayment, TxToSpecified, + TxPayment, TxRunnableCallback, TxToSpecified, }; -use crate::{api::StaticApi, facade::ScenarioWorld, scenario_model::ScCallStep}; +use crate::{ + api::StaticApi, + facade::ScenarioWorld, + scenario_model::{ScCallStep, TxResponse}, +}; #[derive(Default, Debug, Clone)] pub struct ScenarioTxEnvironment { pub context_path: PathBuf, pub from_annotation: Option, pub to_annotation: Option, + pub response: Option, } impl TxEnv for ScenarioTxEnvironment { @@ -68,23 +73,27 @@ impl ScenarioWorld { } } -impl ScenarioTx - for Tx, ()> +impl ScenarioTx + for Tx, Callback> where From: TxFromSpecified, To: TxToSpecified, Payment: TxPayment, Gas: TxGas, + Callback: TxRunnableCallback, { fn run_as_scenario_step(self, world: &mut ScenarioWorld) { + let mut env = self.env; let mut step = ScCallStep::new() - .from(self.env.from_annotation.unwrap().as_str()) - .to(self.env.to_annotation.unwrap().as_str()) + .from(env.from_annotation.as_ref().unwrap().as_str()) + .to(env.to_annotation.as_ref().unwrap().as_str()) .function(self.data.function_name.to_string().as_str()); for arg in self.data.arg_buffer.iter_buffers() { step = step.argument(arg.to_vec()); } world.sc_call(&mut step); + env.response = step.response; + self.callback.run_callback(&env); } } diff --git a/framework/scenario/src/lib.rs b/framework/scenario/src/lib.rs index d46d27fc68..17c13a2f5c 100644 --- a/framework/scenario/src/lib.rs +++ b/framework/scenario/src/lib.rs @@ -42,7 +42,7 @@ pub use crate::scenario as mandos_system; // Re-exporting the whole mandos crate for easier use in tests. pub use multiversx_chain_scenario_format as scenario_format; -pub use facade::{ContractInfo, ScenarioWorld, WhiteboxContract}; +pub use facade::{ContractInfo, ScenarioWorld, WhiteboxContract, WithTxResult}; use std::path::Path; From 3b1f9140b494305efd8d776c283634d13a895ee0 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 27 Nov 2023 18:15:29 +0200 Subject: [PATCH 009/461] cleanup --- .../base/src/types/interaction/expr_sc.rs | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/framework/base/src/types/interaction/expr_sc.rs b/framework/base/src/types/interaction/expr_sc.rs index a5ba6a5e82..56fed5a5e3 100644 --- a/framework/base/src/types/interaction/expr_sc.rs +++ b/framework/base/src/types/interaction/expr_sc.rs @@ -88,22 +88,4 @@ pub mod tests { b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x001234567890123456789012", ); } - - // #[test] - // fn test_sc_address() { - // let context = InterpreterContext::default(); - // assert_eq!( - // b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00a_____________________".to_vec(), - // interpret_string("sc:a", &context) - // ); - // assert_eq!( - // b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x001234567890123456789012".to_vec(), - // interpret_string("sc:12345678901234567890120s", &context) - // ); - // // trims excess - // assert_eq!( - // b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x001234567890123456789012".to_vec(), - // interpret_string("sc:12345678901234567890120sx", &context) - // ); - // } } From b7102b273db13f55d362df489bea4b33a66be8df Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 27 Nov 2023 18:34:24 +0200 Subject: [PATCH 010/461] cleanup --- framework/base/src/types/interaction/tx_payment.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/framework/base/src/types/interaction/tx_payment.rs b/framework/base/src/types/interaction/tx_payment.rs index 747b6ac3bf..66fa7b6785 100644 --- a/framework/base/src/types/interaction/tx_payment.rs +++ b/framework/base/src/types/interaction/tx_payment.rs @@ -79,7 +79,6 @@ where fc: FunctionCall, ) { EgldPayment::no_payment().perform_transfer_execute(env, to, gas_limit, fc); - // perform_transfer_execute_egld(BigUint::zero(), to, gas_limit, fc); } } From 9639b7fa6028f04dcc1ce0e72eaa3ef2432771cb Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 27 Nov 2023 18:45:05 +0200 Subject: [PATCH 011/461] cleanup --- .../base/src/types/interaction/tx_env.rs | 28 ------------------- 1 file changed, 28 deletions(-) diff --git a/framework/base/src/types/interaction/tx_env.rs b/framework/base/src/types/interaction/tx_env.rs index c9746b36aa..59e5406970 100644 --- a/framework/base/src/types/interaction/tx_env.rs +++ b/framework/base/src/types/interaction/tx_env.rs @@ -22,31 +22,3 @@ pub trait TxEnv: Sized { fn default_gas(&self) -> u64; } - -// pub struct TxTestingEnvironemnt -// where -// Api: CallTypeApi, -// { -// pub(super) _phantom: PhantomData, -// pub from_annotation: ManagedBuffer, -// pub to_annotation: ManagedBuffer, -// } - -// impl TxEnv for TxTestingEnvironemnt -// where -// Api: CallTypeApi, -// { -// fn annotate_from(&mut self, from: &From) -// where -// From: AnnotatedValue>, -// { -// self.from_annotation = from.annotation(); -// } - -// fn annotate_to(&mut self, to: &To) -// where -// To: AnnotatedValue>, -// { -// self.to_annotation = to.annotation(); -// } -// } From 97288da4a45a2cb4fcce3efea2135486fa96f140 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 12 Dec 2023 14:35:35 +0200 Subject: [PATCH 012/461] unified syntax - tx result prototype --- .../base/src/types/interaction/async_call.rs | 2 +- framework/base/src/types/interaction/mod.rs | 10 +- framework/base/src/types/interaction/tx.rs | 118 +++++++++--------- .../src/types/interaction/tx_async_call.rs | 15 +-- .../interaction/tx_async_call_promises.rs | 16 +-- .../{tx_callback.rs => tx_result_handler.rs} | 7 +- .../base/src/types/interaction/tx_return.rs | 50 ++++++++ .../src/types/interaction/tx_sync_call.rs | 37 ++++++ .../types/interaction/typed_function_call.rs | 32 +++++ .../scenario/src/facade/scenario_callbacks.rs | 4 +- .../src/facade/scenario_world_steps_tx.rs | 2 +- 11 files changed, 210 insertions(+), 83 deletions(-) rename framework/base/src/types/interaction/{tx_callback.rs => tx_result_handler.rs} (71%) create mode 100644 framework/base/src/types/interaction/tx_return.rs create mode 100644 framework/base/src/types/interaction/tx_sync_call.rs create mode 100644 framework/base/src/types/interaction/typed_function_call.rs diff --git a/framework/base/src/types/interaction/async_call.rs b/framework/base/src/types/interaction/async_call.rs index bcc07bcced..2ef3a61c43 100644 --- a/framework/base/src/types/interaction/async_call.rs +++ b/framework/base/src/types/interaction/async_call.rs @@ -22,7 +22,7 @@ where Api: CallTypeApi, { pub fn with_callback(mut self, callback_call: CallbackClosure) -> Self { - self.callback = Some(callback_call); + self.result_handler = Some(callback_call); self } } diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index ebb0d4d67f..c63f3de7b7 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -23,14 +23,17 @@ mod tx; mod tx_async_call; mod tx_async_call_promises; mod tx_async_te; -mod tx_callback; mod tx_data; mod tx_env; mod tx_env_sc; mod tx_from; mod tx_gas; mod tx_payment; +mod tx_result_handler; +mod tx_return; +mod tx_sync_call; mod tx_to; +mod typed_function_call; pub use annotated::*; pub use async_call::AsyncCall; @@ -54,13 +57,16 @@ pub use managed_arg_buffer::ManagedArgBuffer; pub use tx::*; pub use tx_async_call::*; pub use tx_async_call_promises::*; -pub use tx_callback::*; pub use tx_data::*; pub use tx_env::*; pub use tx_env_sc::*; pub use tx_from::*; pub use tx_gas::*; pub use tx_payment::*; +pub use tx_result_handler::*; +pub use tx_return::*; +pub use tx_sync_call::*; pub use tx_to::*; +pub use typed_function_call::*; pub type TxScBase = TxBaseWithEnv>; diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index b115b5e297..50db05407a 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -12,12 +12,12 @@ use crate::{ }; use super::{ - AsyncCall, ExplicitGas, FunctionCall, TxCallback, TxData, TxDataFunctionCall, TxEnv, TxFrom, + AsyncCall, ExplicitGas, FunctionCall, TxResultHandler, TxData, TxDataFunctionCall, TxEnv, TxFrom, TxFromSpecified, TxGas, TxPayment, TxScEnv, TxTo, TxToSpecified, }; #[must_use] -pub struct Tx +pub struct Tx where Env: TxEnv, From: TxFrom, @@ -25,7 +25,7 @@ where Payment: TxPayment, Gas: TxGas, Data: TxData, - Callback: TxCallback, + RH: TxResultHandler, { pub env: Env, pub from: From, @@ -33,10 +33,10 @@ where pub payment: Payment, pub gas: Gas, pub data: Data, - pub callback: Callback, + pub result_handler: RH, } -impl Tx +impl Tx where Env: TxEnv, From: TxFrom, @@ -44,11 +44,11 @@ where Payment: TxPayment, Gas: TxGas, Data: TxData, - Callback: TxCallback, + RH: TxResultHandler, { /// TODO: does nothing, delete, added for easier copy-paste. #[inline] - pub fn nothing(self) -> Tx { + pub fn nothing(self) -> Tx { Tx { env: self.env, from: self.from, @@ -56,7 +56,7 @@ where payment: self.payment, gas: self.gas, data: self.data, - callback: self.callback, + result_handler: self.result_handler, } } } @@ -76,21 +76,21 @@ where payment: (), gas: (), data: (), - callback: (), + result_handler: (), } } } -impl Tx +impl Tx where Env: TxEnv, To: TxTo, Payment: TxPayment, Gas: TxGas, Data: TxData, - Callback: TxCallback, + RH: TxResultHandler, { - pub fn from(self, from: From) -> Tx + pub fn from(self, from: From) -> Tx where From: TxFromSpecified, { @@ -103,21 +103,21 @@ where payment: self.payment, gas: self.gas, data: self.data, - callback: self.callback, + result_handler: self.result_handler, } } } -impl Tx +impl Tx where Env: TxEnv, From: TxFrom, Payment: TxPayment, Gas: TxGas, Data: TxData, - Callback: TxCallback, + RH: TxResultHandler, { - pub fn to(self, to: To) -> Tx + pub fn to(self, to: To) -> Tx where To: TxToSpecified, { @@ -130,31 +130,31 @@ where payment: self.payment, gas: self.gas, data: self.data, - callback: self.callback, + result_handler: self.result_handler, } } pub fn to_caller( self, - ) -> Tx, Payment, Gas, Data, Callback> { + ) -> Tx, Payment, Gas, Data, RH> { let caller = BlockchainWrapper::::new().get_caller(); self.to(caller) } } -impl Tx +impl Tx where Env: TxEnv, From: TxFrom, To: TxTo, Gas: TxGas, Data: TxData, - Callback: TxCallback, + RH: TxResultHandler, { pub fn egld( self, egld_amount: BigUint, - ) -> Tx, Gas, Data, Callback> { + ) -> Tx, Gas, Data, RH> { Tx { env: self.env, from: self.from, @@ -162,19 +162,19 @@ where payment: EgldPayment { value: egld_amount }, gas: self.gas, data: self.data, - callback: self.callback, + result_handler: self.result_handler, } } } -impl Tx +impl Tx where Env: TxEnv, From: TxFrom, To: TxTo, Gas: TxGas, Data: TxData, - Callback: TxCallback, + RH: TxResultHandler, { /// Adds a single ESDT token transfer to a transaction. /// @@ -182,7 +182,7 @@ where pub fn esdt>>( self, payment: P, - ) -> Tx, Gas, Data, Callback> { + ) -> Tx, Gas, Data, RH> { Tx { env: self.env, from: self.from, @@ -190,7 +190,7 @@ where payment: payment.into(), gas: self.gas, data: self.data, - callback: self.callback, + result_handler: self.result_handler, } } @@ -198,7 +198,7 @@ where pub fn multi_esdt( self, payments: MultiEsdtPayment, // TODO: references - ) -> Tx, Gas, Data, Callback> { + ) -> Tx, Gas, Data, RH> { Tx { env: self.env, from: self.from, @@ -206,20 +206,20 @@ where payment: payments, gas: self.gas, data: self.data, - callback: self.callback, + result_handler: self.result_handler, } } } -impl - Tx, Gas, Data, Callback> +impl + Tx, Gas, Data, RH> where Env: TxEnv, From: TxFrom, To: TxTo, Gas: TxGas, Data: TxData, - Callback: TxCallback, + RH: TxResultHandler, { /// Adds a single ESDT token transfer to a contract call. /// @@ -227,7 +227,7 @@ where pub fn with_esdt_transfer>>( self, payment: P, - ) -> Tx, Gas, Data, Callback> { + ) -> Tx, Gas, Data, RH> { let mut payments = ManagedVec::new(); payments.push(self.payment); payments.push(payment.into()); @@ -238,20 +238,20 @@ where payment: payments, gas: self.gas, data: self.data, - callback: self.callback, + result_handler: self.result_handler, } } } -impl - Tx, Gas, Data, Callback> +impl + Tx, Gas, Data, RH> where Env: TxEnv, From: TxFrom, To: TxTo, Gas: TxGas, Data: TxData, - Callback: TxCallback, + RH: TxResultHandler, { /// Adds a single ESDT token transfer to a contract call. /// @@ -259,27 +259,27 @@ where pub fn with_esdt_transfer>>( mut self, payment: P, - ) -> Tx, Gas, Data, Callback> { + ) -> Tx, Gas, Data, RH> { self.payment.push(payment.into()); self } } -impl Tx +impl Tx where Env: TxEnv, From: TxFrom, To: TxTo, Payment: TxPayment, Data: TxData, - Callback: TxCallback, + RH: TxResultHandler, { /// Sets an explicit gas limit to the call. #[inline] pub fn with_gas_limit( self, gas_limit: u64, - ) -> Tx { + ) -> Tx { Tx { env: self.env, from: self.from, @@ -287,25 +287,25 @@ where payment: self.payment, gas: ExplicitGas(gas_limit), data: self.data, - callback: self.callback, + result_handler: self.result_handler, } } } -impl Tx +impl Tx where Env: TxEnv, From: TxFrom, To: TxTo, Payment: TxPayment, Gas: TxGas, - Callback: TxCallback, + RH: TxResultHandler, { #[inline] pub fn call>>( self, call: FC, - ) -> Tx, Callback> { + ) -> Tx, RH> { Tx { env: self.env, from: self.from, @@ -313,7 +313,7 @@ where payment: self.payment, gas: self.gas, data: call.into(), - callback: self.callback, + result_handler: self.result_handler, } } @@ -321,7 +321,7 @@ where pub fn function_name>>( self, function_name: N, - ) -> Tx, Callback> { + ) -> Tx, RH> { Tx { env: self.env, from: self.from, @@ -329,20 +329,20 @@ where payment: self.payment, gas: self.gas, data: FunctionCall::new(function_name), - callback: self.callback, + result_handler: self.result_handler, } } } -impl - Tx, Callback> +impl + Tx, RH> where Env: TxEnv, From: TxFrom, To: TxTo, Payment: TxPayment, Gas: TxGas, - Callback: TxCallback, + RH: TxResultHandler, { #[inline] pub fn argument(mut self, arg: &T) -> Self { @@ -361,12 +361,12 @@ where Data: TxData, { #[inline] - pub fn callback( + pub fn callback( self, - callback: Callback, - ) -> Tx + callback: RH, + ) -> Tx where - Callback: TxCallback, + RH: TxResultHandler, { Tx { env: self.env, @@ -375,12 +375,12 @@ where payment: self.payment, gas: self.gas, data: self.data, - callback, + result_handler: callback, } } } -impl Tx +impl Tx where Env: TxEnv, From: TxFrom, @@ -388,7 +388,7 @@ where Payment: TxPayment, Gas: TxGas, FC: TxDataFunctionCall, - Callback: TxCallback, + RH: TxResultHandler, { pub fn normalize_tx( self, @@ -399,7 +399,7 @@ where EgldPayment, Gas, FunctionCall, - Callback, + RH, > { let result = self.payment.convert_tx_data( &self.env, @@ -414,7 +414,7 @@ where payment: result.egld_payment, gas: self.gas, data: result.fc, - callback: self.callback, + result_handler: self.result_handler, } } } diff --git a/framework/base/src/types/interaction/tx_async_call.rs b/framework/base/src/types/interaction/tx_async_call.rs index 27d6e2a194..5ee7ed8bac 100644 --- a/framework/base/src/types/interaction/tx_async_call.rs +++ b/framework/base/src/types/interaction/tx_async_call.rs @@ -5,10 +5,10 @@ use crate::{ }; use super::{ - FunctionCall, Tx, TxCallback, TxDataFunctionCall, TxEnv, TxPayment, TxScEnv, TxToSpecified, + FunctionCall, Tx, TxDataFunctionCall, TxEnv, TxPayment, TxResultHandler, TxScEnv, TxToSpecified, }; -pub trait TxAsyncCallCallback: TxCallback> +pub trait TxAsyncCallCallback: TxResultHandler> where Api: CallTypeApi, { @@ -22,7 +22,8 @@ where fn save_callback_closure_to_storage(&self) {} } -impl TxCallback> for CallbackClosure where Api: CallTypeApi {} +impl TxResultHandler> for CallbackClosure where Api: CallTypeApi {} + impl TxAsyncCallCallback for CallbackClosure where Api: CallTypeApi + StorageWriteApi, @@ -32,7 +33,7 @@ where } } -impl TxCallback> for Option> where Api: CallTypeApi {} +impl TxResultHandler> for Option> where Api: CallTypeApi {} impl TxAsyncCallCallback for Option> where Api: CallTypeApi + StorageWriteApi, @@ -44,17 +45,17 @@ where } } -impl Tx, (), To, Payment, (), FC, Callback> +impl Tx, (), To, Payment, (), FC, RH> where Api: CallTypeApi, To: TxToSpecified>, Payment: TxPayment>, FC: TxDataFunctionCall>, - Callback: TxAsyncCallCallback, + RH: TxAsyncCallCallback, { pub fn async_call_and_exit(self) -> ! { let normalized = self.normalize_tx(); - normalized.callback.save_callback_closure_to_storage(); + normalized.result_handler.save_callback_closure_to_storage(); SendRawWrapper::::new().async_call_raw( &normalized.to, &normalized.payment.value, diff --git a/framework/base/src/types/interaction/tx_async_call_promises.rs b/framework/base/src/types/interaction/tx_async_call_promises.rs index 55282d708a..9a7907b03e 100644 --- a/framework/base/src/types/interaction/tx_async_call_promises.rs +++ b/framework/base/src/types/interaction/tx_async_call_promises.rs @@ -5,11 +5,11 @@ use crate::{ }; use super::{ - callback_closure::CallbackClosureWithGas, ExplicitGas, FunctionCall, Tx, TxCallback, TxGas, + callback_closure::CallbackClosureWithGas, ExplicitGas, FunctionCall, Tx, TxResultHandler, TxGas, TxPayment, TxScEnv, TxToSpecified, }; -pub trait TxPromisesCallback: TxCallback> +pub trait TxPromisesCallback: TxResultHandler> where Api: CallTypeApi, { @@ -37,7 +37,7 @@ where } } -impl TxCallback> for CallbackClosureWithGas where Api: CallTypeApi {} +impl TxResultHandler> for CallbackClosureWithGas where Api: CallTypeApi {} impl TxPromisesCallback for CallbackClosureWithGas where Api: CallTypeApi, @@ -77,8 +77,8 @@ where payment: self.payment, gas: self.gas, data: self.data, - callback: CallbackClosureWithGas { - closure: self.callback, + result_handler: CallbackClosureWithGas { + closure: self.result_handler, gas_for_callback: gas, }, } @@ -95,12 +95,12 @@ where { // #[cfg(feature = "promises")] pub fn async_call_promise(self) { - let callback_name = self.callback.callback_name(); + let callback_name = self.result_handler.callback_name(); let mut cb_closure_args_serialized = ManagedBuffer::::from_raw_handle(const_handles::MBUF_TEMPORARY_1); - self.callback + self.result_handler .overwrite_with_serialized_args(&mut cb_closure_args_serialized); - let extra_gas_for_callback = self.callback.gas_for_callback(); + let extra_gas_for_callback = self.result_handler.gas_for_callback(); let normalized = self.normalize_tx(); diff --git a/framework/base/src/types/interaction/tx_callback.rs b/framework/base/src/types/interaction/tx_result_handler.rs similarity index 71% rename from framework/base/src/types/interaction/tx_callback.rs rename to framework/base/src/types/interaction/tx_result_handler.rs index a7e5710e21..1b28d5fd97 100644 --- a/framework/base/src/types/interaction/tx_callback.rs +++ b/framework/base/src/types/interaction/tx_result_handler.rs @@ -6,20 +6,21 @@ use crate::{ use super::{FunctionCall, TxEnv}; -pub trait TxCallback +pub trait TxResultHandler where Env: TxEnv, { } -pub trait TxRunnableCallback: TxCallback +pub trait TxRunnableCallback: TxResultHandler where Env: TxEnv, { fn run_callback(self, env: &Env); } -impl TxCallback for () where Env: TxEnv {} +impl TxResultHandler for () where Env: TxEnv {} + impl TxRunnableCallback for () where Env: TxEnv, diff --git a/framework/base/src/types/interaction/tx_return.rs b/framework/base/src/types/interaction/tx_return.rs new file mode 100644 index 0000000000..3a29be5b6a --- /dev/null +++ b/framework/base/src/types/interaction/tx_return.rs @@ -0,0 +1,50 @@ +use crate::{ + api::ManagedTypeApi, + formatter::SCLowerHex, + types::{ManagedBuffer, ManagedBufferCachedBuilder, ManagedVec}, +}; + +use super::{FunctionCall, TxEnv, TxResultHandler}; + +pub trait TxReturn: TxResultHandler +where + Env: TxEnv, +{ + type Returned; + + fn sync_call_result( + self, + raw_results: &ManagedVec>, + ) -> Self::Returned; +} + +impl TxReturn for () +where + Env: TxEnv, +{ + type Returned = (); + + fn sync_call_result( + self, + raw_results: &ManagedVec>, + ) -> Self::Returned { + } +} + +pub struct ReturnRaw; + +impl TxResultHandler for ReturnRaw where Env: TxEnv {} + +impl TxReturn for ReturnRaw +where + Env: TxEnv, +{ + type Returned = ManagedVec>; + + fn sync_call_result( + self, + raw_results: &ManagedVec>, + ) -> Self::Returned { + raw_results.clone() + } +} diff --git a/framework/base/src/types/interaction/tx_sync_call.rs b/framework/base/src/types/interaction/tx_sync_call.rs new file mode 100644 index 0000000000..0f5815a185 --- /dev/null +++ b/framework/base/src/types/interaction/tx_sync_call.rs @@ -0,0 +1,37 @@ +use crate::{ + api::{CallTypeApi, StorageWriteApi}, + contract_base::SendRawWrapper, + types::{BigUint, CallbackClosure, ManagedAddress}, +}; + +use super::{ + FunctionCall, Tx, TxDataFunctionCall, TxEnv, TxPayment, TxResultHandler, TxReturn, TxScEnv, + TxToSpecified, TxGas, +}; + +impl Tx, (), To, Payment, Gas, FC, RH> +where + Api: CallTypeApi, + To: TxToSpecified>, + Payment: TxPayment>, + Gas: TxGas>, + FC: TxDataFunctionCall>, + RH: TxReturn>, +{ + pub fn execute_on_dest_context(self) -> RH::Returned { + let gas_limit = self.gas.resolve_gas(&self.env); + let normalized = self.normalize_tx(); + + let raw_result = SendRawWrapper::::new().execute_on_dest_context_raw( + gas_limit, + &normalized.to, + &normalized.payment.value, + &normalized.data.function_name, + &normalized.data.arg_buffer, + ); + + SendRawWrapper::::new().clean_return_data(); + + normalized.result_handler.sync_call_result(&raw_result) + } +} diff --git a/framework/base/src/types/interaction/typed_function_call.rs b/framework/base/src/types/interaction/typed_function_call.rs new file mode 100644 index 0000000000..dcb2be5052 --- /dev/null +++ b/framework/base/src/types/interaction/typed_function_call.rs @@ -0,0 +1,32 @@ +use core::marker::PhantomData; + +use crate::{ + abi::{TypeAbi, TypeName}, + api::{CallTypeApi, ManagedTypeApi}, + types::{EsdtTokenPayment, ManagedAddress, ManagedBuffer, ManagedVec, MultiValueEncoded}, +}; + +use super::{ContractCallNoPayment, FunctionCall, ManagedArgBuffer}; + +/// Encodes a function call on the blockchain, together with the original result type. +/// +/// Can be used as a multi-argument, to embed a call within a call. +pub struct TypedFunctionCall +where + Api: ManagedTypeApi, +{ + pub function_call: FunctionCall, + _return_type: PhantomData, +} + +impl From> for TypedFunctionCall +where + Api: ManagedTypeApi, +{ + fn from(function_call: FunctionCall) -> Self { + TypedFunctionCall { + function_call, + _return_type: PhantomData, + } + } +} diff --git a/framework/scenario/src/facade/scenario_callbacks.rs b/framework/scenario/src/facade/scenario_callbacks.rs index 1429f7ed16..e55f4bdec5 100644 --- a/framework/scenario/src/facade/scenario_callbacks.rs +++ b/framework/scenario/src/facade/scenario_callbacks.rs @@ -1,4 +1,4 @@ -use multiversx_sc::types::{TxCallback, TxRunnableCallback}; +use multiversx_sc::types::{TxResultHandler, TxRunnableCallback}; use crate::scenario_model::TxResponse; @@ -8,7 +8,7 @@ pub struct WithTxResult(pub F) where F: FnOnce(&TxResponse); -impl TxCallback for WithTxResult where F: FnOnce(&TxResponse) {} +impl TxResultHandler for WithTxResult where F: FnOnce(&TxResponse) {} impl TxRunnableCallback for WithTxResult where F: FnOnce(&TxResponse), diff --git a/framework/scenario/src/facade/scenario_world_steps_tx.rs b/framework/scenario/src/facade/scenario_world_steps_tx.rs index ad8134edca..1b2f84d40b 100644 --- a/framework/scenario/src/facade/scenario_world_steps_tx.rs +++ b/framework/scenario/src/facade/scenario_world_steps_tx.rs @@ -94,6 +94,6 @@ where world.sc_call(&mut step); env.response = step.response; - self.callback.run_callback(&env); + self.result_handler.run_callback(&env); } } From fbf62b3da54b95eef39e3700070f297fbbf37855 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 13 Dec 2023 10:11:41 +0200 Subject: [PATCH 013/461] unified syntax - file renames --- framework/base/src/types/interaction/mod.rs | 14 +++++++------- .../{tx_async_call.rs => tx_call_async.rs} | 0 ..._call_promises.rs => tx_call_async_promises.rs} | 0 .../{tx_sync_call.rs => tx_call_sync.rs} | 0 .../interaction/{tx_async_te.rs => tx_call_te.rs} | 0 5 files changed, 7 insertions(+), 7 deletions(-) rename framework/base/src/types/interaction/{tx_async_call.rs => tx_call_async.rs} (100%) rename framework/base/src/types/interaction/{tx_async_call_promises.rs => tx_call_async_promises.rs} (100%) rename framework/base/src/types/interaction/{tx_sync_call.rs => tx_call_sync.rs} (100%) rename framework/base/src/types/interaction/{tx_async_te.rs => tx_call_te.rs} (100%) diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index c63f3de7b7..2c7672566d 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -20,9 +20,10 @@ mod expr_sc; mod function_call; mod managed_arg_buffer; mod tx; -mod tx_async_call; -mod tx_async_call_promises; -mod tx_async_te; +mod tx_call_async; +mod tx_call_async_promises; +mod tx_call_sync; +mod tx_call_te; mod tx_data; mod tx_env; mod tx_env_sc; @@ -31,7 +32,6 @@ mod tx_gas; mod tx_payment; mod tx_result_handler; mod tx_return; -mod tx_sync_call; mod tx_to; mod typed_function_call; @@ -55,8 +55,9 @@ pub use expr_sc::ScExpr; pub use function_call::FunctionCall; pub use managed_arg_buffer::ManagedArgBuffer; pub use tx::*; -pub use tx_async_call::*; -pub use tx_async_call_promises::*; +pub use tx_call_async::*; +pub use tx_call_async_promises::*; +pub use tx_call_sync::*; pub use tx_data::*; pub use tx_env::*; pub use tx_env_sc::*; @@ -65,7 +66,6 @@ pub use tx_gas::*; pub use tx_payment::*; pub use tx_result_handler::*; pub use tx_return::*; -pub use tx_sync_call::*; pub use tx_to::*; pub use typed_function_call::*; diff --git a/framework/base/src/types/interaction/tx_async_call.rs b/framework/base/src/types/interaction/tx_call_async.rs similarity index 100% rename from framework/base/src/types/interaction/tx_async_call.rs rename to framework/base/src/types/interaction/tx_call_async.rs diff --git a/framework/base/src/types/interaction/tx_async_call_promises.rs b/framework/base/src/types/interaction/tx_call_async_promises.rs similarity index 100% rename from framework/base/src/types/interaction/tx_async_call_promises.rs rename to framework/base/src/types/interaction/tx_call_async_promises.rs diff --git a/framework/base/src/types/interaction/tx_sync_call.rs b/framework/base/src/types/interaction/tx_call_sync.rs similarity index 100% rename from framework/base/src/types/interaction/tx_sync_call.rs rename to framework/base/src/types/interaction/tx_call_sync.rs diff --git a/framework/base/src/types/interaction/tx_async_te.rs b/framework/base/src/types/interaction/tx_call_te.rs similarity index 100% rename from framework/base/src/types/interaction/tx_async_te.rs rename to framework/base/src/types/interaction/tx_call_te.rs From 26ab1b96fe8e4db47bbe7d74092596be9fb8d3d3 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sun, 14 Jan 2024 05:14:25 +0200 Subject: [PATCH 014/461] unified syntax - result handling core --- framework/base/src/lib.rs | 1 + framework/base/src/tuple_util.rs | 3 + .../base/src/tuple_util/nested_tuples.rs | 137 +++++++++ .../types/interaction/contract_call_exec.rs | 2 +- .../src/types/interaction/function_call.rs | 14 +- framework/base/src/types/interaction/mod.rs | 6 + framework/base/src/types/interaction/tx.rs | 116 ++++++-- .../src/types/interaction/tx_call_async.rs | 15 +- .../interaction/tx_call_async_promises.rs | 12 +- .../src/types/interaction/tx_call_sync.rs | 89 +++++- .../types/interaction/tx_result_handler.rs | 19 +- .../base/src/types/interaction/tx_return.rs | 41 +-- .../src/types/interaction/tx_return_sync.rs | 46 +++ .../interaction/tx_return_type_marker.rs | 28 ++ .../base/src/types/interaction/tx_rh_list.rs | 13 + .../interaction/tx_rh_list/returns_bt.rs | 27 ++ .../interaction/tx_rh_list/returns_exact.rs | 46 +++ .../interaction/tx_rh_list/returns_raw.rs | 40 +++ .../interaction/tx_rh_list/returns_similar.rs | 39 +++ .../interaction/tx_rh_list/tx_rh_list_cons.rs | 275 ++++++++++++++++++ .../interaction/tx_rh_list/tx_rh_list_item.rs | 18 ++ .../scenario/src/facade/scenario_callbacks.rs | 8 +- 22 files changed, 932 insertions(+), 63 deletions(-) create mode 100644 framework/base/src/tuple_util.rs create mode 100644 framework/base/src/tuple_util/nested_tuples.rs create mode 100644 framework/base/src/types/interaction/tx_return_sync.rs create mode 100644 framework/base/src/types/interaction/tx_return_type_marker.rs create mode 100644 framework/base/src/types/interaction/tx_rh_list.rs create mode 100644 framework/base/src/types/interaction/tx_rh_list/returns_bt.rs create mode 100644 framework/base/src/types/interaction/tx_rh_list/returns_exact.rs create mode 100644 framework/base/src/types/interaction/tx_rh_list/returns_raw.rs create mode 100644 framework/base/src/types/interaction/tx_rh_list/returns_similar.rs create mode 100644 framework/base/src/types/interaction/tx_rh_list/tx_rh_list_cons.rs create mode 100644 framework/base/src/types/interaction/tx_rh_list/tx_rh_list_item.rs diff --git a/framework/base/src/lib.rs b/framework/base/src/lib.rs index b90cb89409..4a15ecb657 100644 --- a/framework/base/src/lib.rs +++ b/framework/base/src/lib.rs @@ -36,6 +36,7 @@ pub mod log_util; mod macros; pub mod non_zero_util; pub mod storage; +pub mod tuple_util; pub mod types; pub use hex_call_data::*; diff --git a/framework/base/src/tuple_util.rs b/framework/base/src/tuple_util.rs new file mode 100644 index 0000000000..717058e641 --- /dev/null +++ b/framework/base/src/tuple_util.rs @@ -0,0 +1,3 @@ +mod nested_tuples; + +pub use nested_tuples::*; diff --git a/framework/base/src/tuple_util/nested_tuples.rs b/framework/base/src/tuple_util/nested_tuples.rs new file mode 100644 index 0000000000..9b7844389c --- /dev/null +++ b/framework/base/src/tuple_util/nested_tuples.rs @@ -0,0 +1,137 @@ +/// A tuple of the form (A, (B, (... (N, ())))). +/// +/// It is always terminated with a unit. +pub trait NestedTuple {} + +impl NestedTuple for () {} + +impl NestedTuple for (Head, Tail) where Tail: NestedTuple {} + +/// Allows to append at the end of a nested tuple list. +pub trait NestedTupleAppend { + type Output; + + fn append(self, t: T) -> Self::Output; +} + +impl NestedTupleAppend for () { + type Output = (T, ()); + + fn append(self, t: T) -> Self::Output { + (t, ()) + } +} + +impl NestedTupleAppend for (Head, Tail) +where + Tail: NestedTupleAppend, +{ + type Output = (Head, Tail::Output); + + fn append(self, t: T) -> Self::Output { + (self.0, self.1.append(t)) + } +} + +/// Defines conversion of a nested tuple list to a regular tuple. +pub trait NestedTupleFlatten: NestedTuple { + type Flattened; + type Unpacked; + + /// Converts a nested tuple list to a regular tuple. + fn flatten(self) -> Self::Flattened; + + /// Same as `flatten`, converts a nested tuple list to a regular tuple, + /// but additionally, it unpacks singleton tuples into their content (`(item,)` -> `item`). + fn flatten_unpack(self) -> Self::Unpacked; +} + +impl NestedTupleFlatten for () { + type Flattened = (); + type Unpacked = (); + + fn flatten(self) -> Self::Flattened {} + fn flatten_unpack(self) -> Self::Unpacked {} +} + +impl NestedTupleFlatten for (T, ()) { + type Flattened = (T,); + type Unpacked = T; + + fn flatten(self) -> Self::Flattened { + (self.0,) + } + + fn flatten_unpack(self) -> Self::Unpacked { + self.0 + } +} + +macro_rules! tuple_list_type { + () => ( () ); + ($i:ty) => ( ($i, ()) ); + ($i:ty, $($e:ty),*) => ( ($i, tuple_list_type!($($e),*)) ); +} + +macro_rules! unnest { + (($layer:expr); ($($v:expr),*); ($u:ident, $($us:ident,)*)) => { + unnest!(($layer . 1); ($($v,)* $layer . 0); ($($us,)*)) + }; + (($layer:expr); ($($v:expr),*); ()) => { ($($v,)*) }; +} + +macro_rules! flatten_impl { + ($(($t:ident $($ts:ident)+))+) => { + $( + impl<$t,$($ts),+> Flatten for tuple_list_type!($t,$($ts),+) { + type Flattened = ($t,$($ts),+); + type Unpacked = ($t,$($ts),+); + + fn flatten(self) -> Self::Flattened { + unnest!((self); (); ($t, $($ts,)*)) + } + + fn flatten_unpack(self) -> Self::Unpacked { + self.flatten() + } + } + )+ + } +} + +flatten_impl! { + (T1 T2) + (T1 T2 T3) + (T1 T2 T3 T4) + (T1 T2 T3 T4 T5) + (T1 T2 T3 T4 T5 T6) + (T1 T2 T3 T4 T5 T6 T7) + (T1 T2 T3 T4 T5 T6 T7 T8) + (T1 T2 T3 T4 T5 T6 T7 T8 T9) + (T1 T2 T3 T4 T5 T6 T7 T8 T9 T10) + (T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11) + (T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12) + (T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 T13) + (T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 T13 T14) + (T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 T13 T14 T15) + (T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 T13 T14 T15 T16) +} + +#[cfg(test)] +mod test { + use super::*; + + #[test] + fn test_flatten() { + let flat2 = (1, (2, ())).flatten(); + assert_eq!(flat2, (1, 2)); + + let n3 = (1u8, (2u16, (3u32, ()))); + let flat3 = n3.flatten(); + assert_eq!(flat3, (1u8, 2u16, 3u32)); + + let n4 = n3.append(4u64); + let flat4 = n4.flatten(); + assert_eq!(flat4, (1u8, 2u16, 3u32, 4u64)); + } +} diff --git a/framework/base/src/types/interaction/contract_call_exec.rs b/framework/base/src/types/interaction/contract_call_exec.rs index b32f143fdc..c8c49f69bc 100644 --- a/framework/base/src/types/interaction/contract_call_exec.rs +++ b/framework/base/src/types/interaction/contract_call_exec.rs @@ -215,7 +215,7 @@ where } } -fn decode_result( +pub(super) fn decode_result( raw_result: ManagedVec>, ) -> RequestedResult where diff --git a/framework/base/src/types/interaction/function_call.rs b/framework/base/src/types/interaction/function_call.rs index bfe74958dc..376aec879b 100644 --- a/framework/base/src/types/interaction/function_call.rs +++ b/framework/base/src/types/interaction/function_call.rs @@ -12,7 +12,7 @@ use crate::{ types::{EsdtTokenPayment, ManagedAddress, ManagedBuffer, ManagedVec, MultiValueEncoded}, }; -use super::{ContractCallNoPayment, ManagedArgBuffer}; +use super::{ContractCallNoPayment, ManagedArgBuffer, TypedFunctionCall}; /// Encodes a function call on the blockchain, composed of a function name and its encoded arguments. /// @@ -58,6 +58,18 @@ where self.arg_buffer.push_multi_arg(arg); self } + + pub fn arguments_raw(mut self, raw: ManagedArgBuffer) -> Self { + self.arg_buffer = raw; + self + } + + pub fn typed_result(self) -> TypedFunctionCall + where + R: TopEncodeMulti + TopDecodeMulti, + { + self.into() + } } impl From<()> for FunctionCall diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index 2c7672566d..455f383f40 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -32,6 +32,9 @@ mod tx_gas; mod tx_payment; mod tx_result_handler; mod tx_return; +mod tx_return_sync; +mod tx_return_type_marker; +mod tx_rh_list; mod tx_to; mod typed_function_call; @@ -66,6 +69,9 @@ pub use tx_gas::*; pub use tx_payment::*; pub use tx_result_handler::*; pub use tx_return::*; +pub use tx_return_sync::*; +pub use tx_return_type_marker::*; +pub use tx_rh_list::*; pub use tx_to::*; pub use typed_function_call::*; diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 50db05407a..315ee8593d 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -12,8 +12,10 @@ use crate::{ }; use super::{ - AsyncCall, ExplicitGas, FunctionCall, TxResultHandler, TxData, TxDataFunctionCall, TxEnv, TxFrom, - TxFromSpecified, TxGas, TxPayment, TxScEnv, TxTo, TxToSpecified, + AsyncCall, ExplicitGas, FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, + RHListAppendNoRet, RHListAppendRet, RHListItem, ReturnTypeMarker, TxData, TxDataFunctionCall, + TxEnv, TxFrom, TxFromSpecified, TxGas, TxPayment, TxResultHandler, TxReturn, TxScEnv, TxTo, + TxToSpecified, }; #[must_use] @@ -134,9 +136,7 @@ where } } - pub fn to_caller( - self, - ) -> Tx, Payment, Gas, Data, RH> { + pub fn to_caller(self) -> Tx, Payment, Gas, Data, RH> { let caller = BlockchainWrapper::::new().get_caller(); self.to(caller) } @@ -211,8 +211,7 @@ where } } -impl - Tx, Gas, Data, RH> +impl Tx, Gas, Data, RH> where Env: TxEnv, From: TxFrom, @@ -243,8 +242,7 @@ where } } -impl - Tx, Gas, Data, RH> +impl Tx, Gas, Data, RH> where Env: TxEnv, From: TxFrom, @@ -292,20 +290,19 @@ where } } -impl Tx +impl Tx where Env: TxEnv, From: TxFrom, To: TxTo, Payment: TxPayment, Gas: TxGas, - RH: TxResultHandler, { #[inline] pub fn call>>( self, call: FC, - ) -> Tx, RH> { + ) -> Tx, ()> { Tx { env: self.env, from: self.from, @@ -313,7 +310,7 @@ where payment: self.payment, gas: self.gas, data: call.into(), - result_handler: self.result_handler, + result_handler: (), } } @@ -321,7 +318,7 @@ where pub fn function_name>>( self, function_name: N, - ) -> Tx, RH> { + ) -> Tx, ()> { Tx { env: self.env, from: self.from, @@ -329,13 +326,12 @@ where payment: self.payment, gas: self.gas, data: FunctionCall::new(function_name), - result_handler: self.result_handler, + result_handler: (), } } } -impl - Tx, RH> +impl Tx, RH> where Env: TxEnv, From: TxFrom, @@ -349,6 +345,12 @@ where self.data = self.data.argument(arg); self } + + #[inline] + pub fn arguments_raw(mut self, raw: ManagedArgBuffer) -> Self { + self.data.arg_buffer = raw; + self + } } impl Tx @@ -361,10 +363,84 @@ where Data: TxData, { #[inline] - pub fn callback( + pub fn original_result( + self, + ) -> Tx> { + Tx { + env: self.env, + from: self.from, + to: self.to, + payment: self.payment, + gas: self.gas, + data: self.data, + result_handler: OriginalResultMarker::new(), + } + } +} + +impl + Tx +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Payment: TxPayment, + Gas: TxGas, + Data: TxData, + ResultList: RHList, +{ + #[inline] + pub fn result_handler( + self, + item: RH, + ) -> Tx + where + RH: RHListItem, + ResultList: RHListAppendNoRet, + { + Tx { + env: self.env, + from: self.from, + to: self.to, + payment: self.payment, + gas: self.gas, + data: self.data, + result_handler: self.result_handler.append_no_ret(item), + } + } + + #[inline] + pub fn returns( self, - callback: RH, - ) -> Tx + item: RH, + ) -> Tx + where + RH: RHListItem, + ResultList: RHListAppendRet, + { + Tx { + env: self.env, + from: self.from, + to: self.to, + payment: self.payment, + gas: self.gas, + data: self.data, + result_handler: self.result_handler.append_ret(item), + } + } +} + +impl Tx +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Payment: TxPayment, + Gas: TxGas, + Data: TxData, +{ + #[inline] + pub fn callback(self, callback: RH) -> Tx where RH: TxResultHandler, { diff --git a/framework/base/src/types/interaction/tx_call_async.rs b/framework/base/src/types/interaction/tx_call_async.rs index 5ee7ed8bac..6907e97d1f 100644 --- a/framework/base/src/types/interaction/tx_call_async.rs +++ b/framework/base/src/types/interaction/tx_call_async.rs @@ -22,7 +22,12 @@ where fn save_callback_closure_to_storage(&self) {} } -impl TxResultHandler> for CallbackClosure where Api: CallTypeApi {} +impl TxResultHandler> for CallbackClosure +where + Api: CallTypeApi, +{ + type OriginalResult = (); +} impl TxAsyncCallCallback for CallbackClosure where @@ -33,7 +38,13 @@ where } } -impl TxResultHandler> for Option> where Api: CallTypeApi {} +impl TxResultHandler> for Option> +where + Api: CallTypeApi, +{ + type OriginalResult = (); +} + impl TxAsyncCallCallback for Option> where Api: CallTypeApi + StorageWriteApi, diff --git a/framework/base/src/types/interaction/tx_call_async_promises.rs b/framework/base/src/types/interaction/tx_call_async_promises.rs index 9a7907b03e..f43ca0bab4 100644 --- a/framework/base/src/types/interaction/tx_call_async_promises.rs +++ b/framework/base/src/types/interaction/tx_call_async_promises.rs @@ -5,8 +5,8 @@ use crate::{ }; use super::{ - callback_closure::CallbackClosureWithGas, ExplicitGas, FunctionCall, Tx, TxResultHandler, TxGas, - TxPayment, TxScEnv, TxToSpecified, + callback_closure::CallbackClosureWithGas, ExplicitGas, FunctionCall, Tx, TxGas, TxPayment, + TxResultHandler, TxScEnv, TxToSpecified, }; pub trait TxPromisesCallback: TxResultHandler> @@ -37,7 +37,13 @@ where } } -impl TxResultHandler> for CallbackClosureWithGas where Api: CallTypeApi {} +impl TxResultHandler> for CallbackClosureWithGas +where + Api: CallTypeApi, +{ + type OriginalResult = (); +} + impl TxPromisesCallback for CallbackClosureWithGas where Api: CallTypeApi, diff --git a/framework/base/src/types/interaction/tx_call_sync.rs b/framework/base/src/types/interaction/tx_call_sync.rs index 0f5815a185..e7dcabc4fb 100644 --- a/framework/base/src/types/interaction/tx_call_sync.rs +++ b/framework/base/src/types/interaction/tx_call_sync.rs @@ -1,14 +1,89 @@ use crate::{ api::{CallTypeApi, StorageWriteApi}, contract_base::SendRawWrapper, - types::{BigUint, CallbackClosure, ManagedAddress}, + tuple_util::NestedTupleFlatten, + types::{BigUint, CallbackClosure, ManagedAddress, ManagedBuffer, ManagedVec}, }; use super::{ - FunctionCall, Tx, TxDataFunctionCall, TxEnv, TxPayment, TxResultHandler, TxReturn, TxScEnv, - TxToSpecified, TxGas, + ConsNoRet, ConsRet, FunctionCall, OriginalResultMarker, RHList, RHListItem, Tx, + TxDataFunctionCall, TxEnv, TxGas, TxPayment, TxResultHandler, TxReturn, TxReturnSync, TxScEnv, + TxToSpecified, }; +pub trait RHListItemSync: RHListItem +where + Env: TxEnv, +{ + fn item_sync_call_result( + self, + raw_results: &ManagedVec>, + ) -> Self::Returns; +} + +pub trait RHListSync: RHList +where + Env: TxEnv, +{ + fn list_sync_call_result( + self, + raw_results: &ManagedVec>, + ) -> Self::ListReturns; +} + +impl RHListSync for () +where + Env: TxEnv, +{ + fn list_sync_call_result( + self, + raw_results: &ManagedVec>, + ) -> Self::ListReturns { + } +} + +impl RHListSync for OriginalResultMarker +where + Env: TxEnv, +{ + fn list_sync_call_result( + self, + raw_results: &ManagedVec>, + ) -> Self::ListReturns { + } +} + +impl RHListSync for ConsRet +where + Env: TxEnv, + Head: RHListItemSync, + Tail: RHListSync, +{ + fn list_sync_call_result( + self, + raw_results: &ManagedVec>, + ) -> Self::ListReturns { + let head_result = self.head.item_sync_call_result(raw_results); + let tail_result = self.tail.list_sync_call_result(raw_results); + (head_result, tail_result) + } +} + +impl RHListSync for ConsNoRet +where + Env: TxEnv, + Head: RHListItemSync, + Tail: RHListSync, +{ + fn list_sync_call_result( + self, + raw_results: &ManagedVec>, + ) -> Self::ListReturns { + self.head.item_sync_call_result(raw_results); + self.tail.list_sync_call_result(raw_results) + } +} + impl Tx, (), To, Payment, Gas, FC, RH> where Api: CallTypeApi, @@ -16,9 +91,10 @@ where Payment: TxPayment>, Gas: TxGas>, FC: TxDataFunctionCall>, - RH: TxReturn>, + RH: RHListSync>, + RH::ListReturns: NestedTupleFlatten, { - pub fn execute_on_dest_context(self) -> RH::Returned { + pub fn execute_on_dest_context(self) -> ::Unpacked { let gas_limit = self.gas.resolve_gas(&self.env); let normalized = self.normalize_tx(); @@ -32,6 +108,7 @@ where SendRawWrapper::::new().clean_return_data(); - normalized.result_handler.sync_call_result(&raw_result) + let tuple_result = normalized.result_handler.list_sync_call_result(&raw_result); + tuple_result.flatten_unpack() } } diff --git a/framework/base/src/types/interaction/tx_result_handler.rs b/framework/base/src/types/interaction/tx_result_handler.rs index 1b28d5fd97..8cc0b06bbf 100644 --- a/framework/base/src/types/interaction/tx_result_handler.rs +++ b/framework/base/src/types/interaction/tx_result_handler.rs @@ -10,8 +10,25 @@ pub trait TxResultHandler where Env: TxEnv, { + type OriginalResult; } +impl TxResultHandler for () +where + Env: TxEnv, +{ + type OriginalResult = (); +} + +// impl TxResultHandler for (Head, Tail) +// where +// Env: TxEnv, +// Head: TxResultHandler, +// Tail: TxResultHandler, +// { +// type OriginalResult = Tail::OriginalResult; +// } + pub trait TxRunnableCallback: TxResultHandler where Env: TxEnv, @@ -19,8 +36,6 @@ where fn run_callback(self, env: &Env); } -impl TxResultHandler for () where Env: TxEnv {} - impl TxRunnableCallback for () where Env: TxEnv, diff --git a/framework/base/src/types/interaction/tx_return.rs b/framework/base/src/types/interaction/tx_return.rs index 3a29be5b6a..176d0a56a3 100644 --- a/framework/base/src/types/interaction/tx_return.rs +++ b/framework/base/src/types/interaction/tx_return.rs @@ -4,47 +4,34 @@ use crate::{ types::{ManagedBuffer, ManagedBufferCachedBuilder, ManagedVec}, }; -use super::{FunctionCall, TxEnv, TxResultHandler}; +use super::{FunctionCall, ReturnTypeMarker, TxEnv, TxResultHandler}; pub trait TxReturn: TxResultHandler where Env: TxEnv, { - type Returned; - - fn sync_call_result( - self, - raw_results: &ManagedVec>, - ) -> Self::Returned; + type Returns; } impl TxReturn for () where Env: TxEnv, { - type Returned = (); - - fn sync_call_result( - self, - raw_results: &ManagedVec>, - ) -> Self::Returned { - } + type Returns = (); } -pub struct ReturnRaw; - -impl TxResultHandler for ReturnRaw where Env: TxEnv {} - -impl TxReturn for ReturnRaw +impl TxReturn for ReturnTypeMarker where Env: TxEnv, { - type Returned = ManagedVec>; - - fn sync_call_result( - self, - raw_results: &ManagedVec>, - ) -> Self::Returned { - raw_results.clone() - } + type Returns = (); } + +// impl TxReturn for (Head, Tail) +// where +// Env: TxEnv, +// Head: TxReturn, +// Tail: TxReturn, +// { +// type Returns = Head::Returns; +// } diff --git a/framework/base/src/types/interaction/tx_return_sync.rs b/framework/base/src/types/interaction/tx_return_sync.rs new file mode 100644 index 0000000000..b1811c6aeb --- /dev/null +++ b/framework/base/src/types/interaction/tx_return_sync.rs @@ -0,0 +1,46 @@ +use crate::{ + api::ManagedTypeApi, + formatter::SCLowerHex, + types::{ManagedBuffer, ManagedBufferCachedBuilder, ManagedVec}, +}; + +use super::{FunctionCall, TxData, TxEnv, TxReturn}; + +pub trait TxReturnSync: TxReturn +where + Env: TxEnv, +{ + fn sync_call_result( + self, + raw_results: &ManagedVec>, + ) -> Self::Returns; +} + +impl TxReturnSync for () +where + Env: TxEnv, +{ + fn sync_call_result( + self, + raw_results: &ManagedVec>, + ) -> Self::Returns { + } +} + +// impl TxReturnSync for (Head, Tail) +// where +// Env: TxEnv, +// Head: TxReturnSync, +// Tail: TxReturnSync, +// { +// fn sync_call_result( +// self, +// raw_results: &ManagedVec>, +// ) -> Self::Returns { +// // tail first +// self.1.sync_call_result(raw_results); + +// // head at last, which also has a chance of returning +// self.0.sync_call_result(raw_results) +// } +// } diff --git a/framework/base/src/types/interaction/tx_return_type_marker.rs b/framework/base/src/types/interaction/tx_return_type_marker.rs new file mode 100644 index 0000000000..a798ec7ddd --- /dev/null +++ b/framework/base/src/types/interaction/tx_return_type_marker.rs @@ -0,0 +1,28 @@ +use core::marker::PhantomData; + +use crate::{ + api::ManagedTypeApi, + formatter::SCLowerHex, + types::{ManagedBuffer, ManagedBufferCachedBuilder, ManagedVec}, +}; + +use super::{FunctionCall, TxData, TxEnv, TxResultHandler, TxReturn}; + +pub struct ReturnTypeMarker { + _return_type: PhantomData, +} + +impl Default for ReturnTypeMarker { + fn default() -> Self { + Self { + _return_type: PhantomData, + } + } +} + +impl TxResultHandler for ReturnTypeMarker +where + Env: TxEnv, +{ + type OriginalResult = OriginalResult; +} diff --git a/framework/base/src/types/interaction/tx_rh_list.rs b/framework/base/src/types/interaction/tx_rh_list.rs new file mode 100644 index 0000000000..43aacfbc67 --- /dev/null +++ b/framework/base/src/types/interaction/tx_rh_list.rs @@ -0,0 +1,13 @@ +mod returns_bt; +mod returns_exact; +mod returns_raw; +mod returns_similar; +mod tx_rh_list_cons; +mod tx_rh_list_item; + +pub use returns_bt::*; +pub use returns_exact::*; +pub use returns_raw::*; +pub use returns_similar::*; +pub use tx_rh_list_cons::*; +pub use tx_rh_list_item::*; diff --git a/framework/base/src/types/interaction/tx_rh_list/returns_bt.rs b/framework/base/src/types/interaction/tx_rh_list/returns_bt.rs new file mode 100644 index 0000000000..03b695d6f6 --- /dev/null +++ b/framework/base/src/types/interaction/tx_rh_list/returns_bt.rs @@ -0,0 +1,27 @@ +use crate::{ + contract_base::BlockchainWrapper, + types::{BackTransfers, ManagedBuffer, ManagedVec, RHListItemSync, TxEnv}, +}; + +use super::RHListItem; + +pub struct ReturnsBackTransfers; + +impl RHListItem for ReturnsBackTransfers +where + Env: TxEnv, +{ + type Returns = BackTransfers; +} + +impl RHListItemSync for ReturnsBackTransfers +where + Env: TxEnv, +{ + fn item_sync_call_result( + self, + _raw_results: &ManagedVec>, + ) -> Self::Returns { + BlockchainWrapper::::new().get_back_transfers() + } +} diff --git a/framework/base/src/types/interaction/tx_rh_list/returns_exact.rs b/framework/base/src/types/interaction/tx_rh_list/returns_exact.rs new file mode 100644 index 0000000000..ef1d2eb6fb --- /dev/null +++ b/framework/base/src/types/interaction/tx_rh_list/returns_exact.rs @@ -0,0 +1,46 @@ +use multiversx_sc_codec::TopDecodeMulti; + +use crate::types::{ + interaction::contract_call_exec::decode_result, ManagedBuffer, ManagedVec, RHListItemSync, + TxEnv, +}; + +use super::RHListItem; + +pub struct ReturnsExact; + +impl RHListItem for ReturnsExact +where + Env: TxEnv, +{ + type Returns = Original; +} + +impl RHListItemSync for ReturnsExact +where + Env: TxEnv, + Original: TopDecodeMulti, +{ + fn item_sync_call_result( + self, + raw_results: &ManagedVec>, + ) -> Self::Returns { + decode_result::(raw_results.clone()) + } +} + +// impl TxResultHandler for ReturnRaw where Env: TxEnv {} + +// impl TxReturn for ReturnRaw +// where +// Env: TxEnv, +// { +// type Returned = ManagedVec>; + +// fn sync_call_result( +// self, +// raw_results: &ManagedVec>, +// ) -> Self::Returned { +// raw_results.clone() +// } +// } diff --git a/framework/base/src/types/interaction/tx_rh_list/returns_raw.rs b/framework/base/src/types/interaction/tx_rh_list/returns_raw.rs new file mode 100644 index 0000000000..f9651240a4 --- /dev/null +++ b/framework/base/src/types/interaction/tx_rh_list/returns_raw.rs @@ -0,0 +1,40 @@ +use crate::types::{ManagedBuffer, ManagedVec, RHListItemSync, TxEnv}; + +use super::RHListItem; + +pub struct ReturnsRaw; + +impl RHListItem for ReturnsRaw +where + Env: TxEnv, +{ + type Returns = ManagedVec>; +} + +impl RHListItemSync for ReturnsRaw +where + Env: TxEnv, +{ + fn item_sync_call_result( + self, + raw_results: &ManagedVec>, + ) -> Self::Returns { + raw_results.clone() + } +} + +// impl TxResultHandler for ReturnRaw where Env: TxEnv {} + +// impl TxReturn for ReturnRaw +// where +// Env: TxEnv, +// { +// type Returned = ManagedVec>; + +// fn sync_call_result( +// self, +// raw_results: &ManagedVec>, +// ) -> Self::Returned { +// raw_results.clone() +// } +// } diff --git a/framework/base/src/types/interaction/tx_rh_list/returns_similar.rs b/framework/base/src/types/interaction/tx_rh_list/returns_similar.rs new file mode 100644 index 0000000000..5709e68f8d --- /dev/null +++ b/framework/base/src/types/interaction/tx_rh_list/returns_similar.rs @@ -0,0 +1,39 @@ +use core::marker::PhantomData; + +use crate::types::TxEnv; + +use super::RHListItem; + +pub struct ReturnSimilar { + _phantom: PhantomData, +} + +impl Default for ReturnSimilar { + fn default() -> Self { + Self { + _phantom: Default::default(), + } + } +} + +impl ReturnSimilar { + fn new() -> Self { + Self::default() + } +} + +// impl TxResultHandler for ReturnRaw where Env: TxEnv {} + +// impl TxReturn for ReturnRaw +// where +// Env: TxEnv, +// { +// type Returned = ManagedVec>; + +// fn sync_call_result( +// self, +// raw_results: &ManagedVec>, +// ) -> Self::Returned { +// raw_results.clone() +// } +// } diff --git a/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_cons.rs b/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_cons.rs new file mode 100644 index 0000000000..ad841ed6e8 --- /dev/null +++ b/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_cons.rs @@ -0,0 +1,275 @@ +use core::marker::PhantomData; + +use crate::types::{TxEnv, TxResultHandler}; + +use super::RHListItem; + +pub trait RHList: TxResultHandler +where + Env: TxEnv, +{ + type ListReturns; +} + +pub trait RHListAppendRet: RHList +where + Env: TxEnv, + T: RHListItem, +{ + type RetOutput: RHList; + + fn append_ret(self, t: T) -> Self::RetOutput; +} + +pub trait RHListAppendNoRet: RHList +where + Env: TxEnv, + T: RHListItem, +{ + type NoRetOutput: RHList; + + fn append_no_ret(self, t: T) -> Self::NoRetOutput; +} + +impl RHList for () +where + Env: TxEnv, +{ + type ListReturns = (); +} + +impl RHListAppendRet for () +where + Env: TxEnv, + T: RHListItem, +{ + type RetOutput = ConsRet; + + fn append_ret(self, t: T) -> Self::RetOutput { + ConsRet::new(t, self) + } +} + +impl RHListAppendNoRet for () +where + Env: TxEnv, + T: RHListItem, +{ + type NoRetOutput = ConsNoRet; + + fn append_no_ret(self, t: T) -> Self::NoRetOutput { + ConsNoRet::new(t, self) + } +} + +pub struct OriginalResultMarker { + _phantom: PhantomData, +} + +impl Default for OriginalResultMarker { + fn default() -> Self { + Self { + _phantom: Default::default(), + } + } +} + +impl OriginalResultMarker { + pub fn new() -> Self { + Self::default() + } +} + +impl TxResultHandler for OriginalResultMarker +where + Env: TxEnv, +{ + type OriginalResult = O; +} + +impl RHList for OriginalResultMarker +where + Env: TxEnv, +{ + type ListReturns = (); +} + +impl RHListAppendRet for OriginalResultMarker +where + Env: TxEnv, + T: RHListItem, +{ + type RetOutput = ConsRet>; + + fn append_ret(self, t: T) -> Self::RetOutput { + ConsRet::new(t, self) + } +} + +impl RHListAppendNoRet for OriginalResultMarker +where + Env: TxEnv, + T: RHListItem, +{ + type NoRetOutput = ConsNoRet>; + + fn append_no_ret(self, t: T) -> Self::NoRetOutput { + ConsNoRet::new(t, self) + } +} + +pub struct ConsRet +where + Env: TxEnv, + Head: RHListItem, + Tail: RHList, +{ + _phantom: PhantomData, + pub head: Head, + pub tail: Tail, +} + +impl ConsRet +where + Env: TxEnv, + Head: RHListItem, + Tail: RHList, +{ + fn new(head: Head, tail: Tail) -> Self { + ConsRet { + _phantom: PhantomData, + head, + tail, + } + } +} + +impl TxResultHandler for ConsRet +where + Env: TxEnv, + Head: RHListItem, + Tail: RHList, +{ + type OriginalResult = Tail::OriginalResult; +} + +impl RHList for ConsRet +where + Env: TxEnv, + Head: RHListItem, + Tail: RHList, +{ + type ListReturns = (Head::Returns, Tail::ListReturns); + + // fn list_return(&self) -> Self::ListReturn { + // let head_ret = self.head.single_return(); + // let tail_ret = self.tail.list_return(); + // (head_ret, tail_ret) + // } +} + +impl RHListAppendRet for ConsRet +where + Env: TxEnv, + Head: RHListItem, + Tail: RHList + RHListAppendRet, + T: RHListItem, +{ + type RetOutput = ConsRet>::RetOutput>; + + fn append_ret(self, t: T) -> Self::RetOutput { + ConsRet::new(self.head, self.tail.append_ret(t)) + } +} + +impl RHListAppendNoRet for ConsRet +where + Env: TxEnv, + Head: RHListItem, + Tail: RHList + RHListAppendNoRet, + T: RHListItem, +{ + type NoRetOutput = ConsRet>::NoRetOutput>; + + fn append_no_ret(self, t: T) -> Self::NoRetOutput { + ConsRet::new(self.head, self.tail.append_no_ret(t)) + } +} + +/// Handlers that return nothing. +pub struct ConsNoRet +where + Env: TxEnv, + Head: RHListItem, + Tail: RHList, +{ + _phantom: PhantomData, + pub head: Head, + pub tail: Tail, +} + +impl ConsNoRet +where + Env: TxEnv, + Head: RHListItem, + Tail: RHList, +{ + fn new(head: Head, tail: Tail) -> Self { + ConsNoRet { + _phantom: PhantomData, + head, + tail, + } + } +} + +impl TxResultHandler for ConsNoRet +where + Env: TxEnv, + Head: RHListItem, + Tail: RHList, +{ + type OriginalResult = Tail::OriginalResult; +} + +impl RHList for ConsNoRet +where + Env: TxEnv, + Head: RHListItem, + Tail: RHList, +{ + type ListReturns = Tail::ListReturns; + + // fn list_return(&self) -> Self::ListReturn { + // self.head.single_return(); + // self.tail.list_return() + // } +} + +impl RHListAppendRet for ConsNoRet +where + Env: TxEnv, + Head: RHListItem, + Tail: RHList + RHListAppendRet, + T: RHListItem, +{ + type RetOutput = ConsNoRet>::RetOutput>; + + fn append_ret(self, t: T) -> Self::RetOutput { + ConsNoRet::new(self.head, self.tail.append_ret(t)) + } +} + +impl RHListAppendNoRet for ConsNoRet +where + Env: TxEnv, + Head: RHListItem, + Tail: RHList + RHListAppendNoRet, + T: RHListItem, +{ + type NoRetOutput = ConsNoRet>::NoRetOutput>; + + fn append_no_ret(self, t: T) -> Self::NoRetOutput { + ConsNoRet::new(self.head, self.tail.append_no_ret(t)) + } +} diff --git a/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_item.rs b/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_item.rs new file mode 100644 index 0000000000..8430b91b79 --- /dev/null +++ b/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_item.rs @@ -0,0 +1,18 @@ +use crate::types::{ManagedBuffer, ManagedVec, TxEnv}; + +/// Result handler list item. +/// +/// It acts as a result handler that produces a single result. +pub trait RHListItem +where + Env: TxEnv, +{ + type Returns; +} + +impl RHListItem for () +where + Env: TxEnv, +{ + type Returns = (); +} diff --git a/framework/scenario/src/facade/scenario_callbacks.rs b/framework/scenario/src/facade/scenario_callbacks.rs index e55f4bdec5..ffbf569de0 100644 --- a/framework/scenario/src/facade/scenario_callbacks.rs +++ b/framework/scenario/src/facade/scenario_callbacks.rs @@ -8,7 +8,13 @@ pub struct WithTxResult(pub F) where F: FnOnce(&TxResponse); -impl TxResultHandler for WithTxResult where F: FnOnce(&TxResponse) {} +impl TxResultHandler for WithTxResult +where + F: FnOnce(&TxResponse), +{ + type OriginalResult = (); +} + impl TxRunnableCallback for WithTxResult where F: FnOnce(&TxResponse), From 7c1d3902e8a7d0b7c89ee1a8afc55faf66805891 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sun, 14 Jan 2024 05:14:38 +0200 Subject: [PATCH 015/461] unified syntax - execute_on_dest_context example --- .../forwarder-raw/src/forwarder_raw_sync.rs | 18 ++++++++++-------- .../scenarios/forw_raw_sync_echo.scen.json | 5 +---- .../forw_raw_sync_echo_caller.scen.json | 4 +--- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_sync.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_sync.rs index d01245ca59..c77fd503f9 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_sync.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_sync.rs @@ -10,15 +10,17 @@ pub trait ForwarderRawSync: super::forwarder_raw_common::ForwarderRawCommon { endpoint_name: ManagedBuffer, args: MultiValueEncoded, ) { - let payment = self.call_value().egld_value(); + let payment = self.call_value().egld_value().clone_value(); let half_gas = self.blockchain().get_gas_left() / 2; - let result = self.send_raw().execute_on_dest_context_raw( - half_gas, - &to, - &payment, - &endpoint_name, - &args.to_arg_buffer(), - ); + let result = self + .tx() + .to(to) + .egld(payment) + .function_name(endpoint_name) + .argument(&args) + .with_gas_limit(half_gas) + .returns(ReturnsRaw) + .execute_on_dest_context(); self.execute_on_dest_context_result(result); } diff --git a/contracts/feature-tests/composability/scenarios/forw_raw_sync_echo.scen.json b/contracts/feature-tests/composability/scenarios/forw_raw_sync_echo.scen.json index 038dbe24fe..38c3527948 100644 --- a/contracts/feature-tests/composability/scenarios/forw_raw_sync_echo.scen.json +++ b/contracts/feature-tests/composability/scenarios/forw_raw_sync_echo.scen.json @@ -37,10 +37,7 @@ "gasPrice": "0" }, "expect": { - "out": [ - "1", - "2" - ], + "out": [], "status": "0", "logs": [ { diff --git a/contracts/feature-tests/composability/scenarios/forw_raw_sync_echo_caller.scen.json b/contracts/feature-tests/composability/scenarios/forw_raw_sync_echo_caller.scen.json index a35fe621a5..a287422099 100644 --- a/contracts/feature-tests/composability/scenarios/forw_raw_sync_echo_caller.scen.json +++ b/contracts/feature-tests/composability/scenarios/forw_raw_sync_echo_caller.scen.json @@ -35,9 +35,7 @@ "gasPrice": "0" }, "expect": { - "out": [ - "sc:forwarder" - ], + "out": [], "status": "0", "logs": [ { From cf9540b0cae9ed9d08cea06a3003d511806f43d1 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sun, 14 Jan 2024 12:43:48 +0200 Subject: [PATCH 016/461] rename fix --- framework/base/src/tuple_util/nested_tuples.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/base/src/tuple_util/nested_tuples.rs b/framework/base/src/tuple_util/nested_tuples.rs index 9b7844389c..a6dda04391 100644 --- a/framework/base/src/tuple_util/nested_tuples.rs +++ b/framework/base/src/tuple_util/nested_tuples.rs @@ -83,7 +83,7 @@ macro_rules! unnest { macro_rules! flatten_impl { ($(($t:ident $($ts:ident)+))+) => { $( - impl<$t,$($ts),+> Flatten for tuple_list_type!($t,$($ts),+) { + impl<$t,$($ts),+> NestedTupleFlatten for tuple_list_type!($t,$($ts),+) { type Flattened = ($t,$($ts),+); type Unpacked = ($t,$($ts),+); From 0915f300b7134053b4063160e942847c8db3e5ac Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 15 Jan 2024 09:40:05 +0200 Subject: [PATCH 017/461] cleanup --- .../base/src/types/interaction/annotated.rs | 5 +- .../base/src/types/interaction/async_call.rs | 5 +- .../src/types/interaction/expr_address.rs | 5 +- .../base/src/types/interaction/expr_sc.rs | 5 +- framework/base/src/types/interaction/mod.rs | 6 --- framework/base/src/types/interaction/tx.rs | 10 ++-- .../src/types/interaction/tx_call_async.rs | 6 +-- .../interaction/tx_call_async_promises.rs | 2 +- .../src/types/interaction/tx_call_sync.rs | 13 +++--- .../base/src/types/interaction/tx_call_te.rs | 14 +----- .../base/src/types/interaction/tx_data.rs | 1 - .../base/src/types/interaction/tx_env.rs | 7 +-- .../base/src/types/interaction/tx_env_sc.rs | 5 +- .../base/src/types/interaction/tx_from.rs | 2 +- .../base/src/types/interaction/tx_gas.rs | 4 +- .../base/src/types/interaction/tx_payment.rs | 6 +-- .../types/interaction/tx_result_handler.rs | 8 +--- .../base/src/types/interaction/tx_return.rs | 37 --------------- .../src/types/interaction/tx_return_sync.rs | 46 ------------------- .../interaction/tx_return_type_marker.rs | 28 ----------- .../interaction/tx_rh_list/returns_exact.rs | 16 ------- .../interaction/tx_rh_list/returns_raw.rs | 16 ------- .../interaction/tx_rh_list/returns_similar.rs | 22 +-------- .../interaction/tx_rh_list/tx_rh_list_item.rs | 2 +- framework/base/src/types/interaction/tx_to.rs | 2 +- .../types/interaction/typed_function_call.rs | 8 +--- 26 files changed, 32 insertions(+), 249 deletions(-) delete mode 100644 framework/base/src/types/interaction/tx_return.rs delete mode 100644 framework/base/src/types/interaction/tx_return_sync.rs delete mode 100644 framework/base/src/types/interaction/tx_return_type_marker.rs diff --git a/framework/base/src/types/interaction/annotated.rs b/framework/base/src/types/interaction/annotated.rs index 9463ed7c12..bf01d4a4f9 100644 --- a/framework/base/src/types/interaction/annotated.rs +++ b/framework/base/src/types/interaction/annotated.rs @@ -1,7 +1,4 @@ -use crate::{ - api::ManagedTypeApi, - types::{ManagedAddress, ManagedBuffer}, -}; +use crate::types::{ManagedAddress, ManagedBuffer}; use super::TxEnv; diff --git a/framework/base/src/types/interaction/async_call.rs b/framework/base/src/types/interaction/async_call.rs index 2ef3a61c43..5c3b57c5c8 100644 --- a/framework/base/src/types/interaction/async_call.rs +++ b/framework/base/src/types/interaction/async_call.rs @@ -1,10 +1,9 @@ use crate::{ api::{CallTypeApi, StorageWriteApi}, - contract_base::SendRawWrapper, - types::{BigUint, CallbackClosure, EgldPayment, ManagedAddress}, + types::{CallbackClosure, EgldPayment, ManagedAddress}, }; -use super::{FunctionCall, Tx, TxAsyncCallCallback, TxScEnv}; +use super::{FunctionCall, Tx, TxScEnv}; pub type AsyncCall = Tx< TxScEnv, diff --git a/framework/base/src/types/interaction/expr_address.rs b/framework/base/src/types/interaction/expr_address.rs index 69a13cd6e3..c450d49043 100644 --- a/framework/base/src/types/interaction/expr_address.rs +++ b/framework/base/src/types/interaction/expr_address.rs @@ -1,9 +1,6 @@ use core::ptr; -use crate::{ - api::CallTypeApi, - types::{ManagedAddress, ManagedBuffer}, -}; +use crate::types::{ManagedAddress, ManagedBuffer}; use super::{AnnotatedValue, TxEnv, TxFrom, TxFromSpecified}; diff --git a/framework/base/src/types/interaction/expr_sc.rs b/framework/base/src/types/interaction/expr_sc.rs index 56fed5a5e3..cf1fa47914 100644 --- a/framework/base/src/types/interaction/expr_sc.rs +++ b/framework/base/src/types/interaction/expr_sc.rs @@ -1,9 +1,6 @@ use core::ptr; -use crate::{ - api::CallTypeApi, - types::{ManagedAddress, ManagedBuffer}, -}; +use crate::types::{ManagedAddress, ManagedBuffer}; use super::{AnnotatedValue, TxEnv, TxFrom, TxFromSpecified, TxTo, TxToSpecified}; diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index 455f383f40..be3ff25608 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -31,9 +31,6 @@ mod tx_from; mod tx_gas; mod tx_payment; mod tx_result_handler; -mod tx_return; -mod tx_return_sync; -mod tx_return_type_marker; mod tx_rh_list; mod tx_to; mod typed_function_call; @@ -68,9 +65,6 @@ pub use tx_from::*; pub use tx_gas::*; pub use tx_payment::*; pub use tx_result_handler::*; -pub use tx_return::*; -pub use tx_return_sync::*; -pub use tx_return_type_marker::*; pub use tx_rh_list::*; pub use tx_to::*; pub use typed_function_call::*; diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 315ee8593d..d28b054b5e 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -1,9 +1,6 @@ -use core::marker::PhantomData; - use multiversx_sc_codec::TopEncodeMulti; use crate::{ - api::CallTypeApi, contract_base::BlockchainWrapper, types::{ BigUint, EgldPayment, EsdtTokenPayment, ManagedAddress, ManagedBuffer, ManagedVec, @@ -12,10 +9,9 @@ use crate::{ }; use super::{ - AsyncCall, ExplicitGas, FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, - RHListAppendNoRet, RHListAppendRet, RHListItem, ReturnTypeMarker, TxData, TxDataFunctionCall, - TxEnv, TxFrom, TxFromSpecified, TxGas, TxPayment, TxResultHandler, TxReturn, TxScEnv, TxTo, - TxToSpecified, + ExplicitGas, FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, RHListAppendNoRet, + RHListAppendRet, RHListItem, TxData, TxDataFunctionCall, TxEnv, TxFrom, TxFromSpecified, TxGas, + TxPayment, TxResultHandler, TxTo, TxToSpecified, }; #[must_use] diff --git a/framework/base/src/types/interaction/tx_call_async.rs b/framework/base/src/types/interaction/tx_call_async.rs index 6907e97d1f..45aeea6cb1 100644 --- a/framework/base/src/types/interaction/tx_call_async.rs +++ b/framework/base/src/types/interaction/tx_call_async.rs @@ -1,12 +1,10 @@ use crate::{ api::{CallTypeApi, StorageWriteApi}, contract_base::SendRawWrapper, - types::{BigUint, CallbackClosure, ManagedAddress}, + types::CallbackClosure, }; -use super::{ - FunctionCall, Tx, TxDataFunctionCall, TxEnv, TxPayment, TxResultHandler, TxScEnv, TxToSpecified, -}; +use super::{Tx, TxDataFunctionCall, TxPayment, TxResultHandler, TxScEnv, TxToSpecified}; pub trait TxAsyncCallCallback: TxResultHandler> where diff --git a/framework/base/src/types/interaction/tx_call_async_promises.rs b/framework/base/src/types/interaction/tx_call_async_promises.rs index f43ca0bab4..7e7fbfefac 100644 --- a/framework/base/src/types/interaction/tx_call_async_promises.rs +++ b/framework/base/src/types/interaction/tx_call_async_promises.rs @@ -1,7 +1,7 @@ use crate::{ api::{const_handles, CallTypeApi}, contract_base::SendRawWrapper, - types::{BigUint, CallbackClosure, ManagedAddress, ManagedBuffer, ManagedType}, + types::{CallbackClosure, ManagedBuffer, ManagedType}, }; use super::{ diff --git a/framework/base/src/types/interaction/tx_call_sync.rs b/framework/base/src/types/interaction/tx_call_sync.rs index e7dcabc4fb..c02452baae 100644 --- a/framework/base/src/types/interaction/tx_call_sync.rs +++ b/framework/base/src/types/interaction/tx_call_sync.rs @@ -1,14 +1,13 @@ use crate::{ - api::{CallTypeApi, StorageWriteApi}, + api::CallTypeApi, contract_base::SendRawWrapper, tuple_util::NestedTupleFlatten, - types::{BigUint, CallbackClosure, ManagedAddress, ManagedBuffer, ManagedVec}, + types::{ManagedBuffer, ManagedVec}, }; use super::{ - ConsNoRet, ConsRet, FunctionCall, OriginalResultMarker, RHList, RHListItem, Tx, - TxDataFunctionCall, TxEnv, TxGas, TxPayment, TxResultHandler, TxReturn, TxReturnSync, TxScEnv, - TxToSpecified, + ConsNoRet, ConsRet, OriginalResultMarker, RHList, RHListItem, Tx, TxDataFunctionCall, TxEnv, + TxGas, TxPayment, TxScEnv, TxToSpecified, }; pub trait RHListItemSync: RHListItem @@ -37,7 +36,7 @@ where { fn list_sync_call_result( self, - raw_results: &ManagedVec>, + _raw_results: &ManagedVec>, ) -> Self::ListReturns { } } @@ -48,7 +47,7 @@ where { fn list_sync_call_result( self, - raw_results: &ManagedVec>, + _raw_results: &ManagedVec>, ) -> Self::ListReturns { } } diff --git a/framework/base/src/types/interaction/tx_call_te.rs b/framework/base/src/types/interaction/tx_call_te.rs index 4f7dfc292b..9a08d5cbb5 100644 --- a/framework/base/src/types/interaction/tx_call_te.rs +++ b/framework/base/src/types/interaction/tx_call_te.rs @@ -1,16 +1,6 @@ -use core::marker::PhantomData; +use crate::api::CallTypeApi; -use crate::{ - api::{BlockchainApiImpl, CallTypeApi}, - contract_base::BlockchainWrapper, - types::{ManagedAddress, ManagedBuffer}, -}; - -use super::{ - contract_call_exec::TRANSFER_EXECUTE_DEFAULT_LEFTOVER, AnnotatedValue, AsyncCall, ExplicitGas, - FunctionCall, Tx, TxBaseWithEnv, TxData, TxEnv, TxFrom, TxGas, TxPayment, TxScEnv, - TxToSpecified, -}; +use super::{FunctionCall, Tx, TxData, TxFrom, TxGas, TxPayment, TxScEnv, TxToSpecified}; impl Tx, From, To, Payment, Gas, FC, ()> where diff --git a/framework/base/src/types/interaction/tx_data.rs b/framework/base/src/types/interaction/tx_data.rs index f76f9edb4a..4119f04b1a 100644 --- a/framework/base/src/types/interaction/tx_data.rs +++ b/framework/base/src/types/interaction/tx_data.rs @@ -1,5 +1,4 @@ use crate::{ - api::ManagedTypeApi, formatter::SCLowerHex, types::{ManagedBuffer, ManagedBufferCachedBuilder}, }; diff --git a/framework/base/src/types/interaction/tx_env.rs b/framework/base/src/types/interaction/tx_env.rs index 59e5406970..fd47db3287 100644 --- a/framework/base/src/types/interaction/tx_env.rs +++ b/framework/base/src/types/interaction/tx_env.rs @@ -1,9 +1,4 @@ -use core::marker::PhantomData; - -use crate::{ - api::CallTypeApi, - types::{ManagedAddress, ManagedBuffer}, -}; +use crate::{api::CallTypeApi, types::ManagedAddress}; use super::AnnotatedValue; diff --git a/framework/base/src/types/interaction/tx_env_sc.rs b/framework/base/src/types/interaction/tx_env_sc.rs index 05fa0265be..0fa61eb44a 100644 --- a/framework/base/src/types/interaction/tx_env_sc.rs +++ b/framework/base/src/types/interaction/tx_env_sc.rs @@ -3,12 +3,11 @@ use core::marker::PhantomData; use crate::{ api::{BlockchainApiImpl, CallTypeApi}, contract_base::BlockchainWrapper, - types::{ManagedAddress, ManagedBuffer}, + types::ManagedAddress, }; use super::{ - contract_call_exec::TRANSFER_EXECUTE_DEFAULT_LEFTOVER, AnnotatedValue, AsyncCall, ExplicitGas, - FunctionCall, Tx, TxBaseWithEnv, TxData, TxEnv, TxFrom, TxGas, TxPayment, TxToSpecified, + contract_call_exec::TRANSFER_EXECUTE_DEFAULT_LEFTOVER, AnnotatedValue, Tx, TxBaseWithEnv, TxEnv, }; pub struct TxScEnv diff --git a/framework/base/src/types/interaction/tx_from.rs b/framework/base/src/types/interaction/tx_from.rs index 83db2cb85a..ef6cbb1462 100644 --- a/framework/base/src/types/interaction/tx_from.rs +++ b/framework/base/src/types/interaction/tx_from.rs @@ -1,4 +1,4 @@ -use crate::{api::CallTypeApi, contract_base::BlockchainWrapper, types::ManagedAddress}; +use crate::types::ManagedAddress; use super::{AnnotatedValue, TxEnv}; diff --git a/framework/base/src/types/interaction/tx_gas.rs b/framework/base/src/types/interaction/tx_gas.rs index eec6693837..621ed86303 100644 --- a/framework/base/src/types/interaction/tx_gas.rs +++ b/framework/base/src/types/interaction/tx_gas.rs @@ -1,6 +1,4 @@ -use crate::api::{BlockchainApiImpl, CallTypeApi}; - -use super::{contract_call_exec::TRANSFER_EXECUTE_DEFAULT_LEFTOVER, TxEnv}; +use super::TxEnv; pub trait TxGas where diff --git a/framework/base/src/types/interaction/tx_payment.rs b/framework/base/src/types/interaction/tx_payment.rs index 66fa7b6785..8f2c3397bf 100644 --- a/framework/base/src/types/interaction/tx_payment.rs +++ b/framework/base/src/types/interaction/tx_payment.rs @@ -1,10 +1,8 @@ -use num_traits::Zero; - use crate::{ - api::{CallTypeApi, ManagedTypeApi}, + api::ManagedTypeApi, contract_base::SendRawWrapper, types::{ - BigUint, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EgldPayment, EsdtTokenPayment, + EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EgldPayment, EsdtTokenPayment, ManagedAddress, MultiEsdtPayment, }, }; diff --git a/framework/base/src/types/interaction/tx_result_handler.rs b/framework/base/src/types/interaction/tx_result_handler.rs index 8cc0b06bbf..cf1d42ad06 100644 --- a/framework/base/src/types/interaction/tx_result_handler.rs +++ b/framework/base/src/types/interaction/tx_result_handler.rs @@ -1,10 +1,4 @@ -use crate::{ - api::ManagedTypeApi, - formatter::SCLowerHex, - types::{ManagedBuffer, ManagedBufferCachedBuilder}, -}; - -use super::{FunctionCall, TxEnv}; +use super::TxEnv; pub trait TxResultHandler where diff --git a/framework/base/src/types/interaction/tx_return.rs b/framework/base/src/types/interaction/tx_return.rs deleted file mode 100644 index 176d0a56a3..0000000000 --- a/framework/base/src/types/interaction/tx_return.rs +++ /dev/null @@ -1,37 +0,0 @@ -use crate::{ - api::ManagedTypeApi, - formatter::SCLowerHex, - types::{ManagedBuffer, ManagedBufferCachedBuilder, ManagedVec}, -}; - -use super::{FunctionCall, ReturnTypeMarker, TxEnv, TxResultHandler}; - -pub trait TxReturn: TxResultHandler -where - Env: TxEnv, -{ - type Returns; -} - -impl TxReturn for () -where - Env: TxEnv, -{ - type Returns = (); -} - -impl TxReturn for ReturnTypeMarker -where - Env: TxEnv, -{ - type Returns = (); -} - -// impl TxReturn for (Head, Tail) -// where -// Env: TxEnv, -// Head: TxReturn, -// Tail: TxReturn, -// { -// type Returns = Head::Returns; -// } diff --git a/framework/base/src/types/interaction/tx_return_sync.rs b/framework/base/src/types/interaction/tx_return_sync.rs deleted file mode 100644 index b1811c6aeb..0000000000 --- a/framework/base/src/types/interaction/tx_return_sync.rs +++ /dev/null @@ -1,46 +0,0 @@ -use crate::{ - api::ManagedTypeApi, - formatter::SCLowerHex, - types::{ManagedBuffer, ManagedBufferCachedBuilder, ManagedVec}, -}; - -use super::{FunctionCall, TxData, TxEnv, TxReturn}; - -pub trait TxReturnSync: TxReturn -where - Env: TxEnv, -{ - fn sync_call_result( - self, - raw_results: &ManagedVec>, - ) -> Self::Returns; -} - -impl TxReturnSync for () -where - Env: TxEnv, -{ - fn sync_call_result( - self, - raw_results: &ManagedVec>, - ) -> Self::Returns { - } -} - -// impl TxReturnSync for (Head, Tail) -// where -// Env: TxEnv, -// Head: TxReturnSync, -// Tail: TxReturnSync, -// { -// fn sync_call_result( -// self, -// raw_results: &ManagedVec>, -// ) -> Self::Returns { -// // tail first -// self.1.sync_call_result(raw_results); - -// // head at last, which also has a chance of returning -// self.0.sync_call_result(raw_results) -// } -// } diff --git a/framework/base/src/types/interaction/tx_return_type_marker.rs b/framework/base/src/types/interaction/tx_return_type_marker.rs deleted file mode 100644 index a798ec7ddd..0000000000 --- a/framework/base/src/types/interaction/tx_return_type_marker.rs +++ /dev/null @@ -1,28 +0,0 @@ -use core::marker::PhantomData; - -use crate::{ - api::ManagedTypeApi, - formatter::SCLowerHex, - types::{ManagedBuffer, ManagedBufferCachedBuilder, ManagedVec}, -}; - -use super::{FunctionCall, TxData, TxEnv, TxResultHandler, TxReturn}; - -pub struct ReturnTypeMarker { - _return_type: PhantomData, -} - -impl Default for ReturnTypeMarker { - fn default() -> Self { - Self { - _return_type: PhantomData, - } - } -} - -impl TxResultHandler for ReturnTypeMarker -where - Env: TxEnv, -{ - type OriginalResult = OriginalResult; -} diff --git a/framework/base/src/types/interaction/tx_rh_list/returns_exact.rs b/framework/base/src/types/interaction/tx_rh_list/returns_exact.rs index ef1d2eb6fb..edbc82144d 100644 --- a/framework/base/src/types/interaction/tx_rh_list/returns_exact.rs +++ b/framework/base/src/types/interaction/tx_rh_list/returns_exact.rs @@ -28,19 +28,3 @@ where decode_result::(raw_results.clone()) } } - -// impl TxResultHandler for ReturnRaw where Env: TxEnv {} - -// impl TxReturn for ReturnRaw -// where -// Env: TxEnv, -// { -// type Returned = ManagedVec>; - -// fn sync_call_result( -// self, -// raw_results: &ManagedVec>, -// ) -> Self::Returned { -// raw_results.clone() -// } -// } diff --git a/framework/base/src/types/interaction/tx_rh_list/returns_raw.rs b/framework/base/src/types/interaction/tx_rh_list/returns_raw.rs index f9651240a4..b4fa56479f 100644 --- a/framework/base/src/types/interaction/tx_rh_list/returns_raw.rs +++ b/framework/base/src/types/interaction/tx_rh_list/returns_raw.rs @@ -22,19 +22,3 @@ where raw_results.clone() } } - -// impl TxResultHandler for ReturnRaw where Env: TxEnv {} - -// impl TxReturn for ReturnRaw -// where -// Env: TxEnv, -// { -// type Returned = ManagedVec>; - -// fn sync_call_result( -// self, -// raw_results: &ManagedVec>, -// ) -> Self::Returned { -// raw_results.clone() -// } -// } diff --git a/framework/base/src/types/interaction/tx_rh_list/returns_similar.rs b/framework/base/src/types/interaction/tx_rh_list/returns_similar.rs index 5709e68f8d..07929d122f 100644 --- a/framework/base/src/types/interaction/tx_rh_list/returns_similar.rs +++ b/framework/base/src/types/interaction/tx_rh_list/returns_similar.rs @@ -1,9 +1,5 @@ use core::marker::PhantomData; -use crate::types::TxEnv; - -use super::RHListItem; - pub struct ReturnSimilar { _phantom: PhantomData, } @@ -17,23 +13,7 @@ impl Default for ReturnSimilar { } impl ReturnSimilar { - fn new() -> Self { + pub fn new() -> Self { Self::default() } } - -// impl TxResultHandler for ReturnRaw where Env: TxEnv {} - -// impl TxReturn for ReturnRaw -// where -// Env: TxEnv, -// { -// type Returned = ManagedVec>; - -// fn sync_call_result( -// self, -// raw_results: &ManagedVec>, -// ) -> Self::Returned { -// raw_results.clone() -// } -// } diff --git a/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_item.rs b/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_item.rs index 8430b91b79..54e1d0cfa3 100644 --- a/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_item.rs +++ b/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_item.rs @@ -1,4 +1,4 @@ -use crate::types::{ManagedBuffer, ManagedVec, TxEnv}; +use crate::types::TxEnv; /// Result handler list item. /// diff --git a/framework/base/src/types/interaction/tx_to.rs b/framework/base/src/types/interaction/tx_to.rs index af733870dd..bbf520c8ef 100644 --- a/framework/base/src/types/interaction/tx_to.rs +++ b/framework/base/src/types/interaction/tx_to.rs @@ -1,4 +1,4 @@ -use crate::{api::ManagedTypeApi, types::ManagedAddress}; +use crate::types::ManagedAddress; use super::{AnnotatedValue, TxEnv}; diff --git a/framework/base/src/types/interaction/typed_function_call.rs b/framework/base/src/types/interaction/typed_function_call.rs index dcb2be5052..39679247fc 100644 --- a/framework/base/src/types/interaction/typed_function_call.rs +++ b/framework/base/src/types/interaction/typed_function_call.rs @@ -1,12 +1,8 @@ use core::marker::PhantomData; -use crate::{ - abi::{TypeAbi, TypeName}, - api::{CallTypeApi, ManagedTypeApi}, - types::{EsdtTokenPayment, ManagedAddress, ManagedBuffer, ManagedVec, MultiValueEncoded}, -}; +use crate::api::ManagedTypeApi; -use super::{ContractCallNoPayment, FunctionCall, ManagedArgBuffer}; +use super::FunctionCall; /// Encodes a function call on the blockchain, together with the original result type. /// From e46578b09f5f72604c25f962a74533098c86fc55 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 22 Jan 2024 13:30:08 +0200 Subject: [PATCH 018/461] unified syntax - blackbox call results --- .../multisig/tests/multisig_blackbox_test.rs | 21 ++-- framework/base/src/types/interaction/tx.rs | 10 +- .../base/src/types/interaction/tx_rh_list.rs | 2 + .../tx_rh_list/with_result_exact.rs | 53 ++++++++++ .../interaction/tx_rh_list/with_result_raw.rs | 48 +++++++++ framework/scenario/src/facade.rs | 6 +- .../scenario/src/facade/scenario_callbacks.rs | 25 ----- .../src/facade/scenario_world_steps_tx.rs | 99 ------------------- framework/scenario/src/facade/world_tx.rs | 11 +++ .../src/facade/world_tx/scenario_env.rs | 42 ++++++++ .../src/facade/world_tx/scenario_rh_list.rs | 40 ++++++++ .../facade/world_tx/scenario_rh_list_item.rs | 24 +++++ .../src/facade/world_tx/scenario_tx.rs | 73 ++++++++++++++ .../world_tx/scenario_world_steps_tx.rs | 16 +++ framework/scenario/src/lib.rs | 2 +- 15 files changed, 331 insertions(+), 141 deletions(-) create mode 100644 framework/base/src/types/interaction/tx_rh_list/with_result_exact.rs create mode 100644 framework/base/src/types/interaction/tx_rh_list/with_result_raw.rs delete mode 100644 framework/scenario/src/facade/scenario_callbacks.rs delete mode 100644 framework/scenario/src/facade/scenario_world_steps_tx.rs create mode 100644 framework/scenario/src/facade/world_tx.rs create mode 100644 framework/scenario/src/facade/world_tx/scenario_env.rs create mode 100644 framework/scenario/src/facade/world_tx/scenario_rh_list.rs create mode 100644 framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs create mode 100644 framework/scenario/src/facade/world_tx/scenario_tx.rs create mode 100644 framework/scenario/src/facade/world_tx/scenario_world_steps_tx.rs diff --git a/contracts/examples/multisig/tests/multisig_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_blackbox_test.rs index ce2a522fcb..0bf49301d4 100644 --- a/contracts/examples/multisig/tests/multisig_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_blackbox_test.rs @@ -9,7 +9,10 @@ use multiversx_sc::{ test_util::top_encode_to_vec_u8_or_panic, }, storage::mappers::SingleValue, - types::{Address, CodeMetadata, ContractCallNoPayment, FunctionCall}, + types::{ + Address, AddressExpr, CodeMetadata, ContractCallNoPayment, FunctionCall, ReturnsExact, + ScExpr, + }, }; use multiversx_sc_scenario::{ api::StaticApi, @@ -124,12 +127,16 @@ impl MultisigTestState { } 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), - ), - ) + self.world.run_tx(|tx| { + tx.from(AddressExpr("proposer")) + .to(ScExpr("multisig")) + .call( + self.multisig_contract + .propose_add_board_member(board_member_address), + ) + .original_result::() + .returns(ReturnsExact) + }) } fn propose_add_proposer(&mut self, proposer_address: Address) -> usize { diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index d28b054b5e..47bc884bea 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -386,13 +386,13 @@ where ResultList: RHList, { #[inline] - pub fn result_handler( + pub fn with_result( self, - item: RH, + result_handler: ResultHandler, ) -> Tx where - RH: RHListItem, - ResultList: RHListAppendNoRet, + ResultHandler: RHListItem, + ResultList: RHListAppendNoRet, { Tx { env: self.env, @@ -401,7 +401,7 @@ where payment: self.payment, gas: self.gas, data: self.data, - result_handler: self.result_handler.append_no_ret(item), + result_handler: self.result_handler.append_no_ret(result_handler), } } diff --git a/framework/base/src/types/interaction/tx_rh_list.rs b/framework/base/src/types/interaction/tx_rh_list.rs index 43aacfbc67..85b5c3d51a 100644 --- a/framework/base/src/types/interaction/tx_rh_list.rs +++ b/framework/base/src/types/interaction/tx_rh_list.rs @@ -4,6 +4,8 @@ mod returns_raw; mod returns_similar; mod tx_rh_list_cons; mod tx_rh_list_item; +mod with_result_exact; +mod with_result_raw; pub use returns_bt::*; pub use returns_exact::*; diff --git a/framework/base/src/types/interaction/tx_rh_list/with_result_exact.rs b/framework/base/src/types/interaction/tx_rh_list/with_result_exact.rs new file mode 100644 index 0000000000..f3319c5a07 --- /dev/null +++ b/framework/base/src/types/interaction/tx_rh_list/with_result_exact.rs @@ -0,0 +1,53 @@ +use core::marker::PhantomData; + +use multiversx_sc_codec::TopDecodeMulti; + +use crate::types::{ + interaction::contract_call_exec::decode_result, ManagedBuffer, ManagedVec, RHListItemSync, + TxEnv, +}; + +use super::RHListItem; + +pub struct WithResultExact +where + F: FnOnce(T), +{ + _phantom: PhantomData, + f: F, +} + +impl WithResultExact +where + F: FnOnce(T), +{ + pub fn new(f: F) -> Self { + WithResultExact { + _phantom: PhantomData, + f, + } + } +} + +impl RHListItem for WithResultExact +where + Env: TxEnv, + F: FnOnce(Original), +{ + type Returns = (); +} + +impl RHListItemSync for WithResultExact +where + Env: TxEnv, + Original: TopDecodeMulti, + F: FnOnce(Original), +{ + fn item_sync_call_result( + self, + raw_results: &ManagedVec>, + ) -> Self::Returns { + let t = decode_result::(raw_results.clone()); + (self.f)(t) + } +} diff --git a/framework/base/src/types/interaction/tx_rh_list/with_result_raw.rs b/framework/base/src/types/interaction/tx_rh_list/with_result_raw.rs new file mode 100644 index 0000000000..8f288604be --- /dev/null +++ b/framework/base/src/types/interaction/tx_rh_list/with_result_raw.rs @@ -0,0 +1,48 @@ +use core::marker::PhantomData; + +use crate::types::{ManagedBuffer, ManagedVec, RHListItemSync, TxEnv}; + +use super::RHListItem; + +pub struct WithResultRaw +where + Env: TxEnv, + F: FnOnce(&ManagedVec>), +{ + _phantom: PhantomData, + f: F, +} + +impl WithResultRaw +where + Env: TxEnv, + F: FnOnce(&ManagedVec>), +{ + pub fn new(f: F) -> Self { + WithResultRaw { + _phantom: PhantomData, + f, + } + } +} + +impl RHListItem for WithResultRaw +where + Env: TxEnv, + F: FnOnce(&ManagedVec>), +{ + type Returns = (); +} + +impl RHListItemSync for WithResultRaw +where + Env: TxEnv, + F: FnOnce(&ManagedVec>), +{ + fn item_sync_call_result( + self, + raw_results: &ManagedVec>, + ) -> Self::Returns { + (self.f)(raw_results) + } +} diff --git a/framework/scenario/src/facade.rs b/framework/scenario/src/facade.rs index b6e2eef3a8..4f56063404 100644 --- a/framework/scenario/src/facade.rs +++ b/framework/scenario/src/facade.rs @@ -1,16 +1,14 @@ mod contract_info; mod debugger_backend; -mod scenario_callbacks; mod scenario_world; mod scenario_world_runner; mod scenario_world_steps; mod scenario_world_steps_deprecated; -mod scenario_world_steps_tx; mod scenario_world_whitebox; mod whitebox_contract; +mod world_tx; pub use contract_info::ContractInfo; -pub use scenario_callbacks::*; pub use scenario_world::ScenarioWorld; -pub use scenario_world_steps_tx::*; pub use whitebox_contract::WhiteboxContract; +pub use world_tx::*; diff --git a/framework/scenario/src/facade/scenario_callbacks.rs b/framework/scenario/src/facade/scenario_callbacks.rs deleted file mode 100644 index ffbf569de0..0000000000 --- a/framework/scenario/src/facade/scenario_callbacks.rs +++ /dev/null @@ -1,25 +0,0 @@ -use multiversx_sc::types::{TxResultHandler, TxRunnableCallback}; - -use crate::scenario_model::TxResponse; - -use super::ScenarioTxEnvironment; - -pub struct WithTxResult(pub F) -where - F: FnOnce(&TxResponse); - -impl TxResultHandler for WithTxResult -where - F: FnOnce(&TxResponse), -{ - type OriginalResult = (); -} - -impl TxRunnableCallback for WithTxResult -where - F: FnOnce(&TxResponse), -{ - fn run_callback(self, env: &ScenarioTxEnvironment) { - (self.0)(env.response.as_ref().unwrap()) - } -} diff --git a/framework/scenario/src/facade/scenario_world_steps_tx.rs b/framework/scenario/src/facade/scenario_world_steps_tx.rs deleted file mode 100644 index 1b2f84d40b..0000000000 --- a/framework/scenario/src/facade/scenario_world_steps_tx.rs +++ /dev/null @@ -1,99 +0,0 @@ -use std::path::PathBuf; - -use multiversx_sc::types::{ - AnnotatedValue, FunctionCall, ManagedAddress, Tx, TxBaseWithEnv, TxEnv, TxFromSpecified, TxGas, - TxPayment, TxRunnableCallback, TxToSpecified, -}; - -use crate::{ - api::StaticApi, - facade::ScenarioWorld, - scenario_model::{ScCallStep, TxResponse}, -}; - -#[derive(Default, Debug, Clone)] -pub struct ScenarioTxEnvironment { - pub context_path: PathBuf, - pub from_annotation: Option, - pub to_annotation: Option, - pub response: Option, -} - -impl TxEnv for ScenarioTxEnvironment { - type Api = StaticApi; - - fn annotate_from(&mut self, to: &From) - where - From: AnnotatedValue>, - { - self.from_annotation = Some(to.annotation(self).to_string()) - } - - fn annotate_to(&mut self, to: &To) - where - To: AnnotatedValue>, - { - self.to_annotation = Some(to.annotation(self).to_string()) - } - - fn resolve_sender_address(&self) -> ManagedAddress { - panic!("Explicit sender address expected") - } - - fn default_gas(&self) -> u64 { - // TODO: annotate - 5_000_000 - } -} - -pub type TxScenarioBase = TxBaseWithEnv; - -pub trait ScenarioTx { - fn run_as_scenario_step(self, world: &mut ScenarioWorld); -} - -impl ScenarioWorld { - fn tx_env(&self) -> ScenarioTxEnvironment { - ScenarioTxEnvironment { - context_path: self.current_dir.clone(), - ..Default::default() - } - } - - pub fn tx(&mut self, f: F) -> &mut Self - where - STx: ScenarioTx, - F: FnOnce(TxScenarioBase) -> STx, - { - let env = self.tx_env(); - let tx_base = TxScenarioBase::new_with_env(env); - let tx = f(tx_base); - tx.run_as_scenario_step(self); - self - } -} - -impl ScenarioTx - for Tx, Callback> -where - From: TxFromSpecified, - To: TxToSpecified, - Payment: TxPayment, - Gas: TxGas, - Callback: TxRunnableCallback, -{ - fn run_as_scenario_step(self, world: &mut ScenarioWorld) { - let mut env = self.env; - let mut step = ScCallStep::new() - .from(env.from_annotation.as_ref().unwrap().as_str()) - .to(env.to_annotation.as_ref().unwrap().as_str()) - .function(self.data.function_name.to_string().as_str()); - for arg in self.data.arg_buffer.iter_buffers() { - step = step.argument(arg.to_vec()); - } - - world.sc_call(&mut step); - env.response = step.response; - self.result_handler.run_callback(&env); - } -} diff --git a/framework/scenario/src/facade/world_tx.rs b/framework/scenario/src/facade/world_tx.rs new file mode 100644 index 0000000000..55e7720e16 --- /dev/null +++ b/framework/scenario/src/facade/world_tx.rs @@ -0,0 +1,11 @@ +#![allow(unused)] // TEMP + +mod scenario_env; +mod scenario_rh_list; +mod scenario_rh_list_item; +mod scenario_tx; + +pub use scenario_env::*; +pub use scenario_rh_list::*; +pub use scenario_rh_list_item::*; +pub use scenario_tx::*; diff --git a/framework/scenario/src/facade/world_tx/scenario_env.rs b/framework/scenario/src/facade/world_tx/scenario_env.rs new file mode 100644 index 0000000000..16e92e2ee1 --- /dev/null +++ b/framework/scenario/src/facade/world_tx/scenario_env.rs @@ -0,0 +1,42 @@ +use std::path::PathBuf; + +use multiversx_sc::types::{AnnotatedValue, ManagedAddress, TxBaseWithEnv, TxEnv}; + +use crate::{api::StaticApi, scenario_model::TxResponse}; + +pub type TxScenarioBase = TxBaseWithEnv; + +#[derive(Default, Debug, Clone)] +pub struct ScenarioTxEnvironment { + pub context_path: PathBuf, + pub from_annotation: Option, + pub to_annotation: Option, + pub response: Option, +} + +impl TxEnv for ScenarioTxEnvironment { + type Api = StaticApi; + + fn annotate_from(&mut self, to: &From) + where + From: AnnotatedValue>, + { + self.from_annotation = Some(to.annotation(self).to_string()) + } + + fn annotate_to(&mut self, to: &To) + where + To: AnnotatedValue>, + { + self.to_annotation = Some(to.annotation(self).to_string()) + } + + fn resolve_sender_address(&self) -> ManagedAddress { + panic!("Explicit sender address expected") + } + + fn default_gas(&self) -> u64 { + // TODO: annotate + 5_000_000 + } +} diff --git a/framework/scenario/src/facade/world_tx/scenario_rh_list.rs b/framework/scenario/src/facade/world_tx/scenario_rh_list.rs new file mode 100644 index 0000000000..e86bb6910f --- /dev/null +++ b/framework/scenario/src/facade/world_tx/scenario_rh_list.rs @@ -0,0 +1,40 @@ +use multiversx_sc::types::{ConsNoRet, ConsRet, OriginalResultMarker, RHList, RHListItem, TxEnv}; + +use crate::scenario_model::TxResponse; + +use super::{RHListItemScenario, ScenarioTxEnvironment}; + +pub trait RHListScenario: RHList { + fn item_scenario_result(self, tx_response: &TxResponse) -> Self::ListReturns; +} + +impl RHListScenario for () { + fn item_scenario_result(self, tx_response: &TxResponse) -> Self::ListReturns {} +} + +impl RHListScenario for OriginalResultMarker { + fn item_scenario_result(self, tx_response: &TxResponse) -> Self::ListReturns {} +} + +impl RHListScenario for ConsRet +where + Head: RHListItemScenario, + Tail: RHListScenario, +{ + fn item_scenario_result(self, tx_response: &TxResponse) -> Self::ListReturns { + let head_result = self.head.item_scenario_result(tx_response); + let tail_result = self.tail.item_scenario_result(tx_response); + (head_result, tail_result) + } +} + +impl RHListScenario for ConsNoRet +where + Head: RHListItemScenario, + Tail: RHListScenario, +{ + fn item_scenario_result(self, tx_response: &TxResponse) -> Self::ListReturns { + self.head.item_scenario_result(tx_response); + self.tail.item_scenario_result(tx_response) + } +} diff --git a/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs b/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs new file mode 100644 index 0000000000..57ba631911 --- /dev/null +++ b/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs @@ -0,0 +1,24 @@ +use multiversx_sc::{ + codec::TopDecodeMulti, + types::{RHList, RHListItem, ReturnsExact, TxEnv}, +}; + +use crate::scenario_model::{TxResponse, TypedResponse}; + +use super::ScenarioTxEnvironment; + +pub trait RHListItemScenario: RHListItem { + fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns; +} + +impl RHListItemScenario for ReturnsExact +where + Original: TopDecodeMulti, +{ + fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns { + let response = TypedResponse::::from_raw(tx_response); + response + .result + .expect("ReturnsExact expects that transaction is successful") + } +} diff --git a/framework/scenario/src/facade/world_tx/scenario_tx.rs b/framework/scenario/src/facade/world_tx/scenario_tx.rs new file mode 100644 index 0000000000..783675b50b --- /dev/null +++ b/framework/scenario/src/facade/world_tx/scenario_tx.rs @@ -0,0 +1,73 @@ +use multiversx_sc::{ + tuple_util::NestedTupleFlatten, + types::{FunctionCall, RHListSync, Tx, TxFromSpecified, TxGas, TxPayment, TxToSpecified}, +}; + +use crate::{api::StaticApi, scenario_model::ScCallStep, ScenarioWorld}; + +use super::{RHListScenario, ScenarioTxEnvironment, TxScenarioBase}; + +impl ScenarioWorld { + fn tx_env(&self) -> ScenarioTxEnvironment { + ScenarioTxEnvironment { + context_path: self.current_dir.clone(), + ..Default::default() + } + } + + pub fn run_tx(&mut self, f: F) -> STx::Returns + where + STx: ScenarioTx, + F: FnOnce(TxScenarioBase) -> STx, + { + let env = self.tx_env(); + let tx_base = TxScenarioBase::new_with_env(env); + let tx = f(tx_base); + tx.run_as_scenario_step(self) + } + + pub fn tx(&mut self, f: F) -> &mut Self + where + STx: ScenarioTx, + F: FnOnce(TxScenarioBase) -> STx, + { + let _ = self.run_tx(f); + self + } +} + +pub trait ScenarioTx { + type Returns; + + fn run_as_scenario_step(self, world: &mut ScenarioWorld) -> Self::Returns; +} + +impl ScenarioTx + for Tx, RH> +where + From: TxFromSpecified, + To: TxToSpecified, + Payment: TxPayment, + Gas: TxGas, + RH: RHListScenario, + RH::ListReturns: NestedTupleFlatten, +{ + type Returns = ::Unpacked; + + fn run_as_scenario_step(self, world: &mut ScenarioWorld) -> Self::Returns { + let mut env = self.env; + let mut step = ScCallStep::new() + .from(env.from_annotation.as_ref().unwrap().as_str()) + .to(env.to_annotation.as_ref().unwrap().as_str()) + .function(self.data.function_name.to_string().as_str()); + for arg in self.data.arg_buffer.iter_buffers() { + step = step.argument(arg.to_vec()); + } + + world.sc_call(&mut step); + let response = step.response.expect("step did not return result"); + + let tuple_result = self.result_handler.item_scenario_result(&response); + tuple_result.flatten_unpack() + } +} diff --git a/framework/scenario/src/facade/world_tx/scenario_world_steps_tx.rs b/framework/scenario/src/facade/world_tx/scenario_world_steps_tx.rs new file mode 100644 index 0000000000..93508e08bb --- /dev/null +++ b/framework/scenario/src/facade/world_tx/scenario_world_steps_tx.rs @@ -0,0 +1,16 @@ +use std::path::PathBuf; + +use multiversx_sc::types::{ + AnnotatedValue, FunctionCall, ManagedAddress, Tx, TxBaseWithEnv, TxEnv, TxFromSpecified, TxGas, + TxPayment, TxRunnableCallback, TxToSpecified, +}; + +use crate::{ + api::StaticApi, + facade::ScenarioWorld, + scenario_model::{ScCallStep, TxResponse}, +}; + + + + diff --git a/framework/scenario/src/lib.rs b/framework/scenario/src/lib.rs index 8f240fe3ee..0110147ed3 100644 --- a/framework/scenario/src/lib.rs +++ b/framework/scenario/src/lib.rs @@ -44,7 +44,7 @@ pub use crate::scenario as mandos_system; // Re-exporting the whole mandos crate for easier use in tests. pub use multiversx_chain_scenario_format as scenario_format; -pub use facade::{ContractInfo, ScenarioWorld, WhiteboxContract, WithTxResult}; +pub use facade::{ContractInfo, ScenarioWorld, WhiteboxContract}; use std::path::Path; From 21c9a729eab40420f4631026c518282e7447fd7e Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 2 Feb 2024 01:00:33 +0200 Subject: [PATCH 019/461] unified syntax - cleaned up callbacks --- .../tests/adder_blackbox_with_values_test.rs | 2 +- .../multisig/tests/multisig_blackbox_test.rs | 2 +- .../types/interaction/contract_call_exec.rs | 12 ++++++- framework/base/src/types/interaction/mod.rs | 2 ++ framework/base/src/types/interaction/tx.rs | 26 -------------- .../src/types/interaction/tx_call_async.rs | 31 ++++++++++++++++- .../interaction/tx_call_async_promises.rs | 1 - .../types/interaction/tx_result_handler.rs | 23 ------------- .../interaction/tx_rh_list/tx_rh_list_cons.rs | 27 +-------------- .../interaction/tx_rh_original_result.rs | 34 +++++++++++++++++++ framework/scenario/src/facade.rs | 3 +- framework/scenario/src/facade/world_tx.rs | 2 ++ .../src/facade/world_tx/scenario_tx.rs | 6 ++-- .../world_tx/scenario_world_steps_tx.rs | 6 +--- .../facade/world_tx/with_tx_raw_response.rs | 29 ++++++++++++++++ framework/scenario/src/lib.rs | 2 +- 16 files changed, 117 insertions(+), 91 deletions(-) create mode 100644 framework/base/src/types/interaction/tx_rh_original_result.rs create mode 100644 framework/scenario/src/facade/world_tx/with_tx_raw_response.rs diff --git a/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs b/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs index 62e74e77a8..32b4e8bcdb 100644 --- a/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs @@ -48,7 +48,7 @@ fn adder_blackbox_with_values() { tx.from(AddressExpr("owner")) .to(ScExpr("adder")) .call(adder_contract.add(3u32)) - .callback(WithTxResult(|response| { + .with_result(WithRawTxResponse(|response| { assert!(response.tx_error.is_success()); })) }) diff --git a/contracts/examples/multisig/tests/multisig_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_blackbox_test.rs index 0bf49301d4..1d34fa5b79 100644 --- a/contracts/examples/multisig/tests/multisig_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_blackbox_test.rs @@ -127,7 +127,7 @@ impl MultisigTestState { } fn propose_add_board_member(&mut self, board_member_address: Address) -> usize { - self.world.run_tx(|tx| { + self.world.tx_return(|tx| { tx.from(AddressExpr("proposer")) .to(ScExpr("multisig")) .call( diff --git a/framework/base/src/types/interaction/contract_call_exec.rs b/framework/base/src/types/interaction/contract_call_exec.rs index c8c49f69bc..3cdaaffe3f 100644 --- a/framework/base/src/types/interaction/contract_call_exec.rs +++ b/framework/base/src/types/interaction/contract_call_exec.rs @@ -1,5 +1,5 @@ use crate::{ - api::{use_raw_handle, StaticVarApiImpl}, + api::{use_raw_handle, StaticVarApiImpl, StorageWriteApi}, codec::TopDecodeMulti, }; @@ -64,7 +64,12 @@ where } result.into_managed_buffer() } +} +impl ContractCallWithEgld +where + SA: CallTypeApi + StorageWriteApi + 'static, +{ pub(super) fn async_call(self) -> AsyncCall { Tx::new_tx_from_sc() .to(self.basic.to) @@ -72,7 +77,12 @@ where .call(self.basic.function_call) .callback(None) } +} +impl ContractCallWithEgld +where + SA: CallTypeApi + 'static, +{ pub(super) fn async_call_promise(self) -> super::AsyncCallPromises { super::AsyncCallPromises { to: self.basic.to, diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index be3ff25608..52ae318321 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -32,6 +32,7 @@ mod tx_gas; mod tx_payment; mod tx_result_handler; mod tx_rh_list; +mod tx_rh_original_result; mod tx_to; mod typed_function_call; @@ -66,6 +67,7 @@ pub use tx_gas::*; pub use tx_payment::*; pub use tx_result_handler::*; pub use tx_rh_list::*; +pub use tx_rh_original_result::*; pub use tx_to::*; pub use typed_function_call::*; diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 47bc884bea..df1249bbe7 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -426,32 +426,6 @@ where } } -impl Tx -where - Env: TxEnv, - From: TxFrom, - To: TxTo, - Payment: TxPayment, - Gas: TxGas, - Data: TxData, -{ - #[inline] - pub fn callback(self, callback: RH) -> Tx - where - RH: TxResultHandler, - { - Tx { - env: self.env, - from: self.from, - to: self.to, - payment: self.payment, - gas: self.gas, - data: self.data, - result_handler: callback, - } - } -} - impl Tx where Env: TxEnv, diff --git a/framework/base/src/types/interaction/tx_call_async.rs b/framework/base/src/types/interaction/tx_call_async.rs index 45aeea6cb1..c1035b902b 100644 --- a/framework/base/src/types/interaction/tx_call_async.rs +++ b/framework/base/src/types/interaction/tx_call_async.rs @@ -4,7 +4,10 @@ use crate::{ types::CallbackClosure, }; -use super::{Tx, TxDataFunctionCall, TxPayment, TxResultHandler, TxScEnv, TxToSpecified}; +use super::{ + Tx, TxData, TxDataFunctionCall, TxEnv, TxFrom, TxGas, TxPayment, TxResultHandler, TxScEnv, + TxTo, TxToSpecified, +}; pub trait TxAsyncCallCallback: TxResultHandler> where @@ -54,6 +57,32 @@ where } } +impl Tx, From, To, Payment, Gas, Data, ()> +where + Api: CallTypeApi, + From: TxFrom>, + To: TxTo>, + Payment: TxPayment>, + Gas: TxGas>, + Data: TxData>, +{ + #[inline] + pub fn callback(self, callback: RH) -> Tx, From, To, Payment, Gas, Data, RH> + where + RH: TxAsyncCallCallback, + { + Tx { + env: self.env, + from: self.from, + to: self.to, + payment: self.payment, + gas: self.gas, + data: self.data, + result_handler: callback, + } + } +} + impl Tx, (), To, Payment, (), FC, RH> where Api: CallTypeApi, diff --git a/framework/base/src/types/interaction/tx_call_async_promises.rs b/framework/base/src/types/interaction/tx_call_async_promises.rs index 7e7fbfefac..a97fdeb858 100644 --- a/framework/base/src/types/interaction/tx_call_async_promises.rs +++ b/framework/base/src/types/interaction/tx_call_async_promises.rs @@ -99,7 +99,6 @@ where Payment: TxPayment>, Callback: TxPromisesCallback, { - // #[cfg(feature = "promises")] pub fn async_call_promise(self) { let callback_name = self.result_handler.callback_name(); let mut cb_closure_args_serialized = diff --git a/framework/base/src/types/interaction/tx_result_handler.rs b/framework/base/src/types/interaction/tx_result_handler.rs index cf1d42ad06..838e9fa4d8 100644 --- a/framework/base/src/types/interaction/tx_result_handler.rs +++ b/framework/base/src/types/interaction/tx_result_handler.rs @@ -13,26 +13,3 @@ where { type OriginalResult = (); } - -// impl TxResultHandler for (Head, Tail) -// where -// Env: TxEnv, -// Head: TxResultHandler, -// Tail: TxResultHandler, -// { -// type OriginalResult = Tail::OriginalResult; -// } - -pub trait TxRunnableCallback: TxResultHandler -where - Env: TxEnv, -{ - fn run_callback(self, env: &Env); -} - -impl TxRunnableCallback for () -where - Env: TxEnv, -{ - fn run_callback(self, _env: &Env) {} -} diff --git a/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_cons.rs b/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_cons.rs index ad841ed6e8..f4d4133b19 100644 --- a/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_cons.rs +++ b/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_cons.rs @@ -1,6 +1,6 @@ use core::marker::PhantomData; -use crate::types::{TxEnv, TxResultHandler}; +use crate::types::{OriginalResultMarker, TxEnv, TxResultHandler}; use super::RHListItem; @@ -62,31 +62,6 @@ where } } -pub struct OriginalResultMarker { - _phantom: PhantomData, -} - -impl Default for OriginalResultMarker { - fn default() -> Self { - Self { - _phantom: Default::default(), - } - } -} - -impl OriginalResultMarker { - pub fn new() -> Self { - Self::default() - } -} - -impl TxResultHandler for OriginalResultMarker -where - Env: TxEnv, -{ - type OriginalResult = O; -} - impl RHList for OriginalResultMarker where Env: TxEnv, diff --git a/framework/base/src/types/interaction/tx_rh_original_result.rs b/framework/base/src/types/interaction/tx_rh_original_result.rs new file mode 100644 index 0000000000..e402b1686a --- /dev/null +++ b/framework/base/src/types/interaction/tx_rh_original_result.rs @@ -0,0 +1,34 @@ +use core::marker::PhantomData; + +use super::{TxEnv, TxResultHandler}; + +/// Contains no data. +/// +/// Indicates to the compiler the original result type expected from a transaction. +/// +/// Note that the transaction result might be interpreted as a different type, +/// but the originally declared type is required to perform any type checking. +pub struct OriginalResultMarker { + _phantom: PhantomData, +} + +impl Default for OriginalResultMarker { + fn default() -> Self { + Self { + _phantom: Default::default(), + } + } +} + +impl OriginalResultMarker { + pub fn new() -> Self { + Self::default() + } +} + +impl TxResultHandler for OriginalResultMarker +where + Env: TxEnv, +{ + type OriginalResult = O; +} diff --git a/framework/scenario/src/facade.rs b/framework/scenario/src/facade.rs index 4f56063404..51989165df 100644 --- a/framework/scenario/src/facade.rs +++ b/framework/scenario/src/facade.rs @@ -6,9 +6,8 @@ mod scenario_world_steps; mod scenario_world_steps_deprecated; mod scenario_world_whitebox; mod whitebox_contract; -mod world_tx; +pub(crate) mod world_tx; pub use contract_info::ContractInfo; pub use scenario_world::ScenarioWorld; pub use whitebox_contract::WhiteboxContract; -pub use world_tx::*; diff --git a/framework/scenario/src/facade/world_tx.rs b/framework/scenario/src/facade/world_tx.rs index 55e7720e16..f0891db9cb 100644 --- a/framework/scenario/src/facade/world_tx.rs +++ b/framework/scenario/src/facade/world_tx.rs @@ -4,8 +4,10 @@ mod scenario_env; mod scenario_rh_list; mod scenario_rh_list_item; mod scenario_tx; +mod with_tx_raw_response; pub use scenario_env::*; pub use scenario_rh_list::*; pub use scenario_rh_list_item::*; pub use scenario_tx::*; +pub use with_tx_raw_response::WithRawTxResponse; diff --git a/framework/scenario/src/facade/world_tx/scenario_tx.rs b/framework/scenario/src/facade/world_tx/scenario_tx.rs index 783675b50b..64c8dc9c55 100644 --- a/framework/scenario/src/facade/world_tx/scenario_tx.rs +++ b/framework/scenario/src/facade/world_tx/scenario_tx.rs @@ -15,7 +15,7 @@ impl ScenarioWorld { } } - pub fn run_tx(&mut self, f: F) -> STx::Returns + pub fn tx_return(&mut self, f: F) -> STx::Returns where STx: ScenarioTx, F: FnOnce(TxScenarioBase) -> STx, @@ -28,10 +28,10 @@ impl ScenarioWorld { pub fn tx(&mut self, f: F) -> &mut Self where - STx: ScenarioTx, + STx: ScenarioTx, F: FnOnce(TxScenarioBase) -> STx, { - let _ = self.run_tx(f); + let () = self.tx_return(f); self } } diff --git a/framework/scenario/src/facade/world_tx/scenario_world_steps_tx.rs b/framework/scenario/src/facade/world_tx/scenario_world_steps_tx.rs index 93508e08bb..566caf319e 100644 --- a/framework/scenario/src/facade/world_tx/scenario_world_steps_tx.rs +++ b/framework/scenario/src/facade/world_tx/scenario_world_steps_tx.rs @@ -2,7 +2,7 @@ use std::path::PathBuf; use multiversx_sc::types::{ AnnotatedValue, FunctionCall, ManagedAddress, Tx, TxBaseWithEnv, TxEnv, TxFromSpecified, TxGas, - TxPayment, TxRunnableCallback, TxToSpecified, + TxPayment, TxToSpecified, }; use crate::{ @@ -10,7 +10,3 @@ use crate::{ facade::ScenarioWorld, scenario_model::{ScCallStep, TxResponse}, }; - - - - diff --git a/framework/scenario/src/facade/world_tx/with_tx_raw_response.rs b/framework/scenario/src/facade/world_tx/with_tx_raw_response.rs new file mode 100644 index 0000000000..8b63cfdfcc --- /dev/null +++ b/framework/scenario/src/facade/world_tx/with_tx_raw_response.rs @@ -0,0 +1,29 @@ +use core::marker::PhantomData; + +use multiversx_sc::{codec::TopDecodeMulti, types::RHListItem}; + +use crate::scenario_model::TxResponse; + +use super::{RHListItemScenario, ScenarioTxEnvironment}; + +/// Wraps a closure that handles a `TxResponse` object. +pub struct WithRawTxResponse(pub F) +where + F: FnOnce(&TxResponse); + +impl RHListItem for WithRawTxResponse +where + F: FnOnce(&TxResponse), +{ + type Returns = (); +} + +impl RHListItemScenario for WithRawTxResponse +where + Original: TopDecodeMulti, + F: FnOnce(&TxResponse), +{ + fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns { + (self.0)(tx_response) + } +} diff --git a/framework/scenario/src/lib.rs b/framework/scenario/src/lib.rs index 0110147ed3..dc1f0589b5 100644 --- a/framework/scenario/src/lib.rs +++ b/framework/scenario/src/lib.rs @@ -44,7 +44,7 @@ pub use crate::scenario as mandos_system; // Re-exporting the whole mandos crate for easier use in tests. pub use multiversx_chain_scenario_format as scenario_format; -pub use facade::{ContractInfo, ScenarioWorld, WhiteboxContract}; +pub use facade::{world_tx::*, ContractInfo, ScenarioWorld, WhiteboxContract}; use std::path::Path; From ad699e1717f16e5e8a07333816f03651f5dd5fbb Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sat, 3 Feb 2024 14:22:13 +0200 Subject: [PATCH 020/461] cleanup --- .../types/interaction/tx_rh_list/tx_rh_list_cons.rs | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_cons.rs b/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_cons.rs index f4d4133b19..86a24e8a19 100644 --- a/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_cons.rs +++ b/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_cons.rs @@ -135,12 +135,6 @@ where Tail: RHList, { type ListReturns = (Head::Returns, Tail::ListReturns); - - // fn list_return(&self) -> Self::ListReturn { - // let head_ret = self.head.single_return(); - // let tail_ret = self.tail.list_return(); - // (head_ret, tail_ret) - // } } impl RHListAppendRet for ConsRet @@ -214,11 +208,6 @@ where Tail: RHList, { type ListReturns = Tail::ListReturns; - - // fn list_return(&self) -> Self::ListReturn { - // self.head.single_return(); - // self.tail.list_return() - // } } impl RHListAppendRet for ConsNoRet From 812388767f2de50d57f91448f9eed3425b6f9178 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 5 Feb 2024 11:29:02 +0200 Subject: [PATCH 021/461] async call fix --- framework/base/src/api/composite_api.rs | 2 +- framework/base/src/types/interaction/contract_call_exec.rs | 4 ++-- framework/base/src/types/interaction/contract_call_trait.rs | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/framework/base/src/api/composite_api.rs b/framework/base/src/api/composite_api.rs index bf197ade59..d1ca8413d8 100644 --- a/framework/base/src/api/composite_api.rs +++ b/framework/base/src/api/composite_api.rs @@ -2,7 +2,7 @@ use super::{ErrorApi, ManagedTypeApi, SendApi, StorageReadApi, StorageWriteApi}; /// Provided for convenience. /// Designed to be used in any types that send tokens or calls. -pub trait CallTypeApi: SendApi + ManagedTypeApi + ErrorApi {} +pub trait CallTypeApi: SendApi + ManagedTypeApi + StorageWriteApi + ErrorApi {} /// Provided for convenience. /// Designed to be used in storage mappers. diff --git a/framework/base/src/types/interaction/contract_call_exec.rs b/framework/base/src/types/interaction/contract_call_exec.rs index 3cdaaffe3f..e5df812886 100644 --- a/framework/base/src/types/interaction/contract_call_exec.rs +++ b/framework/base/src/types/interaction/contract_call_exec.rs @@ -70,7 +70,7 @@ impl ContractCallWithEgld where SA: CallTypeApi + StorageWriteApi + 'static, { - pub(super) fn async_call(self) -> AsyncCall { + pub(super) fn build_async_call(self) -> AsyncCall { Tx::new_tx_from_sc() .to(self.basic.to) .egld(self.egld_payment) @@ -83,7 +83,7 @@ impl ContractCallWithEgld where SA: CallTypeApi + 'static, { - pub(super) fn async_call_promise(self) -> super::AsyncCallPromises { + pub(super) fn build_async_call_promise(self) -> super::AsyncCallPromises { super::AsyncCallPromises { to: self.basic.to, egld_payment: self.egld_payment, diff --git a/framework/base/src/types/interaction/contract_call_trait.rs b/framework/base/src/types/interaction/contract_call_trait.rs index 073dae603d..f29d711847 100644 --- a/framework/base/src/types/interaction/contract_call_trait.rs +++ b/framework/base/src/types/interaction/contract_call_trait.rs @@ -75,13 +75,13 @@ where /// Converts to a legacy async call. #[inline] fn async_call(self) -> AsyncCall { - self.into_normalized().async_call() + self.into_normalized().build_async_call() } /// Converts to an async promise. #[inline] fn async_call_promise(self) -> super::AsyncCallPromises { - self.into_normalized().async_call_promise() + self.into_normalized().build_async_call_promise() } /// Executes immediately, synchronously, and returns contract call result. From c8017588097bd49f44b40a5582676ac5cd7e0a36 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 5 Feb 2024 11:46:48 +0200 Subject: [PATCH 022/461] clippy fix --- framework/scenario/src/facade/world_tx/scenario_tx.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/scenario/src/facade/world_tx/scenario_tx.rs b/framework/scenario/src/facade/world_tx/scenario_tx.rs index 64c8dc9c55..cfad562838 100644 --- a/framework/scenario/src/facade/world_tx/scenario_tx.rs +++ b/framework/scenario/src/facade/world_tx/scenario_tx.rs @@ -31,7 +31,7 @@ impl ScenarioWorld { STx: ScenarioTx, F: FnOnce(TxScenarioBase) -> STx, { - let () = self.tx_return(f); + self.tx_return(f); self } } From 9f684a81ac78b2a8efe6d45c4ff7c70dce745943 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 6 Feb 2024 12:39:11 +0200 Subject: [PATCH 023/461] unified syntax - deploy functionality in contracts --- .../src/forwarder_raw_deploy_upgrade.rs | 17 +-- .../forw_raw_contract_deploy.scen.json | 1 - .../base/src/types/interaction/deploy_call.rs | 63 ++++++++++ framework/base/src/types/interaction/mod.rs | 3 + framework/base/src/types/interaction/tx.rs | 89 +++++++++++-- .../src/types/interaction/tx_call_deploy.rs | 119 ++++++++++++++++++ .../base/src/types/interaction/tx_data.rs | 10 +- .../base/src/types/interaction/tx_payment.rs | 28 +++++ .../base/src/types/interaction/tx_rh_list.rs | 2 + .../interaction/tx_rh_list/returns_bt.rs | 18 ++- .../tx_rh_list/returns_new_address.rs | 31 +++++ .../interaction/tx_rh_list/returns_raw.rs | 18 ++- 12 files changed, 378 insertions(+), 21 deletions(-) create mode 100644 framework/base/src/types/interaction/deploy_call.rs create mode 100644 framework/base/src/types/interaction/tx_call_deploy.rs create mode 100644 framework/base/src/types/interaction/tx_rh_list/returns_new_address.rs diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs index 1f89186e0e..da9684608a 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs @@ -9,14 +9,15 @@ pub trait ForwarderRawDeployUpgrade { code_metadata: CodeMetadata, args: MultiValueEncoded, ) -> MultiValue2> { - self.send_raw() - .deploy_contract( - self.blockchain().get_gas_left(), - &BigUint::zero(), - &code, - code_metadata, - &args.to_arg_buffer(), - ) + self.tx() + .deploy() + .code(code) + .code_metadata(code_metadata) + .arguments_raw(args.to_arg_buffer()) + .with_gas_limit(self.blockchain().get_gas_left()) + .returns(ReturnsNewAddress) + .returns(ReturnsRaw) + .execute_deploy() .into() } diff --git a/contracts/feature-tests/composability/scenarios/forw_raw_contract_deploy.scen.json b/contracts/feature-tests/composability/scenarios/forw_raw_contract_deploy.scen.json index dfaf89f427..641dd34347 100644 --- a/contracts/feature-tests/composability/scenarios/forw_raw_contract_deploy.scen.json +++ b/contracts/feature-tests/composability/scenarios/forw_raw_contract_deploy.scen.json @@ -88,7 +88,6 @@ }, "expect": { "out": [ - "str:some_argument", "sc:child-with-arg", "nested:str:some_argument" ], diff --git a/framework/base/src/types/interaction/deploy_call.rs b/framework/base/src/types/interaction/deploy_call.rs new file mode 100644 index 0000000000..ae7c2c9541 --- /dev/null +++ b/framework/base/src/types/interaction/deploy_call.rs @@ -0,0 +1,63 @@ +use multiversx_sc_codec::TopEncodeMulti; + +use crate::types::{CodeMetadata, ManagedBuffer, ManagedBufferCachedBuilder}; + +use super::{FunctionCall, ManagedArgBuffer, Tx, TxData, TxEnv, TxFrom, TxGas, TxPayment, TxTo}; + +/// Holds deploy data: code, code metadata, and arguments. +pub struct DeployCall +where + Env: TxEnv, +{ + pub code: ManagedBuffer, + pub code_metadata: CodeMetadata, + pub arg_buffer: ManagedArgBuffer, +} + +impl Default for DeployCall +where + Env: TxEnv, +{ + fn default() -> DeployCall { + DeployCall { + code: ManagedBuffer::new(), + code_metadata: CodeMetadata::DEFAULT, + arg_buffer: ManagedArgBuffer::new(), + } + } +} + +impl TxData for DeployCall +where + Env: TxEnv, +{ + fn is_no_call(&self) -> bool { + false + } + + fn to_call_data_string(&self) -> ManagedBuffer { + // Implement as needed for deployment-specific data + let mut result = ManagedBufferCachedBuilder::default(); + result.append_managed_buffer(&self.code); + // Add other fields as needed + result.into_managed_buffer() + } +} + +impl DeployCall +where + Env: TxEnv, +{ + /// Adds an argument of any serializable type. + /// + /// Multi-values are accepted. No type checking performed. + pub fn argument(mut self, arg: &T) -> Self { + self.arg_buffer.push_multi_arg(arg); + self + } + + pub fn arguments_raw(mut self, raw: ManagedArgBuffer) -> Self { + self.arg_buffer = raw; + self + } +} diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index 52ae318321..ebacd944c6 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -15,6 +15,7 @@ mod contract_call_with_egld; mod contract_call_with_egld_or_single_esdt; mod contract_call_with_multi_esdt; mod contract_deploy; +mod deploy_call; mod expr_address; mod expr_sc; mod function_call; @@ -22,6 +23,7 @@ mod managed_arg_buffer; mod tx; mod tx_call_async; mod tx_call_async_promises; +mod tx_call_deploy; mod tx_call_sync; mod tx_call_te; mod tx_data; @@ -51,6 +53,7 @@ pub use contract_call_with_egld::ContractCallWithEgld; pub use contract_call_with_egld_or_single_esdt::ContractCallWithEgldOrSingleEsdt; pub use contract_call_with_multi_esdt::ContractCallWithMultiEsdt; pub use contract_deploy::{new_contract_deploy, ContractDeploy}; +pub use deploy_call::*; pub use expr_address::AddressExpr; pub use expr_sc::ScExpr; pub use function_call::FunctionCall; diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index df1249bbe7..283a1c656d 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -1,17 +1,19 @@ -use multiversx_sc_codec::TopEncodeMulti; - use crate::{ - contract_base::BlockchainWrapper, + api::{self, CallTypeApi, ManagedTypeApi}, + contract_base::{BlockchainWrapper, SendRawWrapper}, types::{ - BigUint, EgldPayment, EsdtTokenPayment, ManagedAddress, ManagedBuffer, ManagedVec, - MultiEsdtPayment, + BigUint, CodeMetadata, EgldPayment, EsdtTokenPayment, ManagedAddress, ManagedBuffer, + ManagedVec, MultiEsdtPayment, }, }; +use alloc::boxed::Box; +use multiversx_sc_codec::TopEncodeMulti; use super::{ - ExplicitGas, FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, RHListAppendNoRet, - RHListAppendRet, RHListItem, TxData, TxDataFunctionCall, TxEnv, TxFrom, TxFromSpecified, TxGas, - TxPayment, TxResultHandler, TxTo, TxToSpecified, + AsyncCall, DeployCall, ExplicitGas, FunctionCall, ManagedArgBuffer, OriginalResultMarker, + RHList, RHListAppendNoRet, RHListAppendRet, RHListItem, TxData, TxDataFunctionCall, TxEnv, + TxFrom, TxFromSpecified, TxGas, TxPayment, TxPaymentEgldOnly, TxResultHandler, TxScEnv, TxTo, + TxToSpecified, }; #[must_use] @@ -464,3 +466,74 @@ where } } } + +impl Tx +where + Env: TxEnv, + Payment: TxPaymentEgldOnly, + Gas: TxGas, + Data: TxData, +{ + pub fn deploy(self) -> Tx, ()> { + Tx { + env: self.env, + from: self.from, + to: self.to, + payment: self.payment, + gas: self.gas, + data: DeployCall::default(), + result_handler: self.result_handler, + } + } +} + +impl Tx, ()> +where + Env: TxEnv, + Payment: TxPaymentEgldOnly, + Gas: TxGas, +{ + pub fn code( + mut self, + code: ManagedBuffer, + ) -> Tx, ()> { + self.data.code = code; + Tx { + env: self.env, + from: self.from, + to: self.to, + payment: self.payment, + gas: self.gas, + data: self.data, + result_handler: self.result_handler, + } + } + + pub fn code_metadata( + mut self, + code_metadata: CodeMetadata, + ) -> Tx, ()> { + self.data.code_metadata = code_metadata; + Tx { + env: self.env, + from: self.from, + to: self.to, + payment: self.payment, + gas: self.gas, + data: self.data, + result_handler: self.result_handler, + } + } + + #[inline] + pub fn argument(mut self, arg: &T) -> Self { + self.data = self.data.argument(arg); + self + } + + #[inline] + pub fn arguments_raw(mut self, raw: ManagedArgBuffer) -> Self { + self.data.arg_buffer = raw; + self + } +} diff --git a/framework/base/src/types/interaction/tx_call_deploy.rs b/framework/base/src/types/interaction/tx_call_deploy.rs new file mode 100644 index 0000000000..9d57e362e3 --- /dev/null +++ b/framework/base/src/types/interaction/tx_call_deploy.rs @@ -0,0 +1,119 @@ +use crate::{ + api::CallTypeApi, + contract_base::SendRawWrapper, + tuple_util::NestedTupleFlatten, + types::{ManagedAddress, ManagedBuffer, ManagedVec}, +}; + +use super::{ + ConsNoRet, ConsRet, DeployCall, OriginalResultMarker, RHList, RHListItem, Tx, + TxDataFunctionCall, TxEnv, TxGas, TxPayment, TxPaymentEgldOnly, TxScEnv, TxToSpecified, +}; + +pub trait RHListItemDeploy: RHListItem +where + Env: TxEnv, +{ + fn item_deploy_result( + self, + new_address: &ManagedAddress, + raw_results: &ManagedVec>, + ) -> Self::Returns; +} + +pub trait RHListDeploy: RHList +where + Env: TxEnv, +{ + fn list_deploy_result( + self, + new_address: &ManagedAddress, + raw_results: &ManagedVec>, + ) -> Self::ListReturns; +} + +impl RHListDeploy for () +where + Env: TxEnv, +{ + fn list_deploy_result( + self, + _new_address: &ManagedAddress, + _raw_results: &ManagedVec>, + ) -> Self::ListReturns { + } +} + +impl RHListDeploy for OriginalResultMarker +where + Env: TxEnv, +{ + fn list_deploy_result( + self, + _new_address: &ManagedAddress, + _raw_results: &ManagedVec>, + ) -> Self::ListReturns { + } +} + +impl RHListDeploy for ConsRet +where + Env: TxEnv, + Head: RHListItemDeploy, + Tail: RHListDeploy, +{ + fn list_deploy_result( + self, + new_address: &ManagedAddress, + raw_results: &ManagedVec>, + ) -> Self::ListReturns { + let head_result = self.head.item_deploy_result(new_address, raw_results); + let tail_result = self.tail.list_deploy_result(new_address, raw_results); + (head_result, tail_result) + } +} + +impl RHListDeploy for ConsNoRet +where + Env: TxEnv, + Head: RHListItemDeploy, + Tail: RHListDeploy, +{ + fn list_deploy_result( + self, + new_address: &ManagedAddress, + raw_results: &ManagedVec>, + ) -> Self::ListReturns { + self.head.item_deploy_result(new_address, raw_results); + self.tail.list_deploy_result(new_address, raw_results) + } +} + +impl Tx, (), (), Payment, Gas, DeployCall>, RH> +where + Api: CallTypeApi, + Payment: TxPaymentEgldOnly>, + Gas: TxGas>, + RH: RHListDeploy>, + RH::ListReturns: NestedTupleFlatten, +{ + pub fn execute_deploy(self) -> ::Unpacked { + let gas_limit = self.gas.resolve_gas(&self.env); + let egld_payment = self.payment.to_egld_payment(); + + let (new_address, raw_results) = SendRawWrapper::::new().deploy_contract( + gas_limit, + &egld_payment.value, + &self.data.code, + self.data.code_metadata, + &self.data.arg_buffer, + ); + + SendRawWrapper::::new().clean_return_data(); + + let tuple_result = self + .result_handler + .list_deploy_result(&new_address, &raw_results); + tuple_result.flatten_unpack() + } +} diff --git a/framework/base/src/types/interaction/tx_data.rs b/framework/base/src/types/interaction/tx_data.rs index 4119f04b1a..c4a679401f 100644 --- a/framework/base/src/types/interaction/tx_data.rs +++ b/framework/base/src/types/interaction/tx_data.rs @@ -1,9 +1,14 @@ use crate::{ + api::ManagedTypeApi, + contract_base::SendRawWrapper, formatter::SCLowerHex, - types::{ManagedBuffer, ManagedBufferCachedBuilder}, + types::{ + CodeMetadata, EgldPayment, ManagedAddress, ManagedBuffer, ManagedBufferCachedBuilder, + ManagedVec, + }, }; -use super::{FunctionCall, TxEnv}; +use super::{FunctionCall, ManagedArgBuffer, Tx, TxEnv, TxFrom, TxGas, TxPayment, TxTo}; pub trait TxData where @@ -32,6 +37,7 @@ where ManagedBuffer::new() } } + impl TxDataFunctionCall for () where Env: TxEnv {} impl TxData for FunctionCall diff --git a/framework/base/src/types/interaction/tx_payment.rs b/framework/base/src/types/interaction/tx_payment.rs index 8f2c3397bf..0f50f50e53 100644 --- a/framework/base/src/types/interaction/tx_payment.rs +++ b/framework/base/src/types/interaction/tx_payment.rs @@ -19,9 +19,11 @@ where pub fc: FunctionCall, } +/// Describes a payment that is part of a transaction. pub trait TxPayment where Env: TxEnv, + Self: Clone, { fn is_no_payment(&self) -> bool; @@ -44,6 +46,14 @@ where ); } +/// Marks a payment object that only contains EGLD or nothing at all. +pub trait TxPaymentEgldOnly: TxPayment +where + Env: TxEnv, +{ + fn to_egld_payment(self) -> EgldPayment; +} + impl TxPayment for () where Env: TxEnv, @@ -80,6 +90,15 @@ where } } +impl TxPaymentEgldOnly for () +where + Env: TxEnv, +{ + fn to_egld_payment(self) -> EgldPayment { + EgldPayment::no_payment() + } +} + impl TxPayment for EgldPayment where Env: TxEnv, @@ -122,6 +141,15 @@ where } } +impl TxPaymentEgldOnly for EgldPayment +where + Env: TxEnv, +{ + fn to_egld_payment(self) -> EgldPayment { + self + } +} + impl TxPayment for EsdtTokenPayment where Env: TxEnv, diff --git a/framework/base/src/types/interaction/tx_rh_list.rs b/framework/base/src/types/interaction/tx_rh_list.rs index 85b5c3d51a..f34e0295a5 100644 --- a/framework/base/src/types/interaction/tx_rh_list.rs +++ b/framework/base/src/types/interaction/tx_rh_list.rs @@ -1,5 +1,6 @@ mod returns_bt; mod returns_exact; +mod returns_new_address; mod returns_raw; mod returns_similar; mod tx_rh_list_cons; @@ -9,6 +10,7 @@ mod with_result_raw; pub use returns_bt::*; pub use returns_exact::*; +pub use returns_new_address::*; pub use returns_raw::*; pub use returns_similar::*; pub use tx_rh_list_cons::*; diff --git a/framework/base/src/types/interaction/tx_rh_list/returns_bt.rs b/framework/base/src/types/interaction/tx_rh_list/returns_bt.rs index 03b695d6f6..1f1be042e5 100644 --- a/framework/base/src/types/interaction/tx_rh_list/returns_bt.rs +++ b/framework/base/src/types/interaction/tx_rh_list/returns_bt.rs @@ -1,6 +1,9 @@ use crate::{ contract_base::BlockchainWrapper, - types::{BackTransfers, ManagedBuffer, ManagedVec, RHListItemSync, TxEnv}, + types::{ + interaction::tx_call_deploy::RHListItemDeploy, BackTransfers, ManagedAddress, + ManagedBuffer, ManagedVec, RHListItemSync, TxEnv, + }, }; use super::RHListItem; @@ -25,3 +28,16 @@ where BlockchainWrapper::::new().get_back_transfers() } } + +impl RHListItemDeploy for ReturnsBackTransfers +where + Env: TxEnv, +{ + fn item_deploy_result( + self, + _new_address: &ManagedAddress, + _raw_results: &ManagedVec>, + ) -> Self::Returns { + BlockchainWrapper::::new().get_back_transfers() + } +} diff --git a/framework/base/src/types/interaction/tx_rh_list/returns_new_address.rs b/framework/base/src/types/interaction/tx_rh_list/returns_new_address.rs new file mode 100644 index 0000000000..fee76c5e1f --- /dev/null +++ b/framework/base/src/types/interaction/tx_rh_list/returns_new_address.rs @@ -0,0 +1,31 @@ +use crate::{ + contract_base::BlockchainWrapper, + types::{ + interaction::tx_call_deploy::RHListItemDeploy, BackTransfers, ManagedAddress, + ManagedBuffer, ManagedVec, RHListItemSync, TxEnv, + }, +}; + +use super::RHListItem; + +pub struct ReturnsNewAddress; + +impl RHListItem for ReturnsNewAddress +where + Env: TxEnv, +{ + type Returns = ManagedAddress; +} + +impl RHListItemDeploy for ReturnsNewAddress +where + Env: TxEnv, +{ + fn item_deploy_result( + self, + new_address: &ManagedAddress, + _raw_results: &ManagedVec>, + ) -> Self::Returns { + new_address.clone() + } +} diff --git a/framework/base/src/types/interaction/tx_rh_list/returns_raw.rs b/framework/base/src/types/interaction/tx_rh_list/returns_raw.rs index b4fa56479f..5f709c04a6 100644 --- a/framework/base/src/types/interaction/tx_rh_list/returns_raw.rs +++ b/framework/base/src/types/interaction/tx_rh_list/returns_raw.rs @@ -1,4 +1,7 @@ -use crate::types::{ManagedBuffer, ManagedVec, RHListItemSync, TxEnv}; +use crate::types::{ + interaction::tx_call_deploy::RHListItemDeploy, ManagedAddress, ManagedBuffer, ManagedVec, + RHListItemSync, TxEnv, +}; use super::RHListItem; @@ -22,3 +25,16 @@ where raw_results.clone() } } + +impl RHListItemDeploy for ReturnsRaw +where + Env: TxEnv, +{ + fn item_deploy_result( + self, + _new_address: &ManagedAddress, + raw_results: &ManagedVec>, + ) -> Self::Returns { + raw_results.clone() + } +} From ec1bddc5eb1f53e2bfd1d6cd4a25719103ac751a Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Mon, 12 Feb 2024 11:49:44 +0200 Subject: [PATCH 024/461] initial challange --- framework/meta/src/cmd/contract.rs | 1 + .../src/cmd/contract/generate_proxy_struct.rs | 4 + .../proxy_struct_crate_gen.rs | 12 ++ .../proxy_struct_gen_main.rs | 26 +++ .../proxy_struct_sc_functions_gen.rs | 163 ++++++++++++++++++ .../proxy_struct_template_gen.rs | 51 ++++++ .../snippet_sc_functions_gen.rs | 2 +- .../generate_snippets/snippet_type_map.rs | 2 +- 8 files changed, 259 insertions(+), 2 deletions(-) create mode 100644 framework/meta/src/cmd/contract/generate_proxy_struct.rs create mode 100644 framework/meta/src/cmd/contract/generate_proxy_struct/proxy_struct_crate_gen.rs create mode 100644 framework/meta/src/cmd/contract/generate_proxy_struct/proxy_struct_gen_main.rs create mode 100644 framework/meta/src/cmd/contract/generate_proxy_struct/proxy_struct_sc_functions_gen.rs create mode 100644 framework/meta/src/cmd/contract/generate_proxy_struct/proxy_struct_template_gen.rs diff --git a/framework/meta/src/cmd/contract.rs b/framework/meta/src/cmd/contract.rs index 215c394d63..6b3e8bddd0 100644 --- a/framework/meta/src/cmd/contract.rs +++ b/framework/meta/src/cmd/contract.rs @@ -4,6 +4,7 @@ mod meta_config; pub mod sc_config; pub mod wasm_cargo_toml_data; pub mod wasm_cargo_toml_generate; +mod generate_proxy_struct; use std::path::Path; diff --git a/framework/meta/src/cmd/contract/generate_proxy_struct.rs b/framework/meta/src/cmd/contract/generate_proxy_struct.rs new file mode 100644 index 0000000000..3b7cdcd100 --- /dev/null +++ b/framework/meta/src/cmd/contract/generate_proxy_struct.rs @@ -0,0 +1,4 @@ +pub mod proxy_struct_crate_gen; +pub mod proxy_struct_gen_main; +pub mod proxy_struct_sc_functions_gen; +pub mod proxy_struct_template_gen; diff --git a/framework/meta/src/cmd/contract/generate_proxy_struct/proxy_struct_crate_gen.rs b/framework/meta/src/cmd/contract/generate_proxy_struct/proxy_struct_crate_gen.rs new file mode 100644 index 0000000000..3d6ef0122d --- /dev/null +++ b/framework/meta/src/cmd/contract/generate_proxy_struct/proxy_struct_crate_gen.rs @@ -0,0 +1,12 @@ +use std::fs::File; + +#[must_use] +pub(crate) fn create_and_get_lib_file(proxies_file_name: &str) -> File { + let lib_path = format!("../{proxies_file_name}"); + match File::options().create_new(true).write(true).open(&lib_path) { + Ok(f) => f, + Err(_) => panic!( + "{lib_path} file already exists, --overwrite option for proxies was not provided" + ), + } +} diff --git a/framework/meta/src/cmd/contract/generate_proxy_struct/proxy_struct_gen_main.rs b/framework/meta/src/cmd/contract/generate_proxy_struct/proxy_struct_gen_main.rs new file mode 100644 index 0000000000..fb1342443a --- /dev/null +++ b/framework/meta/src/cmd/contract/generate_proxy_struct/proxy_struct_gen_main.rs @@ -0,0 +1,26 @@ +use std::fs::File; + +use multiversx_sc::abi::ContractAbi; + +use crate::cmd::contract::generate_proxy_trait::proxy_trait_crate_gen::create_and_get_lib_file; + +use super::{ + super::meta_config::MetaConfig, + proxy_struct_sc_functions_gen::write_content, + proxy_struct_template_gen::{write_imports, write_struct_template}, +}; + +static PROXIES_SOURCE_FILE_NAME: &str = "proxies_struct_interactor_main.rs"; + +impl MetaConfig { + pub fn generate_rust_proxies_struct(&self) { + let file = create_and_get_lib_file(PROXIES_SOURCE_FILE_NAME); + write_proxies_struct_to_file(file, &self.original_contract_abi); + } +} + +fn write_proxies_struct_to_file(mut file: File, abi: &ContractAbi) { + write_imports(&mut file); + write_struct_template(&mut file); + write_content(&mut file, abi); +} diff --git a/framework/meta/src/cmd/contract/generate_proxy_struct/proxy_struct_sc_functions_gen.rs b/framework/meta/src/cmd/contract/generate_proxy_struct/proxy_struct_sc_functions_gen.rs new file mode 100644 index 0000000000..075dc1b786 --- /dev/null +++ b/framework/meta/src/cmd/contract/generate_proxy_struct/proxy_struct_sc_functions_gen.rs @@ -0,0 +1,163 @@ +use std::{fs::File, io::Write}; + +use multiversx_sc::abi::{ContractAbi, EndpointAbi, InputAbi, OutputAbis}; + +use crate::cmd::contract::generate_snippets::{ + snippet_gen_common::write_newline, + snippet_sc_functions_gen::map_output_types_to_rust_types, + snippet_type_map::{handle_abi_type, RustTypeString}, +}; + +pub(crate) fn write_content(file: &mut File, abi: &ContractAbi) { + for constructor_abi in &abi.constructors { + write_endpoint(file, constructor_abi, "ContractDeploy"); + write_constructor_content_macro(file); + write_constructor_contract_deploy(file, &constructor_abi.inputs); + writeln!(file, "\t\t___contract_deploy___").unwrap(); + writeln!(file, "\t}}").unwrap(); + write_newline(file); + } + + for endpoint_abi in &abi.endpoints { + write_endpoint(file, endpoint_abi, "ContractCallNoPayment"); + write_endpoint_content_macro(file, endpoint_abi.name); + write_contract_call(file, &endpoint_abi.inputs); + writeln!(file, "\t\t___contract_call___").unwrap(); + writeln!(file, "\t}}").unwrap(); + write_newline(file); + } + + writeln!(file, "}}").unwrap(); +} + +fn write_constructor_contract_deploy(file: &mut File, inputs: &[InputAbi]) { + if inputs.is_empty() { + return; + } + + for input in inputs.iter() { + write_constructor_contract_call(file, &input.arg_name); + } +} + +fn write_contract_call(file: &mut File, inputs: &[InputAbi]) { + if inputs.is_empty() { + return; + } + + for input in inputs.iter() { + write_contract_call_input(file, &input.arg_name); + } +} + +fn write_contract_call_input(file: &mut File, arg_name: &&str) { + writeln!( + file, + "\t\tContractCall::proxy_arg(&mut ___contract_call___, &{arg_name});" + ) + .unwrap(); +} + +fn write_constructor_contract_call(file: &mut File, arg_name: &&str) { + writeln!( + file, + "\t\t___contract_deploy___.push_endpoint_arg(&{arg_name});" + ) + .unwrap(); +} + +fn write_endpoint_content_macro(file: &mut File, name: &str) { + writeln!( + file, + "\t\tlet ___address___ = multiversx_sc::extract_address!(self);" + ) + .unwrap(); + writeln!( + file, + "\t\tlet mut ___contract_call___ = multiversx_sc::endpoints_proxy!({name}, ___address___);" + ) + .unwrap(); +} + +fn write_constructor_content_macro(file: &mut File) { + writeln!( + file, + "\t\tlet ___opt_address___ = multiversx_sc::extract_opt_address!(self);" + ) + .unwrap(); + writeln!(file, "\t\tlet mut ___contract_deploy___ = multiversx_sc::constructors_proxy!(___opt_address___);").unwrap(); +} + +fn write_endpoint(file: &mut File, endpoint_abi: &EndpointAbi, interaction_deploy: &str) { + write_info_endpoint(file, endpoint_abi.docs); + write_endpoint_fn(file, endpoint_abi.rust_method_name); + write_generic_args(file, &endpoint_abi.inputs); + write_parameters(file, &endpoint_abi.inputs, interaction_deploy); + write_output(file, &endpoint_abi.outputs); +} + +fn write_output(file: &mut File, outputs: &OutputAbis) { + let output_type = map_output_types_to_rust_types(outputs); + + let output_type_print = output_type.replace("", ""); + write!(file, "{output_type_print}",).unwrap(); + writeln!(file, "> {{").unwrap(); +} + +fn write_parameters(file: &mut File, inputs: &[InputAbi], interaction_deploy: &str) { + writeln!(file, "(").unwrap(); + writeln!(file, "\t\t&mut self,").unwrap(); + + for (index, input) in inputs.iter().enumerate() { + write_parameter_arg(file, index, &input.arg_name); + } + + write!(file, "\t) -> {interaction_deploy}").unwrap(); +} + +fn write_argument(file: &mut File, index: usize, type_name: String) { + let mut type_string = RustTypeString::default(); + handle_abi_type(&mut type_string, type_name); + let type_string_str = type_string.get_type_name().to_string(); + + let type_print = type_string_str.replace("", ""); + + writeln!( + file, + "\t\tArg{index}: multiversx_sc::codec::CodecInto<{}>,", + type_print + ) + .unwrap(); +} diff --git a/framework/meta/src/cmd/contract/generate_proxy_struct/proxy_struct_template_gen.rs b/framework/meta/src/cmd/contract/generate_proxy_struct/proxy_struct_template_gen.rs new file mode 100644 index 0000000000..e88dd87943 --- /dev/null +++ b/framework/meta/src/cmd/contract/generate_proxy_struct/proxy_struct_template_gen.rs @@ -0,0 +1,51 @@ +use std::{fs::File, io::Write}; + +use crate::cmd::contract::generate_snippets::snippet_gen_common::write_newline; + +pub(crate) fn write_imports(file: &mut File) { + writeln!( + file, + r#"#![allow(clippy::too_many_arguments)] +#![allow(clippy::type_complexity)] +multiversx_sc::imports!();"# + ) + .unwrap(); + + write_newline(file); +} + +// pub(crate) fn write_struct_template(file: &mut File) { +// write!( +// file, +// "pub struct Proxy +// where +// A: multiversx_sc::api::VMApi + 'static, +// {{ +// phantom = Phantom +// }} + +// impl Proxy +// where +// A: multiversx_sc::api::VMApi + 'static, +// {{" +// ) +// .unwrap(); +// } + +pub(crate) fn write_struct_template(file: &mut File) { + write!( + file, + "pub struct Proxy +where + A: multiversx_sc::api::VMApi + 'static, +{{ + pub address: ManagedOption>, +}} + +impl Proxy +where + A: multiversx_sc::api::VMApi + 'static, +{{" + ) + .unwrap(); +} diff --git a/framework/meta/src/cmd/contract/generate_snippets/snippet_sc_functions_gen.rs b/framework/meta/src/cmd/contract/generate_snippets/snippet_sc_functions_gen.rs index 94b0cc8a43..6bc0fe01de 100644 --- a/framework/meta/src/cmd/contract/generate_snippets/snippet_sc_functions_gen.rs +++ b/framework/meta/src/cmd/contract/generate_snippets/snippet_sc_functions_gen.rs @@ -205,7 +205,7 @@ fn write_contract_query(file: &mut File, endpoint_abi: &EndpointAbi) { .unwrap(); } -fn map_output_types_to_rust_types(outputs: &[OutputAbi]) -> String { +pub fn map_output_types_to_rust_types(outputs: &[OutputAbi]) -> String { let results_len = outputs.len(); if results_len == 0 { return "()".to_string(); diff --git a/framework/meta/src/cmd/contract/generate_snippets/snippet_type_map.rs b/framework/meta/src/cmd/contract/generate_snippets/snippet_type_map.rs index 803f8c6b29..5e6e28423b 100644 --- a/framework/meta/src/cmd/contract/generate_snippets/snippet_type_map.rs +++ b/framework/meta/src/cmd/contract/generate_snippets/snippet_type_map.rs @@ -183,7 +183,7 @@ fn get_abi_type(abi_type_str: &str) -> AbiType { } } -fn handle_abi_type(type_string: &mut RustTypeString, abi_type_str: String) { +pub fn handle_abi_type(type_string: &mut RustTypeString, abi_type_str: String) { let abi_type = get_abi_type(&abi_type_str); match abi_type { AbiType::UserDefined(user_type) => { From 70076f8e6a372ef80646dc09ea0811c582b03058 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Mon, 12 Feb 2024 14:40:38 +0200 Subject: [PATCH 025/461] changed call --- .../adder/proxies_struct_interactor_main.rs | 60 +++++++++++++++ framework/base/src/macros.rs | 32 ++++++++ .../meta/src/cli_args/cli_args_contract.rs | 9 +++ framework/meta/src/cmd/contract.rs | 3 +- .../meta/src/cmd/contract/generate_proxy.rs | 4 + .../proxy_crate_gen.rs} | 0 .../proxy_gen_main.rs} | 11 ++- .../proxy_sc_functions_gen.rs} | 75 +++++++++++-------- .../proxy_template_gen.rs} | 0 .../src/cmd/contract/generate_proxy_struct.rs | 4 - 10 files changed, 155 insertions(+), 43 deletions(-) create mode 100644 contracts/examples/adder/proxies_struct_interactor_main.rs create mode 100644 framework/meta/src/cmd/contract/generate_proxy.rs rename framework/meta/src/cmd/contract/{generate_proxy_struct/proxy_struct_crate_gen.rs => generate_proxy/proxy_crate_gen.rs} (100%) rename framework/meta/src/cmd/contract/{generate_proxy_struct/proxy_struct_gen_main.rs => generate_proxy/proxy_gen_main.rs} (55%) rename framework/meta/src/cmd/contract/{generate_proxy_struct/proxy_struct_sc_functions_gen.rs => generate_proxy/proxy_sc_functions_gen.rs} (58%) rename framework/meta/src/cmd/contract/{generate_proxy_struct/proxy_struct_template_gen.rs => generate_proxy/proxy_template_gen.rs} (100%) delete mode 100644 framework/meta/src/cmd/contract/generate_proxy_struct.rs diff --git a/contracts/examples/adder/proxies_struct_interactor_main.rs b/contracts/examples/adder/proxies_struct_interactor_main.rs new file mode 100644 index 0000000000..944242261b --- /dev/null +++ b/contracts/examples/adder/proxies_struct_interactor_main.rs @@ -0,0 +1,60 @@ +#![allow(clippy::too_many_arguments)] +#![allow(clippy::type_complexity)] +multiversx_sc::imports!(); + +pub struct Proxy +where + A: multiversx_sc::api::VMApi + 'static, +{ + pub address: ManagedOption>, +} + +impl Proxy +where + A: multiversx_sc::api::VMApi + 'static, +{ fn init< + Arg0: multiversx_sc::codec::CodecInto>, + >( + &mut self, + initial_value: Arg0, + ) -> ContractDeploy { + let ___opt_address___ = multiversx_sc::extract_opt_address!(self); + let mut ___contract_deploy___ = multiversx_sc::constructors_proxy!(___opt_address___); + ___contract_deploy___.push_endpoint_arg(&initial_value); + ___contract_deploy___ + } + + fn sum( + &mut self, + ) -> ContractCallNoPayment> { + let ___address___ = multiversx_sc::extract_address!(self); + let mut ___contract_call___ = multiversx_sc::endpoints_proxy!(getSum, ___address___); + ___contract_call___ + } + + fn upgrade< + Arg0: multiversx_sc::codec::CodecInto>, + >( + &mut self, + initial_value: Arg0, + ) -> ContractCallNoPayment { + let ___address___ = multiversx_sc::extract_address!(self); + let mut ___contract_call___ = multiversx_sc::endpoints_proxy!(upgrade, ___address___); + ContractCall::proxy_arg(&mut ___contract_call___, &initial_value); + ___contract_call___ + } + + //Add desired amount to the storage variable. + fn add< + Arg0: multiversx_sc::codec::CodecInto>, + >( + &mut self, + value: Arg0, + ) -> ContractCallNoPayment { + let ___address___ = multiversx_sc::extract_address!(self); + let mut ___contract_call___ = multiversx_sc::endpoints_proxy!(add, ___address___); + ContractCall::proxy_arg(&mut ___contract_call___, &value); + ___contract_call___ + } + +} diff --git a/framework/base/src/macros.rs b/framework/base/src/macros.rs index 159b639195..daaaac7a48 100644 --- a/framework/base/src/macros.rs +++ b/framework/base/src/macros.rs @@ -209,3 +209,35 @@ macro_rules! non_zero_usize { NonZeroUsize::new($input).unwrap_or_else(|| sc_panic!($error_msg)) }; } + +#[macro_export] +macro_rules! endpoints_proxy { + ($endpoint_name:ident, $address:ident) => { + multiversx_sc::types::ContractCallNoPayment::new($address, stringify!($endpoint_name)); + }; +} + +#[macro_export] +macro_rules! constructors_proxy { + ($opt_address:ident) => { + multiversx_sc::types::new_contract_deploy($opt_address); + }; +} + +#[macro_export] +macro_rules! extract_opt_address { + ($address:expr) => {{ + core::mem::replace( + &mut $address.address, + multiversx_sc::types::ManagedOption::none(), + ) + }}; +} + +#[macro_export] +macro_rules! extract_address { + ($address:expr) => {{ + multiversx_sc::extract_opt_address!($address) + .unwrap_or_sc_panic(multiversx_sc::err_msg::RECIPIENT_ADDRESS_NOT_SET) + }}; +} diff --git a/framework/meta/src/cli_args/cli_args_contract.rs b/framework/meta/src/cli_args/cli_args_contract.rs index 1853d64675..e05146a9bc 100644 --- a/framework/meta/src/cli_args/cli_args_contract.rs +++ b/framework/meta/src/cli_args/cli_args_contract.rs @@ -66,6 +66,12 @@ pub enum ContractCliAction { about = "Generates a snippets project, based on the contract ABI." )] GenerateSnippets(GenerateSnippetsArgs), + + #[command( + name = "proxy", + about = "Generates a proxy, based on the contract ABI." + )] + GenerateProxies, } impl CliArgsToRaw for ContractCliAction { @@ -97,6 +103,9 @@ impl CliArgsToRaw for ContractCliAction { raw.push("snippets".to_string()); raw.append(&mut args.to_raw()); }, + ContractCliAction::GenerateProxies => { + raw.push("proxy".to_string()); + }, } raw } diff --git a/framework/meta/src/cmd/contract.rs b/framework/meta/src/cmd/contract.rs index 6b3e8bddd0..37fa3ee65b 100644 --- a/framework/meta/src/cmd/contract.rs +++ b/framework/meta/src/cmd/contract.rs @@ -1,10 +1,10 @@ +mod generate_proxy; mod generate_snippets; mod meta_abi; mod meta_config; pub mod sc_config; pub mod wasm_cargo_toml_data; pub mod wasm_cargo_toml_generate; -mod generate_proxy_struct; use std::path::Path; @@ -32,6 +32,7 @@ pub fn cli_main() { ContractCliAction::GenerateSnippets(gs_args) => { meta_config_opt.generate_rust_snippets(&gs_args) }, + ContractCliAction::GenerateProxies => meta_config_opt.generate_rust_proxies_struct(), } } diff --git a/framework/meta/src/cmd/contract/generate_proxy.rs b/framework/meta/src/cmd/contract/generate_proxy.rs new file mode 100644 index 0000000000..0dc83059b3 --- /dev/null +++ b/framework/meta/src/cmd/contract/generate_proxy.rs @@ -0,0 +1,4 @@ +pub mod proxy_crate_gen; +pub mod proxy_gen_main; +pub mod proxy_sc_functions_gen; +pub mod proxy_template_gen; diff --git a/framework/meta/src/cmd/contract/generate_proxy_struct/proxy_struct_crate_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_crate_gen.rs similarity index 100% rename from framework/meta/src/cmd/contract/generate_proxy_struct/proxy_struct_crate_gen.rs rename to framework/meta/src/cmd/contract/generate_proxy/proxy_crate_gen.rs diff --git a/framework/meta/src/cmd/contract/generate_proxy_struct/proxy_struct_gen_main.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs similarity index 55% rename from framework/meta/src/cmd/contract/generate_proxy_struct/proxy_struct_gen_main.rs rename to framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs index fb1342443a..fb9549d998 100644 --- a/framework/meta/src/cmd/contract/generate_proxy_struct/proxy_struct_gen_main.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs @@ -2,12 +2,11 @@ use std::fs::File; use multiversx_sc::abi::ContractAbi; -use crate::cmd::contract::generate_proxy_trait::proxy_trait_crate_gen::create_and_get_lib_file; - use super::{ super::meta_config::MetaConfig, - proxy_struct_sc_functions_gen::write_content, - proxy_struct_template_gen::{write_imports, write_struct_template}, + proxy_crate_gen::create_and_get_lib_file, + proxy_sc_functions_gen::write_content, + proxy_template_gen::{write_imports, write_struct_template}, }; static PROXIES_SOURCE_FILE_NAME: &str = "proxies_struct_interactor_main.rs"; @@ -15,11 +14,11 @@ static PROXIES_SOURCE_FILE_NAME: &str = "proxies_struct_interactor_main.rs"; impl MetaConfig { pub fn generate_rust_proxies_struct(&self) { let file = create_and_get_lib_file(PROXIES_SOURCE_FILE_NAME); - write_proxies_struct_to_file(file, &self.original_contract_abi); + write_proxies_struct_to_file(file, self.original_contract_abi.clone()); } } -fn write_proxies_struct_to_file(mut file: File, abi: &ContractAbi) { +fn write_proxies_struct_to_file(mut file: File, abi: ContractAbi) { write_imports(&mut file); write_struct_template(&mut file); write_content(&mut file, abi); diff --git a/framework/meta/src/cmd/contract/generate_proxy_struct/proxy_struct_sc_functions_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs similarity index 58% rename from framework/meta/src/cmd/contract/generate_proxy_struct/proxy_struct_sc_functions_gen.rs rename to framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs index 075dc1b786..321a6868a4 100644 --- a/framework/meta/src/cmd/contract/generate_proxy_struct/proxy_struct_sc_functions_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs @@ -8,49 +8,48 @@ use crate::cmd::contract::generate_snippets::{ snippet_type_map::{handle_abi_type, RustTypeString}, }; -pub(crate) fn write_content(file: &mut File, abi: &ContractAbi) { - for constructor_abi in &abi.constructors { - write_endpoint(file, constructor_abi, "ContractDeploy"); +const CONTRACT_DEPLOY: &str = "ContractDeploy"; +const CONTRACT_CALL_NO_PAYMENT: &str = "ContractCallNoPayment"; + +pub(crate) fn write_content(file: &mut File, abi: ContractAbi) { + for constructor_abi in abi.constructors { + write_endpoint(file, constructor_abi.clone(), CONTRACT_DEPLOY); write_constructor_content_macro(file); - write_constructor_contract_deploy(file, &constructor_abi.inputs); - writeln!(file, "\t\t___contract_deploy___").unwrap(); - writeln!(file, "\t}}").unwrap(); - write_newline(file); + write_constructor_contract_deploy(file, constructor_abi.inputs); + write_end_of_constructor(file); } - for endpoint_abi in &abi.endpoints { - write_endpoint(file, endpoint_abi, "ContractCallNoPayment"); + for endpoint_abi in abi.endpoints { + write_endpoint(file, endpoint_abi.clone(), CONTRACT_CALL_NO_PAYMENT); write_endpoint_content_macro(file, endpoint_abi.name); - write_contract_call(file, &endpoint_abi.inputs); - writeln!(file, "\t\t___contract_call___").unwrap(); - writeln!(file, "\t}}").unwrap(); - write_newline(file); + write_contract_call(file, endpoint_abi.inputs); + write_end_of_endpoint(file); } writeln!(file, "}}").unwrap(); } -fn write_constructor_contract_deploy(file: &mut File, inputs: &[InputAbi]) { +fn write_constructor_contract_deploy(file: &mut File, inputs: Vec) { if inputs.is_empty() { return; } for input in inputs.iter() { - write_constructor_contract_call(file, &input.arg_name); + write_constructor_contract_call(file, input.arg_name.clone()); } } -fn write_contract_call(file: &mut File, inputs: &[InputAbi]) { +fn write_contract_call(file: &mut File, inputs: Vec) { if inputs.is_empty() { return; } for input in inputs.iter() { - write_contract_call_input(file, &input.arg_name); + write_contract_call_input(file, input.arg_name.clone()); } } -fn write_contract_call_input(file: &mut File, arg_name: &&str) { +fn write_contract_call_input(file: &mut File, arg_name: String) { writeln!( file, "\t\tContractCall::proxy_arg(&mut ___contract_call___, &{arg_name});" @@ -58,7 +57,7 @@ fn write_contract_call_input(file: &mut File, arg_name: &&str) { .unwrap(); } -fn write_constructor_contract_call(file: &mut File, arg_name: &&str) { +fn write_constructor_contract_call(file: &mut File, arg_name: String) { writeln!( file, "\t\t___contract_deploy___.push_endpoint_arg(&{arg_name});" @@ -66,7 +65,7 @@ fn write_constructor_contract_call(file: &mut File, arg_name: &&str) { .unwrap(); } -fn write_endpoint_content_macro(file: &mut File, name: &str) { +fn write_endpoint_content_macro(file: &mut File, name: String) { writeln!( file, "\t\tlet ___address___ = multiversx_sc::extract_address!(self);" @@ -88,23 +87,23 @@ fn write_constructor_content_macro(file: &mut File) { writeln!(file, "\t\tlet mut ___contract_deploy___ = multiversx_sc::constructors_proxy!(___opt_address___);").unwrap(); } -fn write_endpoint(file: &mut File, endpoint_abi: &EndpointAbi, interaction_deploy: &str) { +fn write_endpoint(file: &mut File, endpoint_abi: EndpointAbi, interaction_deploy: &str) { write_info_endpoint(file, endpoint_abi.docs); write_endpoint_fn(file, endpoint_abi.rust_method_name); - write_generic_args(file, &endpoint_abi.inputs); - write_parameters(file, &endpoint_abi.inputs, interaction_deploy); - write_output(file, &endpoint_abi.outputs); + write_generic_args(file, endpoint_abi.inputs.clone()); + write_parameters(file, endpoint_abi.inputs, interaction_deploy); + write_output(file, endpoint_abi.outputs); } -fn write_output(file: &mut File, outputs: &OutputAbis) { - let output_type = map_output_types_to_rust_types(outputs); +fn write_output(file: &mut File, outputs: OutputAbis) { + let output_type = map_output_types_to_rust_types(&outputs); let output_type_print = output_type.replace("", ""); write!(file, "{output_type_print}",).unwrap(); writeln!(file, "> {{").unwrap(); } -fn write_parameters(file: &mut File, inputs: &[InputAbi], interaction_deploy: &str) { +fn write_parameters(file: &mut File, inputs: Vec, interaction_deploy: &str) { writeln!(file, "(").unwrap(); writeln!(file, "\t\t&mut self,").unwrap(); @@ -119,21 +118,21 @@ fn write_parameter_arg(file: &mut File, index: usize, arg_name: &str) { writeln!(file, "\t\t{arg_name}: Arg{index},").unwrap() } -fn write_endpoint_fn(file: &mut File, rust_method_name: &str) { +fn write_endpoint_fn(file: &mut File, rust_method_name: String) { write!(file, "\tfn {rust_method_name}").unwrap(); } -fn write_info_endpoint(file: &mut File, abi_docs: &[&str]) { - if !abi_docs.is_empty() { +fn write_info_endpoint(file: &mut File, docs: Vec) { + if !docs.is_empty() { write!(file, "\t//").unwrap(); } - for &abi_doc in abi_docs { + for abi_doc in docs { writeln!(file, "{abi_doc} ").unwrap(); } } -fn write_generic_args(file: &mut File, inputs: &[InputAbi]) { +fn write_generic_args(file: &mut File, inputs: Vec) { if inputs.is_empty() { return; } @@ -161,3 +160,15 @@ fn write_argument(file: &mut File, index: usize, type_name: String) { ) .unwrap(); } + +fn write_end_of_constructor(file: &mut File) { + writeln!(file, "\t\t___contract_deploy___").unwrap(); + writeln!(file, "\t}}").unwrap(); + write_newline(file); +} + +fn write_end_of_endpoint(file: &mut File) { + writeln!(file, "\t\t___contract_call___").unwrap(); + writeln!(file, "\t}}").unwrap(); + write_newline(file); +} diff --git a/framework/meta/src/cmd/contract/generate_proxy_struct/proxy_struct_template_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs similarity index 100% rename from framework/meta/src/cmd/contract/generate_proxy_struct/proxy_struct_template_gen.rs rename to framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs diff --git a/framework/meta/src/cmd/contract/generate_proxy_struct.rs b/framework/meta/src/cmd/contract/generate_proxy_struct.rs deleted file mode 100644 index 3b7cdcd100..0000000000 --- a/framework/meta/src/cmd/contract/generate_proxy_struct.rs +++ /dev/null @@ -1,4 +0,0 @@ -pub mod proxy_struct_crate_gen; -pub mod proxy_struct_gen_main; -pub mod proxy_struct_sc_functions_gen; -pub mod proxy_struct_template_gen; From b0ec3e5738e5c6f81fd7dc7b620cf3dab37f6083 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 12 Feb 2024 21:48:50 +0200 Subject: [PATCH 026/461] ProxyTo object, type level addres optionality --- .../examples/proxy-pause/src/proxy_pause.rs | 2 +- framework/base/src/contract_base.rs | 2 +- .../base/src/contract_base/proxy_obj_base.rs | 20 +++--- framework/base/src/macros.rs | 2 +- .../derive/src/generate/auto_impl_proxy.rs | 39 ++++++++--- framework/derive/src/generate/method_gen.rs | 21 ++++-- framework/derive/src/generate/snippets.rs | 70 +++++++++++++++---- .../derive/src/generate/supertrait_gen.rs | 1 + .../scenario/src/facade/contract_info.rs | 48 ++++++------- .../scenario/tests/contract_without_macros.rs | 54 ++++++++++++-- 10 files changed, 190 insertions(+), 69 deletions(-) diff --git a/contracts/examples/proxy-pause/src/proxy_pause.rs b/contracts/examples/proxy-pause/src/proxy_pause.rs index 2a83923866..9fafc23f25 100644 --- a/contracts/examples/proxy-pause/src/proxy_pause.rs +++ b/contracts/examples/proxy-pause/src/proxy_pause.rs @@ -48,7 +48,7 @@ pub trait PauseProxy { fn for_each_contract(&self, f: F) where - F: Fn(pause_proxy::Proxy), + F: Fn(pause_proxy::ProxyTo), { for contract_address in self.contracts().iter() { f(self.pausable_contract().contract(contract_address)); diff --git a/framework/base/src/contract_base.rs b/framework/base/src/contract_base.rs index 07ee908d93..b7ae48ea10 100644 --- a/framework/base/src/contract_base.rs +++ b/framework/base/src/contract_base.rs @@ -9,7 +9,7 @@ mod wrappers; pub use callable_contract::{CallableContract, CallableContractBuilder}; pub use contract_abi_provider::ContractAbiProvider; pub use contract_base_trait::ContractBase; -pub use proxy_obj_base::ProxyObjBase; +pub use proxy_obj_base::{ProxyObjBase, ProxyObjNew}; pub use proxy_obj_callback_base::CallbackProxyObjBase; pub use universal_contract_obj::*; pub use wrappers::*; diff --git a/framework/base/src/contract_base/proxy_obj_base.rs b/framework/base/src/contract_base/proxy_obj_base.rs index 54eadd26cd..d7849c8432 100644 --- a/framework/base/src/contract_base/proxy_obj_base.rs +++ b/framework/base/src/contract_base/proxy_obj_base.rs @@ -6,14 +6,6 @@ use crate::{ pub trait ProxyObjBase { type Api: VMApi; - #[doc(hidden)] - fn new_proxy_obj() -> Self; - - /// Specify the target contract to call. - /// Not taken into account for deploys. - #[must_use] - fn contract(self, address: ManagedAddress) -> Self; - /// Extracts the address contained in the proxy object and replaces it with None. /// /// Will just return `ManagedOption::none()` if no address was specified. @@ -26,3 +18,15 @@ pub trait ProxyObjBase { #[doc(hidden)] fn extract_address(&mut self) -> ManagedAddress; } + +pub trait ProxyObjNew: ProxyObjBase { + type ProxyTo: ProxyObjBase; + + #[doc(hidden)] + fn new_proxy_obj() -> Self; + + /// Specify the target contract to call. + /// Not taken into account for deploys. + #[must_use] + fn contract(self, address: ManagedAddress) -> Self::ProxyTo; +} diff --git a/framework/base/src/macros.rs b/framework/base/src/macros.rs index 159b639195..41611e165c 100644 --- a/framework/base/src/macros.rs +++ b/framework/base/src/macros.rs @@ -18,7 +18,7 @@ macro_rules! imports { multi_types::*, DecodeError, IntoMultiValue, NestedDecode, NestedEncode, TopDecode, TopEncode, }, - contract_base::{ContractBase, ProxyObjBase}, + contract_base::{ContractBase, ProxyObjBase, ProxyObjNew}, err_msg, esdt::*, io::*, diff --git a/framework/derive/src/generate/auto_impl_proxy.rs b/framework/derive/src/generate/auto_impl_proxy.rs index 7590b57b63..33c36724ca 100644 --- a/framework/derive/src/generate/auto_impl_proxy.rs +++ b/framework/derive/src/generate/auto_impl_proxy.rs @@ -3,7 +3,8 @@ use crate::{ model::{AutoImpl, ContractTrait, Method, MethodImpl}, parse::split_path_last, }; -use syn::{punctuated::Punctuated, token::PathSep}; +use proc_macro2::Ident; +use syn::{punctuated::Punctuated, token::PathSep, Pat}; /// Path to a Rust module containing a contract call proxy. pub type ProxyModulePath = Punctuated; @@ -34,19 +35,37 @@ pub fn proxy_getter_return_type(m: &Method) -> ProxyGetterReturnType { } } -fn proxy_getter_address_snippet(m: &Method) -> proc_macro2::TokenStream { +pub fn proxy_getter_return_type_token(m: &Method) -> proc_macro2::TokenStream { + let ProxyGetterReturnType { + module_path, + mut proxy_obj_name, + } = proxy_getter_return_type(m); + if proxy_getter_address_arg_name(m).is_some() { + // replace type name + let span = proxy_obj_name.ident.span(); // preserve span + proxy_obj_name.ident = Ident::new("ProxyTo", span); + } + quote! { #module_path #proxy_obj_name} +} + +fn proxy_getter_address_arg_name(m: &Method) -> Option { match m.method_args.len() { - 0 => quote! {}, - 1 => { - let address_arg_name = &m.method_args[0].pat; - quote! { - .contract(#address_arg_name) - } - }, + 0 => None, + 1 => Some(m.method_args[0].pat.clone()), _ => panic!("Proxy getter can have at most 1 argument, which is the target address"), } } +fn proxy_getter_address_snippet(m: &Method) -> proc_macro2::TokenStream { + if let Some(address_arg_name) = proxy_getter_address_arg_name(m) { + quote! { + .contract(#address_arg_name) + } + } else { + quote! {} + } +} + pub fn generate_proxy_getter_impl(m: &Method) -> proc_macro2::TokenStream { let msig = method_gen::generate_sig_with_attributes(m); let parsed_return_type = proxy_getter_return_type(m); @@ -55,7 +74,7 @@ pub fn generate_proxy_getter_impl(m: &Method) -> proc_macro2::TokenStream { quote! { #msig { - #module_path Proxy::new_proxy_obj() #address_snippet + <#module_path Proxy as multiversx_sc::contract_base::ProxyObjNew>::new_proxy_obj() #address_snippet } } } diff --git a/framework/derive/src/generate/method_gen.rs b/framework/derive/src/generate/method_gen.rs index dc979fe300..88de2bd30a 100644 --- a/framework/derive/src/generate/method_gen.rs +++ b/framework/derive/src/generate/method_gen.rs @@ -1,4 +1,6 @@ -use crate::model::{Method, MethodArgument}; +use crate::model::{AutoImpl, Method, MethodArgument, MethodImpl}; + +use super::auto_impl_proxy::proxy_getter_return_type_token; pub fn arg_declarations(method_args: &[MethodArgument]) -> Vec { method_args @@ -17,10 +19,7 @@ pub fn generate_sig(m: &Method) -> proc_macro2::TokenStream { let generics = &m.generics; let generics_where = &m.generics.where_clause; let arg_decl = arg_declarations(&m.method_args); - let ret_tok = match &m.return_type { - syn::ReturnType::Default => quote! {}, - syn::ReturnType::Type(r_arrow_token, ty) => quote! { #r_arrow_token #ty }, - }; + let ret_tok = generate_sig_return(m); let result = quote! { #[allow(clippy::too_many_arguments)] #[allow(clippy::type_complexity)] @@ -29,6 +28,18 @@ pub fn generate_sig(m: &Method) -> proc_macro2::TokenStream { result } +pub fn generate_sig_return(m: &Method) -> proc_macro2::TokenStream { + if let MethodImpl::Generated(AutoImpl::ProxyGetter) = &m.implementation { + let proxy_ret_tok = proxy_getter_return_type_token(m); + return quote! { -> #proxy_ret_tok }; + } + + match &m.return_type { + syn::ReturnType::Default => quote! {}, + syn::ReturnType::Type(r_arrow_token, ty) => quote! { #r_arrow_token #ty }, + } +} + pub fn generate_sig_with_attributes(m: &Method) -> proc_macro2::TokenStream { let unprocessed_attributes = &m.unprocessed_attributes; let msig = generate_sig(m); diff --git a/framework/derive/src/generate/snippets.rs b/framework/derive/src/generate/snippets.rs index 6c1751a187..dbe4717b55 100644 --- a/framework/derive/src/generate/snippets.rs +++ b/framework/derive/src/generate/snippets.rs @@ -79,37 +79,83 @@ pub fn proxy_object_def() -> proc_macro2::TokenStream { where A: multiversx_sc::api::VMApi + 'static, { - pub address: multiversx_sc::types::ManagedOption>, + _phantom: core::marker::PhantomData, } - + impl multiversx_sc::contract_base::ProxyObjBase for Proxy where A: multiversx_sc::api::VMApi + 'static, { type Api = A; - + + fn extract_opt_address( + &mut self, + ) -> multiversx_sc::types::ManagedOption< + Self::Api, + multiversx_sc::types::ManagedAddress, + > { + multiversx_sc::types::ManagedOption::none() + } + + fn extract_address(&mut self) -> multiversx_sc::types::ManagedAddress { + multiversx_sc::api::ErrorApiImpl::signal_error( + &::error_api_impl(), + multiversx_sc::err_msg::RECIPIENT_ADDRESS_NOT_SET.as_bytes(), + ) + } + } + + impl multiversx_sc::contract_base::ProxyObjNew for Proxy + where + A: multiversx_sc::api::VMApi + 'static, + { + type ProxyTo = ProxyTo; + fn new_proxy_obj() -> Self { Proxy { - address: multiversx_sc::types::ManagedOption::none(), + _phantom: core::marker::PhantomData, } } - - fn contract(mut self, address: multiversx_sc::types::ManagedAddress) -> Self { - self.address = multiversx_sc::types::ManagedOption::some(address); - self + + fn contract(mut self, address: multiversx_sc::types::ManagedAddress) -> Self::ProxyTo { + ProxyTo { + address: multiversx_sc::types::ManagedOption::some(address) + } } - + } + + pub struct ProxyTo + where + A: multiversx_sc::api::VMApi + 'static, + { + pub address: + multiversx_sc::types::ManagedOption>, + } + + impl multiversx_sc::contract_base::ProxyObjBase for ProxyTo + where + A: multiversx_sc::api::VMApi + 'static, + { + type Api = A; + fn extract_opt_address( &mut self, ) -> multiversx_sc::types::ManagedOption< Self::Api, multiversx_sc::types::ManagedAddress, > { - core::mem::replace(&mut self.address, multiversx_sc::types::ManagedOption::none()) + core::mem::replace( + &mut self.address, + multiversx_sc::types::ManagedOption::none(), + ) } - + fn extract_address(&mut self) -> multiversx_sc::types::ManagedAddress { - self.extract_opt_address().unwrap_or_sc_panic(multiversx_sc::err_msg::RECIPIENT_ADDRESS_NOT_SET) + let address = core::mem::replace( + &mut self.address, + multiversx_sc::types::ManagedOption::none(), + ); + address.unwrap_or_sc_panic(multiversx_sc::err_msg::RECIPIENT_ADDRESS_NOT_SET) } } } diff --git a/framework/derive/src/generate/supertrait_gen.rs b/framework/derive/src/generate/supertrait_gen.rs index de5ba0f393..3d12cbb913 100644 --- a/framework/derive/src/generate/supertrait_gen.rs +++ b/framework/derive/src/generate/supertrait_gen.rs @@ -135,6 +135,7 @@ pub fn function_selector_module_calls(supertraits: &[Supertrait]) -> Vec proc_macro2::TokenStream { quote! { impl #module_path ProxyTrait for Proxy where A: multiversx_sc::api::VMApi {} + impl #module_path ProxyTrait for ProxyTo where A: multiversx_sc::api::VMApi {} } } diff --git a/framework/scenario/src/facade/contract_info.rs b/framework/scenario/src/facade/contract_info.rs index 8376e859f8..bc1d88ee35 100644 --- a/framework/scenario/src/facade/contract_info.rs +++ b/framework/scenario/src/facade/contract_info.rs @@ -7,7 +7,7 @@ use multiversx_sc::types::{ use crate::multiversx_sc::{ api::ManagedTypeApi, codec::{CodecFrom, EncodeErrorHandler, TopEncode, TopEncodeOutput}, - contract_base::ProxyObjBase, + contract_base::ProxyObjNew, types::{Address, ManagedAddress}, }; @@ -15,12 +15,15 @@ use crate::scenario::model::{AddressKey, AddressValue}; /// Bundles a representation of a contract with the contract proxy, /// so that it can be easily called in the context of a blockchain mock. -pub struct ContractInfo { +pub struct ContractInfo { pub scenario_address_expr: AddressKey, - proxy_inst: P, + proxy_inst: P::ProxyTo, } -impl ContractInfo

{ +impl

ContractInfo

+where + P: ProxyObjNew, +{ pub fn new(address_expr: A) -> Self where AddressKey: From, @@ -38,47 +41,44 @@ impl ContractInfo

{ } } -impl From<&ContractInfo

> for AddressKey { +impl From<&ContractInfo

> for AddressKey { fn from(from: &ContractInfo

) -> Self { from.scenario_address_expr.clone() } } -impl From> for AddressKey { +impl From> for AddressKey { fn from(from: ContractInfo

) -> Self { from.scenario_address_expr } } -impl From<&ContractInfo

> for AddressValue { +impl From<&ContractInfo

> for AddressValue { fn from(from: &ContractInfo

) -> Self { AddressValue::from(&from.scenario_address_expr) } } -impl From> for AddressValue { +impl From> for AddressValue { fn from(from: ContractInfo

) -> Self { AddressValue::from(&from.scenario_address_expr) } } -impl Deref for ContractInfo

{ - type Target = P; +impl Deref for ContractInfo

{ + type Target = P::ProxyTo; fn deref(&self) -> &Self::Target { &self.proxy_inst } } -impl DerefMut for ContractInfo

{ +impl DerefMut for ContractInfo

{ fn deref_mut(&mut self) -> &mut Self::Target { - let proxy_inst = core::mem::replace(&mut self.proxy_inst, P::new_proxy_obj()); - let proxy_inst = proxy_inst.contract(self.scenario_address_expr.value.clone().into()); - let _ = core::mem::replace(&mut self.proxy_inst, proxy_inst); &mut self.proxy_inst } } -impl TopEncode for ContractInfo

{ +impl TopEncode for ContractInfo

{ fn top_encode_or_handle_err(&self, output: O, h: H) -> Result<(), H::HandledErr> where O: TopEncodeOutput, @@ -90,15 +90,15 @@ impl TopEncode for ContractInfo

{ } } -impl CodecFrom> for Address {} -impl CodecFrom<&ContractInfo

> for Address {} -impl CodecFrom> for ManagedAddress {} -impl CodecFrom<&ContractInfo

> for ManagedAddress {} +impl CodecFrom> for Address {} +impl CodecFrom<&ContractInfo

> for Address {} +impl CodecFrom> for ManagedAddress {} +impl CodecFrom<&ContractInfo

> for ManagedAddress {} impl AnnotatedValue> for &ContractInfo

where Env: TxEnv, - P: ProxyObjBase, + P: ProxyObjNew, { fn annotation(&self, _env: &Env) -> ManagedBuffer { self.scenario_address_expr.original.as_str().into() @@ -116,7 +116,7 @@ where impl TxFrom for &ContractInfo

where Env: TxEnv, - P: ProxyObjBase, + P: ProxyObjNew, { fn resolve_address(&self, _env: &Env) -> ManagedAddress { (&self.scenario_address_expr.value).into() @@ -125,18 +125,18 @@ where impl TxFromSpecified for &ContractInfo

where Env: TxEnv, - P: ProxyObjBase, + P: ProxyObjNew, { } impl TxTo for &ContractInfo

where Env: TxEnv, - P: ProxyObjBase, + P: ProxyObjNew, { } impl TxToSpecified for &ContractInfo

where Env: TxEnv, - P: ProxyObjBase, + P: ProxyObjNew, { } diff --git a/framework/scenario/tests/contract_without_macros.rs b/framework/scenario/tests/contract_without_macros.rs index cff92ceab8..e58dcfb9ee 100644 --- a/framework/scenario/tests/contract_without_macros.rs +++ b/framework/scenario/tests/contract_without_macros.rs @@ -9,7 +9,7 @@ #![allow(unused)] use multiversx_sc::{ - contract_base::ProxyObjBase, + contract_base::ProxyObjNew, types::{BigInt, ManagedAddress}, }; use multiversx_sc_scenario::api::{SingleTxApi, StaticApi}; @@ -332,8 +332,7 @@ mod sample_adder { where A: multiversx_sc::api::VMApi + 'static, { - pub address: - multiversx_sc::types::ManagedOption>, + _phantom: core::marker::PhantomData, } impl multiversx_sc::contract_base::ProxyObjBase for Proxy @@ -342,16 +341,55 @@ mod sample_adder { { type Api = A; + fn extract_opt_address( + &mut self, + ) -> multiversx_sc::types::ManagedOption< + Self::Api, + multiversx_sc::types::ManagedAddress, + > { + multiversx_sc::types::ManagedOption::none() + } + + fn extract_address(&mut self) -> multiversx_sc::types::ManagedAddress { + multiversx_sc::api::ErrorApiImpl::signal_error( + &::error_api_impl(), + multiversx_sc::err_msg::RECIPIENT_ADDRESS_NOT_SET.as_bytes(), + ) + } + } + + impl multiversx_sc::contract_base::ProxyObjNew for Proxy + where + A: multiversx_sc::api::VMApi + 'static, + { + type ProxyTo = ProxyTo; + fn new_proxy_obj() -> Self { Proxy { - address: multiversx_sc::types::ManagedOption::none(), + _phantom: core::marker::PhantomData, } } - fn contract(mut self, address: multiversx_sc::types::ManagedAddress) -> Self { - self.address = multiversx_sc::types::ManagedOption::some(address); - self + fn contract(mut self, address: multiversx_sc::types::ManagedAddress) -> Self::ProxyTo { + ProxyTo { + address: multiversx_sc::types::ManagedOption::some(address) + } } + } + + pub struct ProxyTo + where + A: multiversx_sc::api::VMApi + 'static, + { + pub address: + multiversx_sc::types::ManagedOption>, + } + + impl multiversx_sc::contract_base::ProxyObjBase for ProxyTo + where + A: multiversx_sc::api::VMApi + 'static, + { + type Api = A; fn extract_opt_address( &mut self, @@ -375,8 +413,10 @@ mod sample_adder { } impl super::module_1::ProxyTrait for Proxy where A: multiversx_sc::api::VMApi {} + impl super::module_1::ProxyTrait for ProxyTo where A: multiversx_sc::api::VMApi {} impl ProxyTrait for Proxy where A: multiversx_sc::api::VMApi {} + impl ProxyTrait for ProxyTo where A: multiversx_sc::api::VMApi {} pub struct CallbackProxyObj where From 11c90c150fcf42569ed9e9e9d2f6364c834f0290 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 13 Feb 2024 10:00:06 +0200 Subject: [PATCH 027/461] ContractInfo refresh address fix --- framework/scenario/src/facade/contract_info.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/framework/scenario/src/facade/contract_info.rs b/framework/scenario/src/facade/contract_info.rs index bc1d88ee35..06e99b6461 100644 --- a/framework/scenario/src/facade/contract_info.rs +++ b/framework/scenario/src/facade/contract_info.rs @@ -39,6 +39,18 @@ where pub fn to_address(&self) -> Address { self.scenario_address_expr.to_address() } + + /// For historical reasons the proxy consumes its address whenever it is called. + /// + /// When using it in tests, as part of `ContractInfo`, + /// it is convenient to refresh it before each call. + /// + /// It is sort of a hack, designed to optimize proxy use in contracts, + /// while making it easier to use in tests. + fn refresh_proxy_address(&mut self) { + self.proxy_inst = + P::new_proxy_obj().contract(self.scenario_address_expr.value.clone().into()); + } } impl From<&ContractInfo

> for AddressKey { @@ -74,6 +86,7 @@ impl Deref for ContractInfo

{ impl DerefMut for ContractInfo

{ fn deref_mut(&mut self) -> &mut Self::Target { + self.refresh_proxy_address(); &mut self.proxy_inst } } From bd43a5c686b8a752f995c2fb71d01e0fe4ce8311 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Tue, 13 Feb 2024 13:03:55 +0200 Subject: [PATCH 028/461] rename proxy to TxProxy and add overwrite command --- .../adder/proxies_struct_interactor_main.rs | 4 ++-- .../meta/src/cli_args/cli_args_contract.rs | 17 +++++++------- framework/meta/src/cmd/contract.rs | 8 ++++--- .../generate_proxy/proxy_crate_gen.rs | 17 ++++++++------ .../contract/generate_proxy/proxy_gen_main.rs | 14 +++++++----- .../generate_proxy/proxy_template_gen.rs | 22 ++----------------- .../generate_snippets/snippet_gen_main.rs | 4 ++-- 7 files changed, 38 insertions(+), 48 deletions(-) diff --git a/contracts/examples/adder/proxies_struct_interactor_main.rs b/contracts/examples/adder/proxies_struct_interactor_main.rs index 944242261b..caf5ea8895 100644 --- a/contracts/examples/adder/proxies_struct_interactor_main.rs +++ b/contracts/examples/adder/proxies_struct_interactor_main.rs @@ -2,14 +2,14 @@ #![allow(clippy::type_complexity)] multiversx_sc::imports!(); -pub struct Proxy +pub struct TxProxy where A: multiversx_sc::api::VMApi + 'static, { pub address: ManagedOption>, } -impl Proxy +impl TxProxy where A: multiversx_sc::api::VMApi + 'static, { fn init< diff --git a/framework/meta/src/cli_args/cli_args_contract.rs b/framework/meta/src/cli_args/cli_args_contract.rs index e05146a9bc..4d89137b29 100644 --- a/framework/meta/src/cli_args/cli_args_contract.rs +++ b/framework/meta/src/cli_args/cli_args_contract.rs @@ -65,13 +65,13 @@ pub enum ContractCliAction { name = "snippets", about = "Generates a snippets project, based on the contract ABI." )] - GenerateSnippets(GenerateSnippetsArgs), + GenerateSnippets(GenerateOverwriteArg), #[command( name = "proxy", about = "Generates a proxy, based on the contract ABI." )] - GenerateProxies, + GenerateProxies(GenerateOverwriteArg), } impl CliArgsToRaw for ContractCliAction { @@ -99,12 +99,13 @@ impl CliArgsToRaw for ContractCliAction { ContractCliAction::Update => { raw.push("update".to_string()); }, - ContractCliAction::GenerateSnippets(args) => { + ContractCliAction::GenerateSnippets(arg) => { raw.push("snippets".to_string()); - raw.append(&mut args.to_raw()); + raw.append(&mut arg.to_raw()); }, - ContractCliAction::GenerateProxies => { + ContractCliAction::GenerateProxies(arg) => { raw.push("proxy".to_string()); + raw.append(&mut arg.to_raw()); }, } raw @@ -112,13 +113,13 @@ impl CliArgsToRaw for ContractCliAction { } #[derive(Default, Clone, PartialEq, Eq, Debug, Args)] -pub struct GenerateSnippetsArgs { - /// Override snippets project if it already exists. +pub struct GenerateOverwriteArg { + /// Override file if it already exists. #[arg(long, verbatim_doc_comment)] pub overwrite: bool, } -impl CliArgsToRaw for GenerateSnippetsArgs { +impl CliArgsToRaw for GenerateOverwriteArg { fn to_raw(&self) -> Vec { let mut raw = Vec::new(); if self.overwrite { diff --git a/framework/meta/src/cmd/contract.rs b/framework/meta/src/cmd/contract.rs index 37fa3ee65b..2f7e4b7bb7 100644 --- a/framework/meta/src/cmd/contract.rs +++ b/framework/meta/src/cmd/contract.rs @@ -29,10 +29,12 @@ pub fn cli_main() { }, ContractCliAction::Clean => meta_config_opt.clean(), ContractCliAction::Update => meta_config_opt.update(), - ContractCliAction::GenerateSnippets(gs_args) => { - meta_config_opt.generate_rust_snippets(&gs_args) + ContractCliAction::GenerateSnippets(gs_arg) => { + meta_config_opt.generate_rust_snippets(&gs_arg) + }, + ContractCliAction::GenerateProxies(arg) => { + meta_config_opt.generate_rust_proxies_struct(&arg) }, - ContractCliAction::GenerateProxies => meta_config_opt.generate_rust_proxies_struct(), } } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_crate_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_crate_gen.rs index 3d6ef0122d..00f38e40cf 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_crate_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_crate_gen.rs @@ -1,12 +1,15 @@ use std::fs::File; #[must_use] -pub(crate) fn create_and_get_lib_file(proxies_file_name: &str) -> File { - let lib_path = format!("../{proxies_file_name}"); - match File::options().create_new(true).write(true).open(&lib_path) { - Ok(f) => f, - Err(_) => panic!( - "{lib_path} file already exists, --overwrite option for proxies was not provided" - ), +pub(crate) fn create_file(proxies_file_name: &str, overwrite: bool) -> File { + let file = format!("../{proxies_file_name}"); + + if overwrite { + File::create(&file).unwrap() + } else { + match File::options().create_new(true).write(true).open(&file) { + Ok(f) => f, + Err(_) => panic!("{file} file already exists, --overwrite option was not provided"), + } } } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs index fb9549d998..b81ba802dc 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs @@ -2,23 +2,25 @@ use std::fs::File; use multiversx_sc::abi::ContractAbi; +use crate::cli_args::GenerateOverwriteArg; + use super::{ super::meta_config::MetaConfig, - proxy_crate_gen::create_and_get_lib_file, + proxy_crate_gen::create_file, proxy_sc_functions_gen::write_content, proxy_template_gen::{write_imports, write_struct_template}, }; -static PROXIES_SOURCE_FILE_NAME: &str = "proxies_struct_interactor_main.rs"; +const PROXIES_SOURCE_FILE_NAME: &str = "proxies_struct_interactor_main.rs"; impl MetaConfig { - pub fn generate_rust_proxies_struct(&self) { - let file = create_and_get_lib_file(PROXIES_SOURCE_FILE_NAME); - write_proxies_struct_to_file(file, self.original_contract_abi.clone()); + pub fn generate_rust_proxies_struct(&self, args: &GenerateOverwriteArg) { + let file = create_file(PROXIES_SOURCE_FILE_NAME, args.overwrite); + write_proxies_to_file(file, self.original_contract_abi.clone()); } } -fn write_proxies_struct_to_file(mut file: File, abi: ContractAbi) { +fn write_proxies_to_file(mut file: File, abi: ContractAbi) { write_imports(&mut file); write_struct_template(&mut file); write_content(&mut file, abi); diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs index e88dd87943..d2ff58a8ac 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs @@ -14,35 +14,17 @@ multiversx_sc::imports!();"# write_newline(file); } -// pub(crate) fn write_struct_template(file: &mut File) { -// write!( -// file, -// "pub struct Proxy -// where -// A: multiversx_sc::api::VMApi + 'static, -// {{ -// phantom = Phantom -// }} - -// impl Proxy -// where -// A: multiversx_sc::api::VMApi + 'static, -// {{" -// ) -// .unwrap(); -// } - pub(crate) fn write_struct_template(file: &mut File) { write!( file, - "pub struct Proxy + "pub struct TxProxy where A: multiversx_sc::api::VMApi + 'static, {{ pub address: ManagedOption>, }} -impl Proxy +impl TxProxy where A: multiversx_sc::api::VMApi + 'static, {{" diff --git a/framework/meta/src/cmd/contract/generate_snippets/snippet_gen_main.rs b/framework/meta/src/cmd/contract/generate_snippets/snippet_gen_main.rs index b158bcd0ce..010e35c2a2 100644 --- a/framework/meta/src/cmd/contract/generate_snippets/snippet_gen_main.rs +++ b/framework/meta/src/cmd/contract/generate_snippets/snippet_gen_main.rs @@ -2,7 +2,7 @@ use std::fs::File; use multiversx_sc::abi::ContractAbi; -use crate::cli_args::GenerateSnippetsArgs; +use crate::cli_args::GenerateOverwriteArg; use super::{ super::meta_config::MetaConfig, @@ -18,7 +18,7 @@ use super::{ }; impl MetaConfig { - pub fn generate_rust_snippets(&self, args: &GenerateSnippetsArgs) { + pub fn generate_rust_snippets(&self, args: &GenerateOverwriteArg) { let main_contract = self.sc_config.main_contract(); let crate_name = &main_contract.contract_name; let snake_case_name = &main_contract.public_name_snake_case(); From e324b519e1df41264d7e58284a10c8bc2054c230 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 14 Feb 2024 01:24:18 +0200 Subject: [PATCH 029/461] old Proxy calls produce unified syntax, backwards compatibility --- .../tests/adder_blackbox_with_values_test.rs | 6 +- .../interact/src/multisig_interact_wegld.rs | 4 +- .../multisig/tests/multisig_blackbox_test.rs | 47 ++--- .../src/forwarder_raw_deploy_upgrade.rs | 2 +- .../forwarder-raw/src/forwarder_raw_sync.rs | 3 +- .../base/src/contract_base/proxy_obj_base.rs | 6 +- .../base/src/types/interaction/async_call.rs | 16 +- .../types/interaction/contract_call_exec.rs | 2 +- .../interaction/contract_call_no_payment.rs | 13 +- .../types/interaction/contract_call_trait.rs | 13 +- .../contract_call_with_any_payment.rs | 13 +- .../interaction/contract_call_with_egld.rs | 13 +- .../contract_call_with_egld_or_single_esdt.rs | 14 +- .../contract_call_with_multi_esdt.rs | 13 +- framework/base/src/types/interaction/mod.rs | 2 +- framework/base/src/types/interaction/tx.rs | 176 +++++++++++++++--- .../src/types/interaction/tx_call_async.rs | 71 ++++++- .../interaction/tx_call_async_promises.rs | 49 ++++- .../src/types/interaction/tx_call_sync.rs | 49 ++++- .../base/src/types/interaction/tx_call_te.rs | 8 +- .../types/interaction/tx_result_handler.rs | 11 ++ .../interaction/tx_rh_original_result.rs | 4 +- framework/derive/src/generate/proxy_gen.rs | 97 ++++++---- framework/derive/src/generate/snippets.rs | 28 ++- .../src/facade/world_tx/scenario_tx.rs | 6 +- .../src/scenario/model/step/sc_call_step.rs | 6 +- .../src/scenario/model/step/sc_query_step.rs | 4 +- .../scenario/tests/contract_without_macros.rs | 15 +- framework/snippets/src/interactor_sc_extra.rs | 4 +- 29 files changed, 532 insertions(+), 163 deletions(-) diff --git a/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs b/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs index 5fa8f665ad..17b07e44b8 100644 --- a/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs @@ -1,8 +1,5 @@ use adder::*; -use multiversx_sc::{ - storage::mappers::SingleValue, - types::{AddressExpr, ScExpr}, -}; +use multiversx_sc::{storage::mappers::SingleValue, types::AddressExpr}; use multiversx_sc_scenario::{api::StaticApi, num_bigint::BigUint, scenario_model::*, *}; const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; @@ -46,7 +43,6 @@ fn adder_blackbox_with_values() { ) .tx(|tx| { tx.from(AddressExpr("owner")) - .to(ScExpr("adder")) .call(adder_contract.add(3u32)) .with_result(WithRawTxResponse(|response| { assert!(response.tx_error.is_success()); diff --git a/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs b/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs index a0d105abd9..e3c6009b95 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs @@ -1,12 +1,12 @@ use std::time::Duration; -use multiversx_sc_scenario::multiversx_sc::types::FunctionCall; +use multiversx_sc_scenario::multiversx_sc::types::{ContractCallBase, FunctionCall}; #[allow(unused_imports)] use multiversx_sc_snippets::multiversx_sc::types::{ EsdtTokenPayment, MultiValueEncoded, TokenIdentifier, }; use multiversx_sc_snippets::{ - multiversx_sc::types::{ContractCall, ContractCallNoPayment}, + multiversx_sc::types::ContractCallNoPayment, multiversx_sc_scenario::{ mandos_system::ScenarioRunner, scenario_format::interpret_trait::InterpretableFrom, standalone::retrieve_account_as_scenario_set_state, diff --git a/contracts/examples/multisig/tests/multisig_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_blackbox_test.rs index b79a1eadc2..f614d39062 100644 --- a/contracts/examples/multisig/tests/multisig_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_blackbox_test.rs @@ -9,10 +9,7 @@ use multiversx_sc::{ test_util::top_encode_to_vec_u8_or_panic, }, storage::mappers::SingleValue, - types::{ - Address, AddressExpr, CodeMetadata, ContractCallNoPayment, FunctionCall, ReturnsExact, - ScExpr, - }, + types::{Address, AddressExpr, CodeMetadata, FunctionCall, ReturnsExact}, }; use multiversx_sc_scenario::{ api::StaticApi, @@ -129,12 +126,12 @@ impl MultisigTestState { fn propose_add_board_member(&mut self, board_member_address: Address) -> usize { self.world.tx_return(|tx| { tx.from(AddressExpr("proposer")) - .to(ScExpr("multisig")) + // .to(ScExpr("multisig")) .call( self.multisig_contract .propose_add_board_member(board_member_address), ) - .original_result::() + // .original_result::() .returns(ReturnsExact) }) } @@ -160,32 +157,28 @@ impl MultisigTestState { &mut self, to: Address, egld_amount: u64, - contract_call: ContractCallNoPayment, + contract_call: FunctionCall, ) -> usize { - self.world - .sc_call_get_result(ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( - self.multisig_contract.propose_transfer_execute( - to, - egld_amount, - contract_call.into_function_call(), - ), - )) + self.world.sc_call_get_result( + ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( + self.multisig_contract + .propose_transfer_execute(to, egld_amount, contract_call), + ), + ) } fn propose_async_call( &mut self, to: Address, egld_amount: u64, - contract_call: ContractCallNoPayment, + contract_call: FunctionCall, ) -> usize { - self.world - .sc_call_get_result(ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( - self.multisig_contract.propose_async_call( - to, - egld_amount, - contract_call.into_function_call(), - ), - )) + self.world.sc_call_get_result( + ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( + self.multisig_contract + .propose_async_call(to, egld_amount, contract_call), + ), + ) } fn propose_remove_user(&mut self, user_address: Address) -> usize { @@ -478,7 +471,7 @@ fn test_transfer_execute_sc_all() { let mut state = MultisigTestState::new(); state.deploy_multisig_contract().deploy_adder_contract(); - let adder_call = state.adder_contract.add(5u64); + let adder_call = state.adder_contract.add(5u64).into_function_call(); let action_id = state.propose_transfer_execute(state.adder_address.clone(), 0u64, adder_call); state.sign(action_id); @@ -496,7 +489,7 @@ fn test_async_call_to_sc() { let mut state = MultisigTestState::new(); state.deploy_multisig_contract().deploy_adder_contract(); - let adder_call = state.adder_contract.add(5u64); + let adder_call = state.adder_contract.add(5u64).into_function_call(); let action_id = state.propose_async_call(state.adder_address.clone(), 0u64, adder_call); state.sign(action_id); @@ -537,7 +530,7 @@ fn test_deploy_and_upgrade_from_source() { .expect_value(OptionalValue::Some(new_adder_address.clone())), ); - let adder_call = state.adder_contract.add(5u64); + let adder_call = state.adder_contract.add(5u64).into_function_call(); let action_id = state.propose_transfer_execute(new_adder_address, 0u64, adder_call); state.sign(action_id); diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs index da9684608a..393aab3a73 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs @@ -10,7 +10,7 @@ pub trait ForwarderRawDeployUpgrade { args: MultiValueEncoded, ) -> MultiValue2> { self.tx() - .deploy() + .raw_deploy() .code(code) .code_metadata(code_metadata) .arguments_raw(args.to_arg_buffer()) diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_sync.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_sync.rs index c77fd503f9..f235aca1da 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_sync.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_sync.rs @@ -16,11 +16,12 @@ pub trait ForwarderRawSync: super::forwarder_raw_common::ForwarderRawCommon { .tx() .to(to) .egld(payment) + .raw_call() .function_name(endpoint_name) .argument(&args) .with_gas_limit(half_gas) .returns(ReturnsRaw) - .execute_on_dest_context(); + .sync_call(); self.execute_on_dest_context_result(result); } diff --git a/framework/base/src/contract_base/proxy_obj_base.rs b/framework/base/src/contract_base/proxy_obj_base.rs index d7849c8432..0d3053d8f4 100644 --- a/framework/base/src/contract_base/proxy_obj_base.rs +++ b/framework/base/src/contract_base/proxy_obj_base.rs @@ -1,10 +1,11 @@ use crate::{ api::VMApi, - types::{ManagedAddress, ManagedOption}, + types::{ManagedAddress, ManagedOption, TxScEnv, TxTo}, }; pub trait ProxyObjBase { type Api: VMApi; + type To: TxTo>; /// Extracts the address contained in the proxy object and replaces it with None. /// @@ -17,6 +18,9 @@ pub trait ProxyObjBase { /// Will crash if no address was specified. #[doc(hidden)] fn extract_address(&mut self) -> ManagedAddress; + + #[doc(hidden)] + fn extract_proxy_to(&mut self) -> Self::To; } pub trait ProxyObjNew: ProxyObjBase { diff --git a/framework/base/src/types/interaction/async_call.rs b/framework/base/src/types/interaction/async_call.rs index 5c3b57c5c8..94756810b1 100644 --- a/framework/base/src/types/interaction/async_call.rs +++ b/framework/base/src/types/interaction/async_call.rs @@ -35,11 +35,11 @@ where } } -impl AsyncCall -where - Api: CallTypeApi + StorageWriteApi, -{ - pub fn call_and_exit(self) -> ! { - self.async_call_and_exit() - } -} +// impl AsyncCall +// where +// Api: CallTypeApi + StorageWriteApi, +// { +// pub fn call_and_exit(self) -> ! { +// self.async_call_and_exit() +// } +// } diff --git a/framework/base/src/types/interaction/contract_call_exec.rs b/framework/base/src/types/interaction/contract_call_exec.rs index e5df812886..29a1a0587c 100644 --- a/framework/base/src/types/interaction/contract_call_exec.rs +++ b/framework/base/src/types/interaction/contract_call_exec.rs @@ -74,7 +74,7 @@ where Tx::new_tx_from_sc() .to(self.basic.to) .egld(self.egld_payment) - .call(self.basic.function_call) + .function_call(self.basic.function_call) .callback(None) } } diff --git a/framework/base/src/types/interaction/contract_call_no_payment.rs b/framework/base/src/types/interaction/contract_call_no_payment.rs index 4fc75125a5..75e03d9d07 100644 --- a/framework/base/src/types/interaction/contract_call_no_payment.rs +++ b/framework/base/src/types/interaction/contract_call_no_payment.rs @@ -11,7 +11,8 @@ use crate::{ }; use super::{ - contract_call_exec::UNSPECIFIED_GAS_LIMIT, contract_call_with_egld::ContractCallWithEgld, + contract_call_exec::UNSPECIFIED_GAS_LIMIT, contract_call_trait::ContractCallBase, + contract_call_with_egld::ContractCallWithEgld, contract_call_with_multi_esdt::ContractCallWithMultiEsdt, ContractCall, ContractCallWithAnyPayment, ContractCallWithEgldOrSingleEsdt, FunctionCall, ManagedArgBuffer, Tx, TxScEnv, @@ -35,7 +36,7 @@ where pub(super) _return_type: PhantomData, } -impl ContractCall for ContractCallNoPayment +impl ContractCallBase for ContractCallNoPayment where SA: CallTypeApi + 'static, OriginalResult: TopEncodeMulti, @@ -49,7 +50,13 @@ where egld_payment: BigUint::zero(), } } +} +impl ContractCall for ContractCallNoPayment +where + SA: CallTypeApi + 'static, + OriginalResult: TopEncodeMulti, +{ #[inline] fn get_mut_basic(&mut self) -> &mut ContractCallNoPayment { self @@ -169,6 +176,6 @@ where } pub fn tx(self) -> Tx, (), (), (), (), FunctionCall, ()> { - Tx::new_tx_from_sc().call(self.function_call) + Tx::new_tx_from_sc().function_call(self.function_call) } } diff --git a/framework/base/src/types/interaction/contract_call_trait.rs b/framework/base/src/types/interaction/contract_call_trait.rs index f29d711847..3a3e034008 100644 --- a/framework/base/src/types/interaction/contract_call_trait.rs +++ b/framework/base/src/types/interaction/contract_call_trait.rs @@ -6,10 +6,7 @@ use crate::{ use super::{AsyncCall, ContractCallNoPayment, ContractCallWithEgld, ManagedArgBuffer}; -/// Defines a contract call object, which is the basis for all calls to other contracts. -/// -/// Its implementations differ on the type of payment that gets sent with the call. -pub trait ContractCall: Sized +pub trait ContractCallBase where SA: CallTypeApi + 'static, { @@ -19,7 +16,15 @@ where /// thus reducing it to a simple transaction with optional EGLD value. #[doc(hidden)] fn into_normalized(self) -> ContractCallWithEgld; +} +/// Defines a contract call object, which is the basis for all calls to other contracts. +/// +/// Its implementations differ on the type of payment that gets sent with the call. +pub trait ContractCall: ContractCallBase + Sized +where + SA: CallTypeApi + 'static, +{ /// Mutable access to the common base. #[doc(hidden)] fn get_mut_basic(&mut self) -> &mut ContractCallNoPayment; diff --git a/framework/base/src/types/interaction/contract_call_with_any_payment.rs b/framework/base/src/types/interaction/contract_call_with_any_payment.rs index 07f468a671..d195cb3889 100644 --- a/framework/base/src/types/interaction/contract_call_with_any_payment.rs +++ b/framework/base/src/types/interaction/contract_call_with_any_payment.rs @@ -5,7 +5,10 @@ use crate::{ types::{EgldOrMultiEsdtPayment, ManagedAddress, ManagedBuffer}, }; -use super::{contract_call_no_payment::ContractCallNoPayment, ContractCall, ContractCallWithEgld}; +use super::{ + contract_call_no_payment::ContractCallNoPayment, contract_call_trait::ContractCallBase, + ContractCall, ContractCallWithEgld, +}; /// Holds data for calling another contract, with any type of payment: none, EGLD, Multi-ESDT. /// @@ -19,7 +22,7 @@ where pub payment: EgldOrMultiEsdtPayment, } -impl ContractCall for ContractCallWithAnyPayment +impl ContractCallBase for ContractCallWithAnyPayment where SA: CallTypeApi + 'static, OriginalResult: TopEncodeMulti, @@ -35,7 +38,13 @@ where .convert_to_esdt_transfer_call(multi_esdt_payment), } } +} +impl ContractCall for ContractCallWithAnyPayment +where + SA: CallTypeApi + 'static, + OriginalResult: TopEncodeMulti, +{ #[inline] fn get_mut_basic(&mut self) -> &mut ContractCallNoPayment { &mut self.basic diff --git a/framework/base/src/types/interaction/contract_call_with_egld.rs b/framework/base/src/types/interaction/contract_call_with_egld.rs index 9d856cf7b5..9d6d749b08 100644 --- a/framework/base/src/types/interaction/contract_call_with_egld.rs +++ b/framework/base/src/types/interaction/contract_call_with_egld.rs @@ -5,7 +5,10 @@ use crate::{ types::{BigUint, ManagedAddress, ManagedBuffer}, }; -use super::{contract_call_no_payment::ContractCallNoPayment, ContractCall}; +use super::{ + contract_call_no_payment::ContractCallNoPayment, contract_call_trait::ContractCallBase, + ContractCall, +}; /// Holds data for calling another contract, with EGLD payment only. /// @@ -24,7 +27,7 @@ where pub egld_payment: BigUint, } -impl ContractCall for ContractCallWithEgld +impl ContractCallBase for ContractCallWithEgld where SA: CallTypeApi + 'static, OriginalResult: TopEncodeMulti, @@ -36,7 +39,13 @@ where // no ESDT, no conversion needed self } +} +impl ContractCall for ContractCallWithEgld +where + SA: CallTypeApi + 'static, + OriginalResult: TopEncodeMulti, +{ #[inline] fn get_mut_basic(&mut self) -> &mut ContractCallNoPayment { &mut self.basic diff --git a/framework/base/src/types/interaction/contract_call_with_egld_or_single_esdt.rs b/framework/base/src/types/interaction/contract_call_with_egld_or_single_esdt.rs index 66d0b27a41..843653a532 100644 --- a/framework/base/src/types/interaction/contract_call_with_egld_or_single_esdt.rs +++ b/framework/base/src/types/interaction/contract_call_with_egld_or_single_esdt.rs @@ -7,7 +7,10 @@ use crate::{ }, }; -use super::{contract_call_no_payment::ContractCallNoPayment, ContractCall, ContractCallWithEgld}; +use super::{ + contract_call_no_payment::ContractCallNoPayment, contract_call_trait::ContractCallBase, + ContractCall, ContractCallWithEgld, +}; /// Holds data for calling another contract, with a single payment, either EGLD or a single ESDT token. /// @@ -40,7 +43,8 @@ where } } -impl ContractCall for ContractCallWithEgldOrSingleEsdt +impl ContractCallBase + for ContractCallWithEgldOrSingleEsdt where SA: CallTypeApi + 'static, OriginalResult: TopEncodeMulti, @@ -56,7 +60,13 @@ where self.into_normalized_esdt() } } +} +impl ContractCall for ContractCallWithEgldOrSingleEsdt +where + SA: CallTypeApi + 'static, + OriginalResult: TopEncodeMulti, +{ #[inline] fn get_mut_basic(&mut self) -> &mut ContractCallNoPayment { &mut self.basic diff --git a/framework/base/src/types/interaction/contract_call_with_multi_esdt.rs b/framework/base/src/types/interaction/contract_call_with_multi_esdt.rs index 240d4ac270..d93f023db9 100644 --- a/framework/base/src/types/interaction/contract_call_with_multi_esdt.rs +++ b/framework/base/src/types/interaction/contract_call_with_multi_esdt.rs @@ -7,7 +7,10 @@ use crate::{ }, }; -use super::{contract_call_no_payment::ContractCallNoPayment, ContractCall, ContractCallWithEgld}; +use super::{ + contract_call_no_payment::ContractCallNoPayment, contract_call_trait::ContractCallBase, + ContractCall, ContractCallWithEgld, +}; #[must_use] pub struct ContractCallWithMultiEsdt @@ -18,7 +21,7 @@ where pub esdt_payments: ManagedVec>, } -impl ContractCall for ContractCallWithMultiEsdt +impl ContractCallBase for ContractCallWithMultiEsdt where SA: CallTypeApi + 'static, OriginalResult: TopEncodeMulti, @@ -30,7 +33,13 @@ where .into_normalized() .convert_to_esdt_transfer_call(self.esdt_payments) } +} +impl ContractCall for ContractCallWithMultiEsdt +where + SA: CallTypeApi + 'static, + OriginalResult: TopEncodeMulti, +{ #[inline] fn get_mut_basic(&mut self) -> &mut ContractCallNoPayment { &mut self.basic diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index ebacd944c6..636f31738c 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -47,7 +47,7 @@ pub use callback_closure::{ }; pub use callback_selector_result::CallbackSelectorResult; pub use contract_call_no_payment::ContractCallNoPayment; -pub use contract_call_trait::ContractCall; +pub use contract_call_trait::{ContractCall, ContractCallBase}; pub use contract_call_with_any_payment::ContractCallWithAnyPayment; pub use contract_call_with_egld::ContractCallWithEgld; pub use contract_call_with_egld_or_single_esdt::ContractCallWithEgldOrSingleEsdt; diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 283a1c656d..82142e8c6f 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -2,18 +2,19 @@ use crate::{ api::{self, CallTypeApi, ManagedTypeApi}, contract_base::{BlockchainWrapper, SendRawWrapper}, types::{ - BigUint, CodeMetadata, EgldPayment, EsdtTokenPayment, ManagedAddress, ManagedBuffer, - ManagedVec, MultiEsdtPayment, + BigUint, CodeMetadata, EgldOrEsdtTokenPayment, EgldPayment, EsdtTokenPayment, + ManagedAddress, ManagedBuffer, ManagedVec, MultiEsdtPayment, }, }; use alloc::boxed::Box; use multiversx_sc_codec::TopEncodeMulti; use super::{ - AsyncCall, DeployCall, ExplicitGas, FunctionCall, ManagedArgBuffer, OriginalResultMarker, - RHList, RHListAppendNoRet, RHListAppendRet, RHListItem, TxData, TxDataFunctionCall, TxEnv, - TxFrom, TxFromSpecified, TxGas, TxPayment, TxPaymentEgldOnly, TxResultHandler, TxScEnv, TxTo, - TxToSpecified, + contract_call_exec::UNSPECIFIED_GAS_LIMIT, contract_call_trait::ContractCallBase, AsyncCall, + ContractCallNoPayment, ContractCallWithEgld, DeployCall, ExplicitGas, FunctionCall, + ManagedArgBuffer, OriginalResultMarker, RHList, RHListAppendNoRet, RHListAppendRet, RHListItem, + TxData, TxDataFunctionCall, TxEnv, TxFrom, TxFromSpecified, TxGas, TxPayment, + TxPaymentEgldOnly, TxResultHandler, TxScEnv, TxTo, TxToSpecified, }; #[must_use] @@ -92,12 +93,10 @@ where { pub fn from(self, from: From) -> Tx where - From: TxFromSpecified, + From: TxFrom, { - let mut env = self.env; - env.annotate_from(&from); Tx { - env, + env: self.env, from, to: self.to, payment: self.payment, @@ -117,14 +116,15 @@ where Data: TxData, RH: TxResultHandler, { + /// Specifies the recipient of the transaction. + /// + /// Allows argument to also be `()`. pub fn to(self, to: To) -> Tx where - To: TxToSpecified, + To: TxTo, { - let mut env = self.env; - env.annotate_to(&to); Tx { - env, + env: self.env, from: self.from, to, payment: self.payment, @@ -163,6 +163,13 @@ where result_handler: self.result_handler, } } + + pub fn with_egld_transfer( + self, + egld_amount: BigUint, + ) -> Tx, Gas, Data, RH> { + self.egld(egld_amount) + } } impl Tx @@ -207,6 +214,37 @@ where result_handler: self.result_handler, } } + + /// Backwards compatibility. + pub fn with_multi_token_transfer( + self, + payments: MultiEsdtPayment, // TODO: references + ) -> Tx, Gas, Data, RH> { + self.multi_esdt(payments) + } + + pub fn egld_or_single_esdt>>( + self, + payment: P, + ) -> Tx, Gas, Data, RH> { + Tx { + env: self.env, + from: self.from, + to: self.to, + payment: payment.into(), + gas: self.gas, + data: self.data, + result_handler: self.result_handler, + } + } + + /// Backwards compatibility. + pub fn with_egld_or_single_esdt_transfer>>( + self, + payment: P, + ) -> Tx, Gas, Data, RH> { + self.egld_or_single_esdt(payment) + } } impl Tx, Gas, Data, RH> @@ -288,43 +326,41 @@ where } } -impl Tx +impl Tx where Env: TxEnv, From: TxFrom, To: TxTo, Payment: TxPayment, Gas: TxGas, + RH: TxResultHandler, { #[inline] - pub fn call>>( - self, - call: FC, - ) -> Tx, ()> { + pub fn raw_call(self) -> Tx, RH> { Tx { env: self.env, from: self.from, to: self.to, payment: self.payment, gas: self.gas, - data: call.into(), - result_handler: (), + data: FunctionCall::empty(), + result_handler: self.result_handler, } } #[inline] - pub fn function_name>>( + pub fn function_call( self, - function_name: N, - ) -> Tx, ()> { + call: FunctionCall, + ) -> Tx, RH> { Tx { env: self.env, from: self.from, to: self.to, payment: self.payment, gas: self.gas, - data: FunctionCall::new(function_name), - result_handler: (), + data: call, + result_handler: self.result_handler, } } } @@ -338,6 +374,59 @@ where Gas: TxGas, RH: TxResultHandler, { + pub fn into_function_call(self) -> FunctionCall { + self.data + } +} + +impl Tx +where + Env: TxEnv, + From: TxFrom, + Payment: TxPayment, + Gas: TxGas, +{ + /// Merges the argument data into the current tx. + /// Used for function calls originating in proxies. + /// + /// Different environment in the argument allowed because of compatibility with old proxies. + /// + /// Method still subject to considerable change. + pub fn call( + self, + call: Tx, OriginalResultMarker>, + ) -> Tx, OriginalResultMarker> + where + Env2: TxEnv, + To: TxTo + TxTo, + { + Tx { + env: self.env, + from: self.from, + to: call.to, + payment: self.payment, + gas: self.gas, + data: call.data, + result_handler: call.result_handler, + } + } +} + +impl Tx, RH> +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Payment: TxPayment, + Gas: TxGas, + RH: TxResultHandler, +{ + #[inline] + pub fn function_name>>(mut self, function_name: N) -> Self { + self.data.function_name = function_name.into(); + self + } + #[inline] pub fn argument(mut self, arg: &T) -> Self { self.data = self.data.argument(arg); @@ -467,6 +556,39 @@ where } } +impl ContractCallBase + for Tx< + TxScEnv, + (), + To, + Payment, + (), + FunctionCall, + OriginalResultMarker, + > +where + Api: CallTypeApi + 'static, + To: TxToSpecified>, + Payment: TxPayment>, + OriginalResult: TopEncodeMulti, +{ + type OriginalResult = OriginalResult; + + fn into_normalized(self) -> ContractCallWithEgld { + let normalized = self.normalize_tx(); + ContractCallWithEgld { + basic: ContractCallNoPayment { + _phantom: core::marker::PhantomData, + to: normalized.to, + function_call: normalized.data, + explicit_gas_limit: UNSPECIFIED_GAS_LIMIT, + _return_type: core::marker::PhantomData, + }, + egld_payment: normalized.payment.value, + } + } +} + impl Tx where Env: TxEnv, @@ -474,7 +596,7 @@ where Gas: TxGas, Data: TxData, { - pub fn deploy(self) -> Tx, ()> { + pub fn raw_deploy(self) -> Tx, ()> { Tx { env: self.env, from: self.from, diff --git a/framework/base/src/types/interaction/tx_call_async.rs b/framework/base/src/types/interaction/tx_call_async.rs index c1035b902b..0b283db590 100644 --- a/framework/base/src/types/interaction/tx_call_async.rs +++ b/framework/base/src/types/interaction/tx_call_async.rs @@ -5,8 +5,8 @@ use crate::{ }; use super::{ - Tx, TxData, TxDataFunctionCall, TxEnv, TxFrom, TxGas, TxPayment, TxResultHandler, TxScEnv, - TxTo, TxToSpecified, + OriginalResultMarker, Tx, TxData, TxDataFunctionCall, TxEnv, TxFrom, TxGas, TxPayment, + TxResultHandler, TxScEnv, TxTo, TxToSpecified, }; pub trait TxAsyncCallCallback: TxResultHandler> @@ -23,6 +23,13 @@ where fn save_callback_closure_to_storage(&self) {} } +impl TxAsyncCallCallback for OriginalResultMarker +where + Api: CallTypeApi, +{ + fn save_callback_closure_to_storage(&self) {} +} + impl TxResultHandler> for CallbackClosure where Api: CallTypeApi, @@ -57,17 +64,42 @@ where } } -impl Tx, From, To, Payment, Gas, Data, ()> +impl Tx, (), To, Payment, Gas, Data, ()> where Api: CallTypeApi, - From: TxFrom>, To: TxTo>, Payment: TxPayment>, Gas: TxGas>, Data: TxData>, { #[inline] - pub fn callback(self, callback: RH) -> Tx, From, To, Payment, Gas, Data, RH> + pub fn callback(self, callback: RH) -> Tx, (), To, Payment, Gas, Data, RH> + where + RH: TxAsyncCallCallback, + { + Tx { + env: self.env, + from: self.from, + to: self.to, + payment: self.payment, + gas: self.gas, + data: self.data, + result_handler: callback, + } + } +} + +impl + Tx, (), To, Payment, Gas, FC, OriginalResultMarker> +where + Api: CallTypeApi, + To: TxToSpecified>, + Payment: TxPayment>, + Gas: TxGas>, + FC: TxDataFunctionCall>, +{ + /// Backwards compatibility. + pub fn with_callback(self, callback: RH) -> Tx, (), To, Payment, Gas, FC, RH> where RH: TxAsyncCallCallback, { @@ -101,4 +133,33 @@ where &normalized.data.arg_buffer, ) } + + pub fn call_and_exit(self) -> ! { + self.async_call_and_exit() + } +} + +impl Tx +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Payment: TxPayment, + Gas: TxGas, + Data: TxData, + RH: TxResultHandler, +{ + /// Backwards compatibility only. + #[inline] + pub fn async_call(self) -> Tx { + Tx { + env: self.env, + from: self.from, + to: self.to, + payment: self.payment, + gas: self.gas, + data: self.data, + result_handler: self.result_handler, + } + } } diff --git a/framework/base/src/types/interaction/tx_call_async_promises.rs b/framework/base/src/types/interaction/tx_call_async_promises.rs index a97fdeb858..acf23e030d 100644 --- a/framework/base/src/types/interaction/tx_call_async_promises.rs +++ b/framework/base/src/types/interaction/tx_call_async_promises.rs @@ -5,8 +5,8 @@ use crate::{ }; use super::{ - callback_closure::CallbackClosureWithGas, ExplicitGas, FunctionCall, Tx, TxGas, TxPayment, - TxResultHandler, TxScEnv, TxToSpecified, + callback_closure::CallbackClosureWithGas, ExplicitGas, FunctionCall, OriginalResultMarker, Tx, + TxGas, TxPayment, TxResultHandler, TxScEnv, TxToSpecified, }; pub trait TxPromisesCallback: TxResultHandler> @@ -37,6 +37,23 @@ where } } +impl TxPromisesCallback for OriginalResultMarker +where + Api: CallTypeApi, +{ + fn callback_name(&self) -> &'static str { + "" + } + + fn overwrite_with_serialized_args(&self, cb_closure_args_serialized: &mut ManagedBuffer) { + cb_closure_args_serialized.overwrite(&[]); + } + + fn gas_for_callback(&self) -> u64 { + 0 + } +} + impl TxResultHandler> for CallbackClosureWithGas where Api: CallTypeApi, @@ -89,6 +106,15 @@ where }, } } + + /// Backwards compatibility. + pub fn with_extra_gas_for_callback( + self, + gas: u64, + ) -> Tx, (), To, Payment, Gas, FunctionCall, CallbackClosureWithGas> + { + self.gas_for_callback(gas) + } } impl @@ -99,7 +125,7 @@ where Payment: TxPayment>, Callback: TxPromisesCallback, { - pub fn async_call_promise(self) { + pub fn register_promise(self) { let callback_name = self.result_handler.callback_name(); let mut cb_closure_args_serialized = ManagedBuffer::::from_raw_handle(const_handles::MBUF_TEMPORARY_1); @@ -122,3 +148,20 @@ where ) } } + +impl + Tx, (), To, Payment, Gas, FunctionCall, Callback> +where + Api: CallTypeApi, + To: TxToSpecified>, + Payment: TxPayment>, + Gas: TxGas>, + Payment: TxPayment>, + Callback: TxPromisesCallback, +{ + /// Backwards compatibility only. + #[inline] + pub fn async_call_promise(self) -> Self { + self + } +} diff --git a/framework/base/src/types/interaction/tx_call_sync.rs b/framework/base/src/types/interaction/tx_call_sync.rs index c02452baae..2aaef2c26c 100644 --- a/framework/base/src/types/interaction/tx_call_sync.rs +++ b/framework/base/src/types/interaction/tx_call_sync.rs @@ -1,3 +1,5 @@ +use multiversx_sc_codec::TopDecodeMulti; + use crate::{ api::CallTypeApi, contract_base::SendRawWrapper, @@ -6,8 +8,8 @@ use crate::{ }; use super::{ - ConsNoRet, ConsRet, OriginalResultMarker, RHList, RHListItem, Tx, TxDataFunctionCall, TxEnv, - TxGas, TxPayment, TxScEnv, TxToSpecified, + contract_call_exec::decode_result, BackTransfers, ConsNoRet, ConsRet, OriginalResultMarker, + RHList, RHListItem, Tx, TxDataFunctionCall, TxEnv, TxGas, TxPayment, TxScEnv, TxToSpecified, }; pub trait RHListItemSync: RHListItem @@ -93,7 +95,7 @@ where RH: RHListSync>, RH::ListReturns: NestedTupleFlatten, { - pub fn execute_on_dest_context(self) -> ::Unpacked { + fn execute_sync_call_raw(self) -> (ManagedVec>, RH) { let gas_limit = self.gas.resolve_gas(&self.env); let normalized = self.normalize_tx(); @@ -107,7 +109,46 @@ where SendRawWrapper::::new().clean_return_data(); - let tuple_result = normalized.result_handler.list_sync_call_result(&raw_result); + (raw_result, normalized.result_handler) + } + + pub fn sync_call(self) -> ::Unpacked { + let (raw_result, result_handler) = self.execute_sync_call_raw(); + + let tuple_result = result_handler.list_sync_call_result(&raw_result); tuple_result.flatten_unpack() } } + +impl + Tx, (), To, Payment, Gas, FC, OriginalResultMarker> +where + Api: CallTypeApi, + To: TxToSpecified>, + Payment: TxPayment>, + Gas: TxGas>, + FC: TxDataFunctionCall>, +{ + /// Backwards compatibility. + pub fn execute_on_dest_context(self) -> RequestedResult + where + RequestedResult: TopDecodeMulti, + { + let (raw_result, _) = self.execute_sync_call_raw(); + decode_result(raw_result) + } + + /// Backwards compatibility. + pub fn execute_on_dest_context_with_back_transfers( + self, + ) -> (RequestedResult, BackTransfers) + where + RequestedResult: TopDecodeMulti, + { + let result = self.execute_on_dest_context(); + let back_transfers = + crate::contract_base::BlockchainWrapper::::new().get_back_transfers(); + + (result, back_transfers) + } +} diff --git a/framework/base/src/types/interaction/tx_call_te.rs b/framework/base/src/types/interaction/tx_call_te.rs index 9a08d5cbb5..0f1157d570 100644 --- a/framework/base/src/types/interaction/tx_call_te.rs +++ b/framework/base/src/types/interaction/tx_call_te.rs @@ -1,8 +1,11 @@ use crate::api::CallTypeApi; -use super::{FunctionCall, Tx, TxData, TxFrom, TxGas, TxPayment, TxScEnv, TxToSpecified}; +use super::{ + FunctionCall, Tx, TxData, TxEmptyResultHandler, TxFrom, TxGas, TxPayment, TxScEnv, + TxToSpecified, +}; -impl Tx, From, To, Payment, Gas, FC, ()> +impl Tx, From, To, Payment, Gas, FC, RH> where Api: CallTypeApi, From: TxFrom>, @@ -10,6 +13,7 @@ where Payment: TxPayment>, Gas: TxGas>, FC: TxData> + Into>, + RH: TxEmptyResultHandler>, { fn transfer_execute_with_gas(self, gas_limit: u64) { self.to.with_value_ref(|to| { diff --git a/framework/base/src/types/interaction/tx_result_handler.rs b/framework/base/src/types/interaction/tx_result_handler.rs index 838e9fa4d8..311679c442 100644 --- a/framework/base/src/types/interaction/tx_result_handler.rs +++ b/framework/base/src/types/interaction/tx_result_handler.rs @@ -13,3 +13,14 @@ where { type OriginalResult = (); } + +/// Indicates that given result handler is empty, i.e. doesn't cause any side effects and returns nothing. +/// +/// Implemented for `()` and `OriginalResultMarker`. +pub trait TxEmptyResultHandler: TxResultHandler +where + Env: TxEnv, +{ +} + +impl TxEmptyResultHandler for () where Env: TxEnv {} diff --git a/framework/base/src/types/interaction/tx_rh_original_result.rs b/framework/base/src/types/interaction/tx_rh_original_result.rs index e402b1686a..cfbe36aef8 100644 --- a/framework/base/src/types/interaction/tx_rh_original_result.rs +++ b/framework/base/src/types/interaction/tx_rh_original_result.rs @@ -1,6 +1,6 @@ use core::marker::PhantomData; -use super::{TxEnv, TxResultHandler}; +use super::{TxEmptyResultHandler, TxEnv, TxResultHandler}; /// Contains no data. /// @@ -32,3 +32,5 @@ where { type OriginalResult = O; } + +impl TxEmptyResultHandler for OriginalResultMarker where Env: TxEnv {} diff --git a/framework/derive/src/generate/proxy_gen.rs b/framework/derive/src/generate/proxy_gen.rs index bc44d03b95..9fcdf60490 100644 --- a/framework/derive/src/generate/proxy_gen.rs +++ b/framework/derive/src/generate/proxy_gen.rs @@ -45,6 +45,24 @@ pub fn proxy_arg_gen( } pub fn generate_proxy_method_sig( + method: &Method, + return_type: proc_macro2::TokenStream, +) -> proc_macro2::TokenStream { + let method_name = &method.name; + let mut generics = method.generics.clone(); + let generics_where = &method.generics.where_clause; + let arg_decl = proxy_arg_gen(&method.method_args, &mut generics); + let result = quote! { + fn #method_name #generics ( + &mut self, + #(#arg_decl),* + ) -> #return_type + #generics_where + }; + result +} + +pub fn generate_proxy_method_sig_old( method: &Method, proxy_return_struct_path: proc_macro2::TokenStream, ) -> proc_macro2::TokenStream { @@ -67,6 +85,11 @@ pub fn generate_proxy_method_sig( } pub fn generate_proxy_endpoint(m: &Method, endpoint_name: String) -> proc_macro2::TokenStream { + let original_type = match &m.return_type { + syn::ReturnType::Default => quote! { () }, + syn::ReturnType::Type(_, ty) => quote! { #ty }, + }; + let mut token_count = 0; let mut token_expr = quote! { multiversx_sc::types::EgldOrEsdtTokenIdentifier::::egld() }; @@ -84,7 +107,7 @@ pub fn generate_proxy_endpoint(m: &Method, endpoint_name: String) -> proc_macro2 ArgPaymentMetadata::NotPayment => { let pat = &arg.pat; arg_push_snippets.push(quote! { - multiversx_sc::types::ContractCall::proxy_arg(&mut ___contract_call___, &#pat); + .argument(&#pat) }); }, ArgPaymentMetadata::PaymentToken => { @@ -127,62 +150,58 @@ pub fn generate_proxy_endpoint(m: &Method, endpoint_name: String) -> proc_macro2 "No more than one payment multi argument allowed in call proxy" ); - let contract_call_type; - let contract_call_init; + let payment_type; + let payment_init; if token_count > 0 || nonce_count > 0 || payment_count > 0 { assert!(multi_count == 0, "#[payment_multi] cannot coexist with any other payment annotation in the same endpoint"); if token_count == 0 && nonce_count == 0 { - contract_call_type = quote! { multiversx_sc::types::ContractCallWithEgld }; - contract_call_init = quote! { - let mut ___contract_call___ = multiversx_sc::types::ContractCallWithEgld::new( - ___address___, - #endpoint_name, - #payment_expr, - ); - }; + payment_type = quote! { multiversx_sc::types::EgldPayment }; + payment_init = quote! { .egld(#payment_expr) }; } else { - contract_call_type = quote! { multiversx_sc::types::ContractCallWithEgldOrSingleEsdt }; - contract_call_init = quote! { - let mut ___contract_call___ = multiversx_sc::types::ContractCallWithEgldOrSingleEsdt::new( - ___address___, - #endpoint_name, + payment_type = quote! { multiversx_sc::types::EgldOrEsdtTokenPayment }; + payment_init = quote! { .egld_or_single_esdt( + multiversx_sc::types::EgldOrEsdtTokenPayment::new( #token_expr, #nonce_expr, #payment_expr, - ); - }; + ) + )}; } } else if multi_count > 0 { let multi_expr = multi_expr_opt.unwrap(); - contract_call_type = quote! { multiversx_sc::types::ContractCallWithMultiEsdt }; - contract_call_init = quote! { - let mut ___contract_call___ = multiversx_sc::types::ContractCallWithMultiEsdt::new( - ___address___, - #endpoint_name, - #multi_expr.clone_value(), - ); - }; + payment_type = quote! { MultiEsdtPayment }; + payment_init = quote! { .multi_esdt(#multi_expr.clone_value()) }; } else { - contract_call_type = quote! { multiversx_sc::types::ContractCallNoPayment }; - contract_call_init = quote! { - let mut ___contract_call___ = multiversx_sc::types::ContractCallNoPayment::new( - ___address___, - #endpoint_name, - ); - }; + payment_type = quote! { () }; + payment_init = quote! {}; } - let msig = generate_proxy_method_sig(m, contract_call_type); + let return_type = quote! { + multiversx_sc::types::Tx< + multiversx_sc::types::TxScEnv, + (), + Self::To, + #payment_type, + (), + multiversx_sc::types::FunctionCall, + multiversx_sc::types::OriginalResultMarker<#original_type>, + > + }; + + let msig = generate_proxy_method_sig(m, return_type); let sig = quote! { #[allow(clippy::too_many_arguments)] #[allow(clippy::type_complexity)] #msig { - let ___address___ = self.extract_address(); - #contract_call_init - #(#arg_push_snippets)* - ___contract_call___ + multiversx_sc::types::TxBaseWithEnv::new_tx_from_sc() + .to(self.extract_proxy_to()) + .original_result() + .raw_call() + .function_name(#endpoint_name) + #payment_init + #(#arg_push_snippets)* } }; @@ -191,7 +210,7 @@ pub fn generate_proxy_endpoint(m: &Method, endpoint_name: String) -> proc_macro2 pub fn generate_proxy_deploy(init_method: &Method) -> proc_macro2::TokenStream { let msig = - generate_proxy_method_sig(init_method, quote! { multiversx_sc::types::ContractDeploy }); + generate_proxy_method_sig_old(init_method, quote! { multiversx_sc::types::ContractDeploy }); let mut payment_count = 0; let mut multi_count = 0; diff --git a/framework/derive/src/generate/snippets.rs b/framework/derive/src/generate/snippets.rs index dbe4717b55..6e66eb9ae4 100644 --- a/framework/derive/src/generate/snippets.rs +++ b/framework/derive/src/generate/snippets.rs @@ -81,13 +81,14 @@ pub fn proxy_object_def() -> proc_macro2::TokenStream { { _phantom: core::marker::PhantomData, } - + impl multiversx_sc::contract_base::ProxyObjBase for Proxy where A: multiversx_sc::api::VMApi + 'static, { type Api = A; - + type To = (); + fn extract_opt_address( &mut self, ) -> multiversx_sc::types::ManagedOption< @@ -96,34 +97,36 @@ pub fn proxy_object_def() -> proc_macro2::TokenStream { > { multiversx_sc::types::ManagedOption::none() } - + fn extract_address(&mut self) -> multiversx_sc::types::ManagedAddress { multiversx_sc::api::ErrorApiImpl::signal_error( &::error_api_impl(), multiversx_sc::err_msg::RECIPIENT_ADDRESS_NOT_SET.as_bytes(), ) } + + fn extract_proxy_to(&mut self) -> Self::To {} } - + impl multiversx_sc::contract_base::ProxyObjNew for Proxy where A: multiversx_sc::api::VMApi + 'static, { type ProxyTo = ProxyTo; - + fn new_proxy_obj() -> Self { Proxy { _phantom: core::marker::PhantomData, } } - + fn contract(mut self, address: multiversx_sc::types::ManagedAddress) -> Self::ProxyTo { ProxyTo { address: multiversx_sc::types::ManagedOption::some(address) } } } - + pub struct ProxyTo where A: multiversx_sc::api::VMApi + 'static, @@ -131,13 +134,14 @@ pub fn proxy_object_def() -> proc_macro2::TokenStream { pub address: multiversx_sc::types::ManagedOption>, } - + impl multiversx_sc::contract_base::ProxyObjBase for ProxyTo where A: multiversx_sc::api::VMApi + 'static, { type Api = A; - + type To = multiversx_sc::types::ManagedAddress; + fn extract_opt_address( &mut self, ) -> multiversx_sc::types::ManagedOption< @@ -149,7 +153,7 @@ pub fn proxy_object_def() -> proc_macro2::TokenStream { multiversx_sc::types::ManagedOption::none(), ) } - + fn extract_address(&mut self) -> multiversx_sc::types::ManagedAddress { let address = core::mem::replace( &mut self.address, @@ -157,6 +161,10 @@ pub fn proxy_object_def() -> proc_macro2::TokenStream { ); address.unwrap_or_sc_panic(multiversx_sc::err_msg::RECIPIENT_ADDRESS_NOT_SET) } + + fn extract_proxy_to(&mut self) -> Self::To { + self.extract_address() + } } } } diff --git a/framework/scenario/src/facade/world_tx/scenario_tx.rs b/framework/scenario/src/facade/world_tx/scenario_tx.rs index cfad562838..403116c825 100644 --- a/framework/scenario/src/facade/world_tx/scenario_tx.rs +++ b/framework/scenario/src/facade/world_tx/scenario_tx.rs @@ -1,6 +1,8 @@ use multiversx_sc::{ tuple_util::NestedTupleFlatten, - types::{FunctionCall, RHListSync, Tx, TxFromSpecified, TxGas, TxPayment, TxToSpecified}, + types::{ + FunctionCall, RHListSync, Tx, TxEnv, TxFromSpecified, TxGas, TxPayment, TxToSpecified, + }, }; use crate::{api::StaticApi, scenario_model::ScCallStep, ScenarioWorld}; @@ -56,6 +58,8 @@ where fn run_as_scenario_step(self, world: &mut ScenarioWorld) -> Self::Returns { let mut env = self.env; + env.annotate_from(&self.from); + env.annotate_to(&self.to); let mut step = ScCallStep::new() .from(env.from_annotation.as_ref().unwrap().as_str()) .to(env.to_annotation.as_ref().unwrap().as_str()) 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 f18bf4c2c5..e971cbaf23 100644 --- a/framework/scenario/src/scenario/model/step/sc_call_step.rs +++ b/framework/scenario/src/scenario/model/step/sc_call_step.rs @@ -1,4 +1,4 @@ -use multiversx_sc::types::H256; +use multiversx_sc::types::{ContractCallBase, H256}; use crate::{ api::StaticApi, @@ -138,7 +138,7 @@ impl ScCallStep { /// - "arguments" pub fn call(mut self, contract_call: CC) -> TypedScCall where - CC: ContractCall, + CC: ContractCallBase, { let (to_str, function, egld_value_expr, scenario_args) = process_contract_call(contract_call); @@ -224,7 +224,7 @@ pub(super) fn process_contract_call( contract_call: CC, ) -> (String, String, BigUintValue, Vec) where - CC: ContractCall, + CC: ContractCallBase, { let normalized_cc = contract_call.into_normalized(); let to_str = format!( diff --git a/framework/scenario/src/scenario/model/step/sc_query_step.rs b/framework/scenario/src/scenario/model/step/sc_query_step.rs index a3ada3b83b..8e62ff5473 100644 --- a/framework/scenario/src/scenario/model/step/sc_query_step.rs +++ b/framework/scenario/src/scenario/model/step/sc_query_step.rs @@ -1,4 +1,4 @@ -use multiversx_sc::types::H256; +use multiversx_sc::types::{ContractCallBase, H256}; use num_traits::Zero; use crate::{ @@ -67,7 +67,7 @@ impl ScQueryStep { /// - "arguments" pub fn call(mut self, contract_call: CC) -> TypedScQuery where - CC: ContractCall, + CC: ContractCallBase, { let (to_str, function, egld_value_expr, mandos_args) = process_contract_call(contract_call); assert!( diff --git a/framework/scenario/tests/contract_without_macros.rs b/framework/scenario/tests/contract_without_macros.rs index e58dcfb9ee..32779c7ba1 100644 --- a/framework/scenario/tests/contract_without_macros.rs +++ b/framework/scenario/tests/contract_without_macros.rs @@ -340,6 +340,7 @@ mod sample_adder { A: multiversx_sc::api::VMApi + 'static, { type Api = A; + type To = (); fn extract_opt_address( &mut self, @@ -356,6 +357,8 @@ mod sample_adder { multiversx_sc::err_msg::RECIPIENT_ADDRESS_NOT_SET.as_bytes(), ) } + + fn extract_proxy_to(&mut self) -> Self::To {} } impl multiversx_sc::contract_base::ProxyObjNew for Proxy @@ -370,9 +373,12 @@ mod sample_adder { } } - fn contract(mut self, address: multiversx_sc::types::ManagedAddress) -> Self::ProxyTo { + fn contract( + mut self, + address: multiversx_sc::types::ManagedAddress, + ) -> Self::ProxyTo { ProxyTo { - address: multiversx_sc::types::ManagedOption::some(address) + address: multiversx_sc::types::ManagedOption::some(address), } } } @@ -390,6 +396,7 @@ mod sample_adder { A: multiversx_sc::api::VMApi + 'static, { type Api = A; + type To = multiversx_sc::types::ManagedAddress; fn extract_opt_address( &mut self, @@ -410,6 +417,10 @@ mod sample_adder { ); address.unwrap_or_sc_panic(multiversx_sc::err_msg::RECIPIENT_ADDRESS_NOT_SET) } + + fn extract_proxy_to(&mut self) -> Self::To { + self.extract_address() + } } impl super::module_1::ProxyTrait for Proxy where A: multiversx_sc::api::VMApi {} diff --git a/framework/snippets/src/interactor_sc_extra.rs b/framework/snippets/src/interactor_sc_extra.rs index 177b38d4e1..277adcd6e9 100644 --- a/framework/snippets/src/interactor_sc_extra.rs +++ b/framework/snippets/src/interactor_sc_extra.rs @@ -3,7 +3,7 @@ use multiversx_sc_scenario::{ api::StaticApi, multiversx_sc::{ codec::{CodecFrom, TopEncodeMulti}, - types::{Address, ContractCall}, + types::{Address, ContractCallBase}, }, scenario_model::{ ScCallStep, ScDeployStep, ScQueryStep, TxResponse, TypedResponse, TypedScCall, @@ -98,7 +98,7 @@ impl Interactor { pub async fn quick_query(&mut self, contract_call: CC) -> RequestedResult where - CC: ContractCall, + CC: ContractCallBase, RequestedResult: CodecFrom, { let mut typed_sc_query = ScQueryStep::new().call(contract_call); From e9789928be9aa960da4213dee5c65ad968342bcf Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 14 Feb 2024 14:07:53 +0200 Subject: [PATCH 030/461] cleanup --- .../examples/multisig/tests/multisig_blackbox_test.rs | 2 -- framework/base/src/types/interaction/async_call.rs | 9 --------- 2 files changed, 11 deletions(-) diff --git a/contracts/examples/multisig/tests/multisig_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_blackbox_test.rs index f614d39062..1b3229318d 100644 --- a/contracts/examples/multisig/tests/multisig_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_blackbox_test.rs @@ -126,12 +126,10 @@ impl MultisigTestState { fn propose_add_board_member(&mut self, board_member_address: Address) -> usize { self.world.tx_return(|tx| { tx.from(AddressExpr("proposer")) - // .to(ScExpr("multisig")) .call( self.multisig_contract .propose_add_board_member(board_member_address), ) - // .original_result::() .returns(ReturnsExact) }) } diff --git a/framework/base/src/types/interaction/async_call.rs b/framework/base/src/types/interaction/async_call.rs index 94756810b1..5c3b60a41f 100644 --- a/framework/base/src/types/interaction/async_call.rs +++ b/framework/base/src/types/interaction/async_call.rs @@ -34,12 +34,3 @@ where self.async_call_and_exit() } } - -// impl AsyncCall -// where -// Api: CallTypeApi + StorageWriteApi, -// { -// pub fn call_and_exit(self) -> ! { -// self.async_call_and_exit() -// } -// } From 710f8dc1e2b8ece45b00398e3af7f8b42068c304 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Wed, 14 Feb 2024 17:08:34 +0200 Subject: [PATCH 031/461] minor changes --- .../meta/src/cli_args/cli_args_contract.rs | 34 ++++++++++++++----- .../generate_proxy/proxy_crate_gen.rs | 2 +- .../contract/generate_proxy/proxy_gen_main.rs | 4 +-- .../generate_snippets/snippet_gen_main.rs | 4 +-- 4 files changed, 30 insertions(+), 14 deletions(-) diff --git a/framework/meta/src/cli_args/cli_args_contract.rs b/framework/meta/src/cli_args/cli_args_contract.rs index 4d89137b29..37cda6afdc 100644 --- a/framework/meta/src/cli_args/cli_args_contract.rs +++ b/framework/meta/src/cli_args/cli_args_contract.rs @@ -65,13 +65,13 @@ pub enum ContractCliAction { name = "snippets", about = "Generates a snippets project, based on the contract ABI." )] - GenerateSnippets(GenerateOverwriteArg), + GenerateSnippets(GenerateSnippetsArgs), #[command( name = "proxy", about = "Generates a proxy, based on the contract ABI." )] - GenerateProxies(GenerateOverwriteArg), + GenerateProxies(GenerateProxyArgs), } impl CliArgsToRaw for ContractCliAction { @@ -99,13 +99,13 @@ impl CliArgsToRaw for ContractCliAction { ContractCliAction::Update => { raw.push("update".to_string()); }, - ContractCliAction::GenerateSnippets(arg) => { + ContractCliAction::GenerateSnippets(args) => { raw.push("snippets".to_string()); - raw.append(&mut arg.to_raw()); + raw.append(&mut args.to_raw()); }, - ContractCliAction::GenerateProxies(arg) => { + ContractCliAction::GenerateProxies(args) => { raw.push("proxy".to_string()); - raw.append(&mut arg.to_raw()); + raw.append(&mut args.to_raw()); }, } raw @@ -113,13 +113,29 @@ impl CliArgsToRaw for ContractCliAction { } #[derive(Default, Clone, PartialEq, Eq, Debug, Args)] -pub struct GenerateOverwriteArg { - /// Override file if it already exists. +pub struct GenerateSnippetsArgs { + /// Override snippets project if it already exists. + #[arg(long, verbatim_doc_comment)] + pub overwrite: bool, +} + +impl CliArgsToRaw for GenerateSnippetsArgs { + fn to_raw(&self) -> Vec { + let mut raw = Vec::new(); + if self.overwrite { + raw.push("--overwrite".to_string()); + } + raw + } +} +#[derive(Default, Clone, PartialEq, Eq, Debug, Args)] +pub struct GenerateProxyArgs { + /// Override TxProxy project if it already exists. #[arg(long, verbatim_doc_comment)] pub overwrite: bool, } -impl CliArgsToRaw for GenerateOverwriteArg { +impl CliArgsToRaw for GenerateProxyArgs { fn to_raw(&self) -> Vec { let mut raw = Vec::new(); if self.overwrite { diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_crate_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_crate_gen.rs index 00f38e40cf..b5e8c40013 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_crate_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_crate_gen.rs @@ -5,7 +5,7 @@ pub(crate) fn create_file(proxies_file_name: &str, overwrite: bool) -> File { let file = format!("../{proxies_file_name}"); if overwrite { - File::create(&file).unwrap() + File::create(&file).expect("could not write proxy file") } else { match File::options().create_new(true).write(true).open(&file) { Ok(f) => f, diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs index b81ba802dc..63c32d8530 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs @@ -2,7 +2,7 @@ use std::fs::File; use multiversx_sc::abi::ContractAbi; -use crate::cli_args::GenerateOverwriteArg; +use crate::cli_args::GenerateProxyArgs; use super::{ super::meta_config::MetaConfig, @@ -14,7 +14,7 @@ use super::{ const PROXIES_SOURCE_FILE_NAME: &str = "proxies_struct_interactor_main.rs"; impl MetaConfig { - pub fn generate_rust_proxies_struct(&self, args: &GenerateOverwriteArg) { + pub fn generate_rust_proxies_struct(&self, args: &GenerateProxyArgs) { let file = create_file(PROXIES_SOURCE_FILE_NAME, args.overwrite); write_proxies_to_file(file, self.original_contract_abi.clone()); } diff --git a/framework/meta/src/cmd/contract/generate_snippets/snippet_gen_main.rs b/framework/meta/src/cmd/contract/generate_snippets/snippet_gen_main.rs index 010e35c2a2..b158bcd0ce 100644 --- a/framework/meta/src/cmd/contract/generate_snippets/snippet_gen_main.rs +++ b/framework/meta/src/cmd/contract/generate_snippets/snippet_gen_main.rs @@ -2,7 +2,7 @@ use std::fs::File; use multiversx_sc::abi::ContractAbi; -use crate::cli_args::GenerateOverwriteArg; +use crate::cli_args::GenerateSnippetsArgs; use super::{ super::meta_config::MetaConfig, @@ -18,7 +18,7 @@ use super::{ }; impl MetaConfig { - pub fn generate_rust_snippets(&self, args: &GenerateOverwriteArg) { + pub fn generate_rust_snippets(&self, args: &GenerateSnippetsArgs) { let main_contract = self.sc_config.main_contract(); let crate_name = &main_contract.contract_name; let snake_case_name = &main_contract.public_name_snake_case(); From f76701449a611fd428af4e828d1c5279a09552d9 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 16 Feb 2024 02:28:45 +0200 Subject: [PATCH 032/461] old Proxy deploys produce unified syntax, backwards compatibility --- .../src/forwarder_raw_deploy_upgrade.rs | 2 +- .../proxy-test-first/src/proxy-test-first.rs | 2 +- .../src/types/interaction/contract_deploy.rs | 4 +- .../base/src/types/interaction/deploy_call.rs | 48 ++++- framework/base/src/types/interaction/mod.rs | 2 + framework/base/src/types/interaction/tx.rs | 90 ++++++-- .../src/types/interaction/tx_call_deploy.rs | 192 +++++++++++++++++- .../src/types/interaction/tx_code_source.rs | 62 ++++++ .../base/src/types/interaction/tx_gas.rs | 11 + framework/derive/src/generate/proxy_gen.rs | 97 ++++----- .../src/scenario/model/step/sc_deploy_step.rs | 10 +- 11 files changed, 421 insertions(+), 99 deletions(-) create mode 100644 framework/base/src/types/interaction/tx_code_source.rs diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs index 393aab3a73..53a46c1f98 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs @@ -17,7 +17,7 @@ pub trait ForwarderRawDeployUpgrade { .with_gas_limit(self.blockchain().get_gas_left()) .returns(ReturnsNewAddress) .returns(ReturnsRaw) - .execute_deploy() + .sync_call() .into() } diff --git a/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs b/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs index d84f36e5fa..b6d04b7606 100644 --- a/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs +++ b/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs @@ -78,8 +78,8 @@ pub trait ProxyTestFirst { let other_contract = self.get_other_contract(); self.message_me_proxy() - .contract(other_contract) .init(456) // TODO: upgrade proxy + .to(other_contract) .with_egld_transfer(payment.clone_value()) .upgrade_contract(&code, CodeMetadata::UPGRADEABLE); } diff --git a/framework/base/src/types/interaction/contract_deploy.rs b/framework/base/src/types/interaction/contract_deploy.rs index 1c61b7c977..448d9f4684 100644 --- a/framework/base/src/types/interaction/contract_deploy.rs +++ b/framework/base/src/types/interaction/contract_deploy.rs @@ -22,12 +22,12 @@ pub struct ContractDeploy where SA: CallTypeApi + 'static, { - _phantom: PhantomData, + pub(crate) _phantom: PhantomData, pub to: ManagedOption>, // only used for Upgrade, ignored for Deploy pub egld_payment: BigUint, pub explicit_gas_limit: u64, pub arg_buffer: ManagedArgBuffer, - _return_type: PhantomData, + pub(crate) _return_type: PhantomData, } /// Syntactical sugar to help macros to generate code easier. diff --git a/framework/base/src/types/interaction/deploy_call.rs b/framework/base/src/types/interaction/deploy_call.rs index ae7c2c9541..ec3a64e187 100644 --- a/framework/base/src/types/interaction/deploy_call.rs +++ b/framework/base/src/types/interaction/deploy_call.rs @@ -2,34 +2,39 @@ use multiversx_sc_codec::TopEncodeMulti; use crate::types::{CodeMetadata, ManagedBuffer, ManagedBufferCachedBuilder}; -use super::{FunctionCall, ManagedArgBuffer, Tx, TxData, TxEnv, TxFrom, TxGas, TxPayment, TxTo}; +use super::{ + Code, FunctionCall, ManagedArgBuffer, Tx, TxCodeSource, TxData, TxEnv, TxFrom, TxGas, + TxPayment, TxTo, +}; /// Holds deploy data: code, code metadata, and arguments. -pub struct DeployCall +pub struct DeployCall where Env: TxEnv, + CodeSource: TxCodeSource, { - pub code: ManagedBuffer, + pub code_source: CodeSource, pub code_metadata: CodeMetadata, pub arg_buffer: ManagedArgBuffer, } -impl Default for DeployCall +impl Default for DeployCall where Env: TxEnv, { - fn default() -> DeployCall { + fn default() -> DeployCall { DeployCall { - code: ManagedBuffer::new(), + code_source: (), code_metadata: CodeMetadata::DEFAULT, arg_buffer: ManagedArgBuffer::new(), } } } -impl TxData for DeployCall +impl TxData for DeployCall where Env: TxEnv, + CodeSource: TxCodeSource, { fn is_no_call(&self) -> bool { false @@ -38,16 +43,41 @@ where fn to_call_data_string(&self) -> ManagedBuffer { // Implement as needed for deployment-specific data let mut result = ManagedBufferCachedBuilder::default(); - result.append_managed_buffer(&self.code); + // result.append_managed_buffer(&self.code); // Add other fields as needed result.into_managed_buffer() } } -impl DeployCall +impl DeployCall where Env: TxEnv, { + pub fn code_source(self, code_source: CodeSource) -> DeployCall + where + CodeSource: TxCodeSource, + { + DeployCall { + code_source, + code_metadata: self.code_metadata, + arg_buffer: self.arg_buffer, + } + } +} + +impl DeployCall +where + Env: TxEnv, + CodeSource: TxCodeSource, +{ + pub fn code_metadata(mut self, code_metadata: CodeMetadata) -> Self + where + CodeSource: TxCodeSource, + { + self.code_metadata = code_metadata; + self + } + /// Adds an argument of any serializable type. /// /// Multi-values are accepted. No type checking performed. diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index 636f31738c..0e13f0c5f2 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -26,6 +26,7 @@ mod tx_call_async_promises; mod tx_call_deploy; mod tx_call_sync; mod tx_call_te; +mod tx_code_source; mod tx_data; mod tx_env; mod tx_env_sc; @@ -62,6 +63,7 @@ pub use tx::*; pub use tx_call_async::*; pub use tx_call_async_promises::*; pub use tx_call_sync::*; +pub use tx_code_source::*; pub use tx_data::*; pub use tx_env::*; pub use tx_env_sc::*; diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 82142e8c6f..48281ac272 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -3,7 +3,7 @@ use crate::{ contract_base::{BlockchainWrapper, SendRawWrapper}, types::{ BigUint, CodeMetadata, EgldOrEsdtTokenPayment, EgldPayment, EsdtTokenPayment, - ManagedAddress, ManagedBuffer, ManagedVec, MultiEsdtPayment, + ManagedAddress, ManagedBuffer, ManagedOption, ManagedVec, MultiEsdtPayment, }, }; use alloc::boxed::Box; @@ -11,10 +11,11 @@ use multiversx_sc_codec::TopEncodeMulti; use super::{ contract_call_exec::UNSPECIFIED_GAS_LIMIT, contract_call_trait::ContractCallBase, AsyncCall, - ContractCallNoPayment, ContractCallWithEgld, DeployCall, ExplicitGas, FunctionCall, - ManagedArgBuffer, OriginalResultMarker, RHList, RHListAppendNoRet, RHListAppendRet, RHListItem, - TxData, TxDataFunctionCall, TxEnv, TxFrom, TxFromSpecified, TxGas, TxPayment, - TxPaymentEgldOnly, TxResultHandler, TxScEnv, TxTo, TxToSpecified, + Code, ContractCallNoPayment, ContractCallWithEgld, ContractDeploy, DeployCall, ExplicitGas, + FromSource, FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, RHListAppendNoRet, + RHListAppendRet, RHListItem, TxCodeSource, TxData, TxDataFunctionCall, TxEnv, TxFrom, + TxFromSpecified, TxGas, TxPayment, TxPaymentEgldOnly, TxResultHandler, TxScEnv, TxTo, + TxToSpecified, }; #[must_use] @@ -589,14 +590,15 @@ where } } -impl Tx +impl Tx where Env: TxEnv, + To: TxTo, Payment: TxPaymentEgldOnly, Gas: TxGas, - Data: TxData, + RH: TxResultHandler, { - pub fn raw_deploy(self) -> Tx, ()> { + pub fn raw_deploy(self) -> Tx, RH> { Tx { env: self.env, from: self.from, @@ -609,43 +611,57 @@ where } } -impl Tx, ()> +impl Tx, RH> where Env: TxEnv, Payment: TxPaymentEgldOnly, Gas: TxGas, + RH: TxResultHandler, { pub fn code( mut self, code: ManagedBuffer, - ) -> Tx, ()> { - self.data.code = code; + ) -> Tx>, RH> { Tx { env: self.env, from: self.from, to: self.to, payment: self.payment, gas: self.gas, - data: self.data, + data: self.data.code_source(Code::new(code)), result_handler: self.result_handler, } } - pub fn code_metadata( + pub fn from_source( mut self, - code_metadata: CodeMetadata, - ) -> Tx, ()> { - self.data.code_metadata = code_metadata; + source_address: ManagedAddress, + ) -> Tx>, RH> { Tx { env: self.env, from: self.from, to: self.to, payment: self.payment, gas: self.gas, - data: self.data, + data: self.data.code_source(FromSource::new(source_address)), result_handler: self.result_handler, } } +} + +impl + Tx, RH> +where + Env: TxEnv, + Payment: TxPaymentEgldOnly, + Gas: TxGas, + CodeSource: TxCodeSource, + RH: TxResultHandler, +{ + pub fn code_metadata(mut self, code_metadata: CodeMetadata) -> Self { + self.data = self.data.code_metadata(code_metadata); + self + } #[inline] pub fn argument(mut self, arg: &T) -> Self { @@ -659,3 +675,43 @@ where self } } + +impl + From< + Tx< + TxScEnv, + (), + To, + Payment, + (), + DeployCall, ()>, + OriginalResultMarker, + >, + > for ContractDeploy +where + Api: CallTypeApi + 'static, + To: TxTo>, + Payment: TxPaymentEgldOnly>, + OriginalResult: TopEncodeMulti, +{ + fn from( + value: Tx< + TxScEnv, + (), + To, + Payment, + (), + DeployCall, ()>, + OriginalResultMarker, + >, + ) -> Self { + ContractDeploy { + _phantom: core::marker::PhantomData, + to: ManagedOption::none(), + egld_payment: value.payment.to_egld_payment().value, + explicit_gas_limit: UNSPECIFIED_GAS_LIMIT, + arg_buffer: value.data.arg_buffer, + _return_type: core::marker::PhantomData, + } + } +} diff --git a/framework/base/src/types/interaction/tx_call_deploy.rs b/framework/base/src/types/interaction/tx_call_deploy.rs index 9d57e362e3..0a9be62266 100644 --- a/framework/base/src/types/interaction/tx_call_deploy.rs +++ b/framework/base/src/types/interaction/tx_call_deploy.rs @@ -1,13 +1,16 @@ +use multiversx_sc_codec::{CodecFrom, TopEncodeMulti}; + use crate::{ api::CallTypeApi, contract_base::SendRawWrapper, tuple_util::NestedTupleFlatten, - types::{ManagedAddress, ManagedBuffer, ManagedVec}, + types::{CodeMetadata, ManagedAddress, ManagedBuffer, ManagedVec}, }; use super::{ - ConsNoRet, ConsRet, DeployCall, OriginalResultMarker, RHList, RHListItem, Tx, - TxDataFunctionCall, TxEnv, TxGas, TxPayment, TxPaymentEgldOnly, TxScEnv, TxToSpecified, + contract_call_exec::decode_result, Code, ConsNoRet, ConsRet, DeployCall, FromSource, + OriginalResultMarker, RHList, RHListItem, Tx, TxDataFunctionCall, TxEmptyResultHandler, TxEnv, + TxGas, TxPayment, TxPaymentEgldOnly, TxResultHandler, TxScEnv, TxToSpecified, }; pub trait RHListItemDeploy: RHListItem @@ -89,31 +92,198 @@ where } } -impl Tx, (), (), Payment, Gas, DeployCall>, RH> +impl + Tx, (), (), Payment, Gas, DeployCall, Code>>, RH> where Api: CallTypeApi, Payment: TxPaymentEgldOnly>, Gas: TxGas>, - RH: RHListDeploy>, - RH::ListReturns: NestedTupleFlatten, + RH: TxResultHandler>, { - pub fn execute_deploy(self) -> ::Unpacked { + fn execute_deploy_raw(self) -> (ManagedAddress, ManagedVec>, RH) { let gas_limit = self.gas.resolve_gas(&self.env); let egld_payment = self.payment.to_egld_payment(); let (new_address, raw_results) = SendRawWrapper::::new().deploy_contract( gas_limit, &egld_payment.value, - &self.data.code, + &self.data.code_source.code, + self.data.code_metadata, + &self.data.arg_buffer, + ); + + SendRawWrapper::::new().clean_return_data(); + + (new_address, raw_results, self.result_handler) + } +} + +impl + Tx, (), (), Payment, Gas, DeployCall, FromSource>>, RH> +where + Api: CallTypeApi, + Payment: TxPaymentEgldOnly>, + Gas: TxGas>, + RH: TxResultHandler>, +{ + fn execute_deploy_from_source_raw( + self, + ) -> (ManagedAddress, ManagedVec>, RH) { + let gas_limit = self.gas.resolve_gas(&self.env); + let egld_payment = self.payment.to_egld_payment(); + + let (new_address, raw_results) = SendRawWrapper::::new().deploy_from_source_contract( + gas_limit, + &egld_payment.value, + &self.data.code_source.address, self.data.code_metadata, &self.data.arg_buffer, ); SendRawWrapper::::new().clean_return_data(); - let tuple_result = self - .result_handler - .list_deploy_result(&new_address, &raw_results); + (new_address, raw_results, self.result_handler) + } +} + +impl + Tx, (), (), Payment, Gas, DeployCall, Code>>, RH> +where + Api: CallTypeApi, + Payment: TxPaymentEgldOnly>, + Gas: TxGas>, + RH: RHListDeploy>, + RH::ListReturns: NestedTupleFlatten, +{ + /// Synchronously deploys a contract. + pub fn sync_call(self) -> ::Unpacked { + let (new_address, raw_results, result_handler) = self.execute_deploy_raw(); + + let tuple_result = result_handler.list_deploy_result(&new_address, &raw_results); tuple_result.flatten_unpack() } } + +impl + Tx, (), (), Payment, Gas, DeployCall, FromSource>>, RH> +where + Api: CallTypeApi, + Payment: TxPaymentEgldOnly>, + Gas: TxGas>, + RH: RHListDeploy>, + RH::ListReturns: NestedTupleFlatten, +{ + /// Synchronously deploys a contract from source. + pub fn sync_call(self) -> ::Unpacked { + let (new_address, raw_results, result_handler) = self.execute_deploy_from_source_raw(); + + let tuple_result = result_handler.list_deploy_result(&new_address, &raw_results); + tuple_result.flatten_unpack() + } +} + +impl + Tx< + TxScEnv, + (), + (), + Payment, + Gas, + DeployCall, ()>, + OriginalResultMarker, + > +where + Api: CallTypeApi, + Payment: TxPaymentEgldOnly>, + Gas: TxGas>, + OriginalResult: TopEncodeMulti, +{ + /// Backwards compatibility, immitates the old API. + /// + /// Note that the data type (the `DeployCall`) doesn't have the code set. + /// This is because the old API was passing it as paramter, so we do the Apime here. + /// For clarity, we don't want it set twice. + pub fn deploy_contract( + self, + code: &ManagedBuffer, + code_metadata: CodeMetadata, + ) -> (ManagedAddress, RequestedResult) + where + RequestedResult: CodecFrom, + { + let (new_address, raw_results, _) = self + .code(code.clone()) + .code_metadata(code_metadata) + .execute_deploy_raw(); + + (new_address, decode_result(raw_results)) + } + + /// Backwards compatibility, immitates the old API. + /// + /// Note that the data type (the `DeployCall`) doesn't have the code set. + /// This is because the old API was passing it as paramter, so we do the Apime here. + /// For clarity, we don't want it set twice. + pub fn deploy_from_source( + self, + source_address: &ManagedAddress, + code_metadata: CodeMetadata, + ) -> (ManagedAddress, RequestedResult) + where + RequestedResult: CodecFrom, + { + let (new_address, raw_results, _) = self + .from_source(source_address.clone()) + .code_metadata(code_metadata) + .execute_deploy_from_source_raw(); + + (new_address, decode_result(raw_results)) + } +} + +impl + Tx, (), ManagedAddress, Payment, Gas, DeployCall, ()>, RH> +where + Api: CallTypeApi, + Payment: TxPaymentEgldOnly>, + Gas: TxGas>, + RH: TxEmptyResultHandler>, +{ + /// Backwards compatibility, immitates the old API. + /// + /// Note that the data type (the `DeployCall`) doesn't have the code set. + /// This is because the old API was passing it as paramter, so we do the Apime here. + /// For clarity, we don't want it set twice. + pub fn upgrade_contract(self, code: &ManagedBuffer, code_metadata: CodeMetadata) { + let gas = self.gas.explicit_or_gas_left(&self.env); + SendRawWrapper::::new().upgrade_contract( + &self.to, + gas, + &self.payment.to_egld_payment().value, + code, + code_metadata, + &self.data.arg_buffer, + ); + } + + /// Backwards compatibility, immitates the old API. + /// + /// Note that the data type (the `DeployCall`) doesn't have the code set. + /// This is because the old API was passing it as paramter, so we do the Apime here. + /// For clarity, we don't want it set twice. + pub fn upgrade_from_source( + self, + source_address: &ManagedAddress, + code_metadata: CodeMetadata, + ) { + let gas = self.gas.explicit_or_gas_left(&self.env); + SendRawWrapper::::new().upgrade_from_source_contract( + &self.to, + gas, + &self.payment.to_egld_payment().value, + source_address, + code_metadata, + &self.data.arg_buffer, + ); + } +} diff --git a/framework/base/src/types/interaction/tx_code_source.rs b/framework/base/src/types/interaction/tx_code_source.rs new file mode 100644 index 0000000000..b83963d33b --- /dev/null +++ b/framework/base/src/types/interaction/tx_code_source.rs @@ -0,0 +1,62 @@ +use crate::{ + api::ManagedTypeApi, + types::{ManagedAddress, ManagedBuffer}, +}; + +use super::TxEnv; + +pub trait TxCodeSource +where + Env: TxEnv, +{ +} + +impl TxCodeSource for () where Env: TxEnv {} + +pub trait TxCodeSourceSpecified: TxCodeSource +where + Env: TxEnv, +{ +} + +/// Contains code for a deploy or upgrade. +pub struct Code +where + Env: TxEnv, +{ + pub code: ManagedBuffer, +} + +impl Code +where + Env: TxEnv, +{ + pub fn new(code: ManagedBuffer) -> Self { + Code { code } + } +} + +impl TxCodeSource for Code where Env: TxEnv {} + +impl TxCodeSourceSpecified for Code where Env: TxEnv {} + +/// Indicates the source of a "deploy from source" or "upgrade from source". +pub struct FromSource +where + Env: TxEnv, +{ + pub address: ManagedAddress, +} + +impl FromSource +where + Env: TxEnv, +{ + pub fn new(address: ManagedAddress) -> Self { + FromSource { address } + } +} + +impl TxCodeSource for FromSource where Env: TxEnv {} + +impl TxCodeSourceSpecified for FromSource where Env: TxEnv {} diff --git a/framework/base/src/types/interaction/tx_gas.rs b/framework/base/src/types/interaction/tx_gas.rs index 621ed86303..0b867b19a2 100644 --- a/framework/base/src/types/interaction/tx_gas.rs +++ b/framework/base/src/types/interaction/tx_gas.rs @@ -1,10 +1,13 @@ use super::TxEnv; +use crate::api::{BlockchainApi, BlockchainApiImpl}; pub trait TxGas where Env: TxEnv, { fn resolve_gas(&self, env: &Env) -> u64; + + fn explicit_or_gas_left(&self, env: &Env) -> u64; } impl TxGas for () @@ -14,6 +17,10 @@ where fn resolve_gas(&self, env: &Env) -> u64 { env.default_gas() } + + fn explicit_or_gas_left(&self, env: &Env) -> u64 { + Env::Api::blockchain_api_impl().get_gas_left() + } } pub struct ExplicitGas(pub u64); @@ -26,4 +33,8 @@ where fn resolve_gas(&self, _env: &Env) -> u64 { self.0 } + + fn explicit_or_gas_left(&self, _env: &Env) -> u64 { + self.0 + } } diff --git a/framework/derive/src/generate/proxy_gen.rs b/framework/derive/src/generate/proxy_gen.rs index 9fcdf60490..8f4734558e 100644 --- a/framework/derive/src/generate/proxy_gen.rs +++ b/framework/derive/src/generate/proxy_gen.rs @@ -62,34 +62,14 @@ pub fn generate_proxy_method_sig( result } -pub fn generate_proxy_method_sig_old( - method: &Method, - proxy_return_struct_path: proc_macro2::TokenStream, -) -> proc_macro2::TokenStream { - let method_name = &method.name; - let mut generics = method.generics.clone(); - let generics_where = &method.generics.where_clause; - let arg_decl = proxy_arg_gen(&method.method_args, &mut generics); - let ret_tok = match &method.return_type { +fn original_type_tokens(m: &Method) -> proc_macro2::TokenStream { + match &m.return_type { syn::ReturnType::Default => quote! { () }, syn::ReturnType::Type(_, ty) => quote! { #ty }, - }; - let result = quote! { - fn #method_name #generics ( - &mut self, - #(#arg_decl),* - ) -> #proxy_return_struct_path - #generics_where - }; - result + } } pub fn generate_proxy_endpoint(m: &Method, endpoint_name: String) -> proc_macro2::TokenStream { - let original_type = match &m.return_type { - syn::ReturnType::Default => quote! { () }, - syn::ReturnType::Type(_, ty) => quote! { #ty }, - }; - let mut token_count = 0; let mut token_expr = quote! { multiversx_sc::types::EgldOrEsdtTokenIdentifier::::egld() }; @@ -177,6 +157,7 @@ pub fn generate_proxy_endpoint(m: &Method, endpoint_name: String) -> proc_macro2 payment_init = quote! {}; } + let original_type = original_type_tokens(m); let return_type = quote! { multiversx_sc::types::Tx< multiversx_sc::types::TxScEnv, @@ -209,50 +190,41 @@ pub fn generate_proxy_endpoint(m: &Method, endpoint_name: String) -> proc_macro2 } pub fn generate_proxy_deploy(init_method: &Method) -> proc_macro2::TokenStream { - let msig = - generate_proxy_method_sig_old(init_method, quote! { multiversx_sc::types::ContractDeploy }); - let mut payment_count = 0; let mut multi_count = 0; let mut token_count = 0; let mut nonce_count = 0; - let arg_push_snippets: Vec = init_method - .method_args - .iter() - .map(|arg| match &arg.metadata.payment { + let mut payment_type = quote! { () }; + let mut payment_init = quote! {}; + + let mut arg_push_snippets = Vec::::new(); + + for arg in &init_method.method_args { + match &arg.metadata.payment { ArgPaymentMetadata::NotPayment => { let pat = &arg.pat; - quote! { - ___contract_deploy___.push_endpoint_arg(&#pat); - } + arg_push_snippets.push(quote! { + .argument(&#pat) + }); }, ArgPaymentMetadata::PaymentToken => { token_count += 1; - - quote! {} }, ArgPaymentMetadata::PaymentNonce => { nonce_count += 1; - - quote! {} }, ArgPaymentMetadata::PaymentAmount => { payment_count += 1; - let pat = &arg.pat; - quote! { - ___contract_deploy___ = ___contract_deploy___.with_egld_transfer(#pat); - } + let payment_expr = &arg.pat; + payment_type = quote! { multiversx_sc::types::EgldPayment }; + payment_init = quote! { .egld(#payment_expr) }; }, ArgPaymentMetadata::PaymentMulti => { multi_count += 1; - let pat = &arg.pat; - quote! { - ___contract_deploy___ = ___contract_deploy___.with_multi_token_transfer(#pat); - } }, - }) - .collect(); + } + } assert!( payment_count <= 1, @@ -260,17 +232,36 @@ pub fn generate_proxy_deploy(init_method: &Method) -> proc_macro2::TokenStream { ); assert!(token_count == 0, "No ESDT payment allowed in #[init]"); assert!(nonce_count == 0, "No SFT/NFT payment allowed in #[init]"); + assert!( + multi_count == 0, + "No multi ESDT payments allowed in #[init]" + ); + + let original_type = original_type_tokens(init_method); + let return_type = quote! { + multiversx_sc::types::Tx< + multiversx_sc::types::TxScEnv, + (), + Self::To, // still accepted, until we separate the upgrade constructor completely + #payment_type, + (), + multiversx_sc::types::DeployCall, ()>, + multiversx_sc::types::OriginalResultMarker<#original_type>, + > + }; + + let msig = generate_proxy_method_sig(init_method, return_type); let sig = quote! { #[allow(clippy::too_many_arguments)] #[allow(clippy::type_complexity)] #msig { - let ___opt_address___ = self.extract_opt_address(); - let mut ___contract_deploy___ = multiversx_sc::types::new_contract_deploy( - ___opt_address___, - ); - #(#arg_push_snippets)* - ___contract_deploy___ + multiversx_sc::types::TxBaseWithEnv::new_tx_from_sc() + .raw_deploy() + #payment_init + #(#arg_push_snippets)* + .original_result() + .to(self.extract_proxy_to()) // still accepted, until we separate the upgrade constructor completely } }; diff --git a/framework/scenario/src/scenario/model/step/sc_deploy_step.rs b/framework/scenario/src/scenario/model/step/sc_deploy_step.rs index 0ade06fc0f..d062baa15a 100644 --- a/framework/scenario/src/scenario/model/step/sc_deploy_step.rs +++ b/framework/scenario/src/scenario/model/step/sc_deploy_step.rs @@ -98,11 +98,11 @@ impl ScDeployStep { /// Sets following fields based on the smart contract proxy: /// - "function" /// - "arguments" - pub fn call( - mut self, - contract_deploy: ContractDeploy, - ) -> TypedScDeploy { - let (_, mandos_args) = process_contract_deploy(contract_deploy); + pub fn call(mut self, contract_deploy: CD) -> TypedScDeploy + where + CD: Into>, + { + let (_, mandos_args) = process_contract_deploy(contract_deploy.into()); for arg in mandos_args { self = self.argument(arg.as_str()); } From 533b386980b0c8e5081e68dddec70247ddbcce12 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 16 Feb 2024 02:42:43 +0200 Subject: [PATCH 033/461] unified syntax in forwarder-raw deploy/upgrade --- .../src/forwarder_raw_deploy_upgrade.rs | 61 ++++++++++--------- .../forw_raw_contract_deploy.scen.json | 1 - framework/base/src/types/interaction/tx.rs | 12 ++-- .../src/types/interaction/tx_call_deploy.rs | 58 ++++++++++++++++++ 4 files changed, 96 insertions(+), 36 deletions(-) diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs index 53a46c1f98..f9e7e715b7 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs @@ -26,35 +26,35 @@ pub trait ForwarderRawDeployUpgrade { &self, source_contract_address: ManagedAddress, code_metadata: CodeMetadata, - arguments: MultiValueEncoded, + args: MultiValueEncoded, ) -> ManagedAddress { - let (address, _) = self.send_raw().deploy_from_source_contract( - self.blockchain().get_gas_left(), - &BigUint::zero(), - &source_contract_address, - code_metadata, - &arguments.to_arg_buffer(), - ); - - address + self.tx() + .raw_deploy() + .from_source(source_contract_address) + .code_metadata(code_metadata) + .arguments_raw(args.to_arg_buffer()) + .with_gas_limit(self.blockchain().get_gas_left()) + .returns(ReturnsNewAddress) + .sync_call() + .into() } #[endpoint] fn call_upgrade( &self, - child_sc_address: &ManagedAddress, - new_code: &ManagedBuffer, + child_sc_address: ManagedAddress, + new_code: ManagedBuffer, code_metadata: CodeMetadata, - arguments: MultiValueEncoded, + args: MultiValueEncoded, ) { - self.send_raw().upgrade_contract( - child_sc_address, - self.blockchain().get_gas_left(), - &BigUint::zero(), - new_code, - code_metadata, - &arguments.to_arg_buffer(), - ); + self.tx() + .to(child_sc_address) + .raw_deploy() + .code(new_code) + .code_metadata(code_metadata) + .arguments_raw(args.to_arg_buffer()) + .upgrade_async_call() + .into() } #[endpoint] @@ -63,15 +63,16 @@ pub trait ForwarderRawDeployUpgrade { sc_address: ManagedAddress, source_contract_address: ManagedAddress, code_metadata: CodeMetadata, - arguments: MultiValueEncoded, + args: MultiValueEncoded, ) { - self.send_raw().upgrade_from_source_contract( - &sc_address, - self.blockchain().get_gas_left(), - &BigUint::zero(), - &source_contract_address, - code_metadata, - &arguments.to_arg_buffer(), - ) + self.tx() + .to(sc_address) + .raw_deploy() + .from_source(source_contract_address) + .code_metadata(code_metadata) + .arguments_raw(args.to_arg_buffer()) + .with_gas_limit(self.blockchain().get_gas_left()) + .upgrade_async_call() + .into() } } diff --git a/contracts/feature-tests/composability/scenarios/forw_raw_contract_deploy.scen.json b/contracts/feature-tests/composability/scenarios/forw_raw_contract_deploy.scen.json index 641dd34347..5e0097f354 100644 --- a/contracts/feature-tests/composability/scenarios/forw_raw_contract_deploy.scen.json +++ b/contracts/feature-tests/composability/scenarios/forw_raw_contract_deploy.scen.json @@ -128,7 +128,6 @@ }, "expect": { "out": [ - "str:some_argument", "sc:child-src-with-arg" ], "status": "0", diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 48281ac272..2aaa4f373a 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -611,9 +611,10 @@ where } } -impl Tx, RH> +impl Tx, RH> where Env: TxEnv, + To: TxTo, Payment: TxPaymentEgldOnly, Gas: TxGas, RH: TxResultHandler, @@ -621,7 +622,7 @@ where pub fn code( mut self, code: ManagedBuffer, - ) -> Tx>, RH> { + ) -> Tx>, RH> { Tx { env: self.env, from: self.from, @@ -636,7 +637,7 @@ where pub fn from_source( mut self, source_address: ManagedAddress, - ) -> Tx>, RH> { + ) -> Tx>, RH> { Tx { env: self.env, from: self.from, @@ -649,10 +650,11 @@ where } } -impl - Tx, RH> +impl + Tx, RH> where Env: TxEnv, + To: TxTo, Payment: TxPaymentEgldOnly, Gas: TxGas, CodeSource: TxCodeSource, diff --git a/framework/base/src/types/interaction/tx_call_deploy.rs b/framework/base/src/types/interaction/tx_call_deploy.rs index 0a9be62266..0fc3563980 100644 --- a/framework/base/src/types/interaction/tx_call_deploy.rs +++ b/framework/base/src/types/interaction/tx_call_deploy.rs @@ -182,6 +182,64 @@ where } } +impl + Tx< + TxScEnv, + (), + ManagedAddress, + Payment, + Gas, + DeployCall, Code>>, + RH, + > +where + Api: CallTypeApi, + Payment: TxPaymentEgldOnly>, + Gas: TxGas>, + RH: TxEmptyResultHandler>, +{ + pub fn upgrade_async_call(self) { + let gas = self.gas.explicit_or_gas_left(&self.env); + SendRawWrapper::::new().upgrade_contract( + &self.to, + gas, + &self.payment.to_egld_payment().value, + &self.data.code_source.code, + self.data.code_metadata, + &self.data.arg_buffer, + ); + } +} + +impl + Tx< + TxScEnv, + (), + ManagedAddress, + Payment, + Gas, + DeployCall, FromSource>>, + RH, + > +where + Api: CallTypeApi, + Payment: TxPaymentEgldOnly>, + Gas: TxGas>, + RH: TxEmptyResultHandler>, +{ + pub fn upgrade_async_call(self) { + let gas = self.gas.explicit_or_gas_left(&self.env); + SendRawWrapper::::new().upgrade_from_source_contract( + &self.to, + gas, + &self.payment.to_egld_payment().value, + &self.data.code_source.address, + self.data.code_metadata, + &self.data.arg_buffer, + ); + } +} + impl Tx< TxScEnv, From 60b656ef4a09f7572dc5119948941bfe31d2070a Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 16 Feb 2024 10:05:20 +0200 Subject: [PATCH 034/461] cleanup --- .../forwarder-raw/src/forwarder_raw_deploy_upgrade.rs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs index f9e7e715b7..b8fc6138eb 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs @@ -36,7 +36,6 @@ pub trait ForwarderRawDeployUpgrade { .with_gas_limit(self.blockchain().get_gas_left()) .returns(ReturnsNewAddress) .sync_call() - .into() } #[endpoint] @@ -53,8 +52,7 @@ pub trait ForwarderRawDeployUpgrade { .code(new_code) .code_metadata(code_metadata) .arguments_raw(args.to_arg_buffer()) - .upgrade_async_call() - .into() + .upgrade_async_call(); } #[endpoint] @@ -72,7 +70,6 @@ pub trait ForwarderRawDeployUpgrade { .code_metadata(code_metadata) .arguments_raw(args.to_arg_buffer()) .with_gas_limit(self.blockchain().get_gas_left()) - .upgrade_async_call() - .into() + .upgrade_async_call(); } } From 97f02c117d8b079e01c7dba959ac81e59080e2e3 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Wed, 21 Feb 2024 16:37:38 +0200 Subject: [PATCH 035/461] initial design for TxProxy --- contracts/examples/adder/src/adder.rs | 33 ++++++++++++++++++++++ framework/derive/src/contract_impl.rs | 6 ++++ framework/derive/src/generate/proxy_gen.rs | 18 ++++++++++++ 3 files changed, 57 insertions(+) diff --git a/contracts/examples/adder/src/adder.rs b/contracts/examples/adder/src/adder.rs index 9b261c5aa8..8f504c1aea 100644 --- a/contracts/examples/adder/src/adder.rs +++ b/contracts/examples/adder/src/adder.rs @@ -25,3 +25,36 @@ pub trait Adder { self.sum().update(|sum| *sum += value); } } + +pub struct TxProxy; + +impl TxProxyTrait for TxProxy +where + Env: TxEnv, +{ + type TxProxyMethods = TxProxyMethods; + + fn env(self, env: Env) -> Self::TxProxyMethods { + TxProxyMethods { env } + } +} + +impl TxProxyMethods { + pub fn add>>( + self, + arg0: Arg0, + ) -> multiversx_sc::types::Tx< + Env, + (), + (), + (), + (), + FunctionCall<::Api>, + (), + > { + Tx::new_with_env(self.env) + .raw_call() + .function_name("add") + .argument(&arg0) + } +} diff --git a/framework/derive/src/contract_impl.rs b/framework/derive/src/contract_impl.rs index 1f6b3c9383..414c261f72 100644 --- a/framework/derive/src/contract_impl.rs +++ b/framework/derive/src/contract_impl.rs @@ -130,6 +130,8 @@ pub fn contract_implementation( }; let proxy_trait = proxy_gen::proxy_trait(contract); + let tx_proxy_trait = proxy_gen::tx_proxy_trait(); + let tx_proxy_methods = proxy_gen::tx_proxy_methods(); let proxy_obj_code = if is_contract_main { proxy_gen::proxy_obj_code(contract) } else { @@ -145,6 +147,10 @@ pub fn contract_implementation( #proxy_trait + #tx_proxy_trait + + #tx_proxy_methods + #proxy_obj_code #callback_proxies_obj diff --git a/framework/derive/src/generate/proxy_gen.rs b/framework/derive/src/generate/proxy_gen.rs index 8f4734558e..0e1f851608 100644 --- a/framework/derive/src/generate/proxy_gen.rs +++ b/framework/derive/src/generate/proxy_gen.rs @@ -298,6 +298,24 @@ pub fn proxy_trait(contract: &ContractTrait) -> proc_macro2::TokenStream { } } +pub fn tx_proxy_trait() -> proc_macro2::TokenStream { + quote! { + pub trait TxProxyTrait{ + type TxProxyMethods; + + fn env(self, env: Env) -> Self::TxProxyMethods; + } + } +} + +pub fn tx_proxy_methods() -> proc_macro2::TokenStream { + quote! { + pub struct TxProxyMethods { + env: Env, + } + } +} + pub fn proxy_obj_code(contract: &ContractTrait) -> proc_macro2::TokenStream { let proxy_object_def = snippets::proxy_object_def(); let impl_all_proxy_traits = From a48cdb89aea1aec6aeef7713203c4f3e3e37ef57 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Wed, 21 Feb 2024 18:09:58 +0200 Subject: [PATCH 036/461] modified proxy generator --- .../adder/proxies_struct_interactor_main.rs | 98 +++++++----- .../contract/generate_proxy/proxy_gen_main.rs | 7 +- .../generate_proxy/proxy_sc_functions_gen.rs | 140 ++++++------------ .../generate_proxy/proxy_template_gen.rs | 40 +++-- 4 files changed, 138 insertions(+), 147 deletions(-) diff --git a/contracts/examples/adder/proxies_struct_interactor_main.rs b/contracts/examples/adder/proxies_struct_interactor_main.rs index caf5ea8895..d682df98c8 100644 --- a/contracts/examples/adder/proxies_struct_interactor_main.rs +++ b/contracts/examples/adder/proxies_struct_interactor_main.rs @@ -1,60 +1,90 @@ -#![allow(clippy::too_many_arguments)] -#![allow(clippy::type_complexity)] multiversx_sc::imports!(); -pub struct TxProxy +pub struct TxProxy; + +impl TxProxyTrait for TxProxy where - A: multiversx_sc::api::VMApi + 'static, + Env: TxEnv, { - pub address: ManagedOption>, + type TxProxyMethods = TxProxyMethods; + + fn env(self, env: Env) -> Self::TxProxyMethods { + TxProxyMethods { env } + } } -impl TxProxy -where - A: multiversx_sc::api::VMApi + 'static, -{ fn init< - Arg0: multiversx_sc::codec::CodecInto>, +impl TxProxyMethods { + pub fn init< + Arg0: multiversx_sc::codec::CodecInto>, >( &mut self, initial_value: Arg0, - ) -> ContractDeploy { - let ___opt_address___ = multiversx_sc::extract_opt_address!(self); - let mut ___contract_deploy___ = multiversx_sc::constructors_proxy!(___opt_address___); - ___contract_deploy___.push_endpoint_arg(&initial_value); - ___contract_deploy___ + ) -> multiversx_sc::types::Tx::Api>, + (), + > { + Tx::new_with_env(self.env.clone()) + .raw_call() + .function_name("init") + .argument(&initial_value) } - fn sum( + pub fn sum( &mut self, - ) -> ContractCallNoPayment> { - let ___address___ = multiversx_sc::extract_address!(self); - let mut ___contract_call___ = multiversx_sc::endpoints_proxy!(getSum, ___address___); - ___contract_call___ + ) -> multiversx_sc::types::Tx::Api>, + (), + > { + Tx::new_with_env(self.env.clone()) + .raw_call() + .function_name("getSum") } - fn upgrade< - Arg0: multiversx_sc::codec::CodecInto>, + pub fn upgrade< + Arg0: multiversx_sc::codec::CodecInto>, >( &mut self, initial_value: Arg0, - ) -> ContractCallNoPayment { - let ___address___ = multiversx_sc::extract_address!(self); - let mut ___contract_call___ = multiversx_sc::endpoints_proxy!(upgrade, ___address___); - ContractCall::proxy_arg(&mut ___contract_call___, &initial_value); - ___contract_call___ + ) -> multiversx_sc::types::Tx::Api>, + (), + > { + Tx::new_with_env(self.env.clone()) + .raw_call() + .function_name("upgrade") + .argument(&initial_value) } //Add desired amount to the storage variable. - fn add< - Arg0: multiversx_sc::codec::CodecInto>, + pub fn add< + Arg0: multiversx_sc::codec::CodecInto>, >( &mut self, value: Arg0, - ) -> ContractCallNoPayment { - let ___address___ = multiversx_sc::extract_address!(self); - let mut ___contract_call___ = multiversx_sc::endpoints_proxy!(add, ___address___); - ContractCall::proxy_arg(&mut ___contract_call___, &value); - ___contract_call___ + ) -> multiversx_sc::types::Tx::Api>, + (), + > { + Tx::new_with_env(self.env.clone()) + .raw_call() + .function_name("add") + .argument(&value) } } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs index 63c32d8530..7c6aa7e0bf 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs @@ -8,7 +8,10 @@ use super::{ super::meta_config::MetaConfig, proxy_crate_gen::create_file, proxy_sc_functions_gen::write_content, - proxy_template_gen::{write_imports, write_struct_template}, + proxy_template_gen::{ + write_impl_for_tx_proxy, write_imports, write_struct_template, + write_tx_proxy_method_header, + }, }; const PROXIES_SOURCE_FILE_NAME: &str = "proxies_struct_interactor_main.rs"; @@ -23,5 +26,7 @@ impl MetaConfig { fn write_proxies_to_file(mut file: File, abi: ContractAbi) { write_imports(&mut file); write_struct_template(&mut file); + write_impl_for_tx_proxy(&mut file); + write_tx_proxy_method_header(&mut file); write_content(&mut file, abi); } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs index 321a6868a4..c818c27400 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs @@ -1,125 +1,80 @@ use std::{fs::File, io::Write}; -use multiversx_sc::abi::{ContractAbi, EndpointAbi, InputAbi, OutputAbis}; +use multiversx_sc::abi::{ContractAbi, EndpointAbi, InputAbi}; use crate::cmd::contract::generate_snippets::{ snippet_gen_common::write_newline, - snippet_sc_functions_gen::map_output_types_to_rust_types, snippet_type_map::{handle_abi_type, RustTypeString}, }; -const CONTRACT_DEPLOY: &str = "ContractDeploy"; -const CONTRACT_CALL_NO_PAYMENT: &str = "ContractCallNoPayment"; - pub(crate) fn write_content(file: &mut File, abi: ContractAbi) { for constructor_abi in abi.constructors { - write_endpoint(file, constructor_abi.clone(), CONTRACT_DEPLOY); - write_constructor_content_macro(file); - write_constructor_contract_deploy(file, constructor_abi.inputs); - write_end_of_constructor(file); + write_endpoint(file, constructor_abi.clone()); + write_function_content(file, constructor_abi); + write_end_of_function(file); } for endpoint_abi in abi.endpoints { - write_endpoint(file, endpoint_abi.clone(), CONTRACT_CALL_NO_PAYMENT); - write_endpoint_content_macro(file, endpoint_abi.name); - write_contract_call(file, endpoint_abi.inputs); - write_end_of_endpoint(file); + write_endpoint(file, endpoint_abi.clone()); + write_function_content(file, endpoint_abi); + write_end_of_function(file); } writeln!(file, "}}").unwrap(); } -fn write_constructor_contract_deploy(file: &mut File, inputs: Vec) { - if inputs.is_empty() { - return; - } - - for input in inputs.iter() { - write_constructor_contract_call(file, input.arg_name.clone()); - } -} - -fn write_contract_call(file: &mut File, inputs: Vec) { - if inputs.is_empty() { - return; - } - - for input in inputs.iter() { - write_contract_call_input(file, input.arg_name.clone()); - } -} - -fn write_contract_call_input(file: &mut File, arg_name: String) { - writeln!( - file, - "\t\tContractCall::proxy_arg(&mut ___contract_call___, &{arg_name});" - ) - .unwrap(); -} - -fn write_constructor_contract_call(file: &mut File, arg_name: String) { +fn write_function_content(file: &mut File, end: EndpointAbi) { writeln!( file, - "\t\t___contract_deploy___.push_endpoint_arg(&{arg_name});" + "\t\tTx::new_with_env(self.env.clone()) + .raw_call() + .function_name(\"{}\")", + end.name ) .unwrap(); -} -fn write_endpoint_content_macro(file: &mut File, name: String) { - writeln!( - file, - "\t\tlet ___address___ = multiversx_sc::extract_address!(self);" - ) - .unwrap(); - writeln!( - file, - "\t\tlet mut ___contract_call___ = multiversx_sc::endpoints_proxy!({name}, ___address___);" - ) - .unwrap(); -} - -fn write_constructor_content_macro(file: &mut File) { - writeln!( - file, - "\t\tlet ___opt_address___ = multiversx_sc::extract_opt_address!(self);" - ) - .unwrap(); - writeln!(file, "\t\tlet mut ___contract_deploy___ = multiversx_sc::constructors_proxy!(___opt_address___);").unwrap(); + for input in end.inputs.iter() { + writeln!( + file, + "\t\t\t.argument(&{})", + input.arg_name // .argument(&arg0)" + ) + .unwrap(); + } } -fn write_endpoint(file: &mut File, endpoint_abi: EndpointAbi, interaction_deploy: &str) { +fn write_endpoint(file: &mut File, endpoint_abi: EndpointAbi) { write_info_endpoint(file, endpoint_abi.docs); - write_endpoint_fn(file, endpoint_abi.rust_method_name); - write_generic_args(file, endpoint_abi.inputs.clone()); - write_parameters(file, endpoint_abi.inputs, interaction_deploy); - write_output(file, endpoint_abi.outputs); + write_function_header_endpoint(file, endpoint_abi.rust_method_name); + write_args(file, endpoint_abi.inputs.clone()); + write_parameters_and_output(file, endpoint_abi.inputs); } -fn write_output(file: &mut File, outputs: OutputAbis) { - let output_type = map_output_types_to_rust_types(&outputs); - - let output_type_print = output_type.replace("", ""); - write!(file, "{output_type_print}",).unwrap(); - writeln!(file, "> {{").unwrap(); -} - -fn write_parameters(file: &mut File, inputs: Vec, interaction_deploy: &str) { +#[rustfmt::skip] +fn write_parameters_and_output(file: &mut File, inputs: Vec) { writeln!(file, "(").unwrap(); writeln!(file, "\t\t&mut self,").unwrap(); for (index, input) in inputs.iter().enumerate() { - write_parameter_arg(file, index, &input.arg_name); + writeln!(file, "\t\t{}: Arg{index},", &input.arg_name).unwrap(); } - write!(file, "\t) -> {interaction_deploy} multiversx_sc::types::Tx::Api>, + (), + > {{\n" + ) + .unwrap(); } -fn write_endpoint_fn(file: &mut File, rust_method_name: String) { - write!(file, "\tfn {rust_method_name}").unwrap(); +fn write_function_header_endpoint(file: &mut File, rust_method_name: String) { + write!(file, "\tpub fn {rust_method_name}").unwrap(); } fn write_info_endpoint(file: &mut File, docs: Vec) { @@ -132,7 +87,7 @@ fn write_info_endpoint(file: &mut File, docs: Vec) { } } -fn write_generic_args(file: &mut File, inputs: Vec) { +fn write_args(file: &mut File, inputs: Vec) { if inputs.is_empty() { return; } @@ -151,7 +106,7 @@ fn write_argument(file: &mut File, index: usize, type_name: String) { handle_abi_type(&mut type_string, type_name); let type_string_str = type_string.get_type_name().to_string(); - let type_print = type_string_str.replace("", ""); + let type_print = type_string_str.replace("", ""); writeln!( file, @@ -161,14 +116,7 @@ fn write_argument(file: &mut File, index: usize, type_name: String) { .unwrap(); } -fn write_end_of_constructor(file: &mut File) { - writeln!(file, "\t\t___contract_deploy___").unwrap(); - writeln!(file, "\t}}").unwrap(); - write_newline(file); -} - -fn write_end_of_endpoint(file: &mut File) { - writeln!(file, "\t\t___contract_call___").unwrap(); +fn write_end_of_function(file: &mut File) { writeln!(file, "\t}}").unwrap(); write_newline(file); } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs index d2ff58a8ac..9742b54c59 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs @@ -3,31 +3,39 @@ use std::{fs::File, io::Write}; use crate::cmd::contract::generate_snippets::snippet_gen_common::write_newline; pub(crate) fn write_imports(file: &mut File) { - writeln!( - file, - r#"#![allow(clippy::too_many_arguments)] -#![allow(clippy::type_complexity)] -multiversx_sc::imports!();"# - ) - .unwrap(); + writeln!(file, r#"multiversx_sc::imports!();"#).unwrap(); write_newline(file); } pub(crate) fn write_struct_template(file: &mut File) { - write!( + writeln!(file, "pub struct TxProxy;").unwrap(); + write_newline(file) +} + +pub(crate) fn write_impl_for_tx_proxy(file: &mut File) { + writeln!( file, - "pub struct TxProxy + r#"impl TxProxyTrait for TxProxy where - A: multiversx_sc::api::VMApi + 'static, + Env: TxEnv, {{ - pub address: ManagedOption>, -}} + type TxProxyMethods = TxProxyMethods; -impl TxProxy -where - A: multiversx_sc::api::VMApi + 'static, -{{" + fn env(self, env: Env) -> Self::TxProxyMethods {{ + TxProxyMethods {{ env }} + }} +}}"# + ) + .unwrap(); + + write_newline(file); +} + +pub(crate) fn write_tx_proxy_method_header(file: &mut File) { + writeln!( + file, + r#"impl TxProxyMethods {{"# ) .unwrap(); } From e1d0888a7b397e6d0cfecac38d0ec69b23dc4430 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Thu, 22 Feb 2024 04:24:51 +0100 Subject: [PATCH 037/461] upgrade constructor impl for unified syntax + fmt --- .../src/forwarder_raw_alt_init.rs | 2 +- framework/base/src/abi/endpoint_abi.rs | 1 + framework/derive/src/generate/abi_gen.rs | 15 ++++++++++++ framework/derive/src/generate/contract_gen.rs | 1 + .../derive/src/generate/endpoints_mod_gen.rs | 1 + .../derive/src/generate/function_selector.rs | 5 ++++ framework/derive/src/generate/proxy_gen.rs | 1 + framework/derive/src/model/endpoint.rs | 3 +++ .../src/model/endpoint_type_metadata.rs | 4 ++++ framework/derive/src/model/method.rs | 3 +++ framework/derive/src/parse/endpoint_parse.rs | 7 +----- framework/derive/src/parse/method_parse.rs | 4 ++-- .../derive/src/validate/validate_method.rs | 7 +++++- .../meta/src/abi_json/contract_abi_json.rs | 9 ++++++++ .../contract/sc_config/contract_variant.rs | 3 +++ .../sc_config/contract_variant_builder.rs | 1 + .../sc_config/contract_variant_validate.rs | 20 +++++++++++++--- .../cmd/contract/sc_config/wasm_crate_gen.rs | 23 +++++++++++++++---- 18 files changed, 93 insertions(+), 17 deletions(-) diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_alt_init.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_alt_init.rs index 79cab17a11..d677842e41 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_alt_init.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_alt_init.rs @@ -29,7 +29,7 @@ pub trait ForwarderRawAlterativeInit: super::forwarder_raw_common::ForwarderRawC /// Async calls are explicitly forbidden in upgrade constructors. /// /// TODO: write test once scenario tests support upgrades directly. - #[endpoint(upgrade)] + #[upgrade] #[label("init-async-call")] fn upgrade_async_call( &self, diff --git a/framework/base/src/abi/endpoint_abi.rs b/framework/base/src/abi/endpoint_abi.rs index 1ce6b5c363..ece11d3e63 100644 --- a/framework/base/src/abi/endpoint_abi.rs +++ b/framework/base/src/abi/endpoint_abi.rs @@ -33,6 +33,7 @@ pub enum EndpointMutabilityAbi { pub enum EndpointTypeAbi { #[default] Init, + Upgrade, Endpoint, PromisesCallback, } diff --git a/framework/derive/src/generate/abi_gen.rs b/framework/derive/src/generate/abi_gen.rs index df8755ded7..71c4c1b822 100644 --- a/framework/derive/src/generate/abi_gen.rs +++ b/framework/derive/src/generate/abi_gen.rs @@ -91,6 +91,21 @@ fn generate_endpoint_snippets(contract: &ContractTrait) -> Vec { + let endpoint_def = generate_endpoint_snippet( + m, + "upgrade", + false, + false, + EndpointMutabilityMetadata::Mutable, + EndpointTypeMetadata::Upgrade, + m.is_allow_multiple_var_args(), + ); + Some(quote! { + #endpoint_def + contract_abi.endpoints.push(endpoint_abi); + }) + }, PublicRole::Endpoint(endpoint_metadata) => { let endpoint_def = generate_endpoint_snippet( m, diff --git a/framework/derive/src/generate/contract_gen.rs b/framework/derive/src/generate/contract_gen.rs index 6d3cf620e6..ba7ace5879 100644 --- a/framework/derive/src/generate/contract_gen.rs +++ b/framework/derive/src/generate/contract_gen.rs @@ -28,6 +28,7 @@ pub fn generate_call_methods(contract_trait: &ContractTrait) -> Vec Some(generate_call_method(m)), + PublicRole::Upgrade(_upgrade_metadata) => Some(generate_call_method(m)), PublicRole::Endpoint(_endpoint_metadata) => Some(generate_call_method(m)), PublicRole::CallbackPromise(_callback_metadata) => { Some(generate_promises_callback_call_method(m)) diff --git a/framework/derive/src/generate/endpoints_mod_gen.rs b/framework/derive/src/generate/endpoints_mod_gen.rs index 5f780f0c4a..b32a7ce9a8 100644 --- a/framework/derive/src/generate/endpoints_mod_gen.rs +++ b/framework/derive/src/generate/endpoints_mod_gen.rs @@ -67,6 +67,7 @@ fn generate_wasm_endpoints(contract_trait: &ContractTrait) -> Vec Some(generate_wasm_endpoint(m, "e! { init })), + PublicRole::Upgrade(_) => Some(generate_wasm_endpoint(m, "e! { upgrade })), PublicRole::Endpoint(endpoint_metadata) => { let endpoint_ident = &endpoint_metadata.public_name; Some(generate_wasm_endpoint(m, "e! { #endpoint_ident })) diff --git a/framework/derive/src/generate/function_selector.rs b/framework/derive/src/generate/function_selector.rs index d49a673d71..6f157724f8 100644 --- a/framework/derive/src/generate/function_selector.rs +++ b/framework/derive/src/generate/function_selector.rs @@ -27,6 +27,11 @@ pub fn generate_function_selector_body(contract: &ContractTrait) -> proc_macro2: "init", quote! { if !::external_view_init_override() }, )), + PublicRole::Upgrade(_) => Some(endpoint_match_arm( + m, + "upgrade", + quote! {}, + )), PublicRole::Endpoint(endpoint_metadata) => Some(endpoint_match_arm( m, endpoint_metadata.public_name.to_string().as_str(), diff --git a/framework/derive/src/generate/proxy_gen.rs b/framework/derive/src/generate/proxy_gen.rs index 8f4734558e..2ea199ae54 100644 --- a/framework/derive/src/generate/proxy_gen.rs +++ b/framework/derive/src/generate/proxy_gen.rs @@ -274,6 +274,7 @@ pub fn generate_method_impl(contract_trait: &ContractTrait) -> Vec Some(generate_proxy_deploy(m)), + PublicRole::Upgrade(_) => Some(generate_proxy_endpoint(m, "upgrade".to_string())), PublicRole::Endpoint(endpoint_metadata) => Some(generate_proxy_endpoint( m, endpoint_metadata.public_name.to_string(), diff --git a/framework/derive/src/model/endpoint.rs b/framework/derive/src/model/endpoint.rs index 5c3d403fdc..1385dd1ada 100644 --- a/framework/derive/src/model/endpoint.rs +++ b/framework/derive/src/model/endpoint.rs @@ -29,6 +29,9 @@ pub enum PublicRole { /// The smart contract constructor. There can be only one. Init(InitMetadata), + /// The smart contract upgrade constructor. + Upgrade(InitMetadata), + /// Means it gets a smart contract function generated for it Endpoint(EndpointMetadata), diff --git a/framework/derive/src/model/endpoint_type_metadata.rs b/framework/derive/src/model/endpoint_type_metadata.rs index 4d668b2df7..4c048e94cb 100644 --- a/framework/derive/src/model/endpoint_type_metadata.rs +++ b/framework/derive/src/model/endpoint_type_metadata.rs @@ -2,6 +2,7 @@ #[derive(Debug, Clone)] pub enum EndpointTypeMetadata { Init, + Upgrade, Endpoint, PromisesCallback, } @@ -12,6 +13,9 @@ impl EndpointTypeMetadata { EndpointTypeMetadata::Init => { quote! { multiversx_sc::abi::EndpointTypeAbi::Init } }, + EndpointTypeMetadata::Upgrade => { + quote! { multiversx_sc::abi::EndpointTypeAbi::Upgrade } + }, EndpointTypeMetadata::Endpoint => { quote! { multiversx_sc::abi::EndpointTypeAbi::Endpoint } }, diff --git a/framework/derive/src/model/method.rs b/framework/derive/src/model/method.rs index c705ecb268..776e39dfaa 100644 --- a/framework/derive/src/model/method.rs +++ b/framework/derive/src/model/method.rs @@ -77,6 +77,7 @@ impl Method { pub fn is_payable(&self) -> bool { match &self.public_role { PublicRole::Init(init_metadata) => init_metadata.payable.is_payable(), + PublicRole::Upgrade(upgrade_metadata) => upgrade_metadata.payable.is_payable(), PublicRole::Endpoint(endpoint_metadata) => endpoint_metadata.payable.is_payable(), PublicRole::Callback(_) | PublicRole::CallbackRaw | PublicRole::CallbackPromise(_) => { true @@ -88,6 +89,7 @@ impl Method { pub fn payable_metadata(&self) -> MethodPayableMetadata { match &self.public_role { PublicRole::Init(init_metadata) => init_metadata.payable.clone(), + PublicRole::Upgrade(upgrade_metadata) => upgrade_metadata.payable.clone(), PublicRole::Endpoint(endpoint_metadata) => endpoint_metadata.payable.clone(), PublicRole::Callback(_) | PublicRole::CallbackRaw | PublicRole::CallbackPromise(_) => { MethodPayableMetadata::AnyToken @@ -99,6 +101,7 @@ impl Method { pub fn is_allow_multiple_var_args(&self) -> bool { match &self.public_role { PublicRole::Init(init_metadata) => init_metadata.allow_multiple_var_args, + PublicRole::Upgrade(upgrade_metadata) => upgrade_metadata.allow_multiple_var_args, PublicRole::Endpoint(endpoint_metadata) => endpoint_metadata.allow_multiple_var_args, PublicRole::Callback(callback_metadata) | PublicRole::CallbackPromise(callback_metadata) => { diff --git a/framework/derive/src/parse/endpoint_parse.rs b/framework/derive/src/parse/endpoint_parse.rs index 92fd4ff175..fc68c25c59 100644 --- a/framework/derive/src/parse/endpoint_parse.rs +++ b/framework/derive/src/parse/endpoint_parse.rs @@ -44,13 +44,8 @@ pub fn process_upgrade_attribute( let has_attr = is_upgrade(attr); if has_attr { check_single_role(&*method); - method.public_role = PublicRole::Endpoint(EndpointMetadata { - public_name: proc_macro2::Ident::new("upgrade", proc_macro2::Span::call_site()), + method.public_role = PublicRole::Upgrade(InitMetadata { payable: first_pass_data.payable.clone(), - only_owner: false, - only_admin: false, - only_user_account: false, - mutability: EndpointMutabilityMetadata::Mutable, allow_multiple_var_args: first_pass_data.allow_multiple_var_args, }); true diff --git a/framework/derive/src/parse/method_parse.rs b/framework/derive/src/parse/method_parse.rs index 267e9faa7b..a8c8a111c7 100644 --- a/framework/derive/src/parse/method_parse.rs +++ b/framework/derive/src/parse/method_parse.rs @@ -137,8 +137,8 @@ fn validate_method(method: &Method) { assert!( matches!( method.public_role, - PublicRole::Init(_) | PublicRole::Endpoint(_) | PublicRole::CallbackPromise(_) - ) || method.label_names.is_empty(), + PublicRole::Init(_) | PublicRole::Endpoint(_) | PublicRole::CallbackPromise(_) | PublicRole::Upgrade(_) + ) || method.label_names.is_empty(), "Labels can only be placed on endpoints, constructors, and promises callbacks. Method '{}' is neither.", &method.name.to_string() ) diff --git a/framework/derive/src/validate/validate_method.rs b/framework/derive/src/validate/validate_method.rs index 9683e6c2ff..fafb2322e0 100644 --- a/framework/derive/src/validate/validate_method.rs +++ b/framework/derive/src/validate/validate_method.rs @@ -2,6 +2,7 @@ use super::reserved; use crate::model::{ArgPaymentMetadata, ContractTrait, Method, PublicRole}; const INIT_ENDPOINT_NAME: &str = "init"; +const UPGRADE_ENDPOINT_NAME: &str = "upgrade"; /// TODO: make it work with Result instead of panic pub fn validate_contract(contract_trait: &ContractTrait) { @@ -23,6 +24,10 @@ fn validate_method_name(m: &Method) { endpoint_name_str != INIT_ENDPOINT_NAME, "Cannot declare endpoint with name 'init'. Use #[init] instead." ); + assert!( + endpoint_name_str != UPGRADE_ENDPOINT_NAME, + "Cannot declare endpoint with name 'upgrade'. Use #[upgrade] instead." + ); assert!(!reserved::is_reserved(endpoint_name_str.as_str()), "Cannot declare endpoint with name '{endpoint_name_str}', because that name is reserved by the Arwen API."); } } @@ -73,7 +78,7 @@ fn validate_payment_args(m: &Method) { assert!(num_payment_token == 0, "`#[payment_token]` only allowed in payable endpoints, payable init or callbacks (method: `{}`)", m.name); } - if let PublicRole::Init(init_metadata) = &m.public_role { + if let PublicRole::Init(init_metadata) | PublicRole::Upgrade(init_metadata) = &m.public_role { assert!( init_metadata.payable.no_esdt(), "only EGLD payments currently allowed in constructors" diff --git a/framework/meta/src/abi_json/contract_abi_json.rs b/framework/meta/src/abi_json/contract_abi_json.rs index c4f62916c3..f8d3aad422 100644 --- a/framework/meta/src/abi_json/contract_abi_json.rs +++ b/framework/meta/src/abi_json/contract_abi_json.rs @@ -20,6 +20,10 @@ pub struct ContractAbiJson { #[serde(skip_serializing_if = "Option::is_none")] pub constructor: Option, + #[serde(default)] + #[serde(skip_serializing_if = "Option::is_none")] + pub upgrade_constructor: Option, + #[serde(default)] pub endpoints: Vec, @@ -48,6 +52,11 @@ impl From<&ContractAbi> for ContractAbiJson { docs: abi.docs.iter().map(|d| d.to_string()).collect(), name: abi.name.to_string(), constructor: abi.constructors.first().map(ConstructorAbiJson::from), + upgrade_constructor: abi + .endpoints + .iter() + .find(|c| matches!(c.endpoint_type, EndpointTypeAbi::Upgrade)) + .map(ConstructorAbiJson::from), endpoints: abi.endpoints.iter().map(EndpointAbiJson::from).collect(), promises_callback_names: abi .promise_callbacks diff --git a/framework/meta/src/cmd/contract/sc_config/contract_variant.rs b/framework/meta/src/cmd/contract/sc_config/contract_variant.rs index 6b6cf70cc4..99678a798b 100644 --- a/framework/meta/src/cmd/contract/sc_config/contract_variant.rs +++ b/framework/meta/src/cmd/contract/sc_config/contract_variant.rs @@ -154,6 +154,9 @@ impl ContractVariant { /// Should correspond to all wasm exported functions. pub fn all_exported_function_names(&self) -> Vec { let mut result = vec!["init".to_string()]; + if self.abi.constructors.len() > 1 { + result.push("upgrade".to_string()) + } result.append(&mut self.endpoint_names()); if self.abi.has_callback { result.push("callBack".to_string()); diff --git a/framework/meta/src/cmd/contract/sc_config/contract_variant_builder.rs b/framework/meta/src/cmd/contract/sc_config/contract_variant_builder.rs index d447ab4a0a..1c4c229313 100644 --- a/framework/meta/src/cmd/contract/sc_config/contract_variant_builder.rs +++ b/framework/meta/src/cmd/contract/sc_config/contract_variant_builder.rs @@ -174,6 +174,7 @@ fn build_contract_abi(builder: ContractVariantBuilder, original_abi: &ContractAb for endpoint_abi in builder.collected_endpoints { match endpoint_abi.endpoint_type { multiversx_sc::abi::EndpointTypeAbi::Init => constructors.push(endpoint_abi), + multiversx_sc::abi::EndpointTypeAbi::Upgrade => endpoints.push(endpoint_abi), multiversx_sc::abi::EndpointTypeAbi::Endpoint => endpoints.push(endpoint_abi), multiversx_sc::abi::EndpointTypeAbi::PromisesCallback => { promise_callbacks.push(endpoint_abi) diff --git a/framework/meta/src/cmd/contract/sc_config/contract_variant_validate.rs b/framework/meta/src/cmd/contract/sc_config/contract_variant_validate.rs index a0c0acb886..2b7a729bd1 100644 --- a/framework/meta/src/cmd/contract/sc_config/contract_variant_validate.rs +++ b/framework/meta/src/cmd/contract/sc_config/contract_variant_validate.rs @@ -1,4 +1,4 @@ -use multiversx_sc::abi::{ContractAbi, EndpointAbi}; +use multiversx_sc::abi::{ContractAbi, EndpointAbi, EndpointTypeAbi}; use super::ContractVariant; @@ -16,7 +16,13 @@ fn check_single_constructor(contract_variant: &ContractVariant) -> Result<(), St Err("Missing constructor. Add a method annotated with `#[init]`.".to_string()) }, 1 => Ok(()), - _ => Err("More than one contrctructor present. Exactly one method annotated with `#[init]` is required.".to_string()), + 2 => if has_init(contract_variant) && has_upgrade(contract_variant) { + Ok(()) + } + else { + Err("You can only have two constructors and only one of each: `#[init]` and `#[upgrade]`".to_string()) + } + _ => Err("More than two constructors present. Exactly one method annotated with `#[init]` and another optional `#[upgrade]` is required.".to_string()), } } @@ -25,7 +31,15 @@ fn has_upgrade(contract_variant: &ContractVariant) -> bool { .abi .endpoints .iter() - .any(|endpoint| endpoint.name == "upgrade") + .any(|endpoint| matches!(endpoint.endpoint_type, EndpointTypeAbi::Upgrade)) +} + +fn has_init(contract_variant: &ContractVariant) -> bool { + contract_variant + .abi + .constructors + .iter() + .any(|endpoint| matches!(endpoint.endpoint_type, EndpointTypeAbi::Init)) } /// Note: promise callbacks not included, since they have `#[call_value]` arguments, that are currently not modelled. diff --git a/framework/meta/src/cmd/contract/sc_config/wasm_crate_gen.rs b/framework/meta/src/cmd/contract/sc_config/wasm_crate_gen.rs index 7dde9e9805..386f51761c 100644 --- a/framework/meta/src/cmd/contract/sc_config/wasm_crate_gen.rs +++ b/framework/meta/src/cmd/contract/sc_config/wasm_crate_gen.rs @@ -1,4 +1,7 @@ -use multiversx_sc::{abi::EndpointAbi, external_view_contract::EXTERNAL_VIEW_CONSTRUCTOR_FLAG}; +use multiversx_sc::{ + abi::{EndpointAbi, EndpointTypeAbi}, + external_view_contract::EXTERNAL_VIEW_CONSTRUCTOR_FLAG, +}; use rustc_version::Version; use std::{ fs::{self, File}, @@ -110,7 +113,21 @@ fn write_stat_comment(wasm_lib_file: &mut File, label: &str, number: usize) { impl ContractVariant { /// Writing some nicely formatted comments breaking down all exported functions. fn write_stat_comments(&self, wasm_lib_file: &mut File) { - write_stat_comment(wasm_lib_file, "Init:", NUM_INIT); + let mut total = self.abi.endpoints.len() + NUM_ASYNC_CB + self.abi.promise_callbacks.len(); + + if !self.abi.constructors.is_empty() { + write_stat_comment(wasm_lib_file, "Init:", NUM_INIT); + total += NUM_INIT; + } + if self + .abi + .endpoints + .iter() + .any(|c| matches!(c.endpoint_type, EndpointTypeAbi::Upgrade)) + { + write_stat_comment(wasm_lib_file, "Upgrade:", NUM_INIT); + } + write_stat_comment(wasm_lib_file, "Endpoints:", self.abi.endpoints.len()); if self.abi.has_callback { write_stat_comment(wasm_lib_file, "Async Callback:", NUM_ASYNC_CB); @@ -124,8 +141,6 @@ impl ContractVariant { self.abi.promise_callbacks.len(), ); } - let total = - self.abi.endpoints.len() + NUM_INIT + NUM_ASYNC_CB + self.abi.promise_callbacks.len(); write_stat_comment(wasm_lib_file, "Total number of exported functions:", total); } From 10329dede4bf28f4ab093e53613f13cac56026fd Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 22 Feb 2024 13:55:49 +0200 Subject: [PATCH 038/461] remove struct from adder --- contracts/examples/adder/src/adder.rs | 33 --------------------------- 1 file changed, 33 deletions(-) diff --git a/contracts/examples/adder/src/adder.rs b/contracts/examples/adder/src/adder.rs index 8f504c1aea..9b261c5aa8 100644 --- a/contracts/examples/adder/src/adder.rs +++ b/contracts/examples/adder/src/adder.rs @@ -25,36 +25,3 @@ pub trait Adder { self.sum().update(|sum| *sum += value); } } - -pub struct TxProxy; - -impl TxProxyTrait for TxProxy -where - Env: TxEnv, -{ - type TxProxyMethods = TxProxyMethods; - - fn env(self, env: Env) -> Self::TxProxyMethods { - TxProxyMethods { env } - } -} - -impl TxProxyMethods { - pub fn add>>( - self, - arg0: Arg0, - ) -> multiversx_sc::types::Tx< - Env, - (), - (), - (), - (), - FunctionCall<::Api>, - (), - > { - Tx::new_with_env(self.env) - .raw_call() - .function_name("add") - .argument(&arg0) - } -} From ab7c770340ba763173e3ad83b292a8af7568f7fd Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 29 Feb 2024 00:28:02 +0200 Subject: [PATCH 039/461] changed ouput from each fn --- contracts/examples/adder/src/adder.rs | 143 ++++++++++++++++++ framework/base/src/types/interaction/mod.rs | 2 + .../base/src/types/interaction/tx_proxy.rs | 11 ++ framework/derive/src/contract_impl.rs | 6 - framework/derive/src/generate/proxy_gen.rs | 18 --- 5 files changed, 156 insertions(+), 24 deletions(-) create mode 100644 framework/base/src/types/interaction/tx_proxy.rs diff --git a/contracts/examples/adder/src/adder.rs b/contracts/examples/adder/src/adder.rs index 9b261c5aa8..d316d70a90 100644 --- a/contracts/examples/adder/src/adder.rs +++ b/contracts/examples/adder/src/adder.rs @@ -25,3 +25,146 @@ pub trait Adder { self.sum().update(|sum| *sum += value); } } + +pub struct TxProxy; + +impl TxProxyTrait for TxProxy +where + Env: TxEnv, +{ + type TxProxyMethods = TxProxyMethods; + + fn env(self, env: Env) -> Self::TxProxyMethods { + TxProxyMethods { env } + } +} + +trait TxProxyMethodsTrait { + fn add( + self, + value: Arg0, + ) -> multiversx_sc::types::Tx< + Env, + (), + (), + (), + (), + FunctionCall, + OriginalResultMarker, + > + where + Arg0: multiversx_sc::codec::CodecInto>; + + fn upgrade( + self, + initial_value: Arg0, + ) -> multiversx_sc::types::Tx< + Env, + (), + (), + (), + (), + FunctionCall, + OriginalResultMarker, + > + where + Arg0: multiversx_sc::codec::CodecInto>; + + fn sum( + self, + ) -> multiversx_sc::types::Tx< + Env, + (), + (), + (), + (), + FunctionCall, + OriginalResultMarker, + >; + + fn init( + self, + initial_value: Arg0, + ) -> multiversx_sc::types::Tx>>, OriginalResultMarker> + where + Arg0: multiversx_sc::codec::CodecInto>; +} + +impl TxProxyMethodsTrait + for TxProxyMethods +{ + fn init>, O>( + self, + initial_value: Arg0, + ) -> multiversx_sc::types::Tx< + Env, + (), + (), + (), + (), + FunctionCall, + OriginalResultMarker, + > { + Tx::new_with_env(self.env) + .raw_call() + .function_name("init") + .argument(&initial_value) + .original_result() + } + + fn sum( + self, + ) -> multiversx_sc::types::Tx< + Env, + (), + (), + (), + (), + FunctionCall, + OriginalResultMarker, + > { + Tx::new_with_env(self.env) + .raw_call() + .function_name("getSum") + .original_result() + } + + fn upgrade>, O>( + self, + initial_value: Arg0, + ) -> multiversx_sc::types::Tx< + Env, + (), + (), + (), + (), + FunctionCall, + OriginalResultMarker, + > { + Tx::new_with_env(self.env.clone()) + .raw_call() + .function_name("upgrade") + .argument(&initial_value) + .original_result() + } + + //Add desired amount to the storage variable. + fn add>, O>( + self, + value: Arg0, + ) -> multiversx_sc::types::Tx< + Env, + (), + (), + (), + (), + FunctionCall, + OriginalResultMarker, + > { + Tx::new_with_env(self.env.clone()) + .raw_call() + .function_name("add") + .argument(&value) + .original_result() + } +} diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index 0e13f0c5f2..1378a9ff94 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -38,6 +38,7 @@ mod tx_rh_list; mod tx_rh_original_result; mod tx_to; mod typed_function_call; +mod tx_proxy; pub use annotated::*; pub use async_call::AsyncCall; @@ -75,5 +76,6 @@ pub use tx_rh_list::*; pub use tx_rh_original_result::*; pub use tx_to::*; pub use typed_function_call::*; +pub use tx_proxy::*; pub type TxScBase = TxBaseWithEnv>; diff --git a/framework/base/src/types/interaction/tx_proxy.rs b/framework/base/src/types/interaction/tx_proxy.rs new file mode 100644 index 0000000000..dbbaadf77e --- /dev/null +++ b/framework/base/src/types/interaction/tx_proxy.rs @@ -0,0 +1,11 @@ +use super::TxEnv; + +pub trait TxProxyTrait { + type TxProxyMethods; + + fn env(self, env: Env) -> Self::TxProxyMethods; +} + +pub struct TxProxyMethods { + pub env: Env, +} diff --git a/framework/derive/src/contract_impl.rs b/framework/derive/src/contract_impl.rs index 414c261f72..1f6b3c9383 100644 --- a/framework/derive/src/contract_impl.rs +++ b/framework/derive/src/contract_impl.rs @@ -130,8 +130,6 @@ pub fn contract_implementation( }; let proxy_trait = proxy_gen::proxy_trait(contract); - let tx_proxy_trait = proxy_gen::tx_proxy_trait(); - let tx_proxy_methods = proxy_gen::tx_proxy_methods(); let proxy_obj_code = if is_contract_main { proxy_gen::proxy_obj_code(contract) } else { @@ -147,10 +145,6 @@ pub fn contract_implementation( #proxy_trait - #tx_proxy_trait - - #tx_proxy_methods - #proxy_obj_code #callback_proxies_obj diff --git a/framework/derive/src/generate/proxy_gen.rs b/framework/derive/src/generate/proxy_gen.rs index 0e1f851608..8f4734558e 100644 --- a/framework/derive/src/generate/proxy_gen.rs +++ b/framework/derive/src/generate/proxy_gen.rs @@ -298,24 +298,6 @@ pub fn proxy_trait(contract: &ContractTrait) -> proc_macro2::TokenStream { } } -pub fn tx_proxy_trait() -> proc_macro2::TokenStream { - quote! { - pub trait TxProxyTrait{ - type TxProxyMethods; - - fn env(self, env: Env) -> Self::TxProxyMethods; - } - } -} - -pub fn tx_proxy_methods() -> proc_macro2::TokenStream { - quote! { - pub struct TxProxyMethods { - env: Env, - } - } -} - pub fn proxy_obj_code(contract: &ContractTrait) -> proc_macro2::TokenStream { let proxy_object_def = snippets::proxy_object_def(); let impl_all_proxy_traits = From bb1217b7b271f4babadb2aaf4bb93fa58d56178c Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 29 Feb 2024 00:32:47 +0200 Subject: [PATCH 040/461] removed dummy code --- contracts/examples/adder/src/adder.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/examples/adder/src/adder.rs b/contracts/examples/adder/src/adder.rs index d316d70a90..e0cfe3eedf 100644 --- a/contracts/examples/adder/src/adder.rs +++ b/contracts/examples/adder/src/adder.rs @@ -85,7 +85,7 @@ trait TxProxyMethodsTrait { fn init( self, initial_value: Arg0, - ) -> multiversx_sc::types::Tx>>, OriginalResultMarker> + ) -> multiversx_sc::types::Tx, OriginalResultMarker> where Arg0: multiversx_sc::codec::CodecInto>; } From 2a5f9d53d5dedd14769484a6af0d362aaf06e8a1 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 29 Feb 2024 16:50:17 +0200 Subject: [PATCH 041/461] modified init call --- contracts/examples/adder/src/adder.rs | 85 ++++++++++++++++----------- 1 file changed, 50 insertions(+), 35 deletions(-) diff --git a/contracts/examples/adder/src/adder.rs b/contracts/examples/adder/src/adder.rs index e0cfe3eedf..59ba95ba20 100644 --- a/contracts/examples/adder/src/adder.rs +++ b/contracts/examples/adder/src/adder.rs @@ -39,8 +39,8 @@ where } } -trait TxProxyMethodsTrait { - fn add( +pub trait TxProxyMethodsTrait { + fn add( self, value: Arg0, ) -> multiversx_sc::types::Tx< @@ -50,12 +50,12 @@ trait TxProxyMethodsTrait { (), (), FunctionCall, - OriginalResultMarker, + OriginalResultMarker, > where Arg0: multiversx_sc::codec::CodecInto>; - fn upgrade( + fn upgrade( self, initial_value: Arg0, ) -> multiversx_sc::types::Tx< @@ -65,12 +65,12 @@ trait TxProxyMethodsTrait { (), (), FunctionCall, - OriginalResultMarker, + OriginalResultMarker, > where Arg0: multiversx_sc::codec::CodecInto>; - fn sum( + fn sum( self, ) -> multiversx_sc::types::Tx< Env, @@ -79,23 +79,33 @@ trait TxProxyMethodsTrait { (), (), FunctionCall, - OriginalResultMarker, + OriginalResultMarker, >; - fn init( + #[allow(clippy::type_complexity)] + fn init( self, initial_value: Arg0, - ) -> multiversx_sc::types::Tx, OriginalResultMarker> + ) -> multiversx_sc::types::Tx< + Env, + (), + (), + (), + (), + DeployCall, + OriginalResultMarker, + > where - Arg0: multiversx_sc::codec::CodecInto>; + Arg0: multiversx_sc::codec::CodecInto>, + DeployCall<::Api, ()>: TxData, + ::Api: TxEnv; } -impl TxProxyMethodsTrait +impl + multiversx_sc::api::CallTypeApi> TxProxyMethodsTrait for TxProxyMethods { - fn init>, O>( + fn sum( self, - initial_value: Arg0, ) -> multiversx_sc::types::Tx< Env, (), @@ -103,17 +113,17 @@ impl TxProxyMethodsTrait (), (), FunctionCall, - OriginalResultMarker, + OriginalResultMarker, > { Tx::new_with_env(self.env) .raw_call() - .function_name("init") - .argument(&initial_value) + .function_name("getSum") .original_result() } - fn sum( + fn upgrade>, OriginalResult>( self, + initial_value: Arg0, ) -> multiversx_sc::types::Tx< Env, (), @@ -121,17 +131,19 @@ impl TxProxyMethodsTrait (), (), FunctionCall, - OriginalResultMarker, + OriginalResultMarker, > { Tx::new_with_env(self.env) .raw_call() - .function_name("getSum") + .function_name("upgrade") + .argument(&initial_value) .original_result() } - fn upgrade>, O>( + //Add desired amount to the storage variable. + fn add>, OriginalResult>( self, - initial_value: Arg0, + value: Arg0, ) -> multiversx_sc::types::Tx< Env, (), @@ -139,32 +151,35 @@ impl TxProxyMethodsTrait (), (), FunctionCall, - OriginalResultMarker, + OriginalResultMarker, > { - Tx::new_with_env(self.env.clone()) + Tx::new_with_env(self.env) .raw_call() - .function_name("upgrade") - .argument(&initial_value) + .function_name("add") + .argument(&value) .original_result() } - //Add desired amount to the storage variable. - fn add>, O>( + fn init( self, - value: Arg0, + initial_value: Arg0, ) -> multiversx_sc::types::Tx< Env, (), (), (), (), - FunctionCall, - OriginalResultMarker, - > { - Tx::new_with_env(self.env.clone()) - .raw_call() - .function_name("add") - .argument(&value) + DeployCall<::Api, ()>, + OriginalResultMarker, + > + where + Arg0: multiversx_sc::codec::CodecInto>, + DeployCall<::Api, ()>: TxData, + ::Api: TxEnv, + { + Tx::new_with_env(self.env) + .raw_deploy() + .argument(&initial_value) .original_result() } } From 30fe9f4ae93d51e8af797fa6b01ee5d24e2450a1 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Thu, 29 Feb 2024 19:53:30 +0100 Subject: [PATCH 042/461] added upgrade constructors as separate field --- contracts/examples/adder/wasm/src/lib.rs | 7 ++++--- contracts/examples/factorial/wasm/src/lib.rs | 5 +++-- .../multisig/wasm-multisig-full/src/lib.rs | 5 +++-- contracts/examples/multisig/wasm/src/lib.rs | 5 +++-- .../src/lib.rs | 5 +++-- .../proxy-test-second/wasm/src/lib.rs | 5 +++-- .../vault/wasm-vault-upgrade/src/lib.rs | 6 +++--- .../composability/vault/wasm/src/lib.rs | 7 ++++--- framework/base/src/abi/contract_abi.rs | 4 ++++ framework/derive/src/generate/abi_gen.rs | 2 +- .../meta/src/abi_json/contract_abi_json.rs | 6 +----- .../contract/sc_config/contract_variant.rs | 3 ++- .../sc_config/contract_variant_builder.rs | 4 +++- .../sc_config/contract_variant_validate.rs | 21 ++++++++----------- .../cmd/contract/sc_config/wasm_crate_gen.rs | 12 ++--------- 15 files changed, 48 insertions(+), 49 deletions(-) diff --git a/contracts/examples/adder/wasm/src/lib.rs b/contracts/examples/adder/wasm/src/lib.rs index 13bb12ad6e..38c36e9d2c 100644 --- a/contracts/examples/adder/wasm/src/lib.rs +++ b/contracts/examples/adder/wasm/src/lib.rs @@ -5,9 +5,10 @@ //////////////////////////////////////////////////// // Init: 1 -// Endpoints: 3 +// Upgrade: 1 +// Endpoints: 2 // Async Callback (empty): 1 -// Total number of exported functions: 5 +// Total number of exported functions: 4 #![no_std] #![allow(internal_features)] @@ -20,8 +21,8 @@ multiversx_sc_wasm_adapter::endpoints! { adder ( init => init - getSum => sum upgrade => upgrade + getSum => sum add => add ) } diff --git a/contracts/examples/factorial/wasm/src/lib.rs b/contracts/examples/factorial/wasm/src/lib.rs index 7819e0b34f..0b5b352a7c 100644 --- a/contracts/examples/factorial/wasm/src/lib.rs +++ b/contracts/examples/factorial/wasm/src/lib.rs @@ -5,9 +5,10 @@ //////////////////////////////////////////////////// // Init: 1 -// Endpoints: 2 +// Upgrade: 1 +// Endpoints: 1 // Async Callback (empty): 1 -// Total number of exported functions: 4 +// Total number of exported functions: 3 #![no_std] #![allow(internal_features)] diff --git a/contracts/examples/multisig/wasm-multisig-full/src/lib.rs b/contracts/examples/multisig/wasm-multisig-full/src/lib.rs index b3f9a29bee..bc725882a2 100644 --- a/contracts/examples/multisig/wasm-multisig-full/src/lib.rs +++ b/contracts/examples/multisig/wasm-multisig-full/src/lib.rs @@ -5,9 +5,10 @@ //////////////////////////////////////////////////// // Init: 1 -// Endpoints: 29 +// Upgrade: 1 +// Endpoints: 28 // Async Callback: 1 -// Total number of exported functions: 31 +// Total number of exported functions: 30 #![no_std] #![allow(internal_features)] diff --git a/contracts/examples/multisig/wasm/src/lib.rs b/contracts/examples/multisig/wasm/src/lib.rs index 0bb7178ce4..553df1cde9 100644 --- a/contracts/examples/multisig/wasm/src/lib.rs +++ b/contracts/examples/multisig/wasm/src/lib.rs @@ -5,9 +5,10 @@ //////////////////////////////////////////////////// // Init: 1 -// Endpoints: 21 +// Upgrade: 1 +// Endpoints: 20 // Async Callback: 1 -// Total number of exported functions: 23 +// Total number of exported functions: 22 #![no_std] #![allow(internal_features)] diff --git a/contracts/feature-tests/composability/forwarder-raw/wasm-forwarder-raw-init-async-call/src/lib.rs b/contracts/feature-tests/composability/forwarder-raw/wasm-forwarder-raw-init-async-call/src/lib.rs index 01c9657fd7..c81e3182c8 100644 --- a/contracts/feature-tests/composability/forwarder-raw/wasm-forwarder-raw-init-async-call/src/lib.rs +++ b/contracts/feature-tests/composability/forwarder-raw/wasm-forwarder-raw-init-async-call/src/lib.rs @@ -5,9 +5,10 @@ //////////////////////////////////////////////////// // Init: 1 -// Endpoints: 1 +// Upgrade: 1 +// Endpoints: 0 // Async Callback: 1 -// Total number of exported functions: 3 +// Total number of exported functions: 2 #![no_std] #![allow(internal_features)] diff --git a/contracts/feature-tests/composability/proxy-test-second/wasm/src/lib.rs b/contracts/feature-tests/composability/proxy-test-second/wasm/src/lib.rs index e10ed79624..bf6cc294c2 100644 --- a/contracts/feature-tests/composability/proxy-test-second/wasm/src/lib.rs +++ b/contracts/feature-tests/composability/proxy-test-second/wasm/src/lib.rs @@ -5,9 +5,10 @@ //////////////////////////////////////////////////// // Init: 1 -// Endpoints: 4 +// Upgrade: 1 +// Endpoints: 3 // Async Callback (empty): 1 -// Total number of exported functions: 6 +// Total number of exported functions: 5 #![no_std] #![allow(internal_features)] diff --git a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/src/lib.rs b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/src/lib.rs index 904a343933..772ffc92ba 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/src/lib.rs +++ b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/src/lib.rs @@ -4,10 +4,10 @@ ////////////////// AUTO-GENERATED ////////////////// //////////////////////////////////////////////////// -// Init: 1 -// Endpoints: 1 +// Upgrade: 1 +// Endpoints: 0 // Async Callback (empty): 1 -// Total number of exported functions: 3 +// Total number of exported functions: 1 #![no_std] #![allow(internal_features)] diff --git a/contracts/feature-tests/composability/vault/wasm/src/lib.rs b/contracts/feature-tests/composability/vault/wasm/src/lib.rs index 3ef976396a..c6e864fbbe 100644 --- a/contracts/feature-tests/composability/vault/wasm/src/lib.rs +++ b/contracts/feature-tests/composability/vault/wasm/src/lib.rs @@ -5,9 +5,10 @@ //////////////////////////////////////////////////// // Init: 1 -// Endpoints: 16 +// Upgrade: 1 +// Endpoints: 15 // Async Callback (empty): 1 -// Total number of exported functions: 18 +// Total number of exported functions: 17 #![no_std] #![allow(internal_features)] @@ -20,6 +21,7 @@ multiversx_sc_wasm_adapter::endpoints! { vault ( init => init + upgrade => upgrade echo_arguments => echo_arguments echo_arguments_without_storage => echo_arguments_without_storage echo_caller => echo_caller @@ -35,7 +37,6 @@ multiversx_sc_wasm_adapter::endpoints! { call_counts => call_counts num_called_retrieve_funds_promises => num_called_retrieve_funds_promises num_async_calls_sent_from_child => num_async_calls_sent_from_child - upgrade => upgrade ) } diff --git a/framework/base/src/abi/contract_abi.rs b/framework/base/src/abi/contract_abi.rs index 3b22d160e7..793b9eed5d 100644 --- a/framework/base/src/abi/contract_abi.rs +++ b/framework/base/src/abi/contract_abi.rs @@ -10,6 +10,7 @@ pub struct ContractAbi { pub docs: Vec, pub name: String, pub constructors: Vec, + pub upgrade_constructors: Vec, pub endpoints: Vec, pub promise_callbacks: Vec, pub events: Vec, @@ -26,6 +27,7 @@ impl ContractAbi { docs: docs.iter().map(|s| s.to_string()).collect(), name: name.to_string(), constructors: Vec::new(), + upgrade_constructors: Vec::new(), endpoints: Vec::new(), promise_callbacks: Vec::new(), events: Vec::new(), @@ -39,6 +41,7 @@ impl ContractAbi { self.constructors .extend_from_slice(other.constructors.as_slice()); self.endpoints.extend_from_slice(other.endpoints.as_slice()); + self.upgrade_constructors.extend_from_slice(other.upgrade_constructors.as_slice()); self.events.extend_from_slice(other.events.as_slice()); self.promise_callbacks .extend_from_slice(other.promise_callbacks.as_slice()); @@ -75,6 +78,7 @@ impl ContractAbi { pub fn iter_all_exports(&self) -> impl Iterator { self.constructors .iter() + .chain(self.upgrade_constructors.iter()) .chain(self.endpoints.iter()) .chain(self.promise_callbacks.iter()) } diff --git a/framework/derive/src/generate/abi_gen.rs b/framework/derive/src/generate/abi_gen.rs index 71c4c1b822..f9a5e8360b 100644 --- a/framework/derive/src/generate/abi_gen.rs +++ b/framework/derive/src/generate/abi_gen.rs @@ -103,7 +103,7 @@ fn generate_endpoint_snippets(contract: &ContractTrait) -> Vec { diff --git a/framework/meta/src/abi_json/contract_abi_json.rs b/framework/meta/src/abi_json/contract_abi_json.rs index f8d3aad422..aa8cc0df7f 100644 --- a/framework/meta/src/abi_json/contract_abi_json.rs +++ b/framework/meta/src/abi_json/contract_abi_json.rs @@ -52,11 +52,7 @@ impl From<&ContractAbi> for ContractAbiJson { docs: abi.docs.iter().map(|d| d.to_string()).collect(), name: abi.name.to_string(), constructor: abi.constructors.first().map(ConstructorAbiJson::from), - upgrade_constructor: abi - .endpoints - .iter() - .find(|c| matches!(c.endpoint_type, EndpointTypeAbi::Upgrade)) - .map(ConstructorAbiJson::from), + upgrade_constructor: abi.upgrade_constructors.first().map(ConstructorAbiJson::from), endpoints: abi.endpoints.iter().map(EndpointAbiJson::from).collect(), promises_callback_names: abi .promise_callbacks diff --git a/framework/meta/src/cmd/contract/sc_config/contract_variant.rs b/framework/meta/src/cmd/contract/sc_config/contract_variant.rs index 99678a798b..e1ff06da5d 100644 --- a/framework/meta/src/cmd/contract/sc_config/contract_variant.rs +++ b/framework/meta/src/cmd/contract/sc_config/contract_variant.rs @@ -154,7 +154,7 @@ impl ContractVariant { /// Should correspond to all wasm exported functions. pub fn all_exported_function_names(&self) -> Vec { let mut result = vec!["init".to_string()]; - if self.abi.constructors.len() > 1 { + if !self.abi.upgrade_constructors.is_empty() { result.push("upgrade".to_string()) } result.append(&mut self.endpoint_names()); @@ -172,6 +172,7 @@ impl std::fmt::Debug for ContractVariant { .field("config_name", &self.contract_id) .field("public_name", &self.contract_name) .field("num-constructors", &self.abi.constructors.len()) + .field("num-upgrade-constructors", &self.abi.upgrade_constructors.len()) .field("num-endpoints", &self.abi.endpoints.len()) .field("settings", &self.settings) .finish() diff --git a/framework/meta/src/cmd/contract/sc_config/contract_variant_builder.rs b/framework/meta/src/cmd/contract/sc_config/contract_variant_builder.rs index 1c4c229313..2d8b9dd54e 100644 --- a/framework/meta/src/cmd/contract/sc_config/contract_variant_builder.rs +++ b/framework/meta/src/cmd/contract/sc_config/contract_variant_builder.rs @@ -169,12 +169,13 @@ fn collect_add_endpoints( fn build_contract_abi(builder: ContractVariantBuilder, original_abi: &ContractAbi) -> ContractAbi { let mut constructors = Vec::new(); + let mut upgrade_constructors = Vec::new(); let mut endpoints = Vec::new(); let mut promise_callbacks = Vec::new(); for endpoint_abi in builder.collected_endpoints { match endpoint_abi.endpoint_type { multiversx_sc::abi::EndpointTypeAbi::Init => constructors.push(endpoint_abi), - multiversx_sc::abi::EndpointTypeAbi::Upgrade => endpoints.push(endpoint_abi), + multiversx_sc::abi::EndpointTypeAbi::Upgrade => upgrade_constructors.push(endpoint_abi), multiversx_sc::abi::EndpointTypeAbi::Endpoint => endpoints.push(endpoint_abi), multiversx_sc::abi::EndpointTypeAbi::PromisesCallback => { promise_callbacks.push(endpoint_abi) @@ -189,6 +190,7 @@ fn build_contract_abi(builder: ContractVariantBuilder, original_abi: &ContractAb docs: original_abi.docs.clone(), name: original_abi.name.clone(), constructors, + upgrade_constructors, endpoints, promise_callbacks, events: original_abi.events.clone(), diff --git a/framework/meta/src/cmd/contract/sc_config/contract_variant_validate.rs b/framework/meta/src/cmd/contract/sc_config/contract_variant_validate.rs index 2b7a729bd1..093650ebd2 100644 --- a/framework/meta/src/cmd/contract/sc_config/contract_variant_validate.rs +++ b/framework/meta/src/cmd/contract/sc_config/contract_variant_validate.rs @@ -1,4 +1,4 @@ -use multiversx_sc::abi::{ContractAbi, EndpointAbi, EndpointTypeAbi}; +use multiversx_sc::abi::{ContractAbi, EndpointAbi}; use super::ContractVariant; @@ -27,24 +27,21 @@ fn check_single_constructor(contract_variant: &ContractVariant) -> Result<(), St } fn has_upgrade(contract_variant: &ContractVariant) -> bool { - contract_variant - .abi - .endpoints - .iter() - .any(|endpoint| matches!(endpoint.endpoint_type, EndpointTypeAbi::Upgrade)) + !contract_variant.abi.upgrade_constructors.is_empty() } fn has_init(contract_variant: &ContractVariant) -> bool { - contract_variant - .abi - .constructors - .iter() - .any(|endpoint| matches!(endpoint.endpoint_type, EndpointTypeAbi::Init)) + !contract_variant.abi.constructors.is_empty() } /// Note: promise callbacks not included, since they have `#[call_value]` arguments, that are currently not modelled. fn validate_contract_var_args(abi: &ContractAbi) -> Result<(), String> { - for endpoint_abi in abi.constructors.iter().chain(abi.endpoints.iter()) { + for endpoint_abi in abi + .constructors + .iter() + .chain(abi.upgrade_constructors.iter()) + .chain(abi.endpoints.iter()) + { validate_endpoint_var_args_number(endpoint_abi)?; validate_endpoint_var_args_order(endpoint_abi)?; } diff --git a/framework/meta/src/cmd/contract/sc_config/wasm_crate_gen.rs b/framework/meta/src/cmd/contract/sc_config/wasm_crate_gen.rs index 386f51761c..e4d0230490 100644 --- a/framework/meta/src/cmd/contract/sc_config/wasm_crate_gen.rs +++ b/framework/meta/src/cmd/contract/sc_config/wasm_crate_gen.rs @@ -1,7 +1,4 @@ -use multiversx_sc::{ - abi::{EndpointAbi, EndpointTypeAbi}, - external_view_contract::EXTERNAL_VIEW_CONSTRUCTOR_FLAG, -}; +use multiversx_sc::{abi::EndpointAbi, external_view_contract::EXTERNAL_VIEW_CONSTRUCTOR_FLAG}; use rustc_version::Version; use std::{ fs::{self, File}, @@ -119,12 +116,7 @@ impl ContractVariant { write_stat_comment(wasm_lib_file, "Init:", NUM_INIT); total += NUM_INIT; } - if self - .abi - .endpoints - .iter() - .any(|c| matches!(c.endpoint_type, EndpointTypeAbi::Upgrade)) - { + if !self.abi.upgrade_constructors.is_empty() { write_stat_comment(wasm_lib_file, "Upgrade:", NUM_INIT); } From 9d0ae2a03628f660df8c5cc8c3716004887a439b Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 29 Feb 2024 15:30:49 -0700 Subject: [PATCH 043/461] temporary tx proxy --- contracts/examples/adder/src/adder.rs | 161 +----------------- contracts/examples/adder/src/temp_proxy.rs | 82 +++++++++ .../base/src/types/interaction/tx_proxy.rs | 4 - 3 files changed, 85 insertions(+), 162 deletions(-) create mode 100644 contracts/examples/adder/src/temp_proxy.rs diff --git a/contracts/examples/adder/src/adder.rs b/contracts/examples/adder/src/adder.rs index 59ba95ba20..88de4bb099 100644 --- a/contracts/examples/adder/src/adder.rs +++ b/contracts/examples/adder/src/adder.rs @@ -1,6 +1,9 @@ #![no_std] multiversx_sc::imports!(); + +pub mod temp_proxy; + /// One of the simplest smart contracts possible, /// it holds a single variable in storage, which anyone can increment. #[multiversx_sc::contract] @@ -25,161 +28,3 @@ pub trait Adder { self.sum().update(|sum| *sum += value); } } - -pub struct TxProxy; - -impl TxProxyTrait for TxProxy -where - Env: TxEnv, -{ - type TxProxyMethods = TxProxyMethods; - - fn env(self, env: Env) -> Self::TxProxyMethods { - TxProxyMethods { env } - } -} - -pub trait TxProxyMethodsTrait { - fn add( - self, - value: Arg0, - ) -> multiversx_sc::types::Tx< - Env, - (), - (), - (), - (), - FunctionCall, - OriginalResultMarker, - > - where - Arg0: multiversx_sc::codec::CodecInto>; - - fn upgrade( - self, - initial_value: Arg0, - ) -> multiversx_sc::types::Tx< - Env, - (), - (), - (), - (), - FunctionCall, - OriginalResultMarker, - > - where - Arg0: multiversx_sc::codec::CodecInto>; - - fn sum( - self, - ) -> multiversx_sc::types::Tx< - Env, - (), - (), - (), - (), - FunctionCall, - OriginalResultMarker, - >; - - #[allow(clippy::type_complexity)] - fn init( - self, - initial_value: Arg0, - ) -> multiversx_sc::types::Tx< - Env, - (), - (), - (), - (), - DeployCall, - OriginalResultMarker, - > - where - Arg0: multiversx_sc::codec::CodecInto>, - DeployCall<::Api, ()>: TxData, - ::Api: TxEnv; -} - -impl + multiversx_sc::api::CallTypeApi> TxProxyMethodsTrait - for TxProxyMethods -{ - fn sum( - self, - ) -> multiversx_sc::types::Tx< - Env, - (), - (), - (), - (), - FunctionCall, - OriginalResultMarker, - > { - Tx::new_with_env(self.env) - .raw_call() - .function_name("getSum") - .original_result() - } - - fn upgrade>, OriginalResult>( - self, - initial_value: Arg0, - ) -> multiversx_sc::types::Tx< - Env, - (), - (), - (), - (), - FunctionCall, - OriginalResultMarker, - > { - Tx::new_with_env(self.env) - .raw_call() - .function_name("upgrade") - .argument(&initial_value) - .original_result() - } - - //Add desired amount to the storage variable. - fn add>, OriginalResult>( - self, - value: Arg0, - ) -> multiversx_sc::types::Tx< - Env, - (), - (), - (), - (), - FunctionCall, - OriginalResultMarker, - > { - Tx::new_with_env(self.env) - .raw_call() - .function_name("add") - .argument(&value) - .original_result() - } - - fn init( - self, - initial_value: Arg0, - ) -> multiversx_sc::types::Tx< - Env, - (), - (), - (), - (), - DeployCall<::Api, ()>, - OriginalResultMarker, - > - where - Arg0: multiversx_sc::codec::CodecInto>, - DeployCall<::Api, ()>: TxData, - ::Api: TxEnv, - { - Tx::new_with_env(self.env) - .raw_deploy() - .argument(&initial_value) - .original_result() - } -} diff --git a/contracts/examples/adder/src/temp_proxy.rs b/contracts/examples/adder/src/temp_proxy.rs new file mode 100644 index 0000000000..a703317132 --- /dev/null +++ b/contracts/examples/adder/src/temp_proxy.rs @@ -0,0 +1,82 @@ +use multiversx_sc::api::VMApi; + +multiversx_sc::imports!(); + +pub struct TxProxy; + +impl TxProxyTrait for TxProxy +where + Env: TxEnv, +{ + type TxProxyMethods = TxProxyMethods; + + fn env(self, env: Env) -> Self::TxProxyMethods { + TxProxyMethods { env } + } +} + +pub struct TxProxyMethods { + pub env: Env, +} + +impl TxProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, +{ + pub fn init>>( + self, + initial_value: Arg0, + ) -> multiversx_sc::types::Tx< + Env, + (), + (), + (), + (), + FunctionCall, + OriginalResultMarker<()>, + > { + Tx::new_with_env(self.env) + .raw_call() + .function_name("init") + .argument(&initial_value) + .original_result() + } + + pub fn sum( + self, + ) -> multiversx_sc::types::Tx< + Env, + (), + (), + (), + (), + FunctionCall, + OriginalResultMarker>>, + > { + Tx::new_with_env(self.env) + .raw_call() + .function_name("getSum") + .original_result() + } + + //Add desired amount to the storage variable. + pub fn add>>( + self, + value: Arg0, + ) -> multiversx_sc::types::Tx< + Env, + (), + (), + (), + (), + FunctionCall, + OriginalResultMarker<()>, + > { + Tx::new_with_env(self.env) + .raw_call() + .function_name("add") + .argument(&value) + .original_result() + } +} diff --git a/framework/base/src/types/interaction/tx_proxy.rs b/framework/base/src/types/interaction/tx_proxy.rs index dbbaadf77e..25063ecea5 100644 --- a/framework/base/src/types/interaction/tx_proxy.rs +++ b/framework/base/src/types/interaction/tx_proxy.rs @@ -5,7 +5,3 @@ pub trait TxProxyTrait { fn env(self, env: Env) -> Self::TxProxyMethods; } - -pub struct TxProxyMethods { - pub env: Env, -} From 84c5e5d0769adf2c0781ad4154d64fcb51f4472c Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Fri, 1 Mar 2024 16:06:14 +0100 Subject: [PATCH 044/461] fix after review --- .../abi_tester_expected_main.abi.json | 16 ++++++++++ .../abi-tester/src/abi_tester.rs | 6 ++++ .../feature-tests/abi-tester/wasm/src/lib.rs | 2 ++ .../sc_config/contract_variant_validate.rs | 29 +++++-------------- 4 files changed, 31 insertions(+), 22 deletions(-) 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 430deb54a5..3cf574ed35 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 @@ -44,6 +44,22 @@ ], "outputs": [] }, + "upgradeConstructor": { + "docs": [ + "Upgrade constructor." + ], + "inputs": [ + { + "name": "_constructor_arg_1", + "type": "i32" + }, + { + "name": "_constructor_arg_2", + "type": "OnlyShowsUpInConstructor" + } + ], + "outputs": [] + }, "endpoints": [ { "docs": [ diff --git a/contracts/feature-tests/abi-tester/src/abi_tester.rs b/contracts/feature-tests/abi-tester/src/abi_tester.rs index a68ea341a3..15fe5f3c4a 100644 --- a/contracts/feature-tests/abi-tester/src/abi_tester.rs +++ b/contracts/feature-tests/abi-tester/src/abi_tester.rs @@ -30,6 +30,12 @@ pub trait AbiTester { #[payable("EGLD")] fn init(&self, _constructor_arg_1: i32, _constructor_arg_2: OnlyShowsUpInConstructor) {} + /// Upgrade constructor. + #[upgrade] + fn upgrade(&self, _constructor_arg_1: i32, _constructor_arg_2: OnlyShowsUpInConstructor) { + self.init(_constructor_arg_1, _constructor_arg_2) + } + /// Example endpoint docs. #[endpoint] #[output_name("single output")] diff --git a/contracts/feature-tests/abi-tester/wasm/src/lib.rs b/contracts/feature-tests/abi-tester/wasm/src/lib.rs index 6a15c9899b..e38197e707 100644 --- a/contracts/feature-tests/abi-tester/wasm/src/lib.rs +++ b/contracts/feature-tests/abi-tester/wasm/src/lib.rs @@ -5,6 +5,7 @@ //////////////////////////////////////////////////// // Init: 1 +// Upgrade: 1 // Endpoints: 27 // Async Callback (empty): 1 // Total number of exported functions: 29 @@ -20,6 +21,7 @@ multiversx_sc_wasm_adapter::endpoints! { abi_tester ( init => init + upgrade => upgrade echo_abi_test_type => echo_abi_test_type echo_enum => echo_enum take_managed_type => take_managed_type diff --git a/framework/meta/src/cmd/contract/sc_config/contract_variant_validate.rs b/framework/meta/src/cmd/contract/sc_config/contract_variant_validate.rs index 093650ebd2..eb64d00e48 100644 --- a/framework/meta/src/cmd/contract/sc_config/contract_variant_validate.rs +++ b/framework/meta/src/cmd/contract/sc_config/contract_variant_validate.rs @@ -9,31 +9,16 @@ pub fn validate_contract_variant(contract_variant: &ContractVariant) -> Result<( } fn check_single_constructor(contract_variant: &ContractVariant) -> Result<(), String> { - match contract_variant.abi.constructors.len() { - 0 => if has_upgrade(contract_variant) { - Ok(()) - } else { - Err("Missing constructor. Add a method annotated with `#[init]`.".to_string()) - }, - 1 => Ok(()), - 2 => if has_init(contract_variant) && has_upgrade(contract_variant) { - Ok(()) - } - else { - Err("You can only have two constructors and only one of each: `#[init]` and `#[upgrade]`".to_string()) - } - _ => Err("More than two constructors present. Exactly one method annotated with `#[init]` and another optional `#[upgrade]` is required.".to_string()), + match ( + contract_variant.abi.constructors.len(), + contract_variant.abi.upgrade_constructors.len(), + ) { + (0, 0) => Err("Missing constructor. Add a method annotated with `#[init]`.".to_string()), + (1, 0) | (0, 1) | (1, 1) => Ok(()), + (_, _) => Err("More than two constructors present. Exactly one method annotated with `#[init]` and/or another optional `#[upgrade]` is required. ".to_string()), } } -fn has_upgrade(contract_variant: &ContractVariant) -> bool { - !contract_variant.abi.upgrade_constructors.is_empty() -} - -fn has_init(contract_variant: &ContractVariant) -> bool { - !contract_variant.abi.constructors.is_empty() -} - /// Note: promise callbacks not included, since they have `#[call_value]` arguments, that are currently not modelled. fn validate_contract_var_args(abi: &ContractAbi) -> Result<(), String> { for endpoint_abi in abi From 54e80ded2af605102263a7d5328d0340ef87ccb0 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 1 Mar 2024 20:52:07 -0700 Subject: [PATCH 045/461] unified syntax - tx proxy tx lambda method --- .../tests/adder_blackbox_with_values_test.rs | 5 ++- framework/base/src/types/interaction/tx.rs | 37 ++++++++++++++++++- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs b/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs index 17b07e44b8..a53d7f3a5c 100644 --- a/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs @@ -1,5 +1,5 @@ use adder::*; -use multiversx_sc::{storage::mappers::SingleValue, types::AddressExpr}; +use multiversx_sc::{storage::mappers::SingleValue, types::{AddressExpr, ScExpr}}; use multiversx_sc_scenario::{api::StaticApi, num_bigint::BigUint, scenario_model::*, *}; const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; @@ -43,7 +43,8 @@ fn adder_blackbox_with_values() { ) .tx(|tx| { tx.from(AddressExpr("owner")) - .call(adder_contract.add(3u32)) + .to(ScExpr("adder")) + .typed(temp_proxy::TxProxy, |p| p.add(3u32)) .with_result(WithRawTxResponse(|response| { assert!(response.tx_error.is_success()); })) diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 2aaa4f373a..58f1f896a0 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -14,8 +14,8 @@ use super::{ Code, ContractCallNoPayment, ContractCallWithEgld, ContractDeploy, DeployCall, ExplicitGas, FromSource, FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, TxData, TxDataFunctionCall, TxEnv, TxFrom, - TxFromSpecified, TxGas, TxPayment, TxPaymentEgldOnly, TxResultHandler, TxScEnv, TxTo, - TxToSpecified, + TxFromSpecified, TxGas, TxPayment, TxPaymentEgldOnly, TxProxyTrait, TxResultHandler, TxScEnv, + TxTo, TxToSpecified, }; #[must_use] @@ -466,6 +466,39 @@ where } } +impl Tx +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn typed( + self, + proxy: Proxy, + f: F, + ) -> Tx + where + Proxy: TxProxyTrait, + Payment: TxPayment, + Data: TxData, + RH: TxResultHandler, + F: FnOnce(Proxy::TxProxyMethods) -> Tx, + { + let proxy_methods = proxy.env(self.env); + let proxy_tx = f(proxy_methods); + Tx { + env: proxy_tx.env, + from: self.from, + to: self.to, + payment: proxy_tx.payment, + gas: self.gas, + data: proxy_tx.data, + result_handler: proxy_tx.result_handler, + } + } +} + impl Tx where From 0d0412601683092a9666f544fa1d7a8a8915a210 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 1 Mar 2024 21:24:14 -0700 Subject: [PATCH 046/461] unified syntax - tx proxy v2 --- contracts/examples/adder/src/adder.rs | 1 + contracts/examples/adder/src/temp_proxy_v2.rs | 94 +++++++++++++++++++ .../tests/adder_blackbox_with_values_test.rs | 16 +++- framework/base/src/types/interaction/tx.rs | 13 ++- .../base/src/types/interaction/tx_proxy.rs | 14 ++- 5 files changed, 132 insertions(+), 6 deletions(-) create mode 100644 contracts/examples/adder/src/temp_proxy_v2.rs diff --git a/contracts/examples/adder/src/adder.rs b/contracts/examples/adder/src/adder.rs index 88de4bb099..541c37d5df 100644 --- a/contracts/examples/adder/src/adder.rs +++ b/contracts/examples/adder/src/adder.rs @@ -3,6 +3,7 @@ multiversx_sc::imports!(); pub mod temp_proxy; +pub mod temp_proxy_v2; /// One of the simplest smart contracts possible, /// it holds a single variable in storage, which anyone can increment. diff --git a/contracts/examples/adder/src/temp_proxy_v2.rs b/contracts/examples/adder/src/temp_proxy_v2.rs new file mode 100644 index 0000000000..3206e45fac --- /dev/null +++ b/contracts/examples/adder/src/temp_proxy_v2.rs @@ -0,0 +1,94 @@ +use multiversx_sc::api::VMApi; + +multiversx_sc::imports!(); + +pub struct TxProxy; + +impl TxProxyTraitV2 for TxProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = TxProxyMethods; + + fn prepare_methods(self, tx: Tx) -> Self::TxProxyMethods { + TxProxyMethods { wrapped_tx: tx } + } +} + +pub struct TxProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +impl TxProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn init>>( + self, + initial_value: Arg0, + ) -> multiversx_sc::types::Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("init") + .argument(&initial_value) + .original_result() + } + + pub fn sum( + self, + ) -> multiversx_sc::types::Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>>, + > { + self.wrapped_tx + .raw_call() + .function_name("getSum") + .original_result() + } + + //Add desired amount to the storage variable. + pub fn add>>( + self, + value: Arg0, + ) -> multiversx_sc::types::Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("add") + .argument(&value) + .original_result() + } +} diff --git a/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs b/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs index a53d7f3a5c..c097f1fcd6 100644 --- a/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs @@ -1,5 +1,8 @@ use adder::*; -use multiversx_sc::{storage::mappers::SingleValue, types::{AddressExpr, ScExpr}}; +use multiversx_sc::{ + storage::mappers::SingleValue, + types::{AddressExpr, ScExpr}, +}; use multiversx_sc_scenario::{api::StaticApi, num_bigint::BigUint, scenario_model::*, *}; const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; @@ -44,7 +47,16 @@ fn adder_blackbox_with_values() { .tx(|tx| { tx.from(AddressExpr("owner")) .to(ScExpr("adder")) - .typed(temp_proxy::TxProxy, |p| p.add(3u32)) + .typed_v1(temp_proxy::TxProxy, |p| p.add(2u32)) + .with_result(WithRawTxResponse(|response| { + assert!(response.tx_error.is_success()); + })) + }) + .tx(|tx| { + tx.from(AddressExpr("owner")) + .to(ScExpr("adder")) + .typed_v2(temp_proxy_v2::TxProxy) + .add(1u32) .with_result(WithRawTxResponse(|response| { assert!(response.tx_error.is_success()); })) diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 58f1f896a0..5ccdb483c5 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -14,8 +14,8 @@ use super::{ Code, ContractCallNoPayment, ContractCallWithEgld, ContractDeploy, DeployCall, ExplicitGas, FromSource, FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, TxData, TxDataFunctionCall, TxEnv, TxFrom, - TxFromSpecified, TxGas, TxPayment, TxPaymentEgldOnly, TxProxyTrait, TxResultHandler, TxScEnv, - TxTo, TxToSpecified, + TxFromSpecified, TxGas, TxPayment, TxPaymentEgldOnly, TxProxyTrait, TxProxyTraitV2, + TxResultHandler, TxScEnv, TxTo, TxToSpecified, }; #[must_use] @@ -473,7 +473,7 @@ where To: TxTo, Gas: TxGas, { - pub fn typed( + pub fn typed_v1( self, proxy: Proxy, f: F, @@ -497,6 +497,13 @@ where result_handler: proxy_tx.result_handler, } } + + pub fn typed_v2(self, proxy: Proxy) -> Proxy::TxProxyMethods + where + Proxy: TxProxyTraitV2, + { + proxy.prepare_methods(self) + } } impl diff --git a/framework/base/src/types/interaction/tx_proxy.rs b/framework/base/src/types/interaction/tx_proxy.rs index 25063ecea5..90ac72d76b 100644 --- a/framework/base/src/types/interaction/tx_proxy.rs +++ b/framework/base/src/types/interaction/tx_proxy.rs @@ -1,7 +1,19 @@ -use super::TxEnv; +use super::{Tx, TxEnv, TxFrom, TxGas, TxTo}; pub trait TxProxyTrait { type TxProxyMethods; fn env(self, env: Env) -> Self::TxProxyMethods; } + +pub trait TxProxyTraitV2 +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods; + + fn prepare_methods(self, tx: Tx) -> Self::TxProxyMethods; +} From b67a16973eb2012addcfd7d74231a1e758e5f4f4 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 4 Mar 2024 14:04:21 +0100 Subject: [PATCH 047/461] temporary tx proxy - init --- contracts/examples/adder/src/temp_proxy.rs | 5 ++--- contracts/examples/adder/src/temp_proxy_v2.rs | 19 +++++++++++++------ 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/contracts/examples/adder/src/temp_proxy.rs b/contracts/examples/adder/src/temp_proxy.rs index a703317132..a92bf8213c 100644 --- a/contracts/examples/adder/src/temp_proxy.rs +++ b/contracts/examples/adder/src/temp_proxy.rs @@ -33,12 +33,11 @@ where (), (), (), - FunctionCall, + DeployCall, OriginalResultMarker<()>, > { Tx::new_with_env(self.env) - .raw_call() - .function_name("init") + .raw_deploy() .argument(&initial_value) .original_result() } diff --git a/contracts/examples/adder/src/temp_proxy_v2.rs b/contracts/examples/adder/src/temp_proxy_v2.rs index 3206e45fac..f18015ae98 100644 --- a/contracts/examples/adder/src/temp_proxy_v2.rs +++ b/contracts/examples/adder/src/temp_proxy_v2.rs @@ -28,11 +28,10 @@ where wrapped_tx: Tx, } -impl TxProxyMethods +impl TxProxyMethods where Env: TxEnv, Env::Api: VMApi, - From: TxFrom, To: TxTo, Gas: TxGas, { @@ -41,20 +40,28 @@ where initial_value: Arg0, ) -> multiversx_sc::types::Tx< Env, - From, + (), To, (), Gas, - FunctionCall, + DeployCall, OriginalResultMarker<()>, > { self.wrapped_tx - .raw_call() - .function_name("init") + .raw_deploy() .argument(&initial_value) .original_result() } +} +impl TxProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ pub fn sum( self, ) -> multiversx_sc::types::Tx< From 8b479fd23e2620295320c3c8e3dd635247101208 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 4 Mar 2024 21:05:46 +0100 Subject: [PATCH 048/461] clippy fix --- contracts/examples/adder/src/temp_proxy.rs | 13 ++++--------- contracts/examples/adder/src/temp_proxy_v2.rs | 13 ++++--------- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/contracts/examples/adder/src/temp_proxy.rs b/contracts/examples/adder/src/temp_proxy.rs index a92bf8213c..a3e72adde0 100644 --- a/contracts/examples/adder/src/temp_proxy.rs +++ b/contracts/examples/adder/src/temp_proxy.rs @@ -1,3 +1,5 @@ +#![allow(clippy::all)] + use multiversx_sc::api::VMApi; multiversx_sc::imports!(); @@ -27,15 +29,8 @@ where pub fn init>>( self, initial_value: Arg0, - ) -> multiversx_sc::types::Tx< - Env, - (), - (), - (), - (), - DeployCall, - OriginalResultMarker<()>, - > { + ) -> multiversx_sc::types::Tx, OriginalResultMarker<()>> + { Tx::new_with_env(self.env) .raw_deploy() .argument(&initial_value) diff --git a/contracts/examples/adder/src/temp_proxy_v2.rs b/contracts/examples/adder/src/temp_proxy_v2.rs index f18015ae98..fb6f8cd50e 100644 --- a/contracts/examples/adder/src/temp_proxy_v2.rs +++ b/contracts/examples/adder/src/temp_proxy_v2.rs @@ -1,3 +1,5 @@ +#![allow(clippy::all)] + use multiversx_sc::api::VMApi; multiversx_sc::imports!(); @@ -38,15 +40,8 @@ where pub fn init>>( self, initial_value: Arg0, - ) -> multiversx_sc::types::Tx< - Env, - (), - To, - (), - Gas, - DeployCall, - OriginalResultMarker<()>, - > { + ) -> multiversx_sc::types::Tx, OriginalResultMarker<()>> + { self.wrapped_tx .raw_deploy() .argument(&initial_value) From 92164aa4f2dbe2fccc506320f56b9f015b815c6c Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 4 Mar 2024 21:05:52 +0100 Subject: [PATCH 049/461] cargo fmt --- framework/base/src/types/interaction/mod.rs | 4 ++-- .../meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index 1378a9ff94..5c0e54dfeb 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -33,12 +33,12 @@ mod tx_env_sc; mod tx_from; mod tx_gas; mod tx_payment; +mod tx_proxy; mod tx_result_handler; mod tx_rh_list; mod tx_rh_original_result; mod tx_to; mod typed_function_call; -mod tx_proxy; pub use annotated::*; pub use async_call::AsyncCall; @@ -71,11 +71,11 @@ pub use tx_env_sc::*; pub use tx_from::*; pub use tx_gas::*; pub use tx_payment::*; +pub use tx_proxy::*; pub use tx_result_handler::*; pub use tx_rh_list::*; pub use tx_rh_original_result::*; pub use tx_to::*; pub use typed_function_call::*; -pub use tx_proxy::*; pub type TxScBase = TxBaseWithEnv>; diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs index 7c6aa7e0bf..79776bedc2 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs @@ -9,8 +9,7 @@ use super::{ proxy_crate_gen::create_file, proxy_sc_functions_gen::write_content, proxy_template_gen::{ - write_impl_for_tx_proxy, write_imports, write_struct_template, - write_tx_proxy_method_header, + write_impl_for_tx_proxy, write_imports, write_struct_template, write_tx_proxy_method_header, }, }; From f471c1a62e518f8c87c7fe4fd65e58529ce0bc67 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 4 Mar 2024 22:28:38 +0100 Subject: [PATCH 050/461] unified syntax - annotation cleanup --- .../base/src/types/interaction/expr_sc.rs | 7 +++++ .../base/src/types/interaction/tx_env.rs | 8 ------ .../base/src/types/interaction/tx_env_sc.rs | 12 -------- .../src/facade/world_tx/scenario_env.rs | 16 ----------- .../src/facade/world_tx/scenario_tx.rs | 28 +++++++++++++++---- 5 files changed, 29 insertions(+), 42 deletions(-) diff --git a/framework/base/src/types/interaction/expr_sc.rs b/framework/base/src/types/interaction/expr_sc.rs index cf1fa47914..e7a403c76f 100644 --- a/framework/base/src/types/interaction/expr_sc.rs +++ b/framework/base/src/types/interaction/expr_sc.rs @@ -5,6 +5,8 @@ use crate::types::{ManagedAddress, ManagedBuffer}; use super::{AnnotatedValue, TxEnv, TxFrom, TxFromSpecified, TxTo, TxToSpecified}; const SC_PREFIX: &str = "sc:"; +const VM_TYPE_LEN: usize = 2; +const DEFAULT_VM_TYPE: &[u8] = &[5, 0]; #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub struct ScExpr<'a>(pub &'a str); @@ -52,6 +54,11 @@ impl<'a> ScExpr<'a> { len = 22; } unsafe { + ptr::copy_nonoverlapping( + DEFAULT_VM_TYPE.as_ptr(), + result.as_ptr().offset(8) as *mut u8, + VM_TYPE_LEN, + ); ptr::copy_nonoverlapping( expr_bytes.as_ptr(), result.as_ptr().offset(10) as *mut u8, diff --git a/framework/base/src/types/interaction/tx_env.rs b/framework/base/src/types/interaction/tx_env.rs index fd47db3287..2072c1d88d 100644 --- a/framework/base/src/types/interaction/tx_env.rs +++ b/framework/base/src/types/interaction/tx_env.rs @@ -5,14 +5,6 @@ use super::AnnotatedValue; pub trait TxEnv: Sized { type Api: CallTypeApi; - fn annotate_from(&mut self, from: &From) - where - From: AnnotatedValue>; - - fn annotate_to(&mut self, to: &To) - where - To: AnnotatedValue>; - fn resolve_sender_address(&self) -> ManagedAddress; fn default_gas(&self) -> u64; diff --git a/framework/base/src/types/interaction/tx_env_sc.rs b/framework/base/src/types/interaction/tx_env_sc.rs index 0fa61eb44a..cddc6c052b 100644 --- a/framework/base/src/types/interaction/tx_env_sc.rs +++ b/framework/base/src/types/interaction/tx_env_sc.rs @@ -43,18 +43,6 @@ where { type Api = Api; - fn annotate_from(&mut self, _from: &From) - where - From: AnnotatedValue>, - { - } - - fn annotate_to(&mut self, _to: &To) - where - To: AnnotatedValue>, - { - } - fn resolve_sender_address(&self) -> ManagedAddress { BlockchainWrapper::::new().get_sc_address() } diff --git a/framework/scenario/src/facade/world_tx/scenario_env.rs b/framework/scenario/src/facade/world_tx/scenario_env.rs index 16e92e2ee1..6e8a8ef8b4 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env.rs @@ -9,28 +9,12 @@ pub type TxScenarioBase = TxBaseWithEnv; #[derive(Default, Debug, Clone)] pub struct ScenarioTxEnvironment { pub context_path: PathBuf, - pub from_annotation: Option, - pub to_annotation: Option, pub response: Option, } impl TxEnv for ScenarioTxEnvironment { type Api = StaticApi; - fn annotate_from(&mut self, to: &From) - where - From: AnnotatedValue>, - { - self.from_annotation = Some(to.annotation(self).to_string()) - } - - fn annotate_to(&mut self, to: &To) - where - To: AnnotatedValue>, - { - self.to_annotation = Some(to.annotation(self).to_string()) - } - fn resolve_sender_address(&self) -> ManagedAddress { panic!("Explicit sender address expected") } diff --git a/framework/scenario/src/facade/world_tx/scenario_tx.rs b/framework/scenario/src/facade/world_tx/scenario_tx.rs index 403116c825..e2c54477b3 100644 --- a/framework/scenario/src/facade/world_tx/scenario_tx.rs +++ b/framework/scenario/src/facade/world_tx/scenario_tx.rs @@ -1,11 +1,17 @@ +use multiversx_chain_scenario_format::serde_raw::ValueSubTree; use multiversx_sc::{ tuple_util::NestedTupleFlatten, types::{ - FunctionCall, RHListSync, Tx, TxEnv, TxFromSpecified, TxGas, TxPayment, TxToSpecified, + AnnotatedValue, FunctionCall, ManagedAddress, RHListSync, Tx, TxEnv, TxFromSpecified, + TxGas, TxPayment, TxToSpecified, }, }; -use crate::{api::StaticApi, scenario_model::ScCallStep, ScenarioWorld}; +use crate::{ + api::StaticApi, + scenario_model::{AddressValue, ScCallStep}, + ScenarioWorld, +}; use super::{RHListScenario, ScenarioTxEnvironment, TxScenarioBase}; @@ -44,6 +50,18 @@ pub trait ScenarioTx { fn run_as_scenario_step(self, world: &mut ScenarioWorld) -> Self::Returns; } +fn address_annotated(env: &Env, from: Addr) -> AddressValue +where + Env: TxEnv, + Addr: AnnotatedValue>, +{ + let annotation = from.annotation(env).to_string(); + AddressValue { + value: from.into_value().to_address(), + original: ValueSubTree::Str(annotation), + } +} + impl ScenarioTx for Tx, RH> where @@ -58,11 +76,9 @@ where fn run_as_scenario_step(self, world: &mut ScenarioWorld) -> Self::Returns { let mut env = self.env; - env.annotate_from(&self.from); - env.annotate_to(&self.to); let mut step = ScCallStep::new() - .from(env.from_annotation.as_ref().unwrap().as_str()) - .to(env.to_annotation.as_ref().unwrap().as_str()) + .from(address_annotated(&env, self.from)) + .to(address_annotated(&env, self.to)) .function(self.data.function_name.to_string().as_str()); for arg in self.data.arg_buffer.iter_buffers() { step = step.argument(arg.to_vec()); From e0591abd78ce2dc5a91dc18d41292300c36729e5 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Wed, 6 Mar 2024 15:36:16 +0200 Subject: [PATCH 051/461] proxy for constructor --- .../adder/proxies_struct_interactor_main.rs | 133 ++++++++---------- .../contract/generate_proxy/proxy_gen_main.rs | 6 +- .../generate_proxy/proxy_sc_functions_gen.rs | 119 ++++++++++++---- .../generate_proxy/proxy_template_gen.rs | 41 ++++-- 4 files changed, 189 insertions(+), 110 deletions(-) diff --git a/contracts/examples/adder/proxies_struct_interactor_main.rs b/contracts/examples/adder/proxies_struct_interactor_main.rs index d682df98c8..1f0d8d51cb 100644 --- a/contracts/examples/adder/proxies_struct_interactor_main.rs +++ b/contracts/examples/adder/proxies_struct_interactor_main.rs @@ -1,90 +1,73 @@ +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(clippy::all)] + +use multiversx_sc::api::VMApi; + multiversx_sc::imports!(); pub struct TxProxy; -impl TxProxyTrait for TxProxy +impl TxProxyTraitV2 for TxProxy where Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, { - type TxProxyMethods = TxProxyMethods; + type TxProxyMethods = TxProxyMethods; - fn env(self, env: Env) -> Self::TxProxyMethods { - TxProxyMethods { env } + fn prepare_methods(self, tx: Tx) -> Self::TxProxyMethods { + TxProxyMethods { wrapped_tx: tx } } } -impl TxProxyMethods { - pub fn init< - Arg0: multiversx_sc::codec::CodecInto>, - >( - &mut self, - initial_value: Arg0, - ) -> multiversx_sc::types::Tx::Api>, - (), - > { - Tx::new_with_env(self.env.clone()) - .raw_call() - .function_name("init") - .argument(&initial_value) - } - - pub fn sum( - &mut self, - ) -> multiversx_sc::types::Tx::Api>, - (), - > { - Tx::new_with_env(self.env.clone()) - .raw_call() - .function_name("getSum") - } +pub struct TxProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} - pub fn upgrade< - Arg0: multiversx_sc::codec::CodecInto>, - >( - &mut self, - initial_value: Arg0, - ) -> multiversx_sc::types::Tx::Api>, - (), - > { - Tx::new_with_env(self.env.clone()) - .raw_call() - .function_name("upgrade") - .argument(&initial_value) - } +impl TxProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + To: TxTo, + Gas: TxGas, +{ + pub fn init>>( + self, + initial_value: Arg0, + ) -> multiversx_sc::types::Tx, OriginalResultMarker<()>> + { + self.wrapped_tx + .raw_deploy() + .argument(&initial_value) + .original_result() + } +} +impl TxProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn sum(self) {} - //Add desired amount to the storage variable. - pub fn add< - Arg0: multiversx_sc::codec::CodecInto>, - >( - &mut self, - value: Arg0, - ) -> multiversx_sc::types::Tx::Api>, - (), - > { - Tx::new_with_env(self.env.clone()) - .raw_call() - .function_name("add") - .argument(&value) - } + pub fn upgrade>>( + self, + initial_value: Arg0, + ) { + } + //Add desired amount to the storage variable. + pub fn add>>(self, value: Arg0) {} } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs index 79776bedc2..e1b7745e31 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs @@ -9,7 +9,7 @@ use super::{ proxy_crate_gen::create_file, proxy_sc_functions_gen::write_content, proxy_template_gen::{ - write_impl_for_tx_proxy, write_imports, write_struct_template, write_tx_proxy_method_header, + write_header, write_impl_for_tx_proxy, write_struct_template, write_struct_tx_proxy_methods, }, }; @@ -23,9 +23,9 @@ impl MetaConfig { } fn write_proxies_to_file(mut file: File, abi: ContractAbi) { - write_imports(&mut file); + write_header(&mut file); write_struct_template(&mut file); write_impl_for_tx_proxy(&mut file); - write_tx_proxy_method_header(&mut file); + write_struct_tx_proxy_methods(&mut file); write_content(&mut file, abi); } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs index c818c27400..c16c6489c6 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs @@ -1,28 +1,59 @@ use std::{fs::File, io::Write}; -use multiversx_sc::abi::{ContractAbi, EndpointAbi, InputAbi}; +use multiversx_sc::abi::{ContractAbi, EndpointAbi, InputAbi, OutputAbi}; use crate::cmd::contract::generate_snippets::{ - snippet_gen_common::write_newline, - snippet_type_map::{handle_abi_type, RustTypeString}, + snippet_gen_common::write_newline, snippet_sc_functions_gen::map_output_types_to_rust_types, snippet_type_map::{handle_abi_type, RustTypeString} }; pub(crate) fn write_content(file: &mut File, abi: ContractAbi) { + write_header_impl_constructors(file); for constructor_abi in abi.constructors { - write_endpoint(file, constructor_abi.clone()); - write_function_content(file, constructor_abi); + write_constructor_header(file, constructor_abi.clone()); + write_constructor_content(file, constructor_abi.inputs); write_end_of_function(file); } + writeln!(file, "}}").unwrap(); + write_header_impl_endpoints(file); for endpoint_abi in abi.endpoints { - write_endpoint(file, endpoint_abi.clone()); - write_function_content(file, endpoint_abi); - write_end_of_function(file); + write_endpoint_header(file, endpoint_abi.clone()); + // write_function_content(file, endpoint_abi); + // write_end_of_function(file); } writeln!(file, "}}").unwrap(); } +fn write_header_impl_constructors(file: &mut File) { + writeln!( + file, + r#"impl TxProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + To: TxTo, + Gas: TxGas, +{{"# + ) + .unwrap(); +} + +fn write_header_impl_endpoints(file: &mut File) { + writeln!( + file, + r#"impl TxProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{{"# + ) + .unwrap(); +} + fn write_function_content(file: &mut File, end: EndpointAbi) { writeln!( file, @@ -43,36 +74,74 @@ fn write_function_content(file: &mut File, end: EndpointAbi) { } } -fn write_endpoint(file: &mut File, endpoint_abi: EndpointAbi) { +fn write_constructor_content(file: &mut File, inputs: Vec) { + writeln!( + file, + "\t\tself.wrapped_tx + .raw_deploy()" + ) + .unwrap(); + + for input in inputs.iter() { + writeln!( + file, + "\t\t\t.argument(&{})", + input.arg_name // .argument(&arg0)" + ) + .unwrap(); + } + + writeln!(file, "\t\t\t.original_result()").unwrap(); +} + +fn write_constructor_header(file: &mut File, contructor_abi: EndpointAbi) { + write_fn_signature(file, contructor_abi); + write_constructor_output(file); +} + +fn write_endpoint_header(file: &mut File, contructor_abi: EndpointAbi) { + write_fn_signature(file, contructor_abi.clone()); + write_endpoint_output(file, contructor_abi.outputs); +} + +fn write_fn_signature(file: &mut File, endpoint_abi: EndpointAbi) { write_info_endpoint(file, endpoint_abi.docs); write_function_header_endpoint(file, endpoint_abi.rust_method_name); write_args(file, endpoint_abi.inputs.clone()); - write_parameters_and_output(file, endpoint_abi.inputs); + write_parameters(file, endpoint_abi.inputs); } -#[rustfmt::skip] -fn write_parameters_and_output(file: &mut File, inputs: Vec) { +fn write_parameters(file: &mut File, inputs: Vec) { writeln!(file, "(").unwrap(); - writeln!(file, "\t\t&mut self,").unwrap(); + writeln!(file, "\t\tself,").unwrap(); for (index, input) in inputs.iter().enumerate() { writeln!(file, "\t\t{}: Arg{index},", &input.arg_name).unwrap(); } - write!( + write!(file, "\t) ").unwrap(); +} + +fn write_constructor_output(file: &mut File) { + writeln!( file, - "\t) -> multiversx_sc::types::Tx::Api>, - (), - > {{\n" + "-> multiversx_sc::types::Tx, OriginalResultMarker<()>>\n\t{{" ) .unwrap(); } +fn write_endpoint_output(file: &mut File, outputs: Vec) { + let output_type = map_output_types_to_rust_types(&outputs); + + println!("->>> output_type{}", output_type); + + let output_type_print = output_type.replace("", ""); + + println!("{}", output_type_print); + // write!(file, "{output_type_print}",).unwrap(); + // writeln!(file, "> {{").unwrap(); +} + fn write_function_header_endpoint(file: &mut File, rust_method_name: String) { write!(file, "\tpub fn {rust_method_name}").unwrap(); } @@ -104,9 +173,11 @@ fn write_args(file: &mut File, inputs: Vec) { fn write_argument(file: &mut File, index: usize, type_name: String) { let mut type_string = RustTypeString::default(); handle_abi_type(&mut type_string, type_name); - let type_string_str = type_string.get_type_name().to_string(); - let type_print = type_string_str.replace("", ""); + let type_print = type_string + .get_type_name() + .to_string() + .replace("", ""); writeln!( file, diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs index 9742b54c59..7af38cd93a 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs @@ -2,8 +2,20 @@ use std::{fs::File, io::Write}; use crate::cmd::contract::generate_snippets::snippet_gen_common::write_newline; -pub(crate) fn write_imports(file: &mut File) { - writeln!(file, r#"multiversx_sc::imports!();"#).unwrap(); +const PREFIX_AUTO_GENERATED: &str = "//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// +"; + +const IMPORTS: &str = "#![allow(clippy::all)] + +use multiversx_sc::api::VMApi; + +multiversx_sc::imports!();"; + +pub(crate) fn write_header(file: &mut File) { + writeln!(file, "{PREFIX_AUTO_GENERATED}").unwrap(); + writeln!(file, r#"{IMPORTS}"#).unwrap(); write_newline(file); } @@ -16,14 +28,17 @@ pub(crate) fn write_struct_template(file: &mut File) { pub(crate) fn write_impl_for_tx_proxy(file: &mut File) { writeln!( file, - r#"impl TxProxyTrait for TxProxy + r#"impl TxProxyTraitV2 for TxProxy where Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, {{ - type TxProxyMethods = TxProxyMethods; + type TxProxyMethods = TxProxyMethods; - fn env(self, env: Env) -> Self::TxProxyMethods {{ - TxProxyMethods {{ env }} + fn prepare_methods(self, tx: Tx) -> Self::TxProxyMethods {{ + TxProxyMethods {{ wrapped_tx: tx }} }} }}"# ) @@ -32,10 +47,20 @@ where write_newline(file); } -pub(crate) fn write_tx_proxy_method_header(file: &mut File) { +pub(crate) fn write_struct_tx_proxy_methods(file: &mut File) { writeln!( file, - r#"impl TxProxyMethods {{"# + r#"pub struct TxProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{{ + wrapped_tx: Tx, +}}"# ) .unwrap(); + + write_newline(file); } From 0008cbccfd4623f349d91231d2902449fa79feb8 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 7 Mar 2024 02:55:38 +0200 Subject: [PATCH 052/461] refactor - expr module --- framework/base/src/types/interaction/expr.rs | 5 +++++ .../interaction/{expr_address.rs => expr/address_expr.rs} | 4 +--- .../src/types/interaction/{expr_sc.rs => expr/sc_expr.rs} | 7 ++++--- framework/base/src/types/interaction/mod.rs | 6 ++---- 4 files changed, 12 insertions(+), 10 deletions(-) create mode 100644 framework/base/src/types/interaction/expr.rs rename framework/base/src/types/interaction/{expr_address.rs => expr/address_expr.rs} (95%) rename framework/base/src/types/interaction/{expr_sc.rs => expr/sc_expr.rs} (95%) diff --git a/framework/base/src/types/interaction/expr.rs b/framework/base/src/types/interaction/expr.rs new file mode 100644 index 0000000000..c43da390f9 --- /dev/null +++ b/framework/base/src/types/interaction/expr.rs @@ -0,0 +1,5 @@ +mod address_expr; +mod sc_expr; + +pub use address_expr::AddressExpr; +pub use sc_expr::ScExpr; diff --git a/framework/base/src/types/interaction/expr_address.rs b/framework/base/src/types/interaction/expr/address_expr.rs similarity index 95% rename from framework/base/src/types/interaction/expr_address.rs rename to framework/base/src/types/interaction/expr/address_expr.rs index c450d49043..97c56d056c 100644 --- a/framework/base/src/types/interaction/expr_address.rs +++ b/framework/base/src/types/interaction/expr/address_expr.rs @@ -1,8 +1,6 @@ use core::ptr; -use crate::types::{ManagedAddress, ManagedBuffer}; - -use super::{AnnotatedValue, TxEnv, TxFrom, TxFromSpecified}; +use crate::types::{AnnotatedValue, ManagedAddress, ManagedBuffer, TxEnv, TxFrom, TxFromSpecified}; const ADDRESS_PREFIX: &str = "address:"; diff --git a/framework/base/src/types/interaction/expr_sc.rs b/framework/base/src/types/interaction/expr/sc_expr.rs similarity index 95% rename from framework/base/src/types/interaction/expr_sc.rs rename to framework/base/src/types/interaction/expr/sc_expr.rs index e7a403c76f..9529c39348 100644 --- a/framework/base/src/types/interaction/expr_sc.rs +++ b/framework/base/src/types/interaction/expr/sc_expr.rs @@ -1,8 +1,9 @@ use core::ptr; -use crate::types::{ManagedAddress, ManagedBuffer}; - -use super::{AnnotatedValue, TxEnv, TxFrom, TxFromSpecified, TxTo, TxToSpecified}; +use crate::types::{ + AnnotatedValue, ManagedAddress, ManagedBuffer, TxEnv, TxFrom, TxFromSpecified, TxTo, + TxToSpecified, +}; const SC_PREFIX: &str = "sc:"; const VM_TYPE_LEN: usize = 2; diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index 5c0e54dfeb..4e3fcc42b4 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -16,8 +16,7 @@ mod contract_call_with_egld_or_single_esdt; mod contract_call_with_multi_esdt; mod contract_deploy; mod deploy_call; -mod expr_address; -mod expr_sc; +mod expr; mod function_call; mod managed_arg_buffer; mod tx; @@ -56,8 +55,7 @@ pub use contract_call_with_egld_or_single_esdt::ContractCallWithEgldOrSingleEsdt pub use contract_call_with_multi_esdt::ContractCallWithMultiEsdt; pub use contract_deploy::{new_contract_deploy, ContractDeploy}; pub use deploy_call::*; -pub use expr_address::AddressExpr; -pub use expr_sc::ScExpr; +pub use expr::*; pub use function_call::FunctionCall; pub use managed_arg_buffer::ManagedArgBuffer; pub use tx::*; From 9fad0f831b679168f0353b7b2bbfc7543dc7cd2f Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 7 Mar 2024 04:05:59 +0200 Subject: [PATCH 053/461] refactor: AnnotatedValue --- .../base/src/types/interaction/annotated.rs | 18 ++++---------- .../types/interaction/expr/address_expr.rs | 24 ++++++++++++------- .../src/types/interaction/expr/sc_expr.rs | 19 ++++++++------- framework/base/src/types/interaction/tx.rs | 2 +- .../base/src/types/interaction/tx_call_te.rs | 2 +- framework/base/src/types/interaction/tx_to.rs | 22 +++++++++++++++-- .../scenario/src/facade/contract_info.rs | 8 ++----- 7 files changed, 55 insertions(+), 40 deletions(-) diff --git a/framework/base/src/types/interaction/annotated.rs b/framework/base/src/types/interaction/annotated.rs index bf01d4a4f9..708551a9fd 100644 --- a/framework/base/src/types/interaction/annotated.rs +++ b/framework/base/src/types/interaction/annotated.rs @@ -6,11 +6,9 @@ pub trait AnnotatedValue where Env: TxEnv, { - fn annotation(&self, _env: &Env) -> ManagedBuffer; + fn annotation(&self, env: &Env) -> ManagedBuffer; - fn into_value(self) -> T; - - fn with_value_ref(&self, f: F); + fn into_value(self, env: &Env) -> T; } impl AnnotatedValue> for ManagedAddress @@ -21,13 +19,9 @@ where self.hex_expr() } - fn into_value(self) -> ManagedAddress { + fn into_value(self, _env: &Env) -> ManagedAddress { self } - - fn with_value_ref)>(&self, f: F) { - f(self) - } } impl AnnotatedValue> for &ManagedAddress @@ -38,11 +32,7 @@ where self.hex_expr() } - fn into_value(self) -> ManagedAddress { + fn into_value(self, _env: &Env) -> ManagedAddress { self.clone() } - - fn with_value_ref)>(&self, f: F) { - f(self) - } } diff --git a/framework/base/src/types/interaction/expr/address_expr.rs b/framework/base/src/types/interaction/expr/address_expr.rs index 97c56d056c..9e1fd943b6 100644 --- a/framework/base/src/types/interaction/expr/address_expr.rs +++ b/framework/base/src/types/interaction/expr/address_expr.rs @@ -1,6 +1,9 @@ use core::ptr; -use crate::types::{AnnotatedValue, ManagedAddress, ManagedBuffer, TxEnv, TxFrom, TxFromSpecified}; +use crate::types::{ + AnnotatedValue, ManagedAddress, ManagedBuffer, TxEnv, TxFrom, TxFromSpecified, TxTo, + TxToSpecified, +}; const ADDRESS_PREFIX: &str = "address:"; @@ -17,16 +20,10 @@ where result } - fn into_value(self) -> ManagedAddress { + fn into_value(self, _env: &Env) -> ManagedAddress { let expr: [u8; 32] = self.eval_to_array(); expr.into() } - - fn with_value_ref)>(&self, f: F) { - let expr: [u8; 32] = self.eval_to_array(); - let ma = expr.into(); - f(&ma); - } } impl TxFrom for AddressExpr where @@ -38,6 +35,17 @@ where } } impl TxFromSpecified for AddressExpr where Env: TxEnv {} +impl TxTo for AddressExpr where Env: TxEnv {} +impl TxToSpecified for AddressExpr +where + Env: TxEnv, +{ + fn with_address_ref)>(&self, _env: &Env, f: F) { + let expr: [u8; 32] = self.eval_to_array(); + let ma = expr.into(); + f(&ma); + } +} impl AddressExpr { pub const fn eval_to_array(&self) -> [u8; 32] { diff --git a/framework/base/src/types/interaction/expr/sc_expr.rs b/framework/base/src/types/interaction/expr/sc_expr.rs index 9529c39348..b3c444bfa0 100644 --- a/framework/base/src/types/interaction/expr/sc_expr.rs +++ b/framework/base/src/types/interaction/expr/sc_expr.rs @@ -22,16 +22,10 @@ where result } - fn into_value(self) -> ManagedAddress { + fn into_value(self, _env: &Env) -> ManagedAddress { let expr: [u8; 32] = self.eval_to_array(); expr.into() } - - fn with_value_ref)>(&self, f: F) { - let expr: [u8; 32] = self.eval_to_array(); - let ma = expr.into(); - f(&ma); - } } impl<'a, Env> TxFrom for ScExpr<'a> where @@ -44,7 +38,16 @@ where } impl<'a, Env> TxFromSpecified for ScExpr<'a> where Env: TxEnv {} impl<'a, Env> TxTo for ScExpr<'a> where Env: TxEnv {} -impl<'a, Env> TxToSpecified for ScExpr<'a> where Env: TxEnv {} +impl<'a, Env> TxToSpecified for ScExpr<'a> +where + Env: TxEnv, +{ + fn with_address_ref)>(&self, _env: &Env, f: F) { + let expr: [u8; 32] = self.eval_to_array(); + let ma = expr.into(); + f(&ma); + } +} impl<'a> ScExpr<'a> { pub const fn eval_to_array(&self) -> [u8; 32] { diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 5ccdb483c5..fc44e39245 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -582,7 +582,7 @@ where let result = self.payment.convert_tx_data( &self.env, &self.from, - self.to.into_value(), + self.to.into_value(&self.env), self.data.into(), ); Tx { diff --git a/framework/base/src/types/interaction/tx_call_te.rs b/framework/base/src/types/interaction/tx_call_te.rs index 0f1157d570..b7a97a93d1 100644 --- a/framework/base/src/types/interaction/tx_call_te.rs +++ b/framework/base/src/types/interaction/tx_call_te.rs @@ -16,7 +16,7 @@ where RH: TxEmptyResultHandler>, { fn transfer_execute_with_gas(self, gas_limit: u64) { - self.to.with_value_ref(|to| { + self.to.with_address_ref(&self.env, |to| { self.payment .perform_transfer_execute(&self.env, to, gas_limit, self.data.into()); }); diff --git a/framework/base/src/types/interaction/tx_to.rs b/framework/base/src/types/interaction/tx_to.rs index bbf520c8ef..8c51fd2d33 100644 --- a/framework/base/src/types/interaction/tx_to.rs +++ b/framework/base/src/types/interaction/tx_to.rs @@ -14,10 +14,28 @@ pub trait TxToSpecified: TxTo + AnnotatedValue)>(&self, env: &Env, f: F); } impl TxTo for ManagedAddress where Env: TxEnv {} -impl TxToSpecified for ManagedAddress where Env: TxEnv {} +impl TxToSpecified for ManagedAddress +where + Env: TxEnv, +{ + fn with_address_ref)>(&self, _env: &Env, f: F) { + f(&self) + } +} impl TxTo for &ManagedAddress where Env: TxEnv {} -impl TxToSpecified for &ManagedAddress where Env: TxEnv {} +impl TxToSpecified for &ManagedAddress +where + Env: TxEnv, +{ + fn with_address_ref)>(&self, _env: &Env, f: F) { + f(self) + } +} diff --git a/framework/scenario/src/facade/contract_info.rs b/framework/scenario/src/facade/contract_info.rs index 06e99b6461..ba2766d3e4 100644 --- a/framework/scenario/src/facade/contract_info.rs +++ b/framework/scenario/src/facade/contract_info.rs @@ -117,15 +117,11 @@ where self.scenario_address_expr.original.as_str().into() } - fn into_value(self) -> ManagedAddress { + fn into_value(self, _env: &Env) -> ManagedAddress { (&self.scenario_address_expr.value).into() } - - fn with_value_ref)>(&self, f: F) { - let ma: ManagedAddress = (&self.scenario_address_expr.value).into(); - f(&ma); - } } + impl TxFrom for &ContractInfo

where Env: TxEnv, From 4eec1215bff3d57a867c99404382319b74fd7e9a Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 7 Mar 2024 04:14:07 +0200 Subject: [PATCH 054/461] test fix --- framework/base/src/types/interaction/expr/sc_expr.rs | 6 +++--- framework/scenario/src/facade/contract_info.rs | 4 ++++ framework/scenario/src/facade/world_tx/scenario_tx.rs | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/framework/base/src/types/interaction/expr/sc_expr.rs b/framework/base/src/types/interaction/expr/sc_expr.rs index b3c444bfa0..4d05f8bab1 100644 --- a/framework/base/src/types/interaction/expr/sc_expr.rs +++ b/framework/base/src/types/interaction/expr/sc_expr.rs @@ -85,15 +85,15 @@ pub mod tests { fn test_address_value() { assert_eq_eval( "", - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00______________________", + b"\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00______________________", ); assert_eq_eval( "a", - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00a_____________________", + b"\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00a_____________________", ); assert_eq_eval( "12345678901234567890120s", - b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x001234567890123456789012", + b"\x00\x00\x00\x00\x00\x00\x00\x00\x05\x001234567890123456789012", ); } } diff --git a/framework/scenario/src/facade/contract_info.rs b/framework/scenario/src/facade/contract_info.rs index ba2766d3e4..9f88ad9a8b 100644 --- a/framework/scenario/src/facade/contract_info.rs +++ b/framework/scenario/src/facade/contract_info.rs @@ -148,4 +148,8 @@ where Env: TxEnv, P: ProxyObjNew, { + fn with_address_ref)>(&self, _env: &Env, f: F) { + let ma: ManagedAddress = (&self.scenario_address_expr.value).into(); + f(&ma); + } } diff --git a/framework/scenario/src/facade/world_tx/scenario_tx.rs b/framework/scenario/src/facade/world_tx/scenario_tx.rs index e2c54477b3..489d0c88a8 100644 --- a/framework/scenario/src/facade/world_tx/scenario_tx.rs +++ b/framework/scenario/src/facade/world_tx/scenario_tx.rs @@ -57,7 +57,7 @@ where { let annotation = from.annotation(env).to_string(); AddressValue { - value: from.into_value().to_address(), + value: from.into_value(env).to_address(), original: ValueSubTree::Str(annotation), } } From 8838ded6f224eaa103bbccccd73a6f9ff6dd8f48 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 7 Mar 2024 10:41:18 +0200 Subject: [PATCH 055/461] unified syntax - blackbox init --- contracts/examples/adder/src/temp_proxy_v2.rs | 15 +++-- .../tests/adder_blackbox_with_values_test.rs | 21 ++++--- .../base/src/types/interaction/annotated.rs | 13 +++++ framework/base/src/types/interaction/mod.rs | 1 + framework/base/src/types/interaction/tx.rs | 38 +++++++----- .../src/types/interaction/tx_call_deploy.rs | 24 ++++---- .../src/types/interaction/tx_code_source.rs | 26 +++++---- .../base/src/types/interaction/tx_env.rs | 5 +- .../base/src/types/interaction/tx_rh_list.rs | 2 + .../tx_rh_list/with_result_new_address.rs | 52 +++++++++++++++++ .../src/types/managed/basic/managed_buffer.rs | 13 ++++- .../types/managed/wrapped/managed_address.rs | 8 +-- framework/scenario/src/facade/world_tx.rs | 2 + .../scenario/src/facade/world_tx/expr.rs | 5 ++ .../src/facade/world_tx/expr/file_expr.rs | 31 ++++++++++ .../src/facade/world_tx/expr/mxsc_expr.rs | 35 +++++++++++ .../facade/world_tx/scenario_rh_list_item.rs | 21 ++++++- .../src/facade/world_tx/scenario_tx.rs | 58 +++++++++++++++++-- 18 files changed, 303 insertions(+), 67 deletions(-) create mode 100644 framework/base/src/types/interaction/tx_rh_list/with_result_new_address.rs create mode 100644 framework/scenario/src/facade/world_tx/expr.rs create mode 100644 framework/scenario/src/facade/world_tx/expr/file_expr.rs create mode 100644 framework/scenario/src/facade/world_tx/expr/mxsc_expr.rs diff --git a/contracts/examples/adder/src/temp_proxy_v2.rs b/contracts/examples/adder/src/temp_proxy_v2.rs index fb6f8cd50e..206d420e4f 100644 --- a/contracts/examples/adder/src/temp_proxy_v2.rs +++ b/contracts/examples/adder/src/temp_proxy_v2.rs @@ -30,18 +30,25 @@ where wrapped_tx: Tx, } -impl TxProxyMethods +impl TxProxyMethods where Env: TxEnv, Env::Api: VMApi, - To: TxTo, + From: TxFrom, Gas: TxGas, { pub fn init>>( self, initial_value: Arg0, - ) -> multiversx_sc::types::Tx, OriginalResultMarker<()>> - { + ) -> multiversx_sc::types::Tx< + Env, + From, + (), + (), + Gas, + DeployCall, + OriginalResultMarker<()>, + > { self.wrapped_tx .raw_deploy() .argument(&initial_value) diff --git a/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs b/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs index c097f1fcd6..0ef6f023cb 100644 --- a/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs @@ -1,7 +1,7 @@ use adder::*; use multiversx_sc::{ storage::mappers::SingleValue, - types::{AddressExpr, ScExpr}, + types::{AddressExpr, ScExpr, WithResultNewAddress}, }; use multiversx_sc_scenario::{api::StaticApi, num_bigint::BigUint, scenario_model::*, *}; @@ -20,7 +20,6 @@ fn adder_blackbox_with_values() { let mut world = world(); let owner_address = "address:owner"; let mut adder_contract = ContractInfo::>::new("sc:adder"); - let adder_code = world.code_expression(ADDER_PATH_EXPR); world .start_trace() @@ -29,15 +28,15 @@ fn adder_blackbox_with_values() { .put_account(owner_address, Account::new().nonce(1)) .new_address(owner_address, 1, "sc:adder"), ) - .sc_deploy_use_result( - ScDeployStep::new() - .from(owner_address) - .code(adder_code) - .call(adder_contract.init(5u32)), - |new_address, _: TypedResponse<()>| { - assert_eq!(new_address, adder_contract.to_address()); - }, - ) + .tx(|tx| { + tx.from(AddressExpr("owner")) + .typed_v2(temp_proxy_v2::TxProxy) + .init(5u32) + .code(MxscExpr("output/adder.mxsc.json")) + .with_result(WithResultNewAddress::new(|new_address| { + assert_eq!(new_address.to_address(), adder_contract.to_address()); + })) + }) .sc_query( ScQueryStep::new() .to(&adder_contract) diff --git a/framework/base/src/types/interaction/annotated.rs b/framework/base/src/types/interaction/annotated.rs index 708551a9fd..878cdb5e1f 100644 --- a/framework/base/src/types/interaction/annotated.rs +++ b/framework/base/src/types/interaction/annotated.rs @@ -36,3 +36,16 @@ where self.clone() } } + +impl AnnotatedValue> for ManagedBuffer +where + Env: TxEnv, +{ + fn annotation(&self, _env: &Env) -> crate::types::ManagedBuffer { + self.hex_expr() + } + + fn into_value(self, _env: &Env) -> ManagedBuffer { + self + } +} diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index 4e3fcc42b4..7b751e162b 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -61,6 +61,7 @@ pub use managed_arg_buffer::ManagedArgBuffer; pub use tx::*; pub use tx_call_async::*; pub use tx_call_async_promises::*; +pub use tx_call_deploy::*; pub use tx_call_sync::*; pub use tx_code_source::*; pub use tx_data::*; diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index fc44e39245..9435f5e11e 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -10,12 +10,12 @@ use alloc::boxed::Box; use multiversx_sc_codec::TopEncodeMulti; use super::{ - contract_call_exec::UNSPECIFIED_GAS_LIMIT, contract_call_trait::ContractCallBase, AsyncCall, - Code, ContractCallNoPayment, ContractCallWithEgld, ContractDeploy, DeployCall, ExplicitGas, - FromSource, FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, RHListAppendNoRet, - RHListAppendRet, RHListItem, TxCodeSource, TxData, TxDataFunctionCall, TxEnv, TxFrom, - TxFromSpecified, TxGas, TxPayment, TxPaymentEgldOnly, TxProxyTrait, TxProxyTraitV2, - TxResultHandler, TxScEnv, TxTo, TxToSpecified, + contract_call_exec::UNSPECIFIED_GAS_LIMIT, contract_call_trait::ContractCallBase, + AnnotatedValue, AsyncCall, Code, ContractCallNoPayment, ContractCallWithEgld, ContractDeploy, + DeployCall, ExplicitGas, FromSource, FunctionCall, ManagedArgBuffer, OriginalResultMarker, + RHList, RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, TxCodeValue, TxData, + TxDataFunctionCall, TxEnv, TxFrom, TxFromSpecified, TxGas, TxPayment, TxPaymentEgldOnly, + TxProxyTrait, TxProxyTraitV2, TxResultHandler, TxScEnv, TxTo, TxToSpecified, }; #[must_use] @@ -630,15 +630,16 @@ where } } -impl Tx +impl Tx where Env: TxEnv, + From: TxFrom, To: TxTo, Payment: TxPaymentEgldOnly, Gas: TxGas, RH: TxResultHandler, { - pub fn raw_deploy(self) -> Tx, RH> { + pub fn raw_deploy(self) -> Tx, RH> { Tx { env: self.env, from: self.from, @@ -651,25 +652,29 @@ where } } -impl Tx, RH> +impl Tx, RH> where Env: TxEnv, + From: TxFrom, To: TxTo, Payment: TxPaymentEgldOnly, Gas: TxGas, RH: TxResultHandler, { - pub fn code( + pub fn code( mut self, - code: ManagedBuffer, - ) -> Tx>, RH> { + code: CodeValue, + ) -> Tx>, RH> + where + CodeValue: TxCodeValue, + { Tx { env: self.env, from: self.from, to: self.to, payment: self.payment, gas: self.gas, - data: self.data.code_source(Code::new(code)), + data: self.data.code_source(Code(code)), result_handler: self.result_handler, } } @@ -677,7 +682,7 @@ where pub fn from_source( mut self, source_address: ManagedAddress, - ) -> Tx>, RH> { + ) -> Tx>, RH> { Tx { env: self.env, from: self.from, @@ -690,10 +695,11 @@ where } } -impl - Tx, RH> +impl + Tx, RH> where Env: TxEnv, + From: TxFrom, To: TxTo, Payment: TxPaymentEgldOnly, Gas: TxGas, diff --git a/framework/base/src/types/interaction/tx_call_deploy.rs b/framework/base/src/types/interaction/tx_call_deploy.rs index 0fc3563980..6b1f670e7b 100644 --- a/framework/base/src/types/interaction/tx_call_deploy.rs +++ b/framework/base/src/types/interaction/tx_call_deploy.rs @@ -9,8 +9,9 @@ use crate::{ use super::{ contract_call_exec::decode_result, Code, ConsNoRet, ConsRet, DeployCall, FromSource, - OriginalResultMarker, RHList, RHListItem, Tx, TxDataFunctionCall, TxEmptyResultHandler, TxEnv, - TxGas, TxPayment, TxPaymentEgldOnly, TxResultHandler, TxScEnv, TxToSpecified, + OriginalResultMarker, RHList, RHListItem, Tx, TxCodeValue, TxDataFunctionCall, + TxEmptyResultHandler, TxEnv, TxGas, TxPayment, TxPaymentEgldOnly, TxResultHandler, TxScEnv, + TxToSpecified, }; pub trait RHListItemDeploy: RHListItem @@ -92,12 +93,13 @@ where } } -impl - Tx, (), (), Payment, Gas, DeployCall, Code>>, RH> +impl + Tx, (), (), Payment, Gas, DeployCall, Code>, RH> where Api: CallTypeApi, Payment: TxPaymentEgldOnly>, Gas: TxGas>, + CodeValue: TxCodeValue>, RH: TxResultHandler>, { fn execute_deploy_raw(self) -> (ManagedAddress, ManagedVec>, RH) { @@ -107,7 +109,7 @@ where let (new_address, raw_results) = SendRawWrapper::::new().deploy_contract( gas_limit, &egld_payment.value, - &self.data.code_source.code, + &self.data.code_source.0.into_value(&self.env), self.data.code_metadata, &self.data.arg_buffer, ); @@ -146,12 +148,13 @@ where } } -impl - Tx, (), (), Payment, Gas, DeployCall, Code>>, RH> +impl + Tx, (), (), Payment, Gas, DeployCall, Code>, RH> where Api: CallTypeApi, Payment: TxPaymentEgldOnly>, Gas: TxGas>, + CodeValue: TxCodeValue>, RH: RHListDeploy>, RH::ListReturns: NestedTupleFlatten, { @@ -182,20 +185,21 @@ where } } -impl +impl Tx< TxScEnv, (), ManagedAddress, Payment, Gas, - DeployCall, Code>>, + DeployCall, Code>, RH, > where Api: CallTypeApi, Payment: TxPaymentEgldOnly>, Gas: TxGas>, + CodeValue: TxCodeValue>, RH: TxEmptyResultHandler>, { pub fn upgrade_async_call(self) { @@ -204,7 +208,7 @@ where &self.to, gas, &self.payment.to_egld_payment().value, - &self.data.code_source.code, + &self.data.code_source.0.into_value(&self.env), self.data.code_metadata, &self.data.arg_buffer, ); diff --git a/framework/base/src/types/interaction/tx_code_source.rs b/framework/base/src/types/interaction/tx_code_source.rs index b83963d33b..752e6ece7c 100644 --- a/framework/base/src/types/interaction/tx_code_source.rs +++ b/framework/base/src/types/interaction/tx_code_source.rs @@ -3,7 +3,7 @@ use crate::{ types::{ManagedAddress, ManagedBuffer}, }; -use super::TxEnv; +use super::{AnnotatedValue, TxEnv}; pub trait TxCodeSource where @@ -19,26 +19,30 @@ where { } -/// Contains code for a deploy or upgrade. -pub struct Code +pub trait TxCodeValue: AnnotatedValue> where Env: TxEnv, { - pub code: ManagedBuffer, } -impl Code +impl TxCodeValue for ManagedBuffer where Env: TxEnv {} + +/// Contains code for a deploy or upgrade. +pub struct Code(pub CodeValue); + +impl TxCodeSource for Code where Env: TxEnv, + CodeValue: TxCodeValue, { - pub fn new(code: ManagedBuffer) -> Self { - Code { code } - } } -impl TxCodeSource for Code where Env: TxEnv {} - -impl TxCodeSourceSpecified for Code where Env: TxEnv {} +impl TxCodeSourceSpecified for Code +where + Env: TxEnv, + CodeValue: TxCodeValue, +{ +} /// Indicates the source of a "deploy from source" or "upgrade from source". pub struct FromSource diff --git a/framework/base/src/types/interaction/tx_env.rs b/framework/base/src/types/interaction/tx_env.rs index 2072c1d88d..9a8bfd04ab 100644 --- a/framework/base/src/types/interaction/tx_env.rs +++ b/framework/base/src/types/interaction/tx_env.rs @@ -1,4 +1,7 @@ -use crate::{api::CallTypeApi, types::ManagedAddress}; +use crate::{ + api::CallTypeApi, + types::{ManagedAddress, ManagedBuffer}, +}; use super::AnnotatedValue; diff --git a/framework/base/src/types/interaction/tx_rh_list.rs b/framework/base/src/types/interaction/tx_rh_list.rs index f34e0295a5..392863de73 100644 --- a/framework/base/src/types/interaction/tx_rh_list.rs +++ b/framework/base/src/types/interaction/tx_rh_list.rs @@ -6,6 +6,7 @@ mod returns_similar; mod tx_rh_list_cons; mod tx_rh_list_item; mod with_result_exact; +mod with_result_new_address; mod with_result_raw; pub use returns_bt::*; @@ -15,3 +16,4 @@ pub use returns_raw::*; pub use returns_similar::*; pub use tx_rh_list_cons::*; pub use tx_rh_list_item::*; +pub use with_result_new_address::*; diff --git a/framework/base/src/types/interaction/tx_rh_list/with_result_new_address.rs b/framework/base/src/types/interaction/tx_rh_list/with_result_new_address.rs new file mode 100644 index 0000000000..c58383a86e --- /dev/null +++ b/framework/base/src/types/interaction/tx_rh_list/with_result_new_address.rs @@ -0,0 +1,52 @@ +use core::marker::PhantomData; + +use crate::types::{ + interaction::tx_call_deploy::RHListItemDeploy, ManagedAddress, ManagedBuffer, ManagedVec, + RHListItemSync, TxEnv, +}; + +use super::RHListItem; + +pub struct WithResultNewAddress +where + Env: TxEnv, + F: FnOnce(&ManagedAddress), +{ + _phantom: PhantomData, + pub f: F, +} + +impl WithResultNewAddress +where + Env: TxEnv, + F: FnOnce(&ManagedAddress), +{ + pub fn new(f: F) -> Self { + WithResultNewAddress { + _phantom: PhantomData, + f, + } + } +} + +impl RHListItem for WithResultNewAddress +where + Env: TxEnv, + F: FnOnce(&ManagedAddress), +{ + type Returns = (); +} + +impl RHListItemDeploy for WithResultNewAddress +where + Env: TxEnv, + F: FnOnce(&ManagedAddress), +{ + fn item_deploy_result( + self, + new_address: &ManagedAddress, + _raw_results: &ManagedVec>, + ) -> Self::Returns { + (self.f)(new_address); + } +} diff --git a/framework/base/src/types/managed/basic/managed_buffer.rs b/framework/base/src/types/managed/basic/managed_buffer.rs index 3e4347aa1d..1caa2411f1 100644 --- a/framework/base/src/types/managed/basic/managed_buffer.rs +++ b/framework/base/src/types/managed/basic/managed_buffer.rs @@ -10,9 +10,10 @@ use crate::{ TopEncodeOutput, TryStaticCast, }, formatter::{ - hex_util::encode_bytes_as_hex, FormatByteReceiver, SCBinary, SCDisplay, SCLowerHex, + hex_util::encode_bytes_as_hex, FormatBuffer, FormatByteReceiver, SCBinary, SCDisplay, + SCLowerHex, }, - types::{heap::BoxedBytes, ManagedType, StaticBufferRef}, + types::{heap::BoxedBytes, ManagedBufferCachedBuilder, ManagedType, StaticBufferRef}, }; /// A byte buffer managed by an external API. @@ -330,6 +331,14 @@ impl ManagedBuffer { Some(u64::from_be_bytes(bytes)) } } + + /// Produces a hex expression in another managed buffer, + /// made up of "0x" + the hex representation of the data. + pub fn hex_expr(&self) -> ManagedBuffer { + let mut result = ManagedBufferCachedBuilder::new_from_slice(b"0x"); + result.append_lower_hex(self); + result.into_managed_buffer() + } } impl Clone for ManagedBuffer { diff --git a/framework/base/src/types/managed/wrapped/managed_address.rs b/framework/base/src/types/managed/wrapped/managed_address.rs index be24c8e99b..80de540394 100644 --- a/framework/base/src/types/managed/wrapped/managed_address.rs +++ b/framework/base/src/types/managed/wrapped/managed_address.rs @@ -8,12 +8,10 @@ use crate::{ NestedDecode, NestedDecodeInput, NestedEncode, NestedEncodeOutput, TopDecode, TopDecodeInput, TopEncode, TopEncodeOutput, TryStaticCast, }, - formatter::{hex_util::encode_bytes_as_hex, FormatBuffer, FormatByteReceiver, SCLowerHex}, + formatter::{hex_util::encode_bytes_as_hex, FormatByteReceiver, SCLowerHex}, types::{heap::Address, ManagedBuffer, ManagedByteArray, ManagedType}, }; -use super::ManagedBufferCachedBuilder; - #[repr(transparent)] #[derive(Clone)] pub struct ManagedAddress { @@ -254,9 +252,7 @@ impl SCLowerHex for ManagedAddress { impl ManagedAddress { pub fn hex_expr(&self) -> ManagedBuffer { - let mut result = ManagedBufferCachedBuilder::new_from_slice(b"0x"); - result.append_lower_hex(self); - result.into_managed_buffer() + self.bytes.buffer.hex_expr() } } diff --git a/framework/scenario/src/facade/world_tx.rs b/framework/scenario/src/facade/world_tx.rs index f0891db9cb..3cb83818cc 100644 --- a/framework/scenario/src/facade/world_tx.rs +++ b/framework/scenario/src/facade/world_tx.rs @@ -1,11 +1,13 @@ #![allow(unused)] // TEMP +mod expr; mod scenario_env; mod scenario_rh_list; mod scenario_rh_list_item; mod scenario_tx; mod with_tx_raw_response; +pub use expr::*; pub use scenario_env::*; pub use scenario_rh_list::*; pub use scenario_rh_list_item::*; diff --git a/framework/scenario/src/facade/world_tx/expr.rs b/framework/scenario/src/facade/world_tx/expr.rs new file mode 100644 index 0000000000..2d28c5bdbd --- /dev/null +++ b/framework/scenario/src/facade/world_tx/expr.rs @@ -0,0 +1,5 @@ +mod file_expr; +mod mxsc_expr; + +pub use file_expr::FileExpr; +pub use mxsc_expr::MxscExpr; diff --git a/framework/scenario/src/facade/world_tx/expr/file_expr.rs b/framework/scenario/src/facade/world_tx/expr/file_expr.rs new file mode 100644 index 0000000000..1cb80997e4 --- /dev/null +++ b/framework/scenario/src/facade/world_tx/expr/file_expr.rs @@ -0,0 +1,31 @@ +use core::ptr; +use std::path::PathBuf; + +use multiversx_chain_scenario_format::{ + interpret_trait::InterpreterContext, value_interpreter::interpret_string, +}; +use multiversx_sc::types::{ + AnnotatedValue, ManagedAddress, ManagedBuffer, TxEnv, TxFrom, TxFromSpecified, TxTo, + TxToSpecified, +}; + +use crate::{api::StaticApi, ScenarioTxEnvironment}; + +const FILE_PREFIX: &str = "file:"; + +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub struct FileExpr<'a>(pub &'a str); + +impl<'a> AnnotatedValue> for FileExpr<'a> { + fn annotation(&self, _env: &ScenarioTxEnvironment) -> ManagedBuffer { + let mut result = ManagedBuffer::new_from_bytes(FILE_PREFIX.as_bytes()); + result.append_bytes(self.0.as_bytes()); + result + } + + fn into_value(self, env: &ScenarioTxEnvironment) -> ManagedBuffer { + let context = InterpreterContext::new().with_dir(env.context_path.clone()); + let value = interpret_string(&format!("{FILE_PREFIX}{}", self.0), &context); + value.into() + } +} diff --git a/framework/scenario/src/facade/world_tx/expr/mxsc_expr.rs b/framework/scenario/src/facade/world_tx/expr/mxsc_expr.rs new file mode 100644 index 0000000000..a0ba7c4ef9 --- /dev/null +++ b/framework/scenario/src/facade/world_tx/expr/mxsc_expr.rs @@ -0,0 +1,35 @@ +use core::ptr; +use std::path::PathBuf; + +use multiversx_chain_scenario_format::{ + interpret_trait::InterpreterContext, value_interpreter::interpret_string, +}; +use multiversx_sc::types::{ + AnnotatedValue, ManagedAddress, ManagedBuffer, TxCodeValue, TxEnv, TxFrom, TxFromSpecified, + TxTo, TxToSpecified, +}; + +use crate::{api::StaticApi, ScenarioTxEnvironment}; + +const MXSC_PREFIX: &str = "mxsc:"; + +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub struct MxscExpr<'a>(pub &'a str); + +impl<'a> AnnotatedValue> for MxscExpr<'a> { + fn annotation(&self, _env: &ScenarioTxEnvironment) -> ManagedBuffer { + let mut result = ManagedBuffer::new_from_bytes(MXSC_PREFIX.as_bytes()); + result.append_bytes(self.0.as_bytes()); + result + } + + fn into_value(self, env: &ScenarioTxEnvironment) -> ManagedBuffer { + let context = InterpreterContext::new() + .with_dir(env.context_path.clone()) + .with_allowed_missing_files(); + let value = interpret_string(&format!("{MXSC_PREFIX}{}", self.0), &context); + value.into() + } +} + +impl<'a> TxCodeValue for MxscExpr<'a> {} diff --git a/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs b/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs index 57ba631911..da0a98ff99 100644 --- a/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs +++ b/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs @@ -1,9 +1,12 @@ use multiversx_sc::{ codec::TopDecodeMulti, - types::{RHList, RHListItem, ReturnsExact, TxEnv}, + types::{ManagedAddress, RHList, RHListItem, ReturnsExact, TxEnv, WithResultNewAddress}, }; -use crate::scenario_model::{TxResponse, TypedResponse}; +use crate::{ + api::StaticApi, + scenario_model::{TxResponse, TypedResponse}, +}; use super::ScenarioTxEnvironment; @@ -22,3 +25,17 @@ where .expect("ReturnsExact expects that transaction is successful") } } + +impl RHListItemScenario for WithResultNewAddress +where + F: FnOnce(&ManagedAddress), +{ + fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns { + let new_address = tx_response + .new_deployed_address + .clone() + .expect("missing returned address"); + + (self.f)(&ManagedAddress::from_address(&new_address)); + } +} diff --git a/framework/scenario/src/facade/world_tx/scenario_tx.rs b/framework/scenario/src/facade/world_tx/scenario_tx.rs index 489d0c88a8..13449cb8d4 100644 --- a/framework/scenario/src/facade/world_tx/scenario_tx.rs +++ b/framework/scenario/src/facade/world_tx/scenario_tx.rs @@ -2,14 +2,15 @@ use multiversx_chain_scenario_format::serde_raw::ValueSubTree; use multiversx_sc::{ tuple_util::NestedTupleFlatten, types::{ - AnnotatedValue, FunctionCall, ManagedAddress, RHListSync, Tx, TxEnv, TxFromSpecified, - TxGas, TxPayment, TxToSpecified, + AnnotatedValue, Code, DeployCall, FunctionCall, ManagedAddress, ManagedBuffer, RHListSync, + Tx, TxCodeSource, TxCodeSourceSpecified, TxCodeValue, TxEnv, TxFromSpecified, TxGas, + TxPayment, TxToSpecified, }, }; use crate::{ api::StaticApi, - scenario_model::{AddressValue, ScCallStep}, + scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep}, ScenarioWorld, }; @@ -62,6 +63,18 @@ where } } +fn code_annotated(env: &Env, code: Code) -> BytesValue +where + Env: TxEnv, + CodeValue: TxCodeValue, +{ + let annotation = code.0.annotation(env).to_string(); + BytesValue { + value: code.0.into_value(env).to_vec(), + original: ValueSubTree::Str(annotation), + } +} + impl ScenarioTx for Tx, RH> where @@ -81,7 +94,7 @@ where .to(address_annotated(&env, self.to)) .function(self.data.function_name.to_string().as_str()); for arg in self.data.arg_buffer.iter_buffers() { - step = step.argument(arg.to_vec()); + step.tx.arguments.push(arg.to_vec().into()); } world.sc_call(&mut step); @@ -91,3 +104,40 @@ where tuple_result.flatten_unpack() } } + +impl ScenarioTx + for Tx< + ScenarioTxEnvironment, + From, + (), + Payment, + Gas, + DeployCall>, + RH, + > +where + From: TxFromSpecified, + Payment: TxPayment, + Gas: TxGas, + CodeValue: TxCodeValue, + RH: RHListScenario, + RH::ListReturns: NestedTupleFlatten, +{ + type Returns = ::Unpacked; + + fn run_as_scenario_step(self, world: &mut ScenarioWorld) -> Self::Returns { + let mut env = self.env; + let mut step = ScDeployStep::new() + .from(address_annotated(&env, self.from)) + .code(code_annotated(&env, self.data.code_source)); + for arg in self.data.arg_buffer.iter_buffers() { + step.tx.arguments.push(arg.to_vec().into()); + } + + world.sc_deploy(&mut step); + let response = step.response.expect("step did not return result"); + + let tuple_result = self.result_handler.item_scenario_result(&response); + tuple_result.flatten_unpack() + } +} From 1da1ef020454e6bd5325356156befb5fdd7e63b2 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 7 Mar 2024 10:52:25 +0200 Subject: [PATCH 056/461] unified syntax - FromSource refactor --- framework/base/src/types/interaction/tx.rs | 15 ++++--- .../src/types/interaction/tx_call_deploy.rs | 39 ++++++++++++++----- .../src/types/interaction/tx_code_source.rs | 24 +++++++----- 3 files changed, 52 insertions(+), 26 deletions(-) diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 9435f5e11e..77d32df17e 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -14,8 +14,8 @@ use super::{ AnnotatedValue, AsyncCall, Code, ContractCallNoPayment, ContractCallWithEgld, ContractDeploy, DeployCall, ExplicitGas, FromSource, FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, TxCodeValue, TxData, - TxDataFunctionCall, TxEnv, TxFrom, TxFromSpecified, TxGas, TxPayment, TxPaymentEgldOnly, - TxProxyTrait, TxProxyTraitV2, TxResultHandler, TxScEnv, TxTo, TxToSpecified, + TxDataFunctionCall, TxEnv, TxFrom, TxFromSourceValue, TxFromSpecified, TxGas, TxPayment, + TxPaymentEgldOnly, TxProxyTrait, TxProxyTraitV2, TxResultHandler, TxScEnv, TxTo, TxToSpecified, }; #[must_use] @@ -679,17 +679,20 @@ where } } - pub fn from_source( + pub fn from_source( mut self, - source_address: ManagedAddress, - ) -> Tx>, RH> { + source_address: FromSourceValue, + ) -> Tx>, RH> + where + FromSourceValue: TxFromSourceValue, + { Tx { env: self.env, from: self.from, to: self.to, payment: self.payment, gas: self.gas, - data: self.data.code_source(FromSource::new(source_address)), + data: self.data.code_source(FromSource(source_address)), result_handler: self.result_handler, } } diff --git a/framework/base/src/types/interaction/tx_call_deploy.rs b/framework/base/src/types/interaction/tx_call_deploy.rs index 6b1f670e7b..189d93b7ae 100644 --- a/framework/base/src/types/interaction/tx_call_deploy.rs +++ b/framework/base/src/types/interaction/tx_call_deploy.rs @@ -10,8 +10,8 @@ use crate::{ use super::{ contract_call_exec::decode_result, Code, ConsNoRet, ConsRet, DeployCall, FromSource, OriginalResultMarker, RHList, RHListItem, Tx, TxCodeValue, TxDataFunctionCall, - TxEmptyResultHandler, TxEnv, TxGas, TxPayment, TxPaymentEgldOnly, TxResultHandler, TxScEnv, - TxToSpecified, + TxEmptyResultHandler, TxEnv, TxFromSourceValue, TxGas, TxPayment, TxPaymentEgldOnly, + TxResultHandler, TxScEnv, TxToSpecified, }; pub trait RHListItemDeploy: RHListItem @@ -120,12 +120,21 @@ where } } -impl - Tx, (), (), Payment, Gas, DeployCall, FromSource>>, RH> +impl + Tx< + TxScEnv, + (), + (), + Payment, + Gas, + DeployCall, FromSource>, + RH, + > where Api: CallTypeApi, Payment: TxPaymentEgldOnly>, Gas: TxGas>, + FromSourceValue: TxFromSourceValue>, RH: TxResultHandler>, { fn execute_deploy_from_source_raw( @@ -137,7 +146,7 @@ where let (new_address, raw_results) = SendRawWrapper::::new().deploy_from_source_contract( gas_limit, &egld_payment.value, - &self.data.code_source.address, + &self.data.code_source.0.into_value(&self.env), self.data.code_metadata, &self.data.arg_buffer, ); @@ -167,12 +176,21 @@ where } } -impl - Tx, (), (), Payment, Gas, DeployCall, FromSource>>, RH> +impl + Tx< + TxScEnv, + (), + (), + Payment, + Gas, + DeployCall, FromSource>, + RH, + > where Api: CallTypeApi, Payment: TxPaymentEgldOnly>, Gas: TxGas>, + FromSourceValue: TxFromSourceValue>, RH: RHListDeploy>, RH::ListReturns: NestedTupleFlatten, { @@ -215,20 +233,21 @@ where } } -impl +impl Tx< TxScEnv, (), ManagedAddress, Payment, Gas, - DeployCall, FromSource>>, + DeployCall, FromSource>, RH, > where Api: CallTypeApi, Payment: TxPaymentEgldOnly>, Gas: TxGas>, + FromSourceValue: TxFromSourceValue>, RH: TxEmptyResultHandler>, { pub fn upgrade_async_call(self) { @@ -237,7 +256,7 @@ where &self.to, gas, &self.payment.to_egld_payment().value, - &self.data.code_source.address, + &self.data.code_source.0.into_value(&self.env), self.data.code_metadata, &self.data.arg_buffer, ); diff --git a/framework/base/src/types/interaction/tx_code_source.rs b/framework/base/src/types/interaction/tx_code_source.rs index 752e6ece7c..b8c48e718e 100644 --- a/framework/base/src/types/interaction/tx_code_source.rs +++ b/framework/base/src/types/interaction/tx_code_source.rs @@ -44,23 +44,27 @@ where { } -/// Indicates the source of a "deploy from source" or "upgrade from source". -pub struct FromSource +pub trait TxFromSourceValue: AnnotatedValue> where Env: TxEnv, { - pub address: ManagedAddress, } -impl FromSource +impl TxFromSourceValue for ManagedAddress where Env: TxEnv {} + +/// Indicates the source of a "deploy from source" or "upgrade from source". +pub struct FromSource(pub FromSourceValue); + +impl TxCodeSource for FromSource where Env: TxEnv, + FromSourceValue: TxFromSourceValue, { - pub fn new(address: ManagedAddress) -> Self { - FromSource { address } - } } -impl TxCodeSource for FromSource where Env: TxEnv {} - -impl TxCodeSourceSpecified for FromSource where Env: TxEnv {} +impl TxCodeSourceSpecified for FromSource +where + Env: TxEnv, + FromSourceValue: TxFromSourceValue, +{ +} From 756bbd69bf87325bfa37f13af29120cabf835ee6 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 7 Mar 2024 10:52:36 +0200 Subject: [PATCH 057/461] clippy fix --- framework/base/src/types/interaction/tx_to.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/base/src/types/interaction/tx_to.rs b/framework/base/src/types/interaction/tx_to.rs index 8c51fd2d33..ecba5ad1f6 100644 --- a/framework/base/src/types/interaction/tx_to.rs +++ b/framework/base/src/types/interaction/tx_to.rs @@ -26,7 +26,7 @@ where Env: TxEnv, { fn with_address_ref)>(&self, _env: &Env, f: F) { - f(&self) + f(self) } } From 5c35c9a5a9ebf4c768eff67e57e7f8c9dfb72678 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 7 Mar 2024 12:18:53 +0200 Subject: [PATCH 058/461] change type_name with struct type_names in abi --- .../adder/proxies_struct_interactor_main.rs | 46 ++++++++------ contracts/examples/adder/src/temp_proxy_v2.rs | 6 +- .../abi-tester/tests/abi_tester_abi_test.rs | 2 +- framework/base/src/abi.rs | 15 +++++ framework/base/src/abi/endpoint_abi.rs | 7 +-- framework/base/src/abi/type_abi.rs | 49 ++++++++++----- .../base/src/abi/type_abi_impl_codec_multi.rs | 4 +- framework/base/src/abi/type_description.rs | 13 ++-- .../src/abi/type_description_container.rs | 20 +++--- framework/base/src/external_view_contract.rs | 7 ++- .../src/storage/mappers/linked_list_mapper.rs | 2 +- .../base/src/storage/mappers/queue_mapper.rs | 2 +- .../base/src/storage/mappers/set_mapper.rs | 2 +- .../src/storage/mappers/unique_id_mapper.rs | 2 +- .../storage/mappers/unordered_set_mapper.rs | 2 +- .../base/src/storage/mappers/user_mapper.rs | 2 +- .../base/src/storage/mappers/vec_mapper.rs | 2 +- framework/base/src/types.rs | 2 +- framework/base/src/types/heap/h256_address.rs | 4 ++ .../src/types/interaction/function_call.rs | 2 +- .../types/io/operation_completion_status.rs | 6 +- framework/base/src/types/managed/basic/mod.rs | 2 +- framework/base/src/types/managed/mod.rs | 2 +- .../multi_value/multi_value_encoded.rs | 2 +- framework/derive/src/type_abi_derive.rs | 20 +++--- .../meta/src/abi_json/contract_abi_json.rs | 4 +- .../meta/src/abi_json/endpoint_abi_json.rs | 4 +- framework/meta/src/abi_json/type_abi_json.rs | 7 ++- .../generate_proxy/proxy_sc_functions_gen.rs | 62 +++++++++---------- .../snippet_sc_functions_gen.rs | 4 +- .../sc_config/contract_variant_validate.rs | 10 +-- 31 files changed, 185 insertions(+), 129 deletions(-) diff --git a/contracts/examples/adder/proxies_struct_interactor_main.rs b/contracts/examples/adder/proxies_struct_interactor_main.rs index 1f0d8d51cb..af7378dc8b 100644 --- a/contracts/examples/adder/proxies_struct_interactor_main.rs +++ b/contracts/examples/adder/proxies_struct_interactor_main.rs @@ -41,16 +41,19 @@ where To: TxTo, Gas: TxGas, { - pub fn init>>( - self, - initial_value: Arg0, - ) -> multiversx_sc::types::Tx, OriginalResultMarker<()>> - { - self.wrapped_tx + pub fn init< + Arg0: multiversx_sc::codec::CodecInto>, + >( + self, + initial_value: Arg0, + ) -> multiversx_sc::types::Tx, OriginalResultMarker<()>> + { + self.wrapped_tx .raw_deploy() - .argument(&initial_value) - .original_result() - } + .argument(&initial_value) + .original_result() + } + } impl TxProxyMethods where @@ -60,14 +63,17 @@ where To: TxTo, Gas: TxGas, { - pub fn sum(self) {} - - pub fn upgrade>>( - self, - initial_value: Arg0, - ) { - } - - //Add desired amount to the storage variable. - pub fn add>>(self, value: Arg0) {} -} + pub fn sum( + self, + ) pub fn upgrade< + Arg0: multiversx_sc::codec::CodecInto>, + >( + self, + initial_value: Arg0, + ) //Add desired amount to the storage variable. + pub fn add< + Arg0: multiversx_sc::codec::CodecInto>, + >( + self, + value: Arg0, + ) } diff --git a/contracts/examples/adder/src/temp_proxy_v2.rs b/contracts/examples/adder/src/temp_proxy_v2.rs index fb6f8cd50e..acd83918f6 100644 --- a/contracts/examples/adder/src/temp_proxy_v2.rs +++ b/contracts/examples/adder/src/temp_proxy_v2.rs @@ -66,7 +66,11 @@ where (), Gas, FunctionCall, - OriginalResultMarker>>, + OriginalResultMarker< + multiversx_sc::types::managed::basic::big_uint::BigUint< + multiversx_sc::api::uncallable::UncallableApi, + >, + >, > { self.wrapped_tx .raw_call() diff --git a/contracts/feature-tests/abi-tester/tests/abi_tester_abi_test.rs b/contracts/feature-tests/abi-tester/tests/abi_tester_abi_test.rs index f4274861de..f288a90059 100644 --- a/contracts/feature-tests/abi-tester/tests/abi_tester_abi_test.rs +++ b/contracts/feature-tests/abi-tester/tests/abi_tester_abi_test.rs @@ -94,7 +94,7 @@ fn abi_deserialization_check() { .types .get("AbiEnum") .unwrap() - .to_type_description("AbiEnum"); + .to_type_description("AbiEnum", "Enum"); if let TypeContents::Enum(variants) = abi_enum_type.contents { assert_eq!(variants.len(), 4); assert_eq!( diff --git a/framework/base/src/abi.rs b/framework/base/src/abi.rs index b79ae26124..2fc4e5af0d 100644 --- a/framework/base/src/abi.rs +++ b/framework/base/src/abi.rs @@ -19,3 +19,18 @@ pub use type_description::*; pub use type_description_container::*; pub type TypeName = alloc::string::String; + +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct TypeNames { + pub abi: alloc::string::String, + pub rust: alloc::string::String, +} + +impl TypeNames { + pub const fn new() -> Self { + TypeNames { + abi: alloc::string::String::new(), + rust: alloc::string::String::new(), + } + } +} diff --git a/framework/base/src/abi/endpoint_abi.rs b/framework/base/src/abi/endpoint_abi.rs index 1ce6b5c363..5183ea580e 100644 --- a/framework/base/src/abi/endpoint_abi.rs +++ b/framework/base/src/abi/endpoint_abi.rs @@ -7,15 +7,14 @@ use alloc::{ #[derive(Clone, Debug)] pub struct InputAbi { pub arg_name: String, - pub type_name: TypeName, - // pub original_type_name: TypeName, + pub type_names: TypeNames, pub multi_arg: bool, } #[derive(Clone, Debug)] pub struct OutputAbi { pub output_name: String, - pub type_name: TypeName, + pub type_names: TypeNames, pub multi_result: bool, } @@ -89,7 +88,7 @@ impl EndpointAbi { pub fn add_input(&mut self, arg_name: &str) { self.inputs.push(InputAbi { arg_name: arg_name.to_string(), - type_name: T::type_name(), + type_names: T::type_names(), multi_arg: T::is_variadic(), }); } diff --git a/framework/base/src/abi/type_abi.rs b/framework/base/src/abi/type_abi.rs index cdf6c153ac..3643cb9cf2 100644 --- a/framework/base/src/abi/type_abi.rs +++ b/framework/base/src/abi/type_abi.rs @@ -2,21 +2,32 @@ use super::*; use alloc::{string::ToString, vec::Vec}; pub trait TypeAbi { + fn type_names() -> TypeNames { + TypeNames { + abi: Self::type_name(), + rust: Self::type_name_rust(), + } + } + fn type_name() -> TypeName { core::any::type_name::().into() } + fn type_name_rust() -> TypeName { + core::any::type_name::().into() + } + /// A type can provide more than its own name. /// For instance, a struct can also provide the descriptions of the type of its fields. /// TypeAbi doesn't care for the exact accumulator type, /// which is abstracted by the TypeDescriptionContainer trait. fn provide_type_descriptions(accumulator: &mut TDC) { - let type_name = Self::type_name(); + let type_names = Self::type_names(); accumulator.insert( - type_name, + type_names, TypeDescription { docs: Vec::new(), - name: Self::type_name(), + names: Self::type_names(), contents: TypeContents::NotSpecified, }, ); @@ -44,23 +55,33 @@ pub trait TypeAbi { }; result.push(OutputAbi { output_name: output_name.to_string(), - type_name: Self::type_name(), + type_names: Self::type_names(), multi_result: Self::is_variadic(), }); result } } -pub fn type_name_variadic() -> TypeName { - let mut repr = TypeName::from("variadic<"); - repr.push_str(T::type_name().as_str()); - repr.push('>'); - repr +pub fn type_name_variadic() -> TypeNames { + let mut abi = TypeName::from("variadic<"); + abi.push_str(T::type_name().as_str()); + abi.push('>'); + + let mut rust = TypeName::from("variadic<"); + rust.push_str(T::type_name_rust().as_str()); + rust.push('>'); + + TypeNames { abi, rust } } -pub fn type_name_optional() -> TypeName { - let mut repr = TypeName::from("optional<"); - repr.push_str(T::type_name().as_str()); - repr.push('>'); - repr +pub fn type_name_optional() -> TypeNames { + let mut abi = TypeName::from("optional<"); + abi.push_str(T::type_name().as_str()); + abi.push('>'); + + let mut rust = TypeName::from("optional<"); + rust.push_str(T::type_name().as_str()); + rust.push('>'); + + TypeNames { abi, rust } } diff --git a/framework/base/src/abi/type_abi_impl_codec_multi.rs b/framework/base/src/abi/type_abi_impl_codec_multi.rs index 6227634258..0a15206a46 100644 --- a/framework/base/src/abi/type_abi_impl_codec_multi.rs +++ b/framework/base/src/abi/type_abi_impl_codec_multi.rs @@ -6,7 +6,7 @@ use crate::{ #[cfg(feature = "alloc")] impl TypeAbi for crate::codec::multi_types::MultiValueVec { fn type_name() -> TypeName { - super::type_name_variadic::() + super::type_name_variadic::().abi } fn provide_type_descriptions(accumulator: &mut TDC) { @@ -30,7 +30,7 @@ impl TypeAbi for IgnoreValue { impl TypeAbi for OptionalValue { fn type_name() -> TypeName { - super::type_name_optional::() + super::type_name_optional::().abi } fn provide_type_descriptions(accumulator: &mut TDC) { diff --git a/framework/base/src/abi/type_description.rs b/framework/base/src/abi/type_description.rs index 2f0f5a4336..b9755fcaae 100644 --- a/framework/base/src/abi/type_description.rs +++ b/framework/base/src/abi/type_description.rs @@ -3,10 +3,12 @@ use alloc::{ vec::Vec, }; +use super::TypeNames; + #[derive(Clone, Debug)] pub struct TypeDescription { pub docs: Vec, - pub name: String, + pub names: TypeNames, pub contents: TypeContents, } @@ -17,17 +19,20 @@ impl TypeDescription { /// We use this as value while the fields are being computed. pub const PLACEHOLDER: TypeDescription = TypeDescription { docs: Vec::new(), - name: String::new(), + names: TypeNames { + abi: String::new(), + rust: String::new(), + }, contents: TypeContents::NotSpecified, }; } impl TypeDescription { /// Used in code generation. - pub fn new(docs: &[&str], name: String, contents: TypeContents) -> Self { + pub fn new(docs: &[&str], names: TypeNames, contents: TypeContents) -> Self { TypeDescription { docs: docs.iter().map(|s| s.to_string()).collect(), - name, + names, contents, } } diff --git a/framework/base/src/abi/type_description_container.rs b/framework/base/src/abi/type_description_container.rs index 7b9c0e892c..16dda2c8b9 100644 --- a/framework/base/src/abi/type_description_container.rs +++ b/framework/base/src/abi/type_description_container.rs @@ -8,17 +8,17 @@ pub trait TypeDescriptionContainer { // A placeholder gets inserted while computing field descriptions for a type, // to avoid an infinite loop for recursive types (if the same type appears again lower in the tree). - fn reserve_type_name(&mut self, type_name: TypeName) { - self.insert(type_name, TypeDescription::PLACEHOLDER); + fn reserve_type_name(&mut self, type_names: TypeNames) { + self.insert(type_names, TypeDescription::PLACEHOLDER); } - fn insert(&mut self, type_name: TypeName, type_description: TypeDescription); + fn insert(&mut self, type_names: TypeNames, type_description: TypeDescription); fn insert_all(&mut self, other: &Self); } #[derive(Clone, Default, Debug)] -pub struct TypeDescriptionContainerImpl(pub Vec<(TypeName, TypeDescription)>); +pub struct TypeDescriptionContainerImpl(pub Vec<(TypeNames, TypeDescription)>); impl TypeDescriptionContainer for TypeDescriptionContainerImpl { fn new() -> Self { @@ -28,16 +28,18 @@ impl TypeDescriptionContainer for TypeDescriptionContainerImpl { fn contains_type(&self, type_name: &str) -> bool { self.0 .iter() - .any(|(existing_type_name, _)| existing_type_name == type_name) + .any(|(existing_type_name, _)| existing_type_name.abi == type_name) } - fn insert(&mut self, type_name: TypeName, type_description: TypeDescription) { - if let Some((_existing_type_name, exisiting_type_description)) = - self.0.iter_mut().find(|(name, _)| name == &type_name) + fn insert(&mut self, type_names: TypeNames, type_description: TypeDescription) { + if let Some((_existing_type_name, exisiting_type_description)) = self + .0 + .iter_mut() + .find(|(name, _)| name.abi == type_names.abi) { *exisiting_type_description = type_description; } else { - self.0.push((type_name, type_description)); + self.0.push((type_names, type_description)); } } diff --git a/framework/base/src/external_view_contract.rs b/framework/base/src/external_view_contract.rs index ba14d7072a..325eb93420 100644 --- a/framework/base/src/external_view_contract.rs +++ b/framework/base/src/external_view_contract.rs @@ -1,7 +1,7 @@ use alloc::string::ToString; use crate::{ - abi::{EndpointAbi, EndpointMutabilityAbi, EndpointTypeAbi, InputAbi, TypeAbi}, + abi::{EndpointAbi, EndpointMutabilityAbi, EndpointTypeAbi, InputAbi, TypeAbi, TypeNames}, api::{ const_handles, use_raw_handle, CallValueApiImpl, ManagedBufferApiImpl, StorageWriteApiImpl, VMApi, EXTERNAL_VIEW_TARGET_ADRESS_KEY, @@ -49,7 +49,10 @@ pub fn external_view_contract_constructor_abi() -> EndpointAbi { ); endpoint_abi.inputs.push(InputAbi { arg_name: "target_contract_address".to_string(), - type_name: crate::types::heap::Address::type_name(), + type_names: TypeNames { + abi: crate::types::heap::Address::type_name(), + rust: crate::types::heap::Address::type_name_rust(), + }, multi_arg: false, }); endpoint_abi diff --git a/framework/base/src/storage/mappers/linked_list_mapper.rs b/framework/base/src/storage/mappers/linked_list_mapper.rs index d58c0ad19d..1bf067d97e 100644 --- a/framework/base/src/storage/mappers/linked_list_mapper.rs +++ b/framework/base/src/storage/mappers/linked_list_mapper.rs @@ -626,7 +626,7 @@ where T: TopEncode + TopDecode + NestedEncode + NestedDecode + Clone + TypeAbi, { fn type_name() -> TypeName { - crate::abi::type_name_variadic::() + crate::abi::type_name_variadic::().abi } fn provide_type_descriptions(accumulator: &mut TDC) { diff --git a/framework/base/src/storage/mappers/queue_mapper.rs b/framework/base/src/storage/mappers/queue_mapper.rs index 79ac5f37d7..920c0d737b 100644 --- a/framework/base/src/storage/mappers/queue_mapper.rs +++ b/framework/base/src/storage/mappers/queue_mapper.rs @@ -532,7 +532,7 @@ where T: TopEncode + TopDecode + TypeAbi, { fn type_name() -> TypeName { - crate::abi::type_name_variadic::() + crate::abi::type_name_variadic::().abi } fn provide_type_descriptions(accumulator: &mut TDC) { diff --git a/framework/base/src/storage/mappers/set_mapper.rs b/framework/base/src/storage/mappers/set_mapper.rs index 28941a7a8c..90ffcfc110 100644 --- a/framework/base/src/storage/mappers/set_mapper.rs +++ b/framework/base/src/storage/mappers/set_mapper.rs @@ -308,7 +308,7 @@ where T: TopEncode + TopDecode + NestedEncode + NestedDecode + TypeAbi, { fn type_name() -> TypeName { - crate::abi::type_name_variadic::() + crate::abi::type_name_variadic::().abi } fn provide_type_descriptions(accumulator: &mut TDC) { diff --git a/framework/base/src/storage/mappers/unique_id_mapper.rs b/framework/base/src/storage/mappers/unique_id_mapper.rs index 779e1a1b71..ddf8aad22b 100644 --- a/framework/base/src/storage/mappers/unique_id_mapper.rs +++ b/framework/base/src/storage/mappers/unique_id_mapper.rs @@ -224,7 +224,7 @@ where SA: StorageMapperApi, { fn type_name() -> TypeName { - crate::abi::type_name_variadic::() + crate::abi::type_name_variadic::().abi } fn provide_type_descriptions(accumulator: &mut TDC) { diff --git a/framework/base/src/storage/mappers/unordered_set_mapper.rs b/framework/base/src/storage/mappers/unordered_set_mapper.rs index fa151759ea..7b77bacfd0 100644 --- a/framework/base/src/storage/mappers/unordered_set_mapper.rs +++ b/framework/base/src/storage/mappers/unordered_set_mapper.rs @@ -239,7 +239,7 @@ where T: TopEncode + TopDecode + NestedEncode + NestedDecode + TypeAbi, { fn type_name() -> TypeName { - crate::abi::type_name_variadic::() + crate::abi::type_name_variadic::().abi } fn provide_type_descriptions(accumulator: &mut TDC) { diff --git a/framework/base/src/storage/mappers/user_mapper.rs b/framework/base/src/storage/mappers/user_mapper.rs index bbfdcfb27b..e15f08da76 100644 --- a/framework/base/src/storage/mappers/user_mapper.rs +++ b/framework/base/src/storage/mappers/user_mapper.rs @@ -230,7 +230,7 @@ where SA: StorageMapperApi, { fn type_name() -> TypeName { - crate::abi::type_name_variadic::>() + crate::abi::type_name_variadic::>().abi } fn is_variadic() -> bool { diff --git a/framework/base/src/storage/mappers/vec_mapper.rs b/framework/base/src/storage/mappers/vec_mapper.rs index 49c9c159cc..2088f445b0 100644 --- a/framework/base/src/storage/mappers/vec_mapper.rs +++ b/framework/base/src/storage/mappers/vec_mapper.rs @@ -358,7 +358,7 @@ where T: TopEncode + TopDecode + TypeAbi, { fn type_name() -> TypeName { - crate::abi::type_name_variadic::() + crate::abi::type_name_variadic::().abi } fn provide_type_descriptions(accumulator: &mut TDC) { diff --git a/framework/base/src/types.rs b/framework/base/src/types.rs index caa4a5a2d3..c316553b6b 100644 --- a/framework/base/src/types.rs +++ b/framework/base/src/types.rs @@ -3,7 +3,7 @@ mod flags; pub mod heap; mod interaction; mod io; -mod managed; +pub mod managed; mod static_buffer; pub use crypto::*; diff --git a/framework/base/src/types/heap/h256_address.rs b/framework/base/src/types/heap/h256_address.rs index e4c9b055d2..cd992145a9 100644 --- a/framework/base/src/types/heap/h256_address.rs +++ b/framework/base/src/types/heap/h256_address.rs @@ -206,6 +206,10 @@ impl TypeAbi for Address { fn type_name() -> TypeName { "Address".into() } + + fn type_name_rust() -> TypeName { + "multiversx_sc::types::heap::h256_address".into() + } } #[cfg(test)] diff --git a/framework/base/src/types/interaction/function_call.rs b/framework/base/src/types/interaction/function_call.rs index 376aec879b..f4a3b69752 100644 --- a/framework/base/src/types/interaction/function_call.rs +++ b/framework/base/src/types/interaction/function_call.rs @@ -139,7 +139,7 @@ where Api: ManagedTypeApi, { fn type_name() -> TypeName { - crate::abi::type_name_variadic::>() + crate::abi::type_name_variadic::>().abi } fn is_variadic() -> bool { diff --git a/framework/base/src/types/io/operation_completion_status.rs b/framework/base/src/types/io/operation_completion_status.rs index a7e030ab96..207b9d760f 100644 --- a/framework/base/src/types/io/operation_completion_status.rs +++ b/framework/base/src/types/io/operation_completion_status.rs @@ -81,13 +81,13 @@ impl TypeAbi for OperationCompletionStatus { } fn provide_type_descriptions(accumulator: &mut TDC) { - let type_name = Self::type_name(); + let type_names = Self::type_names(); accumulator.insert( - type_name, + type_names, TypeDescription { docs: Vec::new(), - name: Self::type_name(), + names: Self::type_names(), contents: TypeContents::ExplicitEnum([ ExplicitEnumVariantDescription::new( &["indicates that operation was completed"], diff --git a/framework/base/src/types/managed/basic/mod.rs b/framework/base/src/types/managed/basic/mod.rs index 124fd1df55..5f818afac2 100644 --- a/framework/base/src/types/managed/basic/mod.rs +++ b/framework/base/src/types/managed/basic/mod.rs @@ -6,7 +6,7 @@ mod big_int_cmp; mod big_int_operators; mod big_int_sign; mod big_num_cmp; -mod big_uint; +pub mod big_uint; mod big_uint_cmp; mod big_uint_operators; mod cast_to_i64; diff --git a/framework/base/src/types/managed/mod.rs b/framework/base/src/types/managed/mod.rs index 3107f1ee3e..1ff74fdb84 100644 --- a/framework/base/src/types/managed/mod.rs +++ b/framework/base/src/types/managed/mod.rs @@ -1,4 +1,4 @@ -mod basic; +pub mod basic; mod codec_util; mod managed_type_trait; mod multi_value; diff --git a/framework/base/src/types/managed/multi_value/multi_value_encoded.rs b/framework/base/src/types/managed/multi_value/multi_value_encoded.rs index ebf8e0cb69..943b909f35 100644 --- a/framework/base/src/types/managed/multi_value/multi_value_encoded.rs +++ b/framework/base/src/types/managed/multi_value/multi_value_encoded.rs @@ -228,7 +228,7 @@ where T: TypeAbi, { fn type_name() -> TypeName { - crate::abi::type_name_variadic::() + crate::abi::type_name_variadic::().abi } fn provide_type_descriptions(accumulator: &mut TDC) { diff --git a/framework/derive/src/type_abi_derive.rs b/framework/derive/src/type_abi_derive.rs index efef94acb6..2d5848cc2d 100644 --- a/framework/derive/src/type_abi_derive.rs +++ b/framework/derive/src/type_abi_derive.rs @@ -50,16 +50,16 @@ pub fn type_abi_derive(ast: &syn::DeriveInput) -> TokenStream { let struct_field_snippets = fields_snippets(&data_struct.fields); quote! { fn provide_type_descriptions(accumulator: &mut TDC) { - let type_name = Self::type_name(); - if !accumulator.contains_type(&type_name) { - accumulator.reserve_type_name(type_name.clone()); + let type_names = Self::type_names(); + if !accumulator.contains_type(&type_names.abi) { + accumulator.reserve_type_name(type_names.clone()); let mut field_descriptions = multiversx_sc::types::heap::Vec::new(); #(#struct_field_snippets)* accumulator.insert( - type_name.clone(), + type_names.clone(), multiversx_sc::abi::TypeDescription::new( &[ #(#type_docs),* ], - type_name, + type_names, multiversx_sc::abi::TypeContents::Struct(field_descriptions), ), ); @@ -93,16 +93,16 @@ pub fn type_abi_derive(ast: &syn::DeriveInput) -> TokenStream { .collect(); quote! { fn provide_type_descriptions(accumulator: &mut TDC) { - let type_name = Self::type_name(); - if !accumulator.contains_type(&type_name) { - accumulator.reserve_type_name(type_name.clone()); + let type_names = Self::type_names(); + if !accumulator.contains_type(&type_names.abi) { + accumulator.reserve_type_name(type_names.clone()); let mut variant_descriptions = multiversx_sc::types::heap::Vec::new(); #(#enum_variant_snippets)* accumulator.insert( - type_name.clone(), + type_names.clone(), multiversx_sc::abi::TypeDescription::new( &[ #(#type_docs),* ], - type_name, + type_names, multiversx_sc::abi::TypeContents::Enum(variant_descriptions), ), ); diff --git a/framework/meta/src/abi_json/contract_abi_json.rs b/framework/meta/src/abi_json/contract_abi_json.rs index c4f62916c3..ffd4d275b4 100644 --- a/framework/meta/src/abi_json/contract_abi_json.rs +++ b/framework/meta/src/abi_json/contract_abi_json.rs @@ -70,10 +70,10 @@ pub fn convert_type_descriptions_to_json( type_descriptions: &TypeDescriptionContainerImpl, ) -> BTreeMap { let mut types = BTreeMap::new(); - for (type_name, type_description) in type_descriptions.0.iter() { + for (type_names, type_description) in type_descriptions.0.iter() { if type_description.contents.is_specified() { types.insert( - type_name.clone(), + type_names.abi.clone(), TypeDescriptionJson::from(type_description), ); } diff --git a/framework/meta/src/abi_json/endpoint_abi_json.rs b/framework/meta/src/abi_json/endpoint_abi_json.rs index 5882fcd961..b6bd041713 100644 --- a/framework/meta/src/abi_json/endpoint_abi_json.rs +++ b/framework/meta/src/abi_json/endpoint_abi_json.rs @@ -19,7 +19,7 @@ impl From<&InputAbi> for InputAbiJson { fn from(abi: &InputAbi) -> Self { InputAbiJson { arg_name: abi.arg_name.to_string(), - type_name: abi.type_name.clone(), + type_name: abi.type_names.abi.clone(), multi_arg: if abi.multi_arg { Some(true) } else { None }, } } @@ -43,7 +43,7 @@ impl From<&OutputAbi> for OutputAbiJson { fn from(abi: &OutputAbi) -> Self { OutputAbiJson { output_name: abi.output_name.clone(), - type_name: abi.type_name.clone(), + type_name: abi.type_names.abi.clone(), multi_result: if abi.multi_result { Some(true) } else { None }, } } diff --git a/framework/meta/src/abi_json/type_abi_json.rs b/framework/meta/src/abi_json/type_abi_json.rs index 5602ae98cc..f7c3f16e38 100644 --- a/framework/meta/src/abi_json/type_abi_json.rs +++ b/framework/meta/src/abi_json/type_abi_json.rs @@ -68,10 +68,13 @@ impl From<&TypeDescription> for TypeDescriptionJson { } impl TypeDescriptionJson { - pub fn to_type_description(&self, name: &str) -> TypeDescription { + pub fn to_type_description(&self, name_abi: &str, name_rust: &str) -> TypeDescription { TypeDescription { docs: self.docs.clone(), - name: name.to_string(), + names: TypeNames { + abi: name_abi.to_string(), + rust: name_rust.to_string(), + }, contents: match self.content_type.as_str() { TYPE_DESCRIPTION_JSON_TYPE_STRUCT => TypeContents::Struct( self.fields diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs index c16c6489c6..edc7cf8804 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs @@ -1,9 +1,10 @@ use std::{fs::File, io::Write}; -use multiversx_sc::abi::{ContractAbi, EndpointAbi, InputAbi, OutputAbi}; +use multiversx_sc::abi::{ContractAbi, EndpointAbi, InputAbi}; use crate::cmd::contract::generate_snippets::{ - snippet_gen_common::write_newline, snippet_sc_functions_gen::map_output_types_to_rust_types, snippet_type_map::{handle_abi_type, RustTypeString} + snippet_gen_common::write_newline, + snippet_type_map::{handle_abi_type, RustTypeString}, }; pub(crate) fn write_content(file: &mut File, abi: ContractAbi) { @@ -54,25 +55,25 @@ where .unwrap(); } -fn write_function_content(file: &mut File, end: EndpointAbi) { - writeln!( - file, - "\t\tTx::new_with_env(self.env.clone()) - .raw_call() - .function_name(\"{}\")", - end.name - ) - .unwrap(); - - for input in end.inputs.iter() { - writeln!( - file, - "\t\t\t.argument(&{})", - input.arg_name // .argument(&arg0)" - ) - .unwrap(); - } -} +// fn write_function_content(file: &mut File, end: EndpointAbi) { +// writeln!( +// file, +// "\t\tTx::new_with_env(self.env.clone()) +// .raw_call() +// .function_name(\"{}\")", +// end.name +// ) +// .unwrap(); + +// for input in end.inputs.iter() { +// writeln!( +// file, +// "\t\t\t.argument(&{})", +// input.arg_name // .argument(&arg0)" +// ) +// .unwrap(); +// } +// } fn write_constructor_content(file: &mut File, inputs: Vec) { writeln!( @@ -101,7 +102,7 @@ fn write_constructor_header(file: &mut File, contructor_abi: EndpointAbi) { fn write_endpoint_header(file: &mut File, contructor_abi: EndpointAbi) { write_fn_signature(file, contructor_abi.clone()); - write_endpoint_output(file, contructor_abi.outputs); + // write_endpoint_output(contructor_abi.outputs); } fn write_fn_signature(file: &mut File, endpoint_abi: EndpointAbi) { @@ -130,17 +131,10 @@ fn write_constructor_output(file: &mut File) { .unwrap(); } -fn write_endpoint_output(file: &mut File, outputs: Vec) { - let output_type = map_output_types_to_rust_types(&outputs); - - println!("->>> output_type{}", output_type); - - let output_type_print = output_type.replace("", ""); - - println!("{}", output_type_print); - // write!(file, "{output_type_print}",).unwrap(); - // writeln!(file, "> {{").unwrap(); -} +// fn write_endpoint_output(outputs: Vec) { +// let output_type = map_output_types_to_rust_types(&outputs); +// let output_type_print = output_type.replace("", ""); +// } fn write_function_header_endpoint(file: &mut File, rust_method_name: String) { write!(file, "\tpub fn {rust_method_name}").unwrap(); @@ -164,7 +158,7 @@ fn write_args(file: &mut File, inputs: Vec) { writeln!(file, "<").unwrap(); for (index, input) in inputs.iter().enumerate() { - write_argument(file, index, input.type_name.to_string()); + write_argument(file, index, input.type_names.abi.to_string()); } write!(file, "\t>").unwrap(); diff --git a/framework/meta/src/cmd/contract/generate_snippets/snippet_sc_functions_gen.rs b/framework/meta/src/cmd/contract/generate_snippets/snippet_sc_functions_gen.rs index 6bc0fe01de..ade7591547 100644 --- a/framework/meta/src/cmd/contract/generate_snippets/snippet_sc_functions_gen.rs +++ b/framework/meta/src/cmd/contract/generate_snippets/snippet_sc_functions_gen.rs @@ -133,7 +133,7 @@ fn write_endpoint_args_declaration(file: &mut File, inputs: &[InputAbi]) { } for input in inputs { - let rust_type = map_abi_type_to_rust_type(input.type_name.clone()); + let rust_type = map_abi_type_to_rust_type(input.type_names.abi.clone()); writeln!( file, " let {} = {};", @@ -220,7 +220,7 @@ pub fn map_output_types_to_rust_types(outputs: &[OutputAbi]) -> String { } for (i, output) in outputs.iter().enumerate() { - input_str += &output.type_name; + input_str += &output.type_names.abi; if i < results_len - 1 { input_str += ","; diff --git a/framework/meta/src/cmd/contract/sc_config/contract_variant_validate.rs b/framework/meta/src/cmd/contract/sc_config/contract_variant_validate.rs index a0c0acb886..6347a0f4ee 100644 --- a/framework/meta/src/cmd/contract/sc_config/contract_variant_validate.rs +++ b/framework/meta/src/cmd/contract/sc_config/contract_variant_validate.rs @@ -69,7 +69,7 @@ fn validate_endpoint_var_args_order(endpoint_abi: &EndpointAbi) -> Result<(), St #[cfg(test)] mod tests { - use multiversx_sc::abi::{InputAbi, TypeName}; + use multiversx_sc::abi::{InputAbi, TypeNames}; use super::*; @@ -78,12 +78,12 @@ mod tests { let mut endpoint_def = EndpointAbi::default(); let var_arg_1 = InputAbi { arg_name: "arg_1".to_string(), - type_name: TypeName::new(), + type_names: TypeNames::new(), multi_arg: true, }; let var_arg_2 = InputAbi { arg_name: "arg_2".to_string(), - type_name: TypeName::new(), + type_names: TypeNames::new(), multi_arg: true, }; endpoint_def.inputs.push(var_arg_1); @@ -103,12 +103,12 @@ mod tests { let mut endpoint_def = EndpointAbi::default(); let arg = InputAbi { arg_name: "arg_1".to_string(), - type_name: TypeName::new(), + type_names: TypeNames::new(), multi_arg: false, }; let var_arg_1 = InputAbi { arg_name: "arg_2".to_string(), - type_name: TypeName::new(), + type_names: TypeNames::new(), multi_arg: true, }; From a5948501d34b75835298cfe0f0e73b4f7e6a0d43 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 7 Mar 2024 15:02:48 +0200 Subject: [PATCH 059/461] remove proxy impl --- .../adder/proxies_struct_interactor_main.rs | 134 ++++++++++-------- .../contract/generate_proxy/proxy_gen_main.rs | 7 +- .../generate_proxy/proxy_sc_functions_gen.rs | 119 ++++------------ .../generate_proxy/proxy_template_gen.rs | 41 ++---- 4 files changed, 110 insertions(+), 191 deletions(-) diff --git a/contracts/examples/adder/proxies_struct_interactor_main.rs b/contracts/examples/adder/proxies_struct_interactor_main.rs index af7378dc8b..f95b5dd523 100644 --- a/contracts/examples/adder/proxies_struct_interactor_main.rs +++ b/contracts/examples/adder/proxies_struct_interactor_main.rs @@ -1,79 +1,87 @@ -//////////////////////////////////////////////////// -////////////////// AUTO-GENERATED ////////////////// -//////////////////////////////////////////////////// - -#![allow(clippy::all)] - -use multiversx_sc::api::VMApi; - multiversx_sc::imports!(); pub struct TxProxy; -impl TxProxyTraitV2 for TxProxy +impl TxProxyTrait for TxProxy where Env: TxEnv, - From: TxFrom, - To: TxTo, - Gas: TxGas, { - type TxProxyMethods = TxProxyMethods; + type TxProxyMethods = TxProxyMethods; - fn prepare_methods(self, tx: Tx) -> Self::TxProxyMethods { - TxProxyMethods { wrapped_tx: tx } + fn env(self, env: Env) -> Self::TxProxyMethods { + TxProxyMethods { env } } } -pub struct TxProxyMethods -where - Env: TxEnv, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ - wrapped_tx: Tx, -} - -impl TxProxyMethods -where - Env: TxEnv, - Env::Api: VMApi, - To: TxTo, - Gas: TxGas, -{ - pub fn init< - Arg0: multiversx_sc::codec::CodecInto>, +impl TxProxyMethods { + pub fn init< + Arg0: multiversx_sc::codec::CodecInto> >( - self, - initial_value: Arg0, - ) -> multiversx_sc::types::Tx, OriginalResultMarker<()>> - { - self.wrapped_tx + &mut self, + initial_value: Arg0, + ) -> multiversx_sc::types::Tx, OriginalResultMarker<()>> + { + self.wrapped_tx .raw_deploy() - .argument(&initial_value) - .original_result() - } + .argument(&initial_value) + .original_result() + } -} -impl TxProxyMethods -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ - pub fn sum( - self, - ) pub fn upgrade< - Arg0: multiversx_sc::codec::CodecInto>, + pub fn sum( + &mut self, + ) -> multiversx_sc::types::Tx< + Env, + (), + (), + (), + (), + FunctionCall<::Api>, + (), + > { + Tx::new_with_env(self.env.clone()) + .raw_call() + .function_name("getSum") + } + + pub fn upgrade< + Arg0: multiversx_sc::codec::CodecInto> >( - self, - initial_value: Arg0, - ) //Add desired amount to the storage variable. - pub fn add< - Arg0: multiversx_sc::codec::CodecInto>, + &mut self, + initial_value: Arg0, + ) -> multiversx_sc::types::Tx< + Env, + (), + (), + (), + (), + FunctionCall<::Api>, + (), + > { + Tx::new_with_env(self.env.clone()) + .raw_call() + .function_name("upgrade") + .argument(&initial_value) + } + + //Add desired amount to the storage variable. + pub fn add< + Arg0: multiversx_sc::codec::CodecInto> >( - self, - value: Arg0, - ) } + &mut self, + value: Arg0, + ) -> multiversx_sc::types::Tx< + Env, + (), + (), + (), + (), + FunctionCall<::Api>, + (), + > { + Tx::new_with_env(self.env.clone()) + .raw_call() + .function_name("add") + .argument(&value) + } + +} diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs index e1b7745e31..8fc5455197 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs @@ -9,7 +9,8 @@ use super::{ proxy_crate_gen::create_file, proxy_sc_functions_gen::write_content, proxy_template_gen::{ - write_header, write_impl_for_tx_proxy, write_struct_template, write_struct_tx_proxy_methods, + write_impl_for_tx_proxy, write_imports, write_struct_template, + write_tx_proxy_method_header, }, }; @@ -23,9 +24,9 @@ impl MetaConfig { } fn write_proxies_to_file(mut file: File, abi: ContractAbi) { - write_header(&mut file); + write_imports(&mut file); write_struct_template(&mut file); write_impl_for_tx_proxy(&mut file); - write_struct_tx_proxy_methods(&mut file); + write_tx_proxy_method_header(&mut file); write_content(&mut file, abi); } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs index edc7cf8804..e2421e63f8 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs @@ -8,82 +8,32 @@ use crate::cmd::contract::generate_snippets::{ }; pub(crate) fn write_content(file: &mut File, abi: ContractAbi) { - write_header_impl_constructors(file); for constructor_abi in abi.constructors { - write_constructor_header(file, constructor_abi.clone()); - write_constructor_content(file, constructor_abi.inputs); + write_endpoint(file, constructor_abi.clone()); + write_function_content(file, constructor_abi); write_end_of_function(file); } - writeln!(file, "}}").unwrap(); - write_header_impl_endpoints(file); for endpoint_abi in abi.endpoints { - write_endpoint_header(file, endpoint_abi.clone()); - // write_function_content(file, endpoint_abi); - // write_end_of_function(file); + write_endpoint(file, endpoint_abi.clone()); + write_function_content(file, endpoint_abi); + write_end_of_function(file); } writeln!(file, "}}").unwrap(); } -fn write_header_impl_constructors(file: &mut File) { - writeln!( - file, - r#"impl TxProxyMethods -where - Env: TxEnv, - Env::Api: VMApi, - To: TxTo, - Gas: TxGas, -{{"# - ) - .unwrap(); -} - -fn write_header_impl_endpoints(file: &mut File) { +fn write_function_content(file: &mut File, end: EndpointAbi) { writeln!( file, - r#"impl TxProxyMethods -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{{"# + "\t\tTx::new_with_env(self.env.clone()) + .raw_call() + .function_name(\"{}\")", + end.name ) .unwrap(); -} -// fn write_function_content(file: &mut File, end: EndpointAbi) { -// writeln!( -// file, -// "\t\tTx::new_with_env(self.env.clone()) -// .raw_call() -// .function_name(\"{}\")", -// end.name -// ) -// .unwrap(); - -// for input in end.inputs.iter() { -// writeln!( -// file, -// "\t\t\t.argument(&{})", -// input.arg_name // .argument(&arg0)" -// ) -// .unwrap(); -// } -// } - -fn write_constructor_content(file: &mut File, inputs: Vec) { - writeln!( - file, - "\t\tself.wrapped_tx - .raw_deploy()" - ) - .unwrap(); - - for input in inputs.iter() { + for input in end.inputs.iter() { writeln!( file, "\t\t\t.argument(&{})", @@ -91,51 +41,38 @@ fn write_constructor_content(file: &mut File, inputs: Vec) { ) .unwrap(); } - - writeln!(file, "\t\t\t.original_result()").unwrap(); } -fn write_constructor_header(file: &mut File, contructor_abi: EndpointAbi) { - write_fn_signature(file, contructor_abi); - write_constructor_output(file); -} - -fn write_endpoint_header(file: &mut File, contructor_abi: EndpointAbi) { - write_fn_signature(file, contructor_abi.clone()); - // write_endpoint_output(contructor_abi.outputs); -} - -fn write_fn_signature(file: &mut File, endpoint_abi: EndpointAbi) { +fn write_endpoint(file: &mut File, endpoint_abi: EndpointAbi) { write_info_endpoint(file, endpoint_abi.docs); write_function_header_endpoint(file, endpoint_abi.rust_method_name); write_args(file, endpoint_abi.inputs.clone()); - write_parameters(file, endpoint_abi.inputs); + write_parameters_and_output(file, endpoint_abi.inputs); } -fn write_parameters(file: &mut File, inputs: Vec) { +#[rustfmt::skip] +fn write_parameters_and_output(file: &mut File, inputs: Vec) { writeln!(file, "(").unwrap(); - writeln!(file, "\t\tself,").unwrap(); + writeln!(file, "\t\t&mut self,").unwrap(); for (index, input) in inputs.iter().enumerate() { writeln!(file, "\t\t{}: Arg{index},", &input.arg_name).unwrap(); } - write!(file, "\t) ").unwrap(); -} - -fn write_constructor_output(file: &mut File) { - writeln!( + write!( file, - "-> multiversx_sc::types::Tx, OriginalResultMarker<()>>\n\t{{" + "\t) -> multiversx_sc::types::Tx::Api>, + (), + > {{\n" ) .unwrap(); } -// fn write_endpoint_output(outputs: Vec) { -// let output_type = map_output_types_to_rust_types(&outputs); -// let output_type_print = output_type.replace("", ""); -// } - fn write_function_header_endpoint(file: &mut File, rust_method_name: String) { write!(file, "\tpub fn {rust_method_name}").unwrap(); } @@ -167,11 +104,9 @@ fn write_args(file: &mut File, inputs: Vec) { fn write_argument(file: &mut File, index: usize, type_name: String) { let mut type_string = RustTypeString::default(); handle_abi_type(&mut type_string, type_name); + let type_string_str = type_string.get_type_name().to_string(); - let type_print = type_string - .get_type_name() - .to_string() - .replace("", ""); + let type_print = type_string_str.replace("", ""); writeln!( file, diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs index 7af38cd93a..9742b54c59 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs @@ -2,20 +2,8 @@ use std::{fs::File, io::Write}; use crate::cmd::contract::generate_snippets::snippet_gen_common::write_newline; -const PREFIX_AUTO_GENERATED: &str = "//////////////////////////////////////////////////// -////////////////// AUTO-GENERATED ////////////////// -//////////////////////////////////////////////////// -"; - -const IMPORTS: &str = "#![allow(clippy::all)] - -use multiversx_sc::api::VMApi; - -multiversx_sc::imports!();"; - -pub(crate) fn write_header(file: &mut File) { - writeln!(file, "{PREFIX_AUTO_GENERATED}").unwrap(); - writeln!(file, r#"{IMPORTS}"#).unwrap(); +pub(crate) fn write_imports(file: &mut File) { + writeln!(file, r#"multiversx_sc::imports!();"#).unwrap(); write_newline(file); } @@ -28,17 +16,14 @@ pub(crate) fn write_struct_template(file: &mut File) { pub(crate) fn write_impl_for_tx_proxy(file: &mut File) { writeln!( file, - r#"impl TxProxyTraitV2 for TxProxy + r#"impl TxProxyTrait for TxProxy where Env: TxEnv, - From: TxFrom, - To: TxTo, - Gas: TxGas, {{ - type TxProxyMethods = TxProxyMethods; + type TxProxyMethods = TxProxyMethods; - fn prepare_methods(self, tx: Tx) -> Self::TxProxyMethods {{ - TxProxyMethods {{ wrapped_tx: tx }} + fn env(self, env: Env) -> Self::TxProxyMethods {{ + TxProxyMethods {{ env }} }} }}"# ) @@ -47,20 +32,10 @@ where write_newline(file); } -pub(crate) fn write_struct_tx_proxy_methods(file: &mut File) { +pub(crate) fn write_tx_proxy_method_header(file: &mut File) { writeln!( file, - r#"pub struct TxProxyMethods -where - Env: TxEnv, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{{ - wrapped_tx: Tx, -}}"# + r#"impl TxProxyMethods {{"# ) .unwrap(); - - write_newline(file); } From 0544f1bceff8025b589f14ee0907e3b8f8b55acb Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 8 Mar 2024 07:43:10 +0200 Subject: [PATCH 060/461] unified syntax - scenario result handler generic env --- .../src/facade/world_tx/scenario_rh_list.rs | 31 +++++++++++++------ .../facade/world_tx/scenario_rh_list_item.rs | 13 +++++--- .../src/facade/world_tx/scenario_tx.rs | 4 +-- .../facade/world_tx/with_tx_raw_response.rs | 11 +++++-- 4 files changed, 40 insertions(+), 19 deletions(-) diff --git a/framework/scenario/src/facade/world_tx/scenario_rh_list.rs b/framework/scenario/src/facade/world_tx/scenario_rh_list.rs index e86bb6910f..4273b83fe7 100644 --- a/framework/scenario/src/facade/world_tx/scenario_rh_list.rs +++ b/framework/scenario/src/facade/world_tx/scenario_rh_list.rs @@ -2,24 +2,34 @@ use multiversx_sc::types::{ConsNoRet, ConsRet, OriginalResultMarker, RHList, RHL use crate::scenario_model::TxResponse; -use super::{RHListItemScenario, ScenarioTxEnvironment}; +use super::RHListItemScenario; -pub trait RHListScenario: RHList { +pub trait RHListScenario: RHList +where + Env: TxEnv, +{ fn item_scenario_result(self, tx_response: &TxResponse) -> Self::ListReturns; } -impl RHListScenario for () { +impl RHListScenario for () +where + Env: TxEnv, +{ fn item_scenario_result(self, tx_response: &TxResponse) -> Self::ListReturns {} } -impl RHListScenario for OriginalResultMarker { +impl RHListScenario for OriginalResultMarker +where + Env: TxEnv, +{ fn item_scenario_result(self, tx_response: &TxResponse) -> Self::ListReturns {} } -impl RHListScenario for ConsRet +impl RHListScenario for ConsRet where - Head: RHListItemScenario, - Tail: RHListScenario, + Env: TxEnv, + Head: RHListItemScenario, + Tail: RHListScenario, { fn item_scenario_result(self, tx_response: &TxResponse) -> Self::ListReturns { let head_result = self.head.item_scenario_result(tx_response); @@ -28,10 +38,11 @@ where } } -impl RHListScenario for ConsNoRet +impl RHListScenario for ConsNoRet where - Head: RHListItemScenario, - Tail: RHListScenario, + Env: TxEnv, + Head: RHListItemScenario, + Tail: RHListScenario, { fn item_scenario_result(self, tx_response: &TxResponse) -> Self::ListReturns { self.head.item_scenario_result(tx_response); diff --git a/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs b/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs index da0a98ff99..748df069d1 100644 --- a/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs +++ b/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs @@ -10,12 +10,16 @@ use crate::{ use super::ScenarioTxEnvironment; -pub trait RHListItemScenario: RHListItem { +pub trait RHListItemScenario: RHListItem +where + Env: TxEnv, +{ fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns; } -impl RHListItemScenario for ReturnsExact +impl RHListItemScenario for ReturnsExact where + Env: TxEnv, Original: TopDecodeMulti, { fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns { @@ -26,9 +30,10 @@ where } } -impl RHListItemScenario for WithResultNewAddress +impl RHListItemScenario for WithResultNewAddress where - F: FnOnce(&ManagedAddress), + Env: TxEnv, + F: FnOnce(&ManagedAddress), { fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns { let new_address = tx_response diff --git a/framework/scenario/src/facade/world_tx/scenario_tx.rs b/framework/scenario/src/facade/world_tx/scenario_tx.rs index 13449cb8d4..60673f2c44 100644 --- a/framework/scenario/src/facade/world_tx/scenario_tx.rs +++ b/framework/scenario/src/facade/world_tx/scenario_tx.rs @@ -82,7 +82,7 @@ where To: TxToSpecified, Payment: TxPayment, Gas: TxGas, - RH: RHListScenario, + RH: RHListScenario, RH::ListReturns: NestedTupleFlatten, { type Returns = ::Unpacked; @@ -120,7 +120,7 @@ where Payment: TxPayment, Gas: TxGas, CodeValue: TxCodeValue, - RH: RHListScenario, + RH: RHListScenario, RH::ListReturns: NestedTupleFlatten, { type Returns = ::Unpacked; diff --git a/framework/scenario/src/facade/world_tx/with_tx_raw_response.rs b/framework/scenario/src/facade/world_tx/with_tx_raw_response.rs index 8b63cfdfcc..75acd6707c 100644 --- a/framework/scenario/src/facade/world_tx/with_tx_raw_response.rs +++ b/framework/scenario/src/facade/world_tx/with_tx_raw_response.rs @@ -1,6 +1,9 @@ use core::marker::PhantomData; -use multiversx_sc::{codec::TopDecodeMulti, types::RHListItem}; +use multiversx_sc::{ + codec::TopDecodeMulti, + types::{RHListItem, TxEnv}, +}; use crate::scenario_model::TxResponse; @@ -11,15 +14,17 @@ pub struct WithRawTxResponse(pub F) where F: FnOnce(&TxResponse); -impl RHListItem for WithRawTxResponse +impl RHListItem for WithRawTxResponse where + Env: TxEnv, F: FnOnce(&TxResponse), { type Returns = (); } -impl RHListItemScenario for WithRawTxResponse +impl RHListItemScenario for WithRawTxResponse where + Env: TxEnv, Original: TopDecodeMulti, F: FnOnce(&TxResponse), { From 4e773c155d5a28c96435cb4cb3cda41204744abd Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 8 Mar 2024 07:49:38 +0200 Subject: [PATCH 061/461] unified syntax - rename ScenarioTxEnv --- .../src/facade/world_tx/expr/file_expr.rs | 8 ++-- .../src/facade/world_tx/expr/mxsc_expr.rs | 10 ++--- .../src/facade/world_tx/scenario_env.rs | 6 +-- .../facade/world_tx/scenario_rh_list_item.rs | 2 +- .../src/facade/world_tx/scenario_tx.rs | 38 ++++++++----------- .../facade/world_tx/with_tx_raw_response.rs | 2 +- 6 files changed, 29 insertions(+), 37 deletions(-) diff --git a/framework/scenario/src/facade/world_tx/expr/file_expr.rs b/framework/scenario/src/facade/world_tx/expr/file_expr.rs index 1cb80997e4..65965ecf8b 100644 --- a/framework/scenario/src/facade/world_tx/expr/file_expr.rs +++ b/framework/scenario/src/facade/world_tx/expr/file_expr.rs @@ -9,21 +9,21 @@ use multiversx_sc::types::{ TxToSpecified, }; -use crate::{api::StaticApi, ScenarioTxEnvironment}; +use crate::{api::StaticApi, ScenarioTxEnv}; const FILE_PREFIX: &str = "file:"; #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub struct FileExpr<'a>(pub &'a str); -impl<'a> AnnotatedValue> for FileExpr<'a> { - fn annotation(&self, _env: &ScenarioTxEnvironment) -> ManagedBuffer { +impl<'a> AnnotatedValue> for FileExpr<'a> { + fn annotation(&self, _env: &ScenarioTxEnv) -> ManagedBuffer { let mut result = ManagedBuffer::new_from_bytes(FILE_PREFIX.as_bytes()); result.append_bytes(self.0.as_bytes()); result } - fn into_value(self, env: &ScenarioTxEnvironment) -> ManagedBuffer { + fn into_value(self, env: &ScenarioTxEnv) -> ManagedBuffer { let context = InterpreterContext::new().with_dir(env.context_path.clone()); let value = interpret_string(&format!("{FILE_PREFIX}{}", self.0), &context); value.into() diff --git a/framework/scenario/src/facade/world_tx/expr/mxsc_expr.rs b/framework/scenario/src/facade/world_tx/expr/mxsc_expr.rs index a0ba7c4ef9..25f9f21f42 100644 --- a/framework/scenario/src/facade/world_tx/expr/mxsc_expr.rs +++ b/framework/scenario/src/facade/world_tx/expr/mxsc_expr.rs @@ -9,21 +9,21 @@ use multiversx_sc::types::{ TxTo, TxToSpecified, }; -use crate::{api::StaticApi, ScenarioTxEnvironment}; +use crate::{api::StaticApi, ScenarioTxEnv}; const MXSC_PREFIX: &str = "mxsc:"; #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub struct MxscExpr<'a>(pub &'a str); -impl<'a> AnnotatedValue> for MxscExpr<'a> { - fn annotation(&self, _env: &ScenarioTxEnvironment) -> ManagedBuffer { +impl<'a> AnnotatedValue> for MxscExpr<'a> { + fn annotation(&self, _env: &ScenarioTxEnv) -> ManagedBuffer { let mut result = ManagedBuffer::new_from_bytes(MXSC_PREFIX.as_bytes()); result.append_bytes(self.0.as_bytes()); result } - fn into_value(self, env: &ScenarioTxEnvironment) -> ManagedBuffer { + fn into_value(self, env: &ScenarioTxEnv) -> ManagedBuffer { let context = InterpreterContext::new() .with_dir(env.context_path.clone()) .with_allowed_missing_files(); @@ -32,4 +32,4 @@ impl<'a> AnnotatedValue> for Mxs } } -impl<'a> TxCodeValue for MxscExpr<'a> {} +impl<'a> TxCodeValue for MxscExpr<'a> {} diff --git a/framework/scenario/src/facade/world_tx/scenario_env.rs b/framework/scenario/src/facade/world_tx/scenario_env.rs index 6e8a8ef8b4..9076cc5d48 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env.rs @@ -4,15 +4,15 @@ use multiversx_sc::types::{AnnotatedValue, ManagedAddress, TxBaseWithEnv, TxEnv} use crate::{api::StaticApi, scenario_model::TxResponse}; -pub type TxScenarioBase = TxBaseWithEnv; +pub type TxScenarioBase = TxBaseWithEnv; #[derive(Default, Debug, Clone)] -pub struct ScenarioTxEnvironment { +pub struct ScenarioTxEnv { pub context_path: PathBuf, pub response: Option, } -impl TxEnv for ScenarioTxEnvironment { +impl TxEnv for ScenarioTxEnv { type Api = StaticApi; fn resolve_sender_address(&self) -> ManagedAddress { diff --git a/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs b/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs index 748df069d1..a357a6dcd8 100644 --- a/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs +++ b/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs @@ -8,7 +8,7 @@ use crate::{ scenario_model::{TxResponse, TypedResponse}, }; -use super::ScenarioTxEnvironment; +use super::ScenarioTxEnv; pub trait RHListItemScenario: RHListItem where diff --git a/framework/scenario/src/facade/world_tx/scenario_tx.rs b/framework/scenario/src/facade/world_tx/scenario_tx.rs index 60673f2c44..ae10294e72 100644 --- a/framework/scenario/src/facade/world_tx/scenario_tx.rs +++ b/framework/scenario/src/facade/world_tx/scenario_tx.rs @@ -14,11 +14,11 @@ use crate::{ ScenarioWorld, }; -use super::{RHListScenario, ScenarioTxEnvironment, TxScenarioBase}; +use super::{RHListScenario, ScenarioTxEnv, TxScenarioBase}; impl ScenarioWorld { - fn tx_env(&self) -> ScenarioTxEnvironment { - ScenarioTxEnvironment { + fn tx_env(&self) -> ScenarioTxEnv { + ScenarioTxEnv { context_path: self.current_dir.clone(), ..Default::default() } @@ -76,13 +76,13 @@ where } impl ScenarioTx - for Tx, RH> + for Tx, RH> where - From: TxFromSpecified, - To: TxToSpecified, - Payment: TxPayment, - Gas: TxGas, - RH: RHListScenario, + From: TxFromSpecified, + To: TxToSpecified, + Payment: TxPayment, + Gas: TxGas, + RH: RHListScenario, RH::ListReturns: NestedTupleFlatten, { type Returns = ::Unpacked; @@ -106,21 +106,13 @@ where } impl ScenarioTx - for Tx< - ScenarioTxEnvironment, - From, - (), - Payment, - Gas, - DeployCall>, - RH, - > + for Tx>, RH> where - From: TxFromSpecified, - Payment: TxPayment, - Gas: TxGas, - CodeValue: TxCodeValue, - RH: RHListScenario, + From: TxFromSpecified, + Payment: TxPayment, + Gas: TxGas, + CodeValue: TxCodeValue, + RH: RHListScenario, RH::ListReturns: NestedTupleFlatten, { type Returns = ::Unpacked; diff --git a/framework/scenario/src/facade/world_tx/with_tx_raw_response.rs b/framework/scenario/src/facade/world_tx/with_tx_raw_response.rs index 75acd6707c..053c962555 100644 --- a/framework/scenario/src/facade/world_tx/with_tx_raw_response.rs +++ b/framework/scenario/src/facade/world_tx/with_tx_raw_response.rs @@ -7,7 +7,7 @@ use multiversx_sc::{ use crate::scenario_model::TxResponse; -use super::{RHListItemScenario, ScenarioTxEnvironment}; +use super::{RHListItemScenario, ScenarioTxEnv}; /// Wraps a closure that handles a `TxResponse` object. pub struct WithRawTxResponse(pub F) From 3029c57535dc041dce3637bd1984808026b0f3ea Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Fri, 8 Mar 2024 12:15:05 +0200 Subject: [PATCH 062/461] impl changes from review --- .../abi-tester/tests/abi_tester_abi_test.rs | 7 +++-- framework/base/src/abi/type_abi.rs | 30 +++++++------------ .../base/src/abi/type_abi_impl_codec_multi.rs | 4 +-- framework/base/src/external_view_contract.rs | 7 ++--- .../src/storage/mappers/linked_list_mapper.rs | 2 +- .../base/src/storage/mappers/queue_mapper.rs | 2 +- .../base/src/storage/mappers/set_mapper.rs | 2 +- .../src/storage/mappers/unique_id_mapper.rs | 2 +- .../storage/mappers/unordered_set_mapper.rs | 2 +- .../base/src/storage/mappers/user_mapper.rs | 2 +- .../base/src/storage/mappers/vec_mapper.rs | 2 +- framework/base/src/types/heap/h256_address.rs | 4 --- .../src/types/interaction/function_call.rs | 2 +- framework/base/src/types/managed/basic/mod.rs | 28 ++++++++--------- .../multi_value/multi_value_encoded.rs | 2 +- framework/meta/src/abi_json/type_abi_json.rs | 7 ++--- 16 files changed, 44 insertions(+), 61 deletions(-) diff --git a/contracts/feature-tests/abi-tester/tests/abi_tester_abi_test.rs b/contracts/feature-tests/abi-tester/tests/abi_tester_abi_test.rs index f288a90059..e5a31ef9e4 100644 --- a/contracts/feature-tests/abi-tester/tests/abi_tester_abi_test.rs +++ b/contracts/feature-tests/abi-tester/tests/abi_tester_abi_test.rs @@ -1,7 +1,7 @@ use std::{fs, fs::File, io::Write}; use multiversx_sc::{ - abi::{EnumVariantDescription, TypeContents}, + abi::{EnumVariantDescription, TypeContents, TypeNames}, contract_base::ContractAbiProvider, }; use multiversx_sc_meta::{ @@ -94,7 +94,10 @@ fn abi_deserialization_check() { .types .get("AbiEnum") .unwrap() - .to_type_description("AbiEnum", "Enum"); + .to_type_description(TypeNames { + abi: "AbiEnum".to_string(), + rust: "Enum".to_string(), + }); if let TypeContents::Enum(variants) = abi_enum_type.contents { assert_eq!(variants.len(), 4); assert_eq!( diff --git a/framework/base/src/abi/type_abi.rs b/framework/base/src/abi/type_abi.rs index 3643cb9cf2..40c5022827 100644 --- a/framework/base/src/abi/type_abi.rs +++ b/framework/base/src/abi/type_abi.rs @@ -62,26 +62,16 @@ pub trait TypeAbi { } } -pub fn type_name_variadic() -> TypeNames { - let mut abi = TypeName::from("variadic<"); - abi.push_str(T::type_name().as_str()); - abi.push('>'); - - let mut rust = TypeName::from("variadic<"); - rust.push_str(T::type_name_rust().as_str()); - rust.push('>'); - - TypeNames { abi, rust } +pub fn type_name_variadic() -> TypeName { + let mut repr = TypeName::from("variadic<"); + repr.push_str(T::type_name().as_str()); + repr.push('>'); + repr } -pub fn type_name_optional() -> TypeNames { - let mut abi = TypeName::from("optional<"); - abi.push_str(T::type_name().as_str()); - abi.push('>'); - - let mut rust = TypeName::from("optional<"); - rust.push_str(T::type_name().as_str()); - rust.push('>'); - - TypeNames { abi, rust } +pub fn type_name_optional() -> TypeName { + let mut repr = TypeName::from("optional<"); + repr.push_str(T::type_name().as_str()); + repr.push('>'); + repr } diff --git a/framework/base/src/abi/type_abi_impl_codec_multi.rs b/framework/base/src/abi/type_abi_impl_codec_multi.rs index 0a15206a46..6227634258 100644 --- a/framework/base/src/abi/type_abi_impl_codec_multi.rs +++ b/framework/base/src/abi/type_abi_impl_codec_multi.rs @@ -6,7 +6,7 @@ use crate::{ #[cfg(feature = "alloc")] impl TypeAbi for crate::codec::multi_types::MultiValueVec { fn type_name() -> TypeName { - super::type_name_variadic::().abi + super::type_name_variadic::() } fn provide_type_descriptions(accumulator: &mut TDC) { @@ -30,7 +30,7 @@ impl TypeAbi for IgnoreValue { impl TypeAbi for OptionalValue { fn type_name() -> TypeName { - super::type_name_optional::().abi + super::type_name_optional::() } fn provide_type_descriptions(accumulator: &mut TDC) { diff --git a/framework/base/src/external_view_contract.rs b/framework/base/src/external_view_contract.rs index 325eb93420..2b01176176 100644 --- a/framework/base/src/external_view_contract.rs +++ b/framework/base/src/external_view_contract.rs @@ -1,7 +1,7 @@ use alloc::string::ToString; use crate::{ - abi::{EndpointAbi, EndpointMutabilityAbi, EndpointTypeAbi, InputAbi, TypeAbi, TypeNames}, + abi::{EndpointAbi, EndpointMutabilityAbi, EndpointTypeAbi, InputAbi, TypeAbi}, api::{ const_handles, use_raw_handle, CallValueApiImpl, ManagedBufferApiImpl, StorageWriteApiImpl, VMApi, EXTERNAL_VIEW_TARGET_ADRESS_KEY, @@ -49,10 +49,7 @@ pub fn external_view_contract_constructor_abi() -> EndpointAbi { ); endpoint_abi.inputs.push(InputAbi { arg_name: "target_contract_address".to_string(), - type_names: TypeNames { - abi: crate::types::heap::Address::type_name(), - rust: crate::types::heap::Address::type_name_rust(), - }, + type_names: crate::types::heap::Address::type_names(), multi_arg: false, }); endpoint_abi diff --git a/framework/base/src/storage/mappers/linked_list_mapper.rs b/framework/base/src/storage/mappers/linked_list_mapper.rs index 1bf067d97e..d58c0ad19d 100644 --- a/framework/base/src/storage/mappers/linked_list_mapper.rs +++ b/framework/base/src/storage/mappers/linked_list_mapper.rs @@ -626,7 +626,7 @@ where T: TopEncode + TopDecode + NestedEncode + NestedDecode + Clone + TypeAbi, { fn type_name() -> TypeName { - crate::abi::type_name_variadic::().abi + crate::abi::type_name_variadic::() } fn provide_type_descriptions(accumulator: &mut TDC) { diff --git a/framework/base/src/storage/mappers/queue_mapper.rs b/framework/base/src/storage/mappers/queue_mapper.rs index 920c0d737b..79ac5f37d7 100644 --- a/framework/base/src/storage/mappers/queue_mapper.rs +++ b/framework/base/src/storage/mappers/queue_mapper.rs @@ -532,7 +532,7 @@ where T: TopEncode + TopDecode + TypeAbi, { fn type_name() -> TypeName { - crate::abi::type_name_variadic::().abi + crate::abi::type_name_variadic::() } fn provide_type_descriptions(accumulator: &mut TDC) { diff --git a/framework/base/src/storage/mappers/set_mapper.rs b/framework/base/src/storage/mappers/set_mapper.rs index 90ffcfc110..28941a7a8c 100644 --- a/framework/base/src/storage/mappers/set_mapper.rs +++ b/framework/base/src/storage/mappers/set_mapper.rs @@ -308,7 +308,7 @@ where T: TopEncode + TopDecode + NestedEncode + NestedDecode + TypeAbi, { fn type_name() -> TypeName { - crate::abi::type_name_variadic::().abi + crate::abi::type_name_variadic::() } fn provide_type_descriptions(accumulator: &mut TDC) { diff --git a/framework/base/src/storage/mappers/unique_id_mapper.rs b/framework/base/src/storage/mappers/unique_id_mapper.rs index ddf8aad22b..779e1a1b71 100644 --- a/framework/base/src/storage/mappers/unique_id_mapper.rs +++ b/framework/base/src/storage/mappers/unique_id_mapper.rs @@ -224,7 +224,7 @@ where SA: StorageMapperApi, { fn type_name() -> TypeName { - crate::abi::type_name_variadic::().abi + crate::abi::type_name_variadic::() } fn provide_type_descriptions(accumulator: &mut TDC) { diff --git a/framework/base/src/storage/mappers/unordered_set_mapper.rs b/framework/base/src/storage/mappers/unordered_set_mapper.rs index 7b77bacfd0..fa151759ea 100644 --- a/framework/base/src/storage/mappers/unordered_set_mapper.rs +++ b/framework/base/src/storage/mappers/unordered_set_mapper.rs @@ -239,7 +239,7 @@ where T: TopEncode + TopDecode + NestedEncode + NestedDecode + TypeAbi, { fn type_name() -> TypeName { - crate::abi::type_name_variadic::().abi + crate::abi::type_name_variadic::() } fn provide_type_descriptions(accumulator: &mut TDC) { diff --git a/framework/base/src/storage/mappers/user_mapper.rs b/framework/base/src/storage/mappers/user_mapper.rs index e15f08da76..bbfdcfb27b 100644 --- a/framework/base/src/storage/mappers/user_mapper.rs +++ b/framework/base/src/storage/mappers/user_mapper.rs @@ -230,7 +230,7 @@ where SA: StorageMapperApi, { fn type_name() -> TypeName { - crate::abi::type_name_variadic::>().abi + crate::abi::type_name_variadic::>() } fn is_variadic() -> bool { diff --git a/framework/base/src/storage/mappers/vec_mapper.rs b/framework/base/src/storage/mappers/vec_mapper.rs index 2088f445b0..49c9c159cc 100644 --- a/framework/base/src/storage/mappers/vec_mapper.rs +++ b/framework/base/src/storage/mappers/vec_mapper.rs @@ -358,7 +358,7 @@ where T: TopEncode + TopDecode + TypeAbi, { fn type_name() -> TypeName { - crate::abi::type_name_variadic::().abi + crate::abi::type_name_variadic::() } fn provide_type_descriptions(accumulator: &mut TDC) { diff --git a/framework/base/src/types/heap/h256_address.rs b/framework/base/src/types/heap/h256_address.rs index cd992145a9..e4c9b055d2 100644 --- a/framework/base/src/types/heap/h256_address.rs +++ b/framework/base/src/types/heap/h256_address.rs @@ -206,10 +206,6 @@ impl TypeAbi for Address { fn type_name() -> TypeName { "Address".into() } - - fn type_name_rust() -> TypeName { - "multiversx_sc::types::heap::h256_address".into() - } } #[cfg(test)] diff --git a/framework/base/src/types/interaction/function_call.rs b/framework/base/src/types/interaction/function_call.rs index f4a3b69752..376aec879b 100644 --- a/framework/base/src/types/interaction/function_call.rs +++ b/framework/base/src/types/interaction/function_call.rs @@ -139,7 +139,7 @@ where Api: ManagedTypeApi, { fn type_name() -> TypeName { - crate::abi::type_name_variadic::>().abi + crate::abi::type_name_variadic::>() } fn is_variadic() -> bool { diff --git a/framework/base/src/types/managed/basic/mod.rs b/framework/base/src/types/managed/basic/mod.rs index 5f818afac2..419eb4b827 100644 --- a/framework/base/src/types/managed/basic/mod.rs +++ b/framework/base/src/types/managed/basic/mod.rs @@ -1,18 +1,18 @@ -mod big_float; -mod big_float_cmp; -mod big_float_operators; -mod big_int; -mod big_int_cmp; -mod big_int_operators; -mod big_int_sign; -mod big_num_cmp; +pub mod big_float; +pub mod big_float_cmp; +pub mod big_float_operators; +pub mod big_int; +pub mod big_int_cmp; +pub mod big_int_operators; +pub mod big_int_sign; +pub mod big_num_cmp; pub mod big_uint; -mod big_uint_cmp; -mod big_uint_operators; -mod cast_to_i64; -mod elliptic_curve; -mod managed_buffer; -mod managed_map; +pub mod big_uint_cmp; +pub mod big_uint_operators; +pub mod cast_to_i64; +pub mod elliptic_curve; +pub mod managed_buffer; +pub mod managed_map; pub use big_float::BigFloat; pub use big_int::BigInt; diff --git a/framework/base/src/types/managed/multi_value/multi_value_encoded.rs b/framework/base/src/types/managed/multi_value/multi_value_encoded.rs index 943b909f35..ebf8e0cb69 100644 --- a/framework/base/src/types/managed/multi_value/multi_value_encoded.rs +++ b/framework/base/src/types/managed/multi_value/multi_value_encoded.rs @@ -228,7 +228,7 @@ where T: TypeAbi, { fn type_name() -> TypeName { - crate::abi::type_name_variadic::().abi + crate::abi::type_name_variadic::() } fn provide_type_descriptions(accumulator: &mut TDC) { diff --git a/framework/meta/src/abi_json/type_abi_json.rs b/framework/meta/src/abi_json/type_abi_json.rs index f7c3f16e38..c7735f04d6 100644 --- a/framework/meta/src/abi_json/type_abi_json.rs +++ b/framework/meta/src/abi_json/type_abi_json.rs @@ -68,13 +68,10 @@ impl From<&TypeDescription> for TypeDescriptionJson { } impl TypeDescriptionJson { - pub fn to_type_description(&self, name_abi: &str, name_rust: &str) -> TypeDescription { + pub fn to_type_description(&self, names: TypeNames) -> TypeDescription { TypeDescription { docs: self.docs.clone(), - names: TypeNames { - abi: name_abi.to_string(), - rust: name_rust.to_string(), - }, + names, contents: match self.content_type.as_str() { TYPE_DESCRIPTION_JSON_TYPE_STRUCT => TypeContents::Struct( self.fields From 3679258f18f5a292fbcf4176a6245b18d9065a36 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 8 Mar 2024 23:45:41 +0200 Subject: [PATCH 063/461] unified syntax - world.tx() --- .../tests/adder_blackbox_with_values_test.rs | 25 ++++----- framework/scenario/src/facade/world_tx.rs | 2 + .../src/facade/world_tx/scenario_tx.rs | 53 +++++++++++++++++-- .../src/facade/world_tx/world_ref_env.rs | 22 ++++++++ 4 files changed, 86 insertions(+), 16 deletions(-) create mode 100644 framework/scenario/src/facade/world_tx/world_ref_env.rs diff --git a/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs b/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs index 0ef6f023cb..8111cda69d 100644 --- a/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs @@ -28,7 +28,7 @@ fn adder_blackbox_with_values() { .put_account(owner_address, Account::new().nonce(1)) .new_address(owner_address, 1, "sc:adder"), ) - .tx(|tx| { + .chain_tx(|tx| { tx.from(AddressExpr("owner")) .typed_v2(temp_proxy_v2::TxProxy) .init(5u32) @@ -43,23 +43,24 @@ fn adder_blackbox_with_values() { .call(adder_contract.sum()) .expect_value(SingleValue::from(BigUint::from(5u32))), ) - .tx(|tx| { + .chain_tx(|tx| { tx.from(AddressExpr("owner")) .to(ScExpr("adder")) .typed_v1(temp_proxy::TxProxy, |p| p.add(2u32)) .with_result(WithRawTxResponse(|response| { assert!(response.tx_error.is_success()); })) - }) - .tx(|tx| { - tx.from(AddressExpr("owner")) - .to(ScExpr("adder")) - .typed_v2(temp_proxy_v2::TxProxy) - .add(1u32) - .with_result(WithRawTxResponse(|response| { - assert!(response.tx_error.is_success()); - })) - }) + }); + + world + .tx() + .from(AddressExpr("owner")) + .to(ScExpr("adder")) + .typed_v2(temp_proxy_v2::TxProxy) + .add(1u32) + .run(); + + world .check_state_step( CheckStateStep::new() .put_account(owner_address, CheckAccount::new()) diff --git a/framework/scenario/src/facade/world_tx.rs b/framework/scenario/src/facade/world_tx.rs index 3cb83818cc..e46b86d940 100644 --- a/framework/scenario/src/facade/world_tx.rs +++ b/framework/scenario/src/facade/world_tx.rs @@ -6,6 +6,7 @@ mod scenario_rh_list; mod scenario_rh_list_item; mod scenario_tx; mod with_tx_raw_response; +mod world_ref_env; pub use expr::*; pub use scenario_env::*; @@ -13,3 +14,4 @@ pub use scenario_rh_list::*; pub use scenario_rh_list_item::*; pub use scenario_tx::*; pub use with_tx_raw_response::WithRawTxResponse; +pub use world_ref_env::WorldRefEnv; diff --git a/framework/scenario/src/facade/world_tx/scenario_tx.rs b/framework/scenario/src/facade/world_tx/scenario_tx.rs index ae10294e72..4398aa3875 100644 --- a/framework/scenario/src/facade/world_tx/scenario_tx.rs +++ b/framework/scenario/src/facade/world_tx/scenario_tx.rs @@ -11,31 +11,40 @@ use multiversx_sc::{ use crate::{ api::StaticApi, scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep}, - ScenarioWorld, + ScenarioWorld, WorldRefEnv, }; use super::{RHListScenario, ScenarioTxEnv, TxScenarioBase}; impl ScenarioWorld { - fn tx_env(&self) -> ScenarioTxEnv { + fn new_env_data(&self) -> ScenarioTxEnv { ScenarioTxEnv { context_path: self.current_dir.clone(), ..Default::default() } } + fn wrap_world_ref<'w>(&'w mut self) -> WorldRefEnv<'w> { + let data = self.new_env_data(); + WorldRefEnv { world: self, data } + } + + pub fn tx<'w>(&'w mut self) -> Tx, (), (), (), (), (), ()> { + Tx::new_with_env(self.wrap_world_ref()) + } + pub fn tx_return(&mut self, f: F) -> STx::Returns where STx: ScenarioTx, F: FnOnce(TxScenarioBase) -> STx, { - let env = self.tx_env(); + let env = self.new_env_data(); let tx_base = TxScenarioBase::new_with_env(env); let tx = f(tx_base); tx.run_as_scenario_step(self) } - pub fn tx(&mut self, f: F) -> &mut Self + pub fn chain_tx(&mut self, f: F) -> &mut Self where STx: ScenarioTx, F: FnOnce(TxScenarioBase) -> STx, @@ -51,6 +60,12 @@ pub trait ScenarioTx { fn run_as_scenario_step(self, world: &mut ScenarioWorld) -> Self::Returns; } +pub trait ScenarioTx2 { + type Returns; + + fn run(self) -> Self::Returns; +} + fn address_annotated(env: &Env, from: Addr) -> AddressValue where Env: TxEnv, @@ -105,6 +120,36 @@ where } } +impl<'w, From, To, Payment, Gas, RH> ScenarioTx2 + for Tx, From, To, Payment, Gas, FunctionCall, RH> +where + From: TxFromSpecified>, + To: TxToSpecified>, + Payment: TxPayment>, + Gas: TxGas>, + RH: RHListScenario>, + RH::ListReturns: NestedTupleFlatten, +{ + type Returns = ::Unpacked; + + fn run(self) -> Self::Returns { + let mut env = self.env; + let mut step = ScCallStep::new() + .from(address_annotated(&env, self.from)) + .to(address_annotated(&env, self.to)) + .function(self.data.function_name.to_string().as_str()); + for arg in self.data.arg_buffer.iter_buffers() { + step.tx.arguments.push(arg.to_vec().into()); + } + + env.world.sc_call(&mut step); + let response = step.response.expect("step did not return result"); + + let tuple_result = self.result_handler.item_scenario_result(&response); + tuple_result.flatten_unpack() + } +} + impl ScenarioTx for Tx>, RH> where diff --git a/framework/scenario/src/facade/world_tx/world_ref_env.rs b/framework/scenario/src/facade/world_tx/world_ref_env.rs new file mode 100644 index 0000000000..8cb2284dc6 --- /dev/null +++ b/framework/scenario/src/facade/world_tx/world_ref_env.rs @@ -0,0 +1,22 @@ +use std::path::PathBuf; + +use multiversx_sc::types::{AnnotatedValue, ManagedAddress, TxBaseWithEnv, TxEnv}; + +use crate::{api::StaticApi, scenario_model::TxResponse, ScenarioTxEnv, ScenarioWorld}; + +pub struct WorldRefEnv<'w> { + pub world: &'w mut ScenarioWorld, + pub data: ScenarioTxEnv, +} + +impl<'w> TxEnv for WorldRefEnv<'w> { + type Api = StaticApi; + + fn resolve_sender_address(&self) -> ManagedAddress { + panic!("Explicit sender address expected") + } + + fn default_gas(&self) -> u64 { + self.data.default_gas() + } +} From ea38219a036eaaf40c443691740c460b3d9ecb31 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sun, 10 Mar 2024 22:08:10 +0200 Subject: [PATCH 064/461] unified syntax - scenario tx execution cleanup --- .../examples/adder/tests/adder_blackbox.rs | 86 +++++++ ...lues_test.rs => adder_blackbox_chained.rs} | 19 +- ...ox_test.rs => adder_blackbox_raw_steps.rs} | 0 .../multisig/tests/multisig_blackbox_test.rs | 19 +- .../src/facade/world_tx/expr/file_expr.rs | 8 +- .../src/facade/world_tx/expr/mxsc_expr.rs | 15 +- .../src/facade/world_tx/scenario_env.rs | 16 +- .../facade/world_tx/scenario_rh_list_item.rs | 2 +- .../src/facade/world_tx/scenario_tx.rs | 231 ++++++++++++------ .../facade/world_tx/with_tx_raw_response.rs | 2 +- .../src/facade/world_tx/world_ref_env.rs | 14 +- 11 files changed, 292 insertions(+), 120 deletions(-) create mode 100644 contracts/examples/adder/tests/adder_blackbox.rs rename contracts/examples/adder/tests/{adder_blackbox_with_values_test.rs => adder_blackbox_chained.rs} (85%) rename contracts/examples/adder/tests/{adder_blackbox_test.rs => adder_blackbox_raw_steps.rs} (100%) diff --git a/contracts/examples/adder/tests/adder_blackbox.rs b/contracts/examples/adder/tests/adder_blackbox.rs new file mode 100644 index 0000000000..ad24fd6250 --- /dev/null +++ b/contracts/examples/adder/tests/adder_blackbox.rs @@ -0,0 +1,86 @@ +use adder::*; +use multiversx_sc::{ + storage::mappers::SingleValue, + types::{AddressExpr, ScExpr, WithResultNewAddress}, +}; +use multiversx_sc_scenario::{api::StaticApi, num_bigint::BigUint, scenario_model::*, *}; + +const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; + +const OWNER: AddressExpr = AddressExpr("owner"); +const SC_ADDER: ScExpr = ScExpr("adder"); +const CODE_EXPR: MxscExpr = MxscExpr("output/adder.mxsc.json"); + +fn world() -> ScenarioWorld { + let mut blockchain = ScenarioWorld::new(); + blockchain.set_current_dir_from_workspace("contracts/examples/adder"); + + blockchain.register_contract(ADDER_PATH_EXPR, adder::ContractBuilder); + blockchain +} + +#[test] +fn adder_blackbox_with_values() { + let mut world = world(); + let owner_address = "address:owner"; + let mut adder_contract = ContractInfo::>::new("sc:adder"); + + world.start_trace(); + + world.set_state_step( + SetStateStep::new() + .put_account(owner_address, Account::new().nonce(1)) + .new_address(owner_address, 1, "sc:adder"), + ); + + world + .tx() + .from(OWNER) + .typed_v2(temp_proxy_v2::TxProxy) + .init(5u32) + .code(CODE_EXPR) + .with_result(WithResultNewAddress::new(|new_address| { + assert_eq!(new_address.to_address(), adder_contract.to_address()); + })) + .run(); + + world.sc_query( + ScQueryStep::new() + .to(&adder_contract) + .call(adder_contract.sum()) + .expect_value(SingleValue::from(BigUint::from(5u32))), + ); + + // TODO: remove + world + .tx() + .from(OWNER) + .to(SC_ADDER) + .typed_v1(temp_proxy::TxProxy, |p| p.add(2u32)) + .with_result(WithRawTxResponse(|response| { + assert!(response.tx_error.is_success()); + })) + .run(); + + world + .tx() + .from(OWNER) + .to(SC_ADDER) + .typed_v2(temp_proxy_v2::TxProxy) + .add(1u32) + .with_result(WithRawTxResponse(|response| { + assert!(response.tx_error.is_success()); + })) + .run(); + + world.check_state_step( + CheckStateStep::new() + .put_account(owner_address, CheckAccount::new()) + .put_account( + &adder_contract, + CheckAccount::new().check_storage("str:sum", "8"), + ), + ); + + world.write_scenario_trace("trace1.scen.json"); +} diff --git a/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs b/contracts/examples/adder/tests/adder_blackbox_chained.rs similarity index 85% rename from contracts/examples/adder/tests/adder_blackbox_with_values_test.rs rename to contracts/examples/adder/tests/adder_blackbox_chained.rs index 8111cda69d..49795ab994 100644 --- a/contracts/examples/adder/tests/adder_blackbox_with_values_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_chained.rs @@ -16,7 +16,7 @@ fn world() -> ScenarioWorld { } #[test] -fn adder_blackbox_with_values() { +fn adder_blackbox_chained() { let mut world = world(); let owner_address = "address:owner"; let mut adder_contract = ContractInfo::>::new("sc:adder"); @@ -46,21 +46,12 @@ fn adder_blackbox_with_values() { .chain_tx(|tx| { tx.from(AddressExpr("owner")) .to(ScExpr("adder")) - .typed_v1(temp_proxy::TxProxy, |p| p.add(2u32)) + .typed_v2(temp_proxy_v2::TxProxy) + .add(3u32) .with_result(WithRawTxResponse(|response| { assert!(response.tx_error.is_success()); })) - }); - - world - .tx() - .from(AddressExpr("owner")) - .to(ScExpr("adder")) - .typed_v2(temp_proxy_v2::TxProxy) - .add(1u32) - .run(); - - world + }) .check_state_step( CheckStateStep::new() .put_account(owner_address, CheckAccount::new()) @@ -69,5 +60,5 @@ fn adder_blackbox_with_values() { CheckAccount::new().check_storage("str:sum", "8"), ), ) - .write_scenario_trace("trace1.scen.json"); + .write_scenario_trace("trace2.scen.json"); } diff --git a/contracts/examples/adder/tests/adder_blackbox_test.rs b/contracts/examples/adder/tests/adder_blackbox_raw_steps.rs similarity index 100% rename from contracts/examples/adder/tests/adder_blackbox_test.rs rename to contracts/examples/adder/tests/adder_blackbox_raw_steps.rs diff --git a/contracts/examples/multisig/tests/multisig_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_blackbox_test.rs index 1b3229318d..eaec591e26 100644 --- a/contracts/examples/multisig/tests/multisig_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_blackbox_test.rs @@ -17,7 +17,7 @@ use multiversx_sc_scenario::{ Account, AddressValue, CheckAccount, CheckStateStep, ScCallStep, ScDeployStep, ScQueryStep, SetStateStep, TxExpect, }, - ContractInfo, ScenarioWorld, + ContractInfo, ScenarioTxRun, ScenarioWorld, }; use num_bigint::BigUint; @@ -124,14 +124,15 @@ impl MultisigTestState { } fn propose_add_board_member(&mut self, board_member_address: Address) -> usize { - self.world.tx_return(|tx| { - tx.from(AddressExpr("proposer")) - .call( - self.multisig_contract - .propose_add_board_member(board_member_address), - ) - .returns(ReturnsExact) - }) + self.world + .tx() + .from(AddressExpr("proposer")) + .call( + self.multisig_contract + .propose_add_board_member(board_member_address), + ) + .returns(ReturnsExact) + .run() } fn propose_add_proposer(&mut self, proposer_address: Address) -> usize { diff --git a/framework/scenario/src/facade/world_tx/expr/file_expr.rs b/framework/scenario/src/facade/world_tx/expr/file_expr.rs index 65965ecf8b..f42f6e84e0 100644 --- a/framework/scenario/src/facade/world_tx/expr/file_expr.rs +++ b/framework/scenario/src/facade/world_tx/expr/file_expr.rs @@ -9,21 +9,21 @@ use multiversx_sc::types::{ TxToSpecified, }; -use crate::{api::StaticApi, ScenarioTxEnv}; +use crate::{api::StaticApi, ScenarioTxEnvData}; const FILE_PREFIX: &str = "file:"; #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub struct FileExpr<'a>(pub &'a str); -impl<'a> AnnotatedValue> for FileExpr<'a> { - fn annotation(&self, _env: &ScenarioTxEnv) -> ManagedBuffer { +impl<'a> AnnotatedValue> for FileExpr<'a> { + fn annotation(&self, _env: &ScenarioTxEnvData) -> ManagedBuffer { let mut result = ManagedBuffer::new_from_bytes(FILE_PREFIX.as_bytes()); result.append_bytes(self.0.as_bytes()); result } - fn into_value(self, env: &ScenarioTxEnv) -> ManagedBuffer { + fn into_value(self, env: &ScenarioTxEnvData) -> ManagedBuffer { let context = InterpreterContext::new().with_dir(env.context_path.clone()); let value = interpret_string(&format!("{FILE_PREFIX}{}", self.0), &context); value.into() diff --git a/framework/scenario/src/facade/world_tx/expr/mxsc_expr.rs b/framework/scenario/src/facade/world_tx/expr/mxsc_expr.rs index 25f9f21f42..e3e123ffe8 100644 --- a/framework/scenario/src/facade/world_tx/expr/mxsc_expr.rs +++ b/framework/scenario/src/facade/world_tx/expr/mxsc_expr.rs @@ -9,27 +9,30 @@ use multiversx_sc::types::{ TxTo, TxToSpecified, }; -use crate::{api::StaticApi, ScenarioTxEnv}; +use crate::{api::StaticApi, ScenarioTxEnv, ScenarioTxEnvData, WorldRefEnv}; const MXSC_PREFIX: &str = "mxsc:"; #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub struct MxscExpr<'a>(pub &'a str); -impl<'a> AnnotatedValue> for MxscExpr<'a> { - fn annotation(&self, _env: &ScenarioTxEnv) -> ManagedBuffer { +impl<'a, Env> AnnotatedValue> for MxscExpr<'a> +where + Env: ScenarioTxEnv, +{ + fn annotation(&self, _env: &Env) -> ManagedBuffer { let mut result = ManagedBuffer::new_from_bytes(MXSC_PREFIX.as_bytes()); result.append_bytes(self.0.as_bytes()); result } - fn into_value(self, env: &ScenarioTxEnv) -> ManagedBuffer { + fn into_value(self, env: &Env) -> ManagedBuffer { let context = InterpreterContext::new() - .with_dir(env.context_path.clone()) + .with_dir(env.env_data().context_path.clone()) .with_allowed_missing_files(); let value = interpret_string(&format!("{MXSC_PREFIX}{}", self.0), &context); value.into() } } -impl<'a> TxCodeValue for MxscExpr<'a> {} +impl<'a, Env> TxCodeValue for MxscExpr<'a> where Env: ScenarioTxEnv {} diff --git a/framework/scenario/src/facade/world_tx/scenario_env.rs b/framework/scenario/src/facade/world_tx/scenario_env.rs index 9076cc5d48..36ab974b34 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env.rs @@ -4,15 +4,17 @@ use multiversx_sc::types::{AnnotatedValue, ManagedAddress, TxBaseWithEnv, TxEnv} use crate::{api::StaticApi, scenario_model::TxResponse}; -pub type TxScenarioBase = TxBaseWithEnv; +/// Designates a tx environment suitable for running scenarios locally. +pub trait ScenarioTxEnv: TxEnv { + fn env_data(&self) -> &ScenarioTxEnvData; +} #[derive(Default, Debug, Clone)] -pub struct ScenarioTxEnv { +pub struct ScenarioTxEnvData { pub context_path: PathBuf, - pub response: Option, } -impl TxEnv for ScenarioTxEnv { +impl TxEnv for ScenarioTxEnvData { type Api = StaticApi; fn resolve_sender_address(&self) -> ManagedAddress { @@ -24,3 +26,9 @@ impl TxEnv for ScenarioTxEnv { 5_000_000 } } + +impl ScenarioTxEnv for ScenarioTxEnvData { + fn env_data(&self) -> &ScenarioTxEnvData { + self + } +} diff --git a/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs b/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs index a357a6dcd8..057d1e0c1c 100644 --- a/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs +++ b/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs @@ -8,7 +8,7 @@ use crate::{ scenario_model::{TxResponse, TypedResponse}, }; -use super::ScenarioTxEnv; +use super::ScenarioTxEnvData; pub trait RHListItemScenario: RHListItem where diff --git a/framework/scenario/src/facade/world_tx/scenario_tx.rs b/framework/scenario/src/facade/world_tx/scenario_tx.rs index 4398aa3875..c8b8cc4772 100644 --- a/framework/scenario/src/facade/world_tx/scenario_tx.rs +++ b/framework/scenario/src/facade/world_tx/scenario_tx.rs @@ -3,22 +3,22 @@ use multiversx_sc::{ tuple_util::NestedTupleFlatten, types::{ AnnotatedValue, Code, DeployCall, FunctionCall, ManagedAddress, ManagedBuffer, RHListSync, - Tx, TxCodeSource, TxCodeSourceSpecified, TxCodeValue, TxEnv, TxFromSpecified, TxGas, - TxPayment, TxToSpecified, + Tx, TxBaseWithEnv, TxCodeSource, TxCodeSourceSpecified, TxCodeValue, TxEnv, + TxFromSpecified, TxGas, TxPayment, TxToSpecified, }, }; use crate::{ api::StaticApi, - scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep}, + scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep, TxResponse}, ScenarioWorld, WorldRefEnv, }; -use super::{RHListScenario, ScenarioTxEnv, TxScenarioBase}; +use super::{RHListScenario, ScenarioTxEnvData}; impl ScenarioWorld { - fn new_env_data(&self) -> ScenarioTxEnv { - ScenarioTxEnv { + fn new_env_data(&self) -> ScenarioTxEnvData { + ScenarioTxEnvData { context_path: self.current_dir.clone(), ..Default::default() } @@ -29,38 +29,30 @@ impl ScenarioWorld { WorldRefEnv { world: self, data } } - pub fn tx<'w>(&'w mut self) -> Tx, (), (), (), (), (), ()> { + pub fn tx<'w>(&'w mut self) -> TxBaseWithEnv> { Tx::new_with_env(self.wrap_world_ref()) } - pub fn tx_return(&mut self, f: F) -> STx::Returns + pub fn chain_tx(&mut self, f: F) -> &mut Self where - STx: ScenarioTx, - F: FnOnce(TxScenarioBase) -> STx, + STx: ScenarioTxRunOnWorld, + F: FnOnce(TxBaseWithEnv) -> STx, { let env = self.new_env_data(); - let tx_base = TxScenarioBase::new_with_env(env); + let tx_base = TxBaseWithEnv::new_with_env(env); let tx = f(tx_base); - tx.run_as_scenario_step(self) - } - - pub fn chain_tx(&mut self, f: F) -> &mut Self - where - STx: ScenarioTx, - F: FnOnce(TxScenarioBase) -> STx, - { - self.tx_return(f); + tx.run_on_world(self); self } } -pub trait ScenarioTx { +pub trait ScenarioTxRunOnWorld { type Returns; - fn run_as_scenario_step(self, world: &mut ScenarioWorld) -> Self::Returns; + fn run_on_world(self, world: &mut ScenarioWorld) -> Self::Returns; } -pub trait ScenarioTx2 { +pub trait ScenarioTxRun { type Returns; fn run(self) -> Self::Returns; @@ -90,37 +82,97 @@ where } } -impl ScenarioTx - for Tx, RH> +fn tx_to_sc_call_step( + env: &Env, + from: From, + to: To, + _payment: Payment, + _gas: Gas, + data: FunctionCall, +) -> ScCallStep +where + Env: TxEnv, + From: TxFromSpecified, + To: TxToSpecified, + Payment: TxPayment, + Gas: TxGas, +{ + let mut step = ScCallStep::new() + .from(address_annotated(env, from)) + .to(address_annotated(env, to)) + .function(data.function_name.to_string().as_str()); + for arg in data.arg_buffer.iter_buffers() { + step.tx.arguments.push(arg.to_vec().into()); + } + + step +} + +fn tx_to_sc_deploy_step( + env: &Env, + from: From, + _payment: Payment, + _gas: Gas, + data: DeployCall>, +) -> ScDeployStep +where + Env: TxEnv, + From: TxFromSpecified, + Payment: TxPayment, + Gas: TxGas, + CodeValue: TxCodeValue, +{ + let mut step = ScDeployStep::new() + .from(address_annotated(env, from)) + .code(code_annotated(env, data.code_source)); + for arg in data.arg_buffer.iter_buffers() { + step.tx.arguments.push(arg.to_vec().into()); + } + + step +} + +fn process_result( + response: Option, + result_handler: RH, +) -> ::Unpacked where - From: TxFromSpecified, - To: TxToSpecified, - Payment: TxPayment, - Gas: TxGas, - RH: RHListScenario, + Env: TxEnv, + RH: RHListScenario, RH::ListReturns: NestedTupleFlatten, { - type Returns = ::Unpacked; + let response = response.expect("step did not return result"); + let tuple_result = result_handler.item_scenario_result(&response); + tuple_result.flatten_unpack() +} - fn run_as_scenario_step(self, world: &mut ScenarioWorld) -> Self::Returns { - let mut env = self.env; - let mut step = ScCallStep::new() - .from(address_annotated(&env, self.from)) - .to(address_annotated(&env, self.to)) - .function(self.data.function_name.to_string().as_str()); - for arg in self.data.arg_buffer.iter_buffers() { - step.tx.arguments.push(arg.to_vec().into()); - } +impl ScenarioTxRunOnWorld + for Tx, RH> +where + From: TxFromSpecified, + To: TxToSpecified, + Payment: TxPayment, + Gas: TxGas, + RH: RHListScenario, + RH::ListReturns: NestedTupleFlatten, +{ + type Returns = ::Unpacked; + fn run_on_world(self, world: &mut ScenarioWorld) -> Self::Returns { + let mut step = tx_to_sc_call_step( + &self.env, + self.from, + self.to, + self.payment, + self.gas, + self.data, + ); world.sc_call(&mut step); - let response = step.response.expect("step did not return result"); - - let tuple_result = self.result_handler.item_scenario_result(&response); - tuple_result.flatten_unpack() + process_result(step.response, self.result_handler) } } -impl<'w, From, To, Payment, Gas, RH> ScenarioTx2 +impl<'w, From, To, Payment, Gas, RH> ScenarioTxRun for Tx, From, To, Payment, Gas, FunctionCall, RH> where From: TxFromSpecified>, @@ -133,48 +185,71 @@ where type Returns = ::Unpacked; fn run(self) -> Self::Returns { - let mut env = self.env; - let mut step = ScCallStep::new() - .from(address_annotated(&env, self.from)) - .to(address_annotated(&env, self.to)) - .function(self.data.function_name.to_string().as_str()); - for arg in self.data.arg_buffer.iter_buffers() { - step.tx.arguments.push(arg.to_vec().into()); - } - - env.world.sc_call(&mut step); - let response = step.response.expect("step did not return result"); - - let tuple_result = self.result_handler.item_scenario_result(&response); - tuple_result.flatten_unpack() + let mut step = tx_to_sc_call_step( + &self.env, + self.from, + self.to, + self.payment, + self.gas, + self.data, + ); + self.env.world.sc_call(&mut step); + process_result(step.response, self.result_handler) } } -impl ScenarioTx - for Tx>, RH> +impl ScenarioTxRunOnWorld + for Tx< + ScenarioTxEnvData, + From, + (), + Payment, + Gas, + DeployCall>, + RH, + > where - From: TxFromSpecified, - Payment: TxPayment, - Gas: TxGas, - CodeValue: TxCodeValue, - RH: RHListScenario, + From: TxFromSpecified, + Payment: TxPayment, + Gas: TxGas, + CodeValue: TxCodeValue, + RH: RHListScenario, RH::ListReturns: NestedTupleFlatten, { type Returns = ::Unpacked; - fn run_as_scenario_step(self, world: &mut ScenarioWorld) -> Self::Returns { - let mut env = self.env; - let mut step = ScDeployStep::new() - .from(address_annotated(&env, self.from)) - .code(code_annotated(&env, self.data.code_source)); - for arg in self.data.arg_buffer.iter_buffers() { - step.tx.arguments.push(arg.to_vec().into()); - } - + fn run_on_world(self, world: &mut ScenarioWorld) -> Self::Returns { + let mut step = + tx_to_sc_deploy_step(&self.env, self.from, self.payment, self.gas, self.data); world.sc_deploy(&mut step); - let response = step.response.expect("step did not return result"); + process_result(step.response, self.result_handler) + } +} - let tuple_result = self.result_handler.item_scenario_result(&response); - tuple_result.flatten_unpack() +impl<'w, From, Payment, Gas, CodeValue, RH> ScenarioTxRun + for Tx< + WorldRefEnv<'w>, + From, + (), + Payment, + Gas, + DeployCall, Code>, + RH, + > +where + From: TxFromSpecified>, + Payment: TxPayment>, + Gas: TxGas>, + CodeValue: TxCodeValue>, + RH: RHListScenario>, + RH::ListReturns: NestedTupleFlatten, +{ + type Returns = ::Unpacked; + + fn run(self) -> Self::Returns { + let mut step = + tx_to_sc_deploy_step(&self.env, self.from, self.payment, self.gas, self.data); + self.env.world.sc_deploy(&mut step); + process_result(step.response, self.result_handler) } } diff --git a/framework/scenario/src/facade/world_tx/with_tx_raw_response.rs b/framework/scenario/src/facade/world_tx/with_tx_raw_response.rs index 053c962555..51f603a47b 100644 --- a/framework/scenario/src/facade/world_tx/with_tx_raw_response.rs +++ b/framework/scenario/src/facade/world_tx/with_tx_raw_response.rs @@ -7,7 +7,7 @@ use multiversx_sc::{ use crate::scenario_model::TxResponse; -use super::{RHListItemScenario, ScenarioTxEnv}; +use super::{RHListItemScenario, ScenarioTxEnvData}; /// Wraps a closure that handles a `TxResponse` object. pub struct WithRawTxResponse(pub F) diff --git a/framework/scenario/src/facade/world_tx/world_ref_env.rs b/framework/scenario/src/facade/world_tx/world_ref_env.rs index 8cb2284dc6..92abd8c2ff 100644 --- a/framework/scenario/src/facade/world_tx/world_ref_env.rs +++ b/framework/scenario/src/facade/world_tx/world_ref_env.rs @@ -2,11 +2,13 @@ use std::path::PathBuf; use multiversx_sc::types::{AnnotatedValue, ManagedAddress, TxBaseWithEnv, TxEnv}; -use crate::{api::StaticApi, scenario_model::TxResponse, ScenarioTxEnv, ScenarioWorld}; +use crate::{ + api::StaticApi, scenario_model::TxResponse, ScenarioTxEnv, ScenarioTxEnvData, ScenarioWorld, +}; pub struct WorldRefEnv<'w> { pub world: &'w mut ScenarioWorld, - pub data: ScenarioTxEnv, + pub data: ScenarioTxEnvData, } impl<'w> TxEnv for WorldRefEnv<'w> { @@ -17,6 +19,12 @@ impl<'w> TxEnv for WorldRefEnv<'w> { } fn default_gas(&self) -> u64 { - self.data.default_gas() + self.data.default_gas() + } +} + +impl<'w> ScenarioTxEnv for WorldRefEnv<'w> { + fn env_data(&self) -> &ScenarioTxEnvData { + &self.data } } From ecbebe1cfeeada945aec45c754bdb253d1bddf9a Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 11 Mar 2024 09:56:53 +0200 Subject: [PATCH 065/461] unified syntax - scenario execution refactoring --- framework/scenario/src/facade/world_tx.rs | 9 +- .../src/facade/world_tx/expr/mxsc_expr.rs | 2 +- .../src/facade/world_tx/scenario_env.rs | 20 +- .../{scenario_tx.rs => scenario_env_exec.rs} | 194 ++++++------------ ...world_ref_env.rs => scenario_env_query.rs} | 6 +- .../src/facade/world_tx/scenario_env_util.rs | 103 ++++++++++ .../world_tx/scenario_world_steps_tx.rs | 12 -- 7 files changed, 191 insertions(+), 155 deletions(-) rename framework/scenario/src/facade/world_tx/{scenario_tx.rs => scenario_env_exec.rs} (54%) rename framework/scenario/src/facade/world_tx/{world_ref_env.rs => scenario_env_query.rs} (82%) create mode 100644 framework/scenario/src/facade/world_tx/scenario_env_util.rs delete mode 100644 framework/scenario/src/facade/world_tx/scenario_world_steps_tx.rs diff --git a/framework/scenario/src/facade/world_tx.rs b/framework/scenario/src/facade/world_tx.rs index e46b86d940..287c911253 100644 --- a/framework/scenario/src/facade/world_tx.rs +++ b/framework/scenario/src/facade/world_tx.rs @@ -2,16 +2,17 @@ mod expr; mod scenario_env; +mod scenario_env_exec; +mod scenario_env_query; +mod scenario_env_util; mod scenario_rh_list; mod scenario_rh_list_item; -mod scenario_tx; mod with_tx_raw_response; -mod world_ref_env; pub use expr::*; pub use scenario_env::*; +pub use scenario_env_exec::ScenarioEnvExec; +pub use scenario_env_query::ScenarioEnvQuery; pub use scenario_rh_list::*; pub use scenario_rh_list_item::*; -pub use scenario_tx::*; pub use with_tx_raw_response::WithRawTxResponse; -pub use world_ref_env::WorldRefEnv; diff --git a/framework/scenario/src/facade/world_tx/expr/mxsc_expr.rs b/framework/scenario/src/facade/world_tx/expr/mxsc_expr.rs index e3e123ffe8..6f95cf2b7a 100644 --- a/framework/scenario/src/facade/world_tx/expr/mxsc_expr.rs +++ b/framework/scenario/src/facade/world_tx/expr/mxsc_expr.rs @@ -9,7 +9,7 @@ use multiversx_sc::types::{ TxTo, TxToSpecified, }; -use crate::{api::StaticApi, ScenarioTxEnv, ScenarioTxEnvData, WorldRefEnv}; +use crate::{api::StaticApi, ScenarioEnvExec, ScenarioTxEnv, ScenarioTxEnvData}; const MXSC_PREFIX: &str = "mxsc:"; diff --git a/framework/scenario/src/facade/world_tx/scenario_env.rs b/framework/scenario/src/facade/world_tx/scenario_env.rs index 36ab974b34..9c1833659b 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env.rs @@ -2,13 +2,14 @@ use std::path::PathBuf; use multiversx_sc::types::{AnnotatedValue, ManagedAddress, TxBaseWithEnv, TxEnv}; -use crate::{api::StaticApi, scenario_model::TxResponse}; +use crate::{api::StaticApi, scenario_model::TxResponse, ScenarioWorld}; /// Designates a tx environment suitable for running scenarios locally. pub trait ScenarioTxEnv: TxEnv { fn env_data(&self) -> &ScenarioTxEnvData; } +/// The actual data required to run a scenario locally. This is the minimal environment needed to run txs. #[derive(Default, Debug, Clone)] pub struct ScenarioTxEnvData { pub context_path: PathBuf, @@ -32,3 +33,20 @@ impl ScenarioTxEnv for ScenarioTxEnvData { self } } + +/// Provides a `run` method for transactions and steps. +pub trait ScenarioTxRun { + type Returns; + + fn run(self) -> Self::Returns; +} + +/// Provides a method to run scenario steps and txs, which also takes a `ScenarioWorld` argument. +/// +/// It is used for chaining methods that can't include the reference to the ScenarioWorld in the environment +/// for reasons imposed by lifetimes/the borrow checker. +pub trait ScenarioTxRunOnWorld { + type Returns; + + fn run_on_world(self, world: &mut ScenarioWorld) -> Self::Returns; +} diff --git a/framework/scenario/src/facade/world_tx/scenario_tx.rs b/framework/scenario/src/facade/world_tx/scenario_env_exec.rs similarity index 54% rename from framework/scenario/src/facade/world_tx/scenario_tx.rs rename to framework/scenario/src/facade/world_tx/scenario_env_exec.rs index c8b8cc4772..e0cb011529 100644 --- a/framework/scenario/src/facade/world_tx/scenario_tx.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_exec.rs @@ -1,3 +1,5 @@ +use std::path::PathBuf; + use multiversx_chain_scenario_format::serde_raw::ValueSubTree; use multiversx_sc::{ tuple_util::NestedTupleFlatten, @@ -11,139 +13,33 @@ use multiversx_sc::{ use crate::{ api::StaticApi, scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep, TxResponse}, - ScenarioWorld, WorldRefEnv, + ScenarioTxEnv, ScenarioTxRun, ScenarioTxRunOnWorld, ScenarioWorld, }; -use super::{RHListScenario, ScenarioTxEnvData}; - -impl ScenarioWorld { - fn new_env_data(&self) -> ScenarioTxEnvData { - ScenarioTxEnvData { - context_path: self.current_dir.clone(), - ..Default::default() - } - } - - fn wrap_world_ref<'w>(&'w mut self) -> WorldRefEnv<'w> { - let data = self.new_env_data(); - WorldRefEnv { world: self, data } - } - - pub fn tx<'w>(&'w mut self) -> TxBaseWithEnv> { - Tx::new_with_env(self.wrap_world_ref()) - } +use super::{scenario_env_util::*, RHListScenario, ScenarioTxEnvData}; - pub fn chain_tx(&mut self, f: F) -> &mut Self - where - STx: ScenarioTxRunOnWorld, - F: FnOnce(TxBaseWithEnv) -> STx, - { - let env = self.new_env_data(); - let tx_base = TxBaseWithEnv::new_with_env(env); - let tx = f(tx_base); - tx.run_on_world(self); - self - } +/// Environment for executing transactions. +pub struct ScenarioEnvExec<'w> { + pub world: &'w mut ScenarioWorld, + pub data: ScenarioTxEnvData, } -pub trait ScenarioTxRunOnWorld { - type Returns; - - fn run_on_world(self, world: &mut ScenarioWorld) -> Self::Returns; -} +impl<'w> TxEnv for ScenarioEnvExec<'w> { + type Api = StaticApi; -pub trait ScenarioTxRun { - type Returns; - - fn run(self) -> Self::Returns; -} - -fn address_annotated(env: &Env, from: Addr) -> AddressValue -where - Env: TxEnv, - Addr: AnnotatedValue>, -{ - let annotation = from.annotation(env).to_string(); - AddressValue { - value: from.into_value(env).to_address(), - original: ValueSubTree::Str(annotation), + fn resolve_sender_address(&self) -> ManagedAddress { + panic!("Explicit sender address expected") } -} -fn code_annotated(env: &Env, code: Code) -> BytesValue -where - Env: TxEnv, - CodeValue: TxCodeValue, -{ - let annotation = code.0.annotation(env).to_string(); - BytesValue { - value: code.0.into_value(env).to_vec(), - original: ValueSubTree::Str(annotation), + fn default_gas(&self) -> u64 { + self.data.default_gas() } } -fn tx_to_sc_call_step( - env: &Env, - from: From, - to: To, - _payment: Payment, - _gas: Gas, - data: FunctionCall, -) -> ScCallStep -where - Env: TxEnv, - From: TxFromSpecified, - To: TxToSpecified, - Payment: TxPayment, - Gas: TxGas, -{ - let mut step = ScCallStep::new() - .from(address_annotated(env, from)) - .to(address_annotated(env, to)) - .function(data.function_name.to_string().as_str()); - for arg in data.arg_buffer.iter_buffers() { - step.tx.arguments.push(arg.to_vec().into()); +impl<'w> ScenarioTxEnv for ScenarioEnvExec<'w> { + fn env_data(&self) -> &ScenarioTxEnvData { + &self.data } - - step -} - -fn tx_to_sc_deploy_step( - env: &Env, - from: From, - _payment: Payment, - _gas: Gas, - data: DeployCall>, -) -> ScDeployStep -where - Env: TxEnv, - From: TxFromSpecified, - Payment: TxPayment, - Gas: TxGas, - CodeValue: TxCodeValue, -{ - let mut step = ScDeployStep::new() - .from(address_annotated(env, from)) - .code(code_annotated(env, data.code_source)); - for arg in data.arg_buffer.iter_buffers() { - step.tx.arguments.push(arg.to_vec().into()); - } - - step -} - -fn process_result( - response: Option, - result_handler: RH, -) -> ::Unpacked -where - Env: TxEnv, - RH: RHListScenario, - RH::ListReturns: NestedTupleFlatten, -{ - let response = response.expect("step did not return result"); - let tuple_result = result_handler.item_scenario_result(&response); - tuple_result.flatten_unpack() } impl ScenarioTxRunOnWorld @@ -173,13 +69,13 @@ where } impl<'w, From, To, Payment, Gas, RH> ScenarioTxRun - for Tx, From, To, Payment, Gas, FunctionCall, RH> + for Tx, From, To, Payment, Gas, FunctionCall, RH> where - From: TxFromSpecified>, - To: TxToSpecified>, - Payment: TxPayment>, - Gas: TxGas>, - RH: RHListScenario>, + From: TxFromSpecified>, + To: TxToSpecified>, + Payment: TxPayment>, + Gas: TxGas>, + RH: RHListScenario>, RH::ListReturns: NestedTupleFlatten, { type Returns = ::Unpacked; @@ -228,20 +124,20 @@ where impl<'w, From, Payment, Gas, CodeValue, RH> ScenarioTxRun for Tx< - WorldRefEnv<'w>, + ScenarioEnvExec<'w>, From, (), Payment, Gas, - DeployCall, Code>, + DeployCall, Code>, RH, > where - From: TxFromSpecified>, - Payment: TxPayment>, - Gas: TxGas>, - CodeValue: TxCodeValue>, - RH: RHListScenario>, + From: TxFromSpecified>, + Payment: TxPayment>, + Gas: TxGas>, + CodeValue: TxCodeValue>, + RH: RHListScenario>, RH::ListReturns: NestedTupleFlatten, { type Returns = ::Unpacked; @@ -253,3 +149,33 @@ where process_result(step.response, self.result_handler) } } + +impl ScenarioWorld { + fn new_env_data(&self) -> ScenarioTxEnvData { + ScenarioTxEnvData { + context_path: self.current_dir.clone(), + ..Default::default() + } + } + + fn wrap_world_ref<'w>(&'w mut self) -> ScenarioEnvExec<'w> { + let data = self.new_env_data(); + ScenarioEnvExec { world: self, data } + } + + pub fn tx<'w>(&'w mut self) -> TxBaseWithEnv> { + Tx::new_with_env(self.wrap_world_ref()) + } + + pub fn chain_tx(&mut self, f: F) -> &mut Self + where + STx: ScenarioTxRunOnWorld, + F: FnOnce(TxBaseWithEnv) -> STx, + { + let env = self.new_env_data(); + let tx_base = TxBaseWithEnv::new_with_env(env); + let tx = f(tx_base); + tx.run_on_world(self); + self + } +} diff --git a/framework/scenario/src/facade/world_tx/world_ref_env.rs b/framework/scenario/src/facade/world_tx/scenario_env_query.rs similarity index 82% rename from framework/scenario/src/facade/world_tx/world_ref_env.rs rename to framework/scenario/src/facade/world_tx/scenario_env_query.rs index 92abd8c2ff..fbee3b921d 100644 --- a/framework/scenario/src/facade/world_tx/world_ref_env.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_query.rs @@ -6,12 +6,12 @@ use crate::{ api::StaticApi, scenario_model::TxResponse, ScenarioTxEnv, ScenarioTxEnvData, ScenarioWorld, }; -pub struct WorldRefEnv<'w> { +pub struct ScenarioEnvQuery<'w> { pub world: &'w mut ScenarioWorld, pub data: ScenarioTxEnvData, } -impl<'w> TxEnv for WorldRefEnv<'w> { +impl<'w> TxEnv for ScenarioEnvQuery<'w> { type Api = StaticApi; fn resolve_sender_address(&self) -> ManagedAddress { @@ -23,7 +23,7 @@ impl<'w> TxEnv for WorldRefEnv<'w> { } } -impl<'w> ScenarioTxEnv for WorldRefEnv<'w> { +impl<'w> ScenarioTxEnv for ScenarioEnvQuery<'w> { fn env_data(&self) -> &ScenarioTxEnvData { &self.data } diff --git a/framework/scenario/src/facade/world_tx/scenario_env_util.rs b/framework/scenario/src/facade/world_tx/scenario_env_util.rs new file mode 100644 index 0000000000..84b808fbc3 --- /dev/null +++ b/framework/scenario/src/facade/world_tx/scenario_env_util.rs @@ -0,0 +1,103 @@ +use multiversx_chain_scenario_format::serde_raw::ValueSubTree; +use multiversx_sc::{ + tuple_util::NestedTupleFlatten, + types::{ + AnnotatedValue, Code, DeployCall, FunctionCall, ManagedAddress, ManagedBuffer, RHListSync, + Tx, TxBaseWithEnv, TxCodeSource, TxCodeSourceSpecified, TxCodeValue, TxEnv, + TxFromSpecified, TxGas, TxPayment, TxToSpecified, + }, +}; + +use crate::{ + api::StaticApi, + scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep, TxResponse}, + RHListScenario, ScenarioEnvExec, ScenarioWorld, +}; + +pub(super) fn address_annotated(env: &Env, from: Addr) -> AddressValue +where + Env: TxEnv, + Addr: AnnotatedValue>, +{ + let annotation = from.annotation(env).to_string(); + AddressValue { + value: from.into_value(env).to_address(), + original: ValueSubTree::Str(annotation), + } +} + +pub(super) fn code_annotated(env: &Env, code: Code) -> BytesValue +where + Env: TxEnv, + CodeValue: TxCodeValue, +{ + let annotation = code.0.annotation(env).to_string(); + BytesValue { + value: code.0.into_value(env).to_vec(), + original: ValueSubTree::Str(annotation), + } +} + +pub(super) fn tx_to_sc_call_step( + env: &Env, + from: From, + to: To, + _payment: Payment, + _gas: Gas, + data: FunctionCall, +) -> ScCallStep +where + Env: TxEnv, + From: TxFromSpecified, + To: TxToSpecified, + Payment: TxPayment, + Gas: TxGas, +{ + let mut step = ScCallStep::new() + .from(address_annotated(env, from)) + .to(address_annotated(env, to)) + .function(data.function_name.to_string().as_str()); + for arg in data.arg_buffer.iter_buffers() { + step.tx.arguments.push(arg.to_vec().into()); + } + + step +} + +pub(super) fn tx_to_sc_deploy_step( + env: &Env, + from: From, + _payment: Payment, + _gas: Gas, + data: DeployCall>, +) -> ScDeployStep +where + Env: TxEnv, + From: TxFromSpecified, + Payment: TxPayment, + Gas: TxGas, + CodeValue: TxCodeValue, +{ + let mut step = ScDeployStep::new() + .from(address_annotated(env, from)) + .code(code_annotated(env, data.code_source)); + for arg in data.arg_buffer.iter_buffers() { + step.tx.arguments.push(arg.to_vec().into()); + } + + step +} + +pub(super) fn process_result( + response: Option, + result_handler: RH, +) -> ::Unpacked +where + Env: TxEnv, + RH: RHListScenario, + RH::ListReturns: NestedTupleFlatten, +{ + let response = response.expect("step did not return result"); + let tuple_result = result_handler.item_scenario_result(&response); + tuple_result.flatten_unpack() +} diff --git a/framework/scenario/src/facade/world_tx/scenario_world_steps_tx.rs b/framework/scenario/src/facade/world_tx/scenario_world_steps_tx.rs deleted file mode 100644 index 566caf319e..0000000000 --- a/framework/scenario/src/facade/world_tx/scenario_world_steps_tx.rs +++ /dev/null @@ -1,12 +0,0 @@ -use std::path::PathBuf; - -use multiversx_sc::types::{ - AnnotatedValue, FunctionCall, ManagedAddress, Tx, TxBaseWithEnv, TxEnv, TxFromSpecified, TxGas, - TxPayment, TxToSpecified, -}; - -use crate::{ - api::StaticApi, - facade::ScenarioWorld, - scenario_model::{ScCallStep, TxResponse}, -}; From be4f4090c1b6f39e44cf1a4839bdbd34cb98916f Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 11 Mar 2024 12:33:33 +0200 Subject: [PATCH 066/461] unified syntax - scneario queries, more refactoring --- .../examples/adder/tests/adder_blackbox.rs | 11 +- .../adder/tests/adder_blackbox_chained.rs | 22 ++-- .../base/src/types/interaction/tx_rh_list.rs | 2 + .../interaction/tx_rh_list/returns_similar.rs | 38 +++++- .../tx_rh_list/with_result_similar.rs | 56 +++++++++ framework/scenario/src/facade/world_tx.rs | 1 + .../src/facade/world_tx/scenario_env.rs | 9 ++ .../facade/world_tx/scenario_env_deploy.rs | 77 ++++++++++++ .../src/facade/world_tx/scenario_env_exec.rs | 115 +++--------------- .../src/facade/world_tx/scenario_env_query.rs | 54 +++++++- .../src/facade/world_tx/scenario_env_util.rs | 21 +++- .../facade/world_tx/scenario_rh_list_item.rs | 37 +++++- 12 files changed, 325 insertions(+), 118 deletions(-) create mode 100644 framework/base/src/types/interaction/tx_rh_list/with_result_similar.rs create mode 100644 framework/scenario/src/facade/world_tx/scenario_env_deploy.rs diff --git a/contracts/examples/adder/tests/adder_blackbox.rs b/contracts/examples/adder/tests/adder_blackbox.rs index ad24fd6250..dda9068a25 100644 --- a/contracts/examples/adder/tests/adder_blackbox.rs +++ b/contracts/examples/adder/tests/adder_blackbox.rs @@ -1,7 +1,7 @@ use adder::*; use multiversx_sc::{ storage::mappers::SingleValue, - types::{AddressExpr, ScExpr, WithResultNewAddress}, + types::{AddressExpr, ReturnsSimilar, ScExpr, WithResultNewAddress}, }; use multiversx_sc_scenario::{api::StaticApi, num_bigint::BigUint, scenario_model::*, *}; @@ -51,6 +51,15 @@ fn adder_blackbox_with_values() { .expect_value(SingleValue::from(BigUint::from(5u32))), ); + let value = world + .query() + .to(SC_ADDER) + .typed_v2(temp_proxy_v2::TxProxy) + .sum() + .returns(ReturnsSimilar::>::new()) + .run(); + assert_eq!(value.into(), BigUint::from(5u32)); + // TODO: remove world .tx() diff --git a/contracts/examples/adder/tests/adder_blackbox_chained.rs b/contracts/examples/adder/tests/adder_blackbox_chained.rs index 49795ab994..8121afb4e9 100644 --- a/contracts/examples/adder/tests/adder_blackbox_chained.rs +++ b/contracts/examples/adder/tests/adder_blackbox_chained.rs @@ -1,7 +1,7 @@ use adder::*; use multiversx_sc::{ storage::mappers::SingleValue, - types::{AddressExpr, ScExpr, WithResultNewAddress}, + types::{AddressExpr, ScExpr, WithResultNewAddress, WithResultSimilar}, }; use multiversx_sc_scenario::{api::StaticApi, num_bigint::BigUint, scenario_model::*, *}; @@ -19,7 +19,7 @@ fn world() -> ScenarioWorld { fn adder_blackbox_chained() { let mut world = world(); let owner_address = "address:owner"; - let mut adder_contract = ContractInfo::>::new("sc:adder"); + let adder_contract = ContractInfo::>::new("sc:adder"); world .start_trace() @@ -28,7 +28,7 @@ fn adder_blackbox_chained() { .put_account(owner_address, Account::new().nonce(1)) .new_address(owner_address, 1, "sc:adder"), ) - .chain_tx(|tx| { + .chain_deploy(|tx| { tx.from(AddressExpr("owner")) .typed_v2(temp_proxy_v2::TxProxy) .init(5u32) @@ -37,13 +37,15 @@ fn adder_blackbox_chained() { assert_eq!(new_address.to_address(), adder_contract.to_address()); })) }) - .sc_query( - ScQueryStep::new() - .to(&adder_contract) - .call(adder_contract.sum()) - .expect_value(SingleValue::from(BigUint::from(5u32))), - ) - .chain_tx(|tx| { + .chain_query(|tx| { + tx.to(ScExpr("adder")) + .typed_v2(temp_proxy_v2::TxProxy) + .sum() + .with_result(WithResultSimilar::new(|value: SingleValue| { + assert_eq!(value.into(), BigUint::from(5u32)); + })) + }) + .chain_call(|tx| { tx.from(AddressExpr("owner")) .to(ScExpr("adder")) .typed_v2(temp_proxy_v2::TxProxy) diff --git a/framework/base/src/types/interaction/tx_rh_list.rs b/framework/base/src/types/interaction/tx_rh_list.rs index 392863de73..2cf4743ef2 100644 --- a/framework/base/src/types/interaction/tx_rh_list.rs +++ b/framework/base/src/types/interaction/tx_rh_list.rs @@ -8,6 +8,7 @@ mod tx_rh_list_item; mod with_result_exact; mod with_result_new_address; mod with_result_raw; +mod with_result_similar; pub use returns_bt::*; pub use returns_exact::*; @@ -17,3 +18,4 @@ pub use returns_similar::*; pub use tx_rh_list_cons::*; pub use tx_rh_list_item::*; pub use with_result_new_address::*; +pub use with_result_similar::*; diff --git a/framework/base/src/types/interaction/tx_rh_list/returns_similar.rs b/framework/base/src/types/interaction/tx_rh_list/returns_similar.rs index 07929d122f..1233a9bae0 100644 --- a/framework/base/src/types/interaction/tx_rh_list/returns_similar.rs +++ b/framework/base/src/types/interaction/tx_rh_list/returns_similar.rs @@ -1,10 +1,19 @@ use core::marker::PhantomData; -pub struct ReturnSimilar { +use multiversx_sc_codec::{CodecFrom, TopEncodeMulti}; + +use crate::types::{ + interaction::contract_call_exec::decode_result, ManagedBuffer, ManagedVec, RHListItemSync, + TxEnv, +}; + +use super::RHListItem; + +pub struct ReturnsSimilar { _phantom: PhantomData, } -impl Default for ReturnSimilar { +impl Default for ReturnsSimilar { fn default() -> Self { Self { _phantom: Default::default(), @@ -12,8 +21,31 @@ impl Default for ReturnSimilar { } } -impl ReturnSimilar { +impl ReturnsSimilar { pub fn new() -> Self { Self::default() } } + +impl RHListItem for ReturnsSimilar +where + Env: TxEnv, + Original: TopEncodeMulti, + T: CodecFrom, +{ + type Returns = T; +} + +impl RHListItemSync for ReturnsSimilar +where + Env: TxEnv, + Original: TopEncodeMulti, + T: CodecFrom, +{ + fn item_sync_call_result( + self, + raw_results: &ManagedVec>, + ) -> Self::Returns { + decode_result::(raw_results.clone()) + } +} diff --git a/framework/base/src/types/interaction/tx_rh_list/with_result_similar.rs b/framework/base/src/types/interaction/tx_rh_list/with_result_similar.rs new file mode 100644 index 0000000000..ff0e5b1b5f --- /dev/null +++ b/framework/base/src/types/interaction/tx_rh_list/with_result_similar.rs @@ -0,0 +1,56 @@ +use core::marker::PhantomData; + +use multiversx_sc_codec::{CodecFrom, TopDecodeMulti, TopEncodeMulti}; + +use crate::types::{ + interaction::contract_call_exec::decode_result, ManagedBuffer, ManagedVec, RHListItemSync, + TxEnv, +}; + +use super::RHListItem; + +pub struct WithResultSimilar +where + F: FnOnce(T), +{ + _phantom: PhantomData, + pub f: F, +} + +impl WithResultSimilar +where + F: FnOnce(T), +{ + pub fn new(f: F) -> Self { + WithResultSimilar { + _phantom: PhantomData, + f, + } + } +} + +impl RHListItem for WithResultSimilar +where + Env: TxEnv, + Original: TopEncodeMulti, + T: CodecFrom, + F: FnOnce(T), +{ + type Returns = (); +} + +impl RHListItemSync for WithResultSimilar +where + Env: TxEnv, + Original: TopEncodeMulti, + T: CodecFrom, + F: FnOnce(T), +{ + fn item_sync_call_result( + self, + raw_results: &ManagedVec>, + ) -> Self::Returns { + let t = decode_result::(raw_results.clone()); + (self.f)(t) + } +} diff --git a/framework/scenario/src/facade/world_tx.rs b/framework/scenario/src/facade/world_tx.rs index 287c911253..8c2314767e 100644 --- a/framework/scenario/src/facade/world_tx.rs +++ b/framework/scenario/src/facade/world_tx.rs @@ -2,6 +2,7 @@ mod expr; mod scenario_env; +mod scenario_env_deploy; mod scenario_env_exec; mod scenario_env_query; mod scenario_env_util; diff --git a/framework/scenario/src/facade/world_tx/scenario_env.rs b/framework/scenario/src/facade/world_tx/scenario_env.rs index 9c1833659b..b2fb597620 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env.rs @@ -34,6 +34,15 @@ impl ScenarioTxEnv for ScenarioTxEnvData { } } +impl ScenarioWorld { + pub(crate) fn new_env_data(&self) -> ScenarioTxEnvData { + ScenarioTxEnvData { + context_path: self.current_dir.clone(), + ..Default::default() + } + } +} + /// Provides a `run` method for transactions and steps. pub trait ScenarioTxRun { type Returns; diff --git a/framework/scenario/src/facade/world_tx/scenario_env_deploy.rs b/framework/scenario/src/facade/world_tx/scenario_env_deploy.rs new file mode 100644 index 0000000000..103228c3e2 --- /dev/null +++ b/framework/scenario/src/facade/world_tx/scenario_env_deploy.rs @@ -0,0 +1,77 @@ +use std::path::PathBuf; + +use multiversx_chain_scenario_format::serde_raw::ValueSubTree; +use multiversx_sc::{ + tuple_util::NestedTupleFlatten, + types::{ + AnnotatedValue, Code, DeployCall, FunctionCall, ManagedAddress, ManagedBuffer, RHListSync, + Tx, TxBaseWithEnv, TxCodeSource, TxCodeSourceSpecified, TxCodeValue, TxEnv, + TxFromSpecified, TxGas, TxPayment, TxToSpecified, + }, +}; + +use crate::{ + api::StaticApi, + scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep, TxResponse}, + ScenarioEnvExec, ScenarioTxEnv, ScenarioTxRun, ScenarioTxRunOnWorld, ScenarioWorld, +}; + +use super::{scenario_env_util::*, RHListScenario, ScenarioTxEnvData}; + +impl<'w, From, Payment, Gas, CodeValue, RH> ScenarioTxRun + for Tx< + ScenarioEnvExec<'w>, + From, + (), + Payment, + Gas, + DeployCall, Code>, + RH, + > +where + From: TxFromSpecified>, + Payment: TxPayment>, + Gas: TxGas>, + CodeValue: TxCodeValue>, + RH: RHListScenario>, + RH::ListReturns: NestedTupleFlatten, +{ + type Returns = ::Unpacked; + + fn run(self) -> Self::Returns { + let mut step = + tx_to_sc_deploy_step(&self.env, self.from, self.payment, self.gas, self.data); + self.env.world.sc_deploy(&mut step); + process_result(step.response, self.result_handler) + } +} + +impl ScenarioWorld { + pub fn chain_deploy(&mut self, f: F) -> &mut Self + where + From: TxFromSpecified, + Payment: TxPayment, + Gas: TxGas, + CodeValue: TxCodeValue, + RH: RHListScenario, + F: FnOnce( + TxBaseWithEnv, + ) -> Tx< + ScenarioTxEnvData, + From, + (), + Payment, + Gas, + DeployCall>, + RH, + >, + { + let env = self.new_env_data(); + let tx_base = TxBaseWithEnv::new_with_env(env); + let tx = f(tx_base); + let mut step = tx_to_sc_deploy_step(&tx.env, tx.from, tx.payment, tx.gas, tx.data); + self.sc_deploy(&mut step); + process_result(step.response, tx.result_handler); + self + } +} diff --git a/framework/scenario/src/facade/world_tx/scenario_env_exec.rs b/framework/scenario/src/facade/world_tx/scenario_env_exec.rs index e0cb011529..44a6c2226b 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_exec.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_exec.rs @@ -42,32 +42,6 @@ impl<'w> ScenarioTxEnv for ScenarioEnvExec<'w> { } } -impl ScenarioTxRunOnWorld - for Tx, RH> -where - From: TxFromSpecified, - To: TxToSpecified, - Payment: TxPayment, - Gas: TxGas, - RH: RHListScenario, - RH::ListReturns: NestedTupleFlatten, -{ - type Returns = ::Unpacked; - - fn run_on_world(self, world: &mut ScenarioWorld) -> Self::Returns { - let mut step = tx_to_sc_call_step( - &self.env, - self.from, - self.to, - self.payment, - self.gas, - self.data, - ); - world.sc_call(&mut step); - process_result(step.response, self.result_handler) - } -} - impl<'w, From, To, Payment, Gas, RH> ScenarioTxRun for Tx, From, To, Payment, Gas, FunctionCall, RH> where @@ -94,88 +68,31 @@ where } } -impl ScenarioTxRunOnWorld - for Tx< - ScenarioTxEnvData, - From, - (), - Payment, - Gas, - DeployCall>, - RH, - > -where - From: TxFromSpecified, - Payment: TxPayment, - Gas: TxGas, - CodeValue: TxCodeValue, - RH: RHListScenario, - RH::ListReturns: NestedTupleFlatten, -{ - type Returns = ::Unpacked; - - fn run_on_world(self, world: &mut ScenarioWorld) -> Self::Returns { - let mut step = - tx_to_sc_deploy_step(&self.env, self.from, self.payment, self.gas, self.data); - world.sc_deploy(&mut step); - process_result(step.response, self.result_handler) - } -} - -impl<'w, From, Payment, Gas, CodeValue, RH> ScenarioTxRun - for Tx< - ScenarioEnvExec<'w>, - From, - (), - Payment, - Gas, - DeployCall, Code>, - RH, - > -where - From: TxFromSpecified>, - Payment: TxPayment>, - Gas: TxGas>, - CodeValue: TxCodeValue>, - RH: RHListScenario>, - RH::ListReturns: NestedTupleFlatten, -{ - type Returns = ::Unpacked; - - fn run(self) -> Self::Returns { - let mut step = - tx_to_sc_deploy_step(&self.env, self.from, self.payment, self.gas, self.data); - self.env.world.sc_deploy(&mut step); - process_result(step.response, self.result_handler) - } -} - impl ScenarioWorld { - fn new_env_data(&self) -> ScenarioTxEnvData { - ScenarioTxEnvData { - context_path: self.current_dir.clone(), - ..Default::default() - } - } - - fn wrap_world_ref<'w>(&'w mut self) -> ScenarioEnvExec<'w> { - let data = self.new_env_data(); - ScenarioEnvExec { world: self, data } - } - pub fn tx<'w>(&'w mut self) -> TxBaseWithEnv> { - Tx::new_with_env(self.wrap_world_ref()) + let data = self.new_env_data(); + let env = ScenarioEnvExec { world: self, data }; + Tx::new_with_env(env) } - pub fn chain_tx(&mut self, f: F) -> &mut Self + pub fn chain_call(&mut self, f: F) -> &mut Self where - STx: ScenarioTxRunOnWorld, - F: FnOnce(TxBaseWithEnv) -> STx, + From: TxFromSpecified, + To: TxToSpecified, + Payment: TxPayment, + Gas: TxGas, + RH: RHListScenario, + F: FnOnce( + TxBaseWithEnv, + ) + -> Tx, RH>, { let env = self.new_env_data(); let tx_base = TxBaseWithEnv::new_with_env(env); let tx = f(tx_base); - tx.run_on_world(self); + let mut step = tx_to_sc_call_step(&tx.env, tx.from, tx.to, tx.payment, tx.gas, tx.data); + self.sc_call(&mut step); + process_result(step.response, tx.result_handler); self } } diff --git a/framework/scenario/src/facade/world_tx/scenario_env_query.rs b/framework/scenario/src/facade/world_tx/scenario_env_query.rs index fbee3b921d..12ed35a3bf 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_query.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_query.rs @@ -1,11 +1,20 @@ use std::path::PathBuf; -use multiversx_sc::types::{AnnotatedValue, ManagedAddress, TxBaseWithEnv, TxEnv}; +use multiversx_sc::{ + tuple_util::NestedTupleFlatten, + types::{ + AnnotatedValue, FunctionCall, ManagedAddress, Tx, TxBaseWithEnv, TxEnv, TxFromSpecified, + TxGas, TxPayment, TxToSpecified, + }, +}; use crate::{ - api::StaticApi, scenario_model::TxResponse, ScenarioTxEnv, ScenarioTxEnvData, ScenarioWorld, + api::StaticApi, scenario_model::TxResponse, RHListScenario, ScenarioTxEnv, ScenarioTxEnvData, + ScenarioTxRun, ScenarioTxRunOnWorld, ScenarioWorld, }; +use super::scenario_env_util::*; + pub struct ScenarioEnvQuery<'w> { pub world: &'w mut ScenarioWorld, pub data: ScenarioTxEnvData, @@ -28,3 +37,44 @@ impl<'w> ScenarioTxEnv for ScenarioEnvQuery<'w> { &self.data } } + +impl<'w, To, RH> ScenarioTxRun + for Tx, (), To, (), (), FunctionCall, RH> +where + To: TxToSpecified>, + RH: RHListScenario>, + RH::ListReturns: NestedTupleFlatten, +{ + type Returns = ::Unpacked; + + fn run(self) -> Self::Returns { + let mut step = tx_to_sc_query_step(&self.env, self.to, self.data); + self.env.world.sc_query(&mut step); + process_result(step.response, self.result_handler) + } +} + +impl ScenarioWorld { + pub fn query<'w>(&'w mut self) -> TxBaseWithEnv> { + let data = self.new_env_data(); + let env = ScenarioEnvQuery { world: self, data }; + Tx::new_with_env(env) + } + + pub fn chain_query(&mut self, f: F) -> &mut Self + where + To: TxToSpecified, + RH: RHListScenario, + F: FnOnce( + TxBaseWithEnv, + ) -> Tx, RH>, + { + let env = self.new_env_data(); + let tx_base = TxBaseWithEnv::new_with_env(env); + let tx = f(tx_base); + let mut step = tx_to_sc_query_step(&tx.env, tx.to, tx.data); + self.sc_query(&mut step); + process_result(step.response, tx.result_handler); + self + } +} diff --git a/framework/scenario/src/facade/world_tx/scenario_env_util.rs b/framework/scenario/src/facade/world_tx/scenario_env_util.rs index 84b808fbc3..e05a4de177 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_util.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_util.rs @@ -10,7 +10,7 @@ use multiversx_sc::{ use crate::{ api::StaticApi, - scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep, TxResponse}, + scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep, ScQueryStep, TxResponse}, RHListScenario, ScenarioEnvExec, ScenarioWorld, }; @@ -88,6 +88,25 @@ where step } +pub(super) fn tx_to_sc_query_step( + env: &Env, + to: To, + data: FunctionCall, +) -> ScQueryStep +where + Env: TxEnv, + To: TxToSpecified, +{ + let mut step = ScQueryStep::new() + .to(address_annotated(env, to)) + .function(data.function_name.to_string().as_str()); + for arg in data.arg_buffer.iter_buffers() { + step.tx.arguments.push(arg.to_vec().into()); + } + + step +} + pub(super) fn process_result( response: Option, result_handler: RH, diff --git a/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs b/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs index 057d1e0c1c..4de678b586 100644 --- a/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs +++ b/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs @@ -1,6 +1,9 @@ use multiversx_sc::{ - codec::TopDecodeMulti, - types::{ManagedAddress, RHList, RHListItem, ReturnsExact, TxEnv, WithResultNewAddress}, + codec::{CodecFrom, TopDecodeMulti, TopEncodeMulti}, + types::{ + ManagedAddress, RHList, RHListItem, ReturnsExact, ReturnsSimilar, TxEnv, + WithResultNewAddress, WithResultSimilar, + }, }; use crate::{ @@ -30,6 +33,36 @@ where } } +impl RHListItemScenario for ReturnsSimilar +where + Env: TxEnv, + Original: TopEncodeMulti, + T: CodecFrom, +{ + fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns { + let response = TypedResponse::::from_raw(tx_response); + response + .result + .expect("ReturnsSimilar expects that transaction is successful") + } +} + +impl RHListItemScenario for WithResultSimilar +where + Env: TxEnv, + Original: TopEncodeMulti, + T: CodecFrom, + F: FnOnce(T), +{ + fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns { + let response = TypedResponse::::from_raw(tx_response); + let value = response + .result + .expect("ReturnsExact expects that transaction is successful"); + (self.f)(value); + } +} + impl RHListItemScenario for WithResultNewAddress where Env: TxEnv, From 042026f9a8461ab6f5d00677210bcd45a3964c09 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 11 Mar 2024 12:35:26 +0200 Subject: [PATCH 067/461] clippy fix --- framework/scenario/src/facade/world_tx/scenario_env.rs | 1 - framework/scenario/src/facade/world_tx/scenario_env_exec.rs | 2 +- framework/scenario/src/facade/world_tx/scenario_env_query.rs | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/framework/scenario/src/facade/world_tx/scenario_env.rs b/framework/scenario/src/facade/world_tx/scenario_env.rs index b2fb597620..0392fa2bb6 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env.rs @@ -38,7 +38,6 @@ impl ScenarioWorld { pub(crate) fn new_env_data(&self) -> ScenarioTxEnvData { ScenarioTxEnvData { context_path: self.current_dir.clone(), - ..Default::default() } } } diff --git a/framework/scenario/src/facade/world_tx/scenario_env_exec.rs b/framework/scenario/src/facade/world_tx/scenario_env_exec.rs index 44a6c2226b..844bbf9c97 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_exec.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_exec.rs @@ -69,7 +69,7 @@ where } impl ScenarioWorld { - pub fn tx<'w>(&'w mut self) -> TxBaseWithEnv> { + pub fn tx(&mut self) -> TxBaseWithEnv> { let data = self.new_env_data(); let env = ScenarioEnvExec { world: self, data }; Tx::new_with_env(env) diff --git a/framework/scenario/src/facade/world_tx/scenario_env_query.rs b/framework/scenario/src/facade/world_tx/scenario_env_query.rs index 12ed35a3bf..f95f3cce33 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_query.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_query.rs @@ -55,7 +55,7 @@ where } impl ScenarioWorld { - pub fn query<'w>(&'w mut self) -> TxBaseWithEnv> { + pub fn query(&mut self) -> TxBaseWithEnv> { let data = self.new_env_data(); let env = ScenarioEnvQuery { world: self, data }; Tx::new_with_env(env) From f7cb39f6ae8d263377fe6822a01fce6f5f1c6f1e Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 11 Mar 2024 12:46:20 +0200 Subject: [PATCH 068/461] adder legacy proxy test --- ...ined.rs => adder_blackbox_chained_test.rs} | 0 .../tests/adder_blackbox_legacy_proxy_test.rs | 79 +++++++++++++++++++ ...ps.rs => adder_blackbox_raw_steps_test.rs} | 0 ...der_blackbox.rs => adder_blackbox_test.rs} | 11 +-- 4 files changed, 81 insertions(+), 9 deletions(-) rename contracts/examples/adder/tests/{adder_blackbox_chained.rs => adder_blackbox_chained_test.rs} (100%) create mode 100644 contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs rename contracts/examples/adder/tests/{adder_blackbox_raw_steps.rs => adder_blackbox_raw_steps_test.rs} (100%) rename contracts/examples/adder/tests/{adder_blackbox.rs => adder_blackbox_test.rs} (88%) diff --git a/contracts/examples/adder/tests/adder_blackbox_chained.rs b/contracts/examples/adder/tests/adder_blackbox_chained_test.rs similarity index 100% rename from contracts/examples/adder/tests/adder_blackbox_chained.rs rename to contracts/examples/adder/tests/adder_blackbox_chained_test.rs diff --git a/contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs b/contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs new file mode 100644 index 0000000000..373e75f49f --- /dev/null +++ b/contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs @@ -0,0 +1,79 @@ +use adder::*; +use multiversx_sc::{ + storage::mappers::SingleValue, + types::{AddressExpr, ReturnsSimilar, WithResultNewAddress}, +}; +use multiversx_sc_scenario::{api::StaticApi, num_bigint::BigUint, scenario_model::*, *}; + +const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; + +const OWNER: AddressExpr = AddressExpr("owner"); +const CODE_EXPR: MxscExpr = MxscExpr("output/adder.mxsc.json"); + +fn world() -> ScenarioWorld { + let mut blockchain = ScenarioWorld::new(); + blockchain.set_current_dir_from_workspace("contracts/examples/adder"); + + blockchain.register_contract(ADDER_PATH_EXPR, adder::ContractBuilder); + blockchain +} + +#[test] +fn adder_blackbox_legacy_proxy() { + let mut world = world(); + let owner_address = "address:owner"; + let mut adder_contract = ContractInfo::>::new("sc:adder"); + + world.start_trace(); + + world.set_state_step( + SetStateStep::new() + .put_account(owner_address, Account::new().nonce(1)) + .new_address(owner_address, 1, "sc:adder"), + ); + + world + .tx() + .from(OWNER) + .typed_v2(temp_proxy_v2::TxProxy) + .init(5u32) + .code(CODE_EXPR) + .with_result(WithResultNewAddress::new(|new_address| { + assert_eq!(new_address.to_address(), adder_contract.to_address()); + })) + .run(); + + world.sc_query( + ScQueryStep::new() + .to(&adder_contract) + .call(adder_contract.sum()) + .expect_value(SingleValue::from(BigUint::from(5u32))), + ); + + let value = world + .query() + .call(adder_contract.sum()) + .returns(ReturnsSimilar::>::new()) + .run(); + assert_eq!(value.into(), BigUint::from(5u32)); + + world + .tx() + .from(OWNER) + .call(adder_contract.add(3u32)) + .with_result(WithRawTxResponse(|response| { + assert!(response.tx_error.is_success()); + })) + .run(); + + world.check_state_step( + CheckStateStep::new() + .put_account(owner_address, CheckAccount::new()) + .put_account( + &adder_contract, + CheckAccount::new().check_storage("str:sum", "8"), + ), + ); + + world.write_scenario_trace("trace1.scen.json"); +} diff --git a/contracts/examples/adder/tests/adder_blackbox_raw_steps.rs b/contracts/examples/adder/tests/adder_blackbox_raw_steps_test.rs similarity index 100% rename from contracts/examples/adder/tests/adder_blackbox_raw_steps.rs rename to contracts/examples/adder/tests/adder_blackbox_raw_steps_test.rs diff --git a/contracts/examples/adder/tests/adder_blackbox.rs b/contracts/examples/adder/tests/adder_blackbox_test.rs similarity index 88% rename from contracts/examples/adder/tests/adder_blackbox.rs rename to contracts/examples/adder/tests/adder_blackbox_test.rs index dda9068a25..185aa24001 100644 --- a/contracts/examples/adder/tests/adder_blackbox.rs +++ b/contracts/examples/adder/tests/adder_blackbox_test.rs @@ -20,10 +20,10 @@ fn world() -> ScenarioWorld { } #[test] -fn adder_blackbox_with_values() { +fn adder_blackbox() { let mut world = world(); let owner_address = "address:owner"; - let mut adder_contract = ContractInfo::>::new("sc:adder"); + let adder_contract = ContractInfo::>::new("sc:adder"); world.start_trace(); @@ -44,13 +44,6 @@ fn adder_blackbox_with_values() { })) .run(); - world.sc_query( - ScQueryStep::new() - .to(&adder_contract) - .call(adder_contract.sum()) - .expect_value(SingleValue::from(BigUint::from(5u32))), - ); - let value = world .query() .to(SC_ADDER) From 958f2ae251ea9a0f8f8163e63f942db983f2dd7f Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 11 Mar 2024 16:36:49 +0200 Subject: [PATCH 069/461] TxProxy example fix --- contracts/examples/adder/src/temp_proxy_v2.rs | 6 +----- .../examples/adder/tests/adder_blackbox_chained_test.rs | 4 ++-- contracts/examples/adder/tests/adder_blackbox_test.rs | 4 ++-- framework/base/src/types/managed/basic/big_uint.rs | 4 ++++ 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/contracts/examples/adder/src/temp_proxy_v2.rs b/contracts/examples/adder/src/temp_proxy_v2.rs index 039a1454fd..145760201f 100644 --- a/contracts/examples/adder/src/temp_proxy_v2.rs +++ b/contracts/examples/adder/src/temp_proxy_v2.rs @@ -73,11 +73,7 @@ where (), Gas, FunctionCall, - OriginalResultMarker< - multiversx_sc::types::managed::basic::big_uint::BigUint< - multiversx_sc::api::uncallable::UncallableApi, - >, - >, + OriginalResultMarker>, > { self.wrapped_tx .raw_call() diff --git a/contracts/examples/adder/tests/adder_blackbox_chained_test.rs b/contracts/examples/adder/tests/adder_blackbox_chained_test.rs index 8121afb4e9..ca9c201cb2 100644 --- a/contracts/examples/adder/tests/adder_blackbox_chained_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_chained_test.rs @@ -41,8 +41,8 @@ fn adder_blackbox_chained() { tx.to(ScExpr("adder")) .typed_v2(temp_proxy_v2::TxProxy) .sum() - .with_result(WithResultSimilar::new(|value: SingleValue| { - assert_eq!(value.into(), BigUint::from(5u32)); + .with_result(WithResultSimilar::new(|value: BigUint| { + assert_eq!(value, BigUint::from(5u32)); })) }) .chain_call(|tx| { diff --git a/contracts/examples/adder/tests/adder_blackbox_test.rs b/contracts/examples/adder/tests/adder_blackbox_test.rs index 185aa24001..346ae1344b 100644 --- a/contracts/examples/adder/tests/adder_blackbox_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_test.rs @@ -49,9 +49,9 @@ fn adder_blackbox() { .to(SC_ADDER) .typed_v2(temp_proxy_v2::TxProxy) .sum() - .returns(ReturnsSimilar::>::new()) + .returns(ReturnsSimilar::::new()) .run(); - assert_eq!(value.into(), BigUint::from(5u32)); + assert_eq!(value, BigUint::from(5u32)); // TODO: remove world diff --git a/framework/base/src/types/managed/basic/big_uint.rs b/framework/base/src/types/managed/basic/big_uint.rs index b139f823dc..df0c1b947b 100644 --- a/framework/base/src/types/managed/basic/big_uint.rs +++ b/framework/base/src/types/managed/basic/big_uint.rs @@ -291,6 +291,10 @@ impl crate::abi::TypeAbi for BigUint { fn type_name() -> TypeName { TypeName::from("BigUint") } + + fn type_name_rust() -> TypeName { + TypeName::from("multiversx_sc::types::BigUint<$API>") + } } impl SCDisplay for BigUint { From a25c81bc6add42419c618a6e79ac92924ae1323a Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Mon, 11 Mar 2024 16:54:56 +0200 Subject: [PATCH 070/461] changed visibility --- .../tests/adder_blackbox_chained_test.rs | 5 +--- .../adder/tests/adder_blackbox_test.rs | 5 +--- framework/base/src/types/managed/basic/mod.rs | 30 +++++++++---------- 3 files changed, 17 insertions(+), 23 deletions(-) diff --git a/contracts/examples/adder/tests/adder_blackbox_chained_test.rs b/contracts/examples/adder/tests/adder_blackbox_chained_test.rs index ca9c201cb2..2edc5e4100 100644 --- a/contracts/examples/adder/tests/adder_blackbox_chained_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_chained_test.rs @@ -1,8 +1,5 @@ use adder::*; -use multiversx_sc::{ - storage::mappers::SingleValue, - types::{AddressExpr, ScExpr, WithResultNewAddress, WithResultSimilar}, -}; +use multiversx_sc::types::{AddressExpr, ScExpr, WithResultNewAddress, WithResultSimilar}; use multiversx_sc_scenario::{api::StaticApi, num_bigint::BigUint, scenario_model::*, *}; const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; diff --git a/contracts/examples/adder/tests/adder_blackbox_test.rs b/contracts/examples/adder/tests/adder_blackbox_test.rs index 346ae1344b..69f94a2e1e 100644 --- a/contracts/examples/adder/tests/adder_blackbox_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_test.rs @@ -1,8 +1,5 @@ use adder::*; -use multiversx_sc::{ - storage::mappers::SingleValue, - types::{AddressExpr, ReturnsSimilar, ScExpr, WithResultNewAddress}, -}; +use multiversx_sc::types::{AddressExpr, ReturnsSimilar, ScExpr, WithResultNewAddress}; use multiversx_sc_scenario::{api::StaticApi, num_bigint::BigUint, scenario_model::*, *}; const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; diff --git a/framework/base/src/types/managed/basic/mod.rs b/framework/base/src/types/managed/basic/mod.rs index 419eb4b827..124fd1df55 100644 --- a/framework/base/src/types/managed/basic/mod.rs +++ b/framework/base/src/types/managed/basic/mod.rs @@ -1,18 +1,18 @@ -pub mod big_float; -pub mod big_float_cmp; -pub mod big_float_operators; -pub mod big_int; -pub mod big_int_cmp; -pub mod big_int_operators; -pub mod big_int_sign; -pub mod big_num_cmp; -pub mod big_uint; -pub mod big_uint_cmp; -pub mod big_uint_operators; -pub mod cast_to_i64; -pub mod elliptic_curve; -pub mod managed_buffer; -pub mod managed_map; +mod big_float; +mod big_float_cmp; +mod big_float_operators; +mod big_int; +mod big_int_cmp; +mod big_int_operators; +mod big_int_sign; +mod big_num_cmp; +mod big_uint; +mod big_uint_cmp; +mod big_uint_operators; +mod cast_to_i64; +mod elliptic_curve; +mod managed_buffer; +mod managed_map; pub use big_float::BigFloat; pub use big_int::BigInt; From 2fdf0ede3a61c7f5dbc662548abb687206b2fdf4 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Mon, 11 Mar 2024 19:05:59 +0200 Subject: [PATCH 071/461] changed visibility --- framework/base/src/types.rs | 2 +- framework/base/src/types/managed/mod.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/framework/base/src/types.rs b/framework/base/src/types.rs index c316553b6b..caa4a5a2d3 100644 --- a/framework/base/src/types.rs +++ b/framework/base/src/types.rs @@ -3,7 +3,7 @@ mod flags; pub mod heap; mod interaction; mod io; -pub mod managed; +mod managed; mod static_buffer; pub use crypto::*; diff --git a/framework/base/src/types/managed/mod.rs b/framework/base/src/types/managed/mod.rs index 1ff74fdb84..3107f1ee3e 100644 --- a/framework/base/src/types/managed/mod.rs +++ b/framework/base/src/types/managed/mod.rs @@ -1,4 +1,4 @@ -pub mod basic; +mod basic; mod codec_util; mod managed_type_trait; mod multi_value; From 3a4c4992db0c22b98de3ba6fb98776f6d7570846 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Tue, 12 Mar 2024 20:15:02 +0200 Subject: [PATCH 072/461] generated code --- .../adder/proxies_struct_interactor_main.rs | 87 -------- .../contract/generate_proxy/proxy_gen_main.rs | 9 +- .../generate_proxy/proxy_sc_functions_gen.rs | 199 +++++++++++++++--- .../generate_proxy/proxy_template_gen.rs | 41 +++- 4 files changed, 202 insertions(+), 134 deletions(-) delete mode 100644 contracts/examples/adder/proxies_struct_interactor_main.rs diff --git a/contracts/examples/adder/proxies_struct_interactor_main.rs b/contracts/examples/adder/proxies_struct_interactor_main.rs deleted file mode 100644 index f95b5dd523..0000000000 --- a/contracts/examples/adder/proxies_struct_interactor_main.rs +++ /dev/null @@ -1,87 +0,0 @@ -multiversx_sc::imports!(); - -pub struct TxProxy; - -impl TxProxyTrait for TxProxy -where - Env: TxEnv, -{ - type TxProxyMethods = TxProxyMethods; - - fn env(self, env: Env) -> Self::TxProxyMethods { - TxProxyMethods { env } - } -} - -impl TxProxyMethods { - pub fn init< - Arg0: multiversx_sc::codec::CodecInto> - >( - &mut self, - initial_value: Arg0, - ) -> multiversx_sc::types::Tx, OriginalResultMarker<()>> - { - self.wrapped_tx - .raw_deploy() - .argument(&initial_value) - .original_result() - } - - pub fn sum( - &mut self, - ) -> multiversx_sc::types::Tx< - Env, - (), - (), - (), - (), - FunctionCall<::Api>, - (), - > { - Tx::new_with_env(self.env.clone()) - .raw_call() - .function_name("getSum") - } - - pub fn upgrade< - Arg0: multiversx_sc::codec::CodecInto> - >( - &mut self, - initial_value: Arg0, - ) -> multiversx_sc::types::Tx< - Env, - (), - (), - (), - (), - FunctionCall<::Api>, - (), - > { - Tx::new_with_env(self.env.clone()) - .raw_call() - .function_name("upgrade") - .argument(&initial_value) - } - - //Add desired amount to the storage variable. - pub fn add< - Arg0: multiversx_sc::codec::CodecInto> - >( - &mut self, - value: Arg0, - ) -> multiversx_sc::types::Tx< - Env, - (), - (), - (), - (), - FunctionCall<::Api>, - (), - > { - Tx::new_with_env(self.env.clone()) - .raw_call() - .function_name("add") - .argument(&value) - } - -} diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs index 8fc5455197..10c1c33b1a 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs @@ -9,12 +9,11 @@ use super::{ proxy_crate_gen::create_file, proxy_sc_functions_gen::write_content, proxy_template_gen::{ - write_impl_for_tx_proxy, write_imports, write_struct_template, - write_tx_proxy_method_header, + write_header, write_impl_for_tx_proxy, write_struct_template, write_struct_tx_proxy_methods, }, }; -const PROXIES_SOURCE_FILE_NAME: &str = "proxies_struct_interactor_main.rs"; +const PROXIES_SOURCE_FILE_NAME: &str = "/output/proxies_struct_interactor_main.rs"; impl MetaConfig { pub fn generate_rust_proxies_struct(&self, args: &GenerateProxyArgs) { @@ -24,9 +23,9 @@ impl MetaConfig { } fn write_proxies_to_file(mut file: File, abi: ContractAbi) { - write_imports(&mut file); + write_header(&mut file); write_struct_template(&mut file); write_impl_for_tx_proxy(&mut file); - write_tx_proxy_method_header(&mut file); + write_struct_tx_proxy_methods(&mut file); write_content(&mut file, abi); } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs index e2421e63f8..ef700766d1 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs @@ -1,76 +1,163 @@ use std::{fs::File, io::Write}; -use multiversx_sc::abi::{ContractAbi, EndpointAbi, InputAbi}; +use multiversx_sc::abi::{ContractAbi, EndpointAbi, InputAbi, OutputAbi}; use crate::cmd::contract::generate_snippets::{ snippet_gen_common::write_newline, snippet_type_map::{handle_abi_type, RustTypeString}, }; +const ENV: &str = "Env:"; +const COLON: char = ':'; + pub(crate) fn write_content(file: &mut File, abi: ContractAbi) { + write_header_impl_constructor(file); for constructor_abi in abi.constructors { - write_endpoint(file, constructor_abi.clone()); - write_function_content(file, constructor_abi); + write_constructor_header(file, constructor_abi.clone()); + write_constructor_content(file, constructor_abi.inputs); write_end_of_function(file); } + writeln!(file, "}}").unwrap(); + write_header_impl_endpoints(file); for endpoint_abi in abi.endpoints { - write_endpoint(file, endpoint_abi.clone()); - write_function_content(file, endpoint_abi); + write_endpoint_header(file, endpoint_abi.clone()); + write_endpoint_content(file, endpoint_abi.name, endpoint_abi.inputs); write_end_of_function(file); } writeln!(file, "}}").unwrap(); } -fn write_function_content(file: &mut File, end: EndpointAbi) { +fn write_header_impl_constructor(file: &mut File) { writeln!( file, - "\t\tTx::new_with_env(self.env.clone()) - .raw_call() - .function_name(\"{}\")", - end.name + r#"impl TxProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{{"# ) .unwrap(); +} - for input in end.inputs.iter() { - writeln!( - file, - "\t\t\t.argument(&{})", - input.arg_name // .argument(&arg0)" - ) - .unwrap(); - } +fn write_header_impl_endpoints(file: &mut File) { + writeln!( + file, + r#"impl TxProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{{"# + ) + .unwrap(); +} + +fn write_constructor_header(file: &mut File, contructor_abi: EndpointAbi) { + write_fn_signature(file, contructor_abi); + write_constructor_output(file); } -fn write_endpoint(file: &mut File, endpoint_abi: EndpointAbi) { +fn write_endpoint_header(file: &mut File, contructor_abi: EndpointAbi) { + write_fn_signature(file, contructor_abi.clone()); + write_endpoint_output(file, contructor_abi.outputs); +} + +fn write_fn_signature(file: &mut File, endpoint_abi: EndpointAbi) { write_info_endpoint(file, endpoint_abi.docs); write_function_header_endpoint(file, endpoint_abi.rust_method_name); write_args(file, endpoint_abi.inputs.clone()); - write_parameters_and_output(file, endpoint_abi.inputs); + write_parameters(file, endpoint_abi.inputs); } -#[rustfmt::skip] -fn write_parameters_and_output(file: &mut File, inputs: Vec) { +fn write_parameters(file: &mut File, inputs: Vec) { writeln!(file, "(").unwrap(); - writeln!(file, "\t\t&mut self,").unwrap(); - + writeln!(file, "\t\tself,").unwrap(); for (index, input) in inputs.iter().enumerate() { writeln!(file, "\t\t{}: Arg{index},", &input.arg_name).unwrap(); } + write!(file, "\t) ").unwrap(); +} + +fn write_constructor_output(file: &mut File) { + writeln!( + file, + "-> multiversx_sc::types::Tx, OriginalResultMarker<()>>\n\t{{" + ) + .unwrap(); +} +fn write_endpoint_output(file: &mut File, outputs: Vec) { write!( file, - "\t) -> multiversx_sc::types::Tx::Api>, + "-> multiversx_sc::types::Tx< + Env, + From, + To, (), - > {{\n" + Gas, + FunctionCall, + OriginalResultMarker<" + ) + .unwrap(); + + if outputs.len() == 0 { + write!(file, "()").unwrap(); + } else { + parse_and_write_outputs(file, outputs); + } + + writeln!( + file, + ">, + > {{" + ) + .unwrap(); +} + +fn write_constructor_content(file: &mut File, inputs: Vec) { + writeln!( + file, + "\t\tself.wrapped_tx + .raw_deploy()" + ) + .unwrap(); + for input in inputs.iter() { + writeln!( + file, + "\t\t\t.argument(&{})", + input.arg_name // .argument(&arg0)" + ) + .unwrap(); + } + writeln!(file, "\t\t\t.original_result()").unwrap(); +} + +fn write_endpoint_content(file: &mut File, function_name: String, inputs: Vec) { + writeln!( + file, + "\t\tself.wrapped_tx + .raw_call() + .function_name(\"{}\")", + function_name ) .unwrap(); + + for input in inputs.iter() { + writeln!( + file, + "\t\t\t.argument(&{})", + input.arg_name // .argument(&arg0)" + ) + .unwrap(); + } + + writeln!(file, "\t\t\t.original_result()").unwrap(); } fn write_function_header_endpoint(file: &mut File, rust_method_name: String) { @@ -104,9 +191,10 @@ fn write_args(file: &mut File, inputs: Vec) { fn write_argument(file: &mut File, index: usize, type_name: String) { let mut type_string = RustTypeString::default(); handle_abi_type(&mut type_string, type_name); - let type_string_str = type_string.get_type_name().to_string(); - - let type_print = type_string_str.replace("", ""); + let type_print = type_string + .get_type_name() + .replace("StaticApi", "Env::Api") + .to_string(); writeln!( file, @@ -120,3 +208,46 @@ fn write_end_of_function(file: &mut File) { writeln!(file, "\t}}").unwrap(); write_newline(file); } + +fn parse_and_write_outputs(file: &mut File, outputs: Vec) { + for output in outputs { + let env_api = output + .type_names + .rust + .replace("multiversx_sc::api::uncallable::UncallableApi", "Env::Api") + .to_string(); + + let mut current_string = String::new(); + let mut found_words = Vec::new(); + + for character in env_api.chars() { + if character == COLON { + // adjust_on_colon_suffix(character, current_string, found_words); + if current_string.ends_with(COLON) && !current_string.ends_with(ENV){ + if current_string.len() > 0 + && current_string.chars().next().unwrap().is_uppercase() + { + found_words.push(current_string[..current_string.len() - 1].to_string()); + } + current_string.clear(); + } else { + current_string.push(character); + } + } else if character == ' ' && current_string.ends_with(',') { + if current_string.len() > 0 && current_string.chars().next().unwrap().is_uppercase() + { + current_string.push(character); + found_words.push(current_string.clone()); + current_string.clear(); + } else { + current_string.push(character); + } + } else { + current_string.push(character); + } + } + + found_words.push(current_string); + write!(file, "{}", found_words.join("")).unwrap(); + } +} \ No newline at end of file diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs index 9742b54c59..7af38cd93a 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs @@ -2,8 +2,20 @@ use std::{fs::File, io::Write}; use crate::cmd::contract::generate_snippets::snippet_gen_common::write_newline; -pub(crate) fn write_imports(file: &mut File) { - writeln!(file, r#"multiversx_sc::imports!();"#).unwrap(); +const PREFIX_AUTO_GENERATED: &str = "//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// +"; + +const IMPORTS: &str = "#![allow(clippy::all)] + +use multiversx_sc::api::VMApi; + +multiversx_sc::imports!();"; + +pub(crate) fn write_header(file: &mut File) { + writeln!(file, "{PREFIX_AUTO_GENERATED}").unwrap(); + writeln!(file, r#"{IMPORTS}"#).unwrap(); write_newline(file); } @@ -16,14 +28,17 @@ pub(crate) fn write_struct_template(file: &mut File) { pub(crate) fn write_impl_for_tx_proxy(file: &mut File) { writeln!( file, - r#"impl TxProxyTrait for TxProxy + r#"impl TxProxyTraitV2 for TxProxy where Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, {{ - type TxProxyMethods = TxProxyMethods; + type TxProxyMethods = TxProxyMethods; - fn env(self, env: Env) -> Self::TxProxyMethods {{ - TxProxyMethods {{ env }} + fn prepare_methods(self, tx: Tx) -> Self::TxProxyMethods {{ + TxProxyMethods {{ wrapped_tx: tx }} }} }}"# ) @@ -32,10 +47,20 @@ where write_newline(file); } -pub(crate) fn write_tx_proxy_method_header(file: &mut File) { +pub(crate) fn write_struct_tx_proxy_methods(file: &mut File) { writeln!( file, - r#"impl TxProxyMethods {{"# + r#"pub struct TxProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{{ + wrapped_tx: Tx, +}}"# ) .unwrap(); + + write_newline(file); } From 1feb3491175a5812ee83fb59a63e47066f7d8602 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Tue, 12 Mar 2024 20:32:29 +0200 Subject: [PATCH 073/461] fix clippy --- .../base/src/storage/mappers/single_value_mapper.rs | 4 ++++ .../contract/generate_proxy/proxy_sc_functions_gen.rs | 11 ++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/framework/base/src/storage/mappers/single_value_mapper.rs b/framework/base/src/storage/mappers/single_value_mapper.rs index b00d605542..5eade9503a 100644 --- a/framework/base/src/storage/mappers/single_value_mapper.rs +++ b/framework/base/src/storage/mappers/single_value_mapper.rs @@ -226,6 +226,10 @@ where T::type_name() } + fn type_name_rust() -> TypeName { + T::type_name_rust() + } + fn provide_type_descriptions(accumulator: &mut TDC) { T::provide_type_descriptions(accumulator) } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs index ef700766d1..cdabec8ce5 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs @@ -106,7 +106,7 @@ fn write_endpoint_output(file: &mut File, outputs: Vec) { ) .unwrap(); - if outputs.len() == 0 { + if outputs.is_empty() { write!(file, "()").unwrap(); } else { parse_and_write_outputs(file, outputs); @@ -215,6 +215,7 @@ fn parse_and_write_outputs(file: &mut File, outputs: Vec) { .type_names .rust .replace("multiversx_sc::api::uncallable::UncallableApi", "Env::Api") + .replace("$API", "Env::Api") .to_string(); let mut current_string = String::new(); @@ -223,8 +224,8 @@ fn parse_and_write_outputs(file: &mut File, outputs: Vec) { for character in env_api.chars() { if character == COLON { // adjust_on_colon_suffix(character, current_string, found_words); - if current_string.ends_with(COLON) && !current_string.ends_with(ENV){ - if current_string.len() > 0 + if current_string.ends_with(COLON) && !current_string.ends_with(ENV) { + if !current_string.is_empty() && current_string.chars().next().unwrap().is_uppercase() { found_words.push(current_string[..current_string.len() - 1].to_string()); @@ -234,7 +235,7 @@ fn parse_and_write_outputs(file: &mut File, outputs: Vec) { current_string.push(character); } } else if character == ' ' && current_string.ends_with(',') { - if current_string.len() > 0 && current_string.chars().next().unwrap().is_uppercase() + if !current_string.is_empty() && current_string.chars().next().unwrap().is_uppercase() { current_string.push(character); found_words.push(current_string.clone()); @@ -250,4 +251,4 @@ fn parse_and_write_outputs(file: &mut File, outputs: Vec) { found_words.push(current_string); write!(file, "{}", found_words.join("")).unwrap(); } -} \ No newline at end of file +} From 958a27b354ca187b71700e596cc74f81ac9d3331 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 13 Mar 2024 12:16:37 +0100 Subject: [PATCH 074/461] tx proxy gen - cleanup, minor fixes --- contracts/examples/adder/src/temp_proxy_v2.rs | 33 ++---- framework/base/src/lib.rs | 2 +- .../generate_proxy/proxy_sc_functions_gen.rs | 109 +++++++----------- .../generate_proxy/proxy_template_gen.rs | 4 +- 4 files changed, 53 insertions(+), 95 deletions(-) diff --git a/contracts/examples/adder/src/temp_proxy_v2.rs b/contracts/examples/adder/src/temp_proxy_v2.rs index 145760201f..ac17677128 100644 --- a/contracts/examples/adder/src/temp_proxy_v2.rs +++ b/contracts/examples/adder/src/temp_proxy_v2.rs @@ -1,8 +1,10 @@ -#![allow(clippy::all)] +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// -use multiversx_sc::api::VMApi; +#![allow(clippy::all)] -multiversx_sc::imports!(); +use multiversx_sc::imports::*; pub struct TxProxy; @@ -40,22 +42,13 @@ where pub fn init>>( self, initial_value: Arg0, - ) -> multiversx_sc::types::Tx< - Env, - From, - (), - (), - Gas, - DeployCall, - OriginalResultMarker<()>, - > { + ) -> Tx, OriginalResultMarker<()>> { self.wrapped_tx .raw_deploy() .argument(&initial_value) .original_result() } } - impl TxProxyMethods where Env: TxEnv, @@ -66,14 +59,14 @@ where { pub fn sum( self, - ) -> multiversx_sc::types::Tx< + ) -> Tx< Env, From, To, (), Gas, FunctionCall, - OriginalResultMarker>, + OriginalResultMarker>, > { self.wrapped_tx .raw_call() @@ -85,15 +78,7 @@ where pub fn add>>( self, value: Arg0, - ) -> multiversx_sc::types::Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> Tx, OriginalResultMarker<()>> { self.wrapped_tx .raw_call() .function_name("add") diff --git a/framework/base/src/lib.rs b/framework/base/src/lib.rs index 57dd97bee2..e209315d7a 100644 --- a/framework/base/src/lib.rs +++ b/framework/base/src/lib.rs @@ -43,7 +43,7 @@ pub use storage::{storage_clear, storage_get, storage_get_len, storage_set}; pub mod imports { pub use crate::{ abi::TypeAbi, - api::{ErrorApiImpl, ManagedTypeApi}, + api::{ErrorApiImpl, ManagedTypeApi, VMApi}, arrayvec::ArrayVec, codec::{ multi_types::*, DecodeError, IntoMultiValue, NestedDecode, NestedEncode, TopDecode, diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs index cdabec8ce5..5429a62e81 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs @@ -7,9 +7,6 @@ use crate::cmd::contract::generate_snippets::{ snippet_type_map::{handle_abi_type, RustTypeString}, }; -const ENV: &str = "Env:"; -const COLON: char = ':'; - pub(crate) fn write_content(file: &mut File, abi: ContractAbi) { write_header_impl_constructor(file); for constructor_abi in abi.constructors { @@ -32,7 +29,7 @@ pub(crate) fn write_content(file: &mut File, abi: ContractAbi) { fn write_header_impl_constructor(file: &mut File) { writeln!( file, - r#"impl TxProxyMethods + r#"impl TxProxyMethods where Env: TxEnv, Env::Api: VMApi, @@ -59,8 +56,8 @@ where } fn write_constructor_header(file: &mut File, contructor_abi: EndpointAbi) { - write_fn_signature(file, contructor_abi); - write_constructor_output(file); + write_fn_signature(file, contructor_abi.clone()); + write_constructor_output(file, contructor_abi.outputs); } fn write_endpoint_header(file: &mut File, contructor_abi: EndpointAbi) { @@ -84,10 +81,26 @@ fn write_parameters(file: &mut File, inputs: Vec) { write!(file, "\t) ").unwrap(); } -fn write_constructor_output(file: &mut File) { +fn write_constructor_output(file: &mut File, outputs: Vec) { + write!( + file, + "-> Tx< + Env, + From, + (), + (), + Gas, + DeployCall, + OriginalResultMarker<" + ) + .unwrap(); + + parse_and_write_outputs(file, outputs); + writeln!( file, - "-> multiversx_sc::types::Tx, OriginalResultMarker<()>>\n\t{{" + ">, + > {{" ) .unwrap(); } @@ -95,7 +108,7 @@ fn write_constructor_output(file: &mut File) { fn write_endpoint_output(file: &mut File, outputs: Vec) { write!( file, - "-> multiversx_sc::types::Tx< + "-> Tx< Env, From, To, @@ -106,11 +119,7 @@ fn write_endpoint_output(file: &mut File, outputs: Vec) { ) .unwrap(); - if outputs.is_empty() { - write!(file, "()").unwrap(); - } else { - parse_and_write_outputs(file, outputs); - } + parse_and_write_outputs(file, outputs); writeln!( file, @@ -128,12 +137,7 @@ fn write_constructor_content(file: &mut File, inputs: Vec) { ) .unwrap(); for input in inputs.iter() { - writeln!( - file, - "\t\t\t.argument(&{})", - input.arg_name // .argument(&arg0)" - ) - .unwrap(); + writeln!(file, "\t\t\t.argument(&{})", input.arg_name).unwrap(); } writeln!(file, "\t\t\t.original_result()").unwrap(); } @@ -149,12 +153,7 @@ fn write_endpoint_content(file: &mut File, function_name: String, inputs: Vec,", + "\t\tArg{index}: CodecInto<{}>,", type_print ) .unwrap(); @@ -209,46 +208,22 @@ fn write_end_of_function(file: &mut File) { write_newline(file); } +fn adjust_type_name(original_rust_name: &str) -> String { + original_rust_name + .replace("multiversx_sc::api::uncallable::UncallableApi", "Env::Api") + .replace("$API", "Env::Api") + .to_string() +} + fn parse_and_write_outputs(file: &mut File, outputs: Vec) { - for output in outputs { - let env_api = output - .type_names - .rust - .replace("multiversx_sc::api::uncallable::UncallableApi", "Env::Api") - .replace("$API", "Env::Api") - .to_string(); - - let mut current_string = String::new(); - let mut found_words = Vec::new(); - - for character in env_api.chars() { - if character == COLON { - // adjust_on_colon_suffix(character, current_string, found_words); - if current_string.ends_with(COLON) && !current_string.ends_with(ENV) { - if !current_string.is_empty() - && current_string.chars().next().unwrap().is_uppercase() - { - found_words.push(current_string[..current_string.len() - 1].to_string()); - } - current_string.clear(); - } else { - current_string.push(character); - } - } else if character == ' ' && current_string.ends_with(',') { - if !current_string.is_empty() && current_string.chars().next().unwrap().is_uppercase() - { - current_string.push(character); - found_words.push(current_string.clone()); - current_string.clear(); - } else { - current_string.push(character); - } - } else { - current_string.push(character); - } - } - - found_words.push(current_string); - write!(file, "{}", found_words.join("")).unwrap(); + match outputs.len() { + 0 => { + write!(file, "()").unwrap(); + }, + 1 => { + let adjusted = adjust_type_name(&outputs[0].type_names.rust); + write!(file, "{adjusted}").unwrap(); + }, + _ => panic!("multiple outputs not yet supported"), } } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs index 7af38cd93a..f5e82eced7 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs @@ -9,9 +9,7 @@ const PREFIX_AUTO_GENERATED: &str = "/////////////////////////////////////////// const IMPORTS: &str = "#![allow(clippy::all)] -use multiversx_sc::api::VMApi; - -multiversx_sc::imports!();"; +use multiversx_sc::imports::*;"; pub(crate) fn write_header(file: &mut File) { writeln!(file, "{PREFIX_AUTO_GENERATED}").unwrap(); From e294fff0b71f80e3258453d424d196bdb084d1f7 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 13 Mar 2024 12:19:19 +0100 Subject: [PATCH 075/461] tx proxy gen - indent using spaces instad of tabs --- .../generate_proxy/proxy_sc_functions_gen.rs | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs index 5429a62e81..020eb1d71b 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs @@ -74,11 +74,11 @@ fn write_fn_signature(file: &mut File, endpoint_abi: EndpointAbi) { fn write_parameters(file: &mut File, inputs: Vec) { writeln!(file, "(").unwrap(); - writeln!(file, "\t\tself,").unwrap(); + writeln!(file, " self,").unwrap(); for (index, input) in inputs.iter().enumerate() { - writeln!(file, "\t\t{}: Arg{index},", &input.arg_name).unwrap(); + writeln!(file, " {}: Arg{index},", &input.arg_name).unwrap(); } - write!(file, "\t) ").unwrap(); + write!(file, " ) ").unwrap(); } fn write_constructor_output(file: &mut File, outputs: Vec) { @@ -132,20 +132,20 @@ fn write_endpoint_output(file: &mut File, outputs: Vec) { fn write_constructor_content(file: &mut File, inputs: Vec) { writeln!( file, - "\t\tself.wrapped_tx + " self.wrapped_tx .raw_deploy()" ) .unwrap(); for input in inputs.iter() { - writeln!(file, "\t\t\t.argument(&{})", input.arg_name).unwrap(); + writeln!(file, " .argument(&{})", input.arg_name).unwrap(); } - writeln!(file, "\t\t\t.original_result()").unwrap(); + writeln!(file, " .original_result()").unwrap(); } fn write_endpoint_content(file: &mut File, function_name: String, inputs: Vec) { writeln!( file, - "\t\tself.wrapped_tx + " self.wrapped_tx .raw_call() .function_name(\"{}\")", function_name @@ -153,19 +153,19 @@ fn write_endpoint_content(file: &mut File, function_name: String, inputs: Vec) { if !docs.is_empty() { - write!(file, "\t//").unwrap(); + write!(file, " //").unwrap(); } for abi_doc in docs { @@ -184,7 +184,7 @@ fn write_args(file: &mut File, inputs: Vec) { write_argument(file, index, input.type_names.abi.to_string()); } - write!(file, "\t>").unwrap(); + write!(file, " >").unwrap(); } fn write_argument(file: &mut File, index: usize, type_name: String) { @@ -197,14 +197,14 @@ fn write_argument(file: &mut File, index: usize, type_name: String) { writeln!( file, - "\t\tArg{index}: CodecInto<{}>,", + " Arg{index}: CodecInto<{}>,", type_print ) .unwrap(); } fn write_end_of_function(file: &mut File) { - writeln!(file, "\t}}").unwrap(); + writeln!(file, " }}").unwrap(); write_newline(file); } From 6867c940cfab0a77e4e5ae3288ade406848c7a89 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 13 Mar 2024 12:19:28 +0100 Subject: [PATCH 076/461] cargo fmt --- framework/base/src/abi/contract_abi.rs | 3 ++- framework/meta/src/abi_json/contract_abi_json.rs | 5 ++++- .../cmd/contract/generate_proxy/proxy_sc_functions_gen.rs | 7 +------ .../meta/src/cmd/contract/sc_config/contract_variant.rs | 5 ++++- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/framework/base/src/abi/contract_abi.rs b/framework/base/src/abi/contract_abi.rs index 793b9eed5d..2c8ad67fba 100644 --- a/framework/base/src/abi/contract_abi.rs +++ b/framework/base/src/abi/contract_abi.rs @@ -41,7 +41,8 @@ impl ContractAbi { self.constructors .extend_from_slice(other.constructors.as_slice()); self.endpoints.extend_from_slice(other.endpoints.as_slice()); - self.upgrade_constructors.extend_from_slice(other.upgrade_constructors.as_slice()); + self.upgrade_constructors + .extend_from_slice(other.upgrade_constructors.as_slice()); self.events.extend_from_slice(other.events.as_slice()); self.promise_callbacks .extend_from_slice(other.promise_callbacks.as_slice()); diff --git a/framework/meta/src/abi_json/contract_abi_json.rs b/framework/meta/src/abi_json/contract_abi_json.rs index 0d845544fe..58c0865eee 100644 --- a/framework/meta/src/abi_json/contract_abi_json.rs +++ b/framework/meta/src/abi_json/contract_abi_json.rs @@ -52,7 +52,10 @@ impl From<&ContractAbi> for ContractAbiJson { docs: abi.docs.iter().map(|d| d.to_string()).collect(), name: abi.name.to_string(), constructor: abi.constructors.first().map(ConstructorAbiJson::from), - upgrade_constructor: abi.upgrade_constructors.first().map(ConstructorAbiJson::from), + upgrade_constructor: abi + .upgrade_constructors + .first() + .map(ConstructorAbiJson::from), endpoints: abi.endpoints.iter().map(EndpointAbiJson::from).collect(), promises_callback_names: abi .promise_callbacks diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs index 020eb1d71b..6abdf37fc4 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs @@ -195,12 +195,7 @@ fn write_argument(file: &mut File, index: usize, type_name: String) { .replace("StaticApi", "Env::Api") .to_string(); - writeln!( - file, - " Arg{index}: CodecInto<{}>,", - type_print - ) - .unwrap(); + writeln!(file, " Arg{index}: CodecInto<{}>,", type_print).unwrap(); } fn write_end_of_function(file: &mut File) { diff --git a/framework/meta/src/cmd/contract/sc_config/contract_variant.rs b/framework/meta/src/cmd/contract/sc_config/contract_variant.rs index e1ff06da5d..4467705eef 100644 --- a/framework/meta/src/cmd/contract/sc_config/contract_variant.rs +++ b/framework/meta/src/cmd/contract/sc_config/contract_variant.rs @@ -172,7 +172,10 @@ impl std::fmt::Debug for ContractVariant { .field("config_name", &self.contract_id) .field("public_name", &self.contract_name) .field("num-constructors", &self.abi.constructors.len()) - .field("num-upgrade-constructors", &self.abi.upgrade_constructors.len()) + .field( + "num-upgrade-constructors", + &self.abi.upgrade_constructors.len(), + ) .field("num-endpoints", &self.abi.endpoints.len()) .field("settings", &self.settings) .finish() From 48caa550a5a01bf0451eb666dff4bcf500f80d14 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 13 Mar 2024 12:24:19 +0100 Subject: [PATCH 077/461] tx proxy gen - doc fix --- contracts/examples/adder/src/temp_proxy_v2.rs | 32 ++++++++++++++++--- framework/base/src/lib.rs | 4 +-- .../generate_proxy/proxy_sc_functions_gen.rs | 6 ++-- 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/contracts/examples/adder/src/temp_proxy_v2.rs b/contracts/examples/adder/src/temp_proxy_v2.rs index ac17677128..2d7a9b4c76 100644 --- a/contracts/examples/adder/src/temp_proxy_v2.rs +++ b/contracts/examples/adder/src/temp_proxy_v2.rs @@ -39,15 +39,26 @@ where From: TxFrom, Gas: TxGas, { - pub fn init>>( + pub fn init< + Arg0: CodecInto>, + >( self, initial_value: Arg0, - ) -> Tx, OriginalResultMarker<()>> { + ) -> Tx< + Env, + From, + (), + (), + Gas, + DeployCall, + OriginalResultMarker<()>, + > { self.wrapped_tx .raw_deploy() .argument(&initial_value) .original_result() } + } impl TxProxyMethods where @@ -74,15 +85,26 @@ where .original_result() } - //Add desired amount to the storage variable. - pub fn add>>( + /// Add desired amount to the storage variable. + pub fn add< + Arg0: CodecInto>, + >( self, value: Arg0, - ) -> Tx, OriginalResultMarker<()>> { + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { self.wrapped_tx .raw_call() .function_name("add") .argument(&value) .original_result() } + } diff --git a/framework/base/src/lib.rs b/framework/base/src/lib.rs index e209315d7a..7f2a8b1c2b 100644 --- a/framework/base/src/lib.rs +++ b/framework/base/src/lib.rs @@ -46,8 +46,8 @@ pub mod imports { api::{ErrorApiImpl, ManagedTypeApi, VMApi}, arrayvec::ArrayVec, codec::{ - multi_types::*, DecodeError, IntoMultiValue, NestedDecode, NestedEncode, TopDecode, - TopEncode, + multi_types::*, CodecFrom, CodecFromSelf, CodecInto, DecodeError, IntoMultiValue, + NestedDecode, NestedEncode, TopDecode, TopEncode, }, contract_base::{ContractBase, ProxyObjBase, ProxyObjNew}, err_msg, diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs index 6abdf37fc4..b35e402a9d 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs @@ -66,7 +66,7 @@ fn write_endpoint_header(file: &mut File, contructor_abi: EndpointAbi) { } fn write_fn_signature(file: &mut File, endpoint_abi: EndpointAbi) { - write_info_endpoint(file, endpoint_abi.docs); + write_endpoint_docs(file, endpoint_abi.docs); write_function_header_endpoint(file, endpoint_abi.rust_method_name); write_args(file, endpoint_abi.inputs.clone()); write_parameters(file, endpoint_abi.inputs); @@ -163,9 +163,9 @@ fn write_function_header_endpoint(file: &mut File, rust_method_name: String) { write!(file, " pub fn {rust_method_name}").unwrap(); } -fn write_info_endpoint(file: &mut File, docs: Vec) { +fn write_endpoint_docs(file: &mut File, docs: Vec) { if !docs.is_empty() { - write!(file, " //").unwrap(); + write!(file, " /// ").unwrap(); } for abi_doc in docs { From aa24ecd7d35af072c299be31999a28ec3ef72079 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Wed, 13 Mar 2024 13:49:24 +0200 Subject: [PATCH 078/461] explicit type name rust --- framework/base/src/abi/type_abi_impl_basic.rs | 36 +++++++++++++++++++ .../base/src/storage/mappers/bi_di_mapper.rs | 4 +++ .../src/storage/mappers/linked_list_mapper.rs | 4 +++ .../base/src/storage/mappers/map_mapper.rs | 4 +++ .../base/src/storage/mappers/queue_mapper.rs | 4 +++ .../base/src/storage/mappers/set_mapper.rs | 4 +++ .../mappers/token/fungible_token_mapper.rs | 4 +++ .../token/non_fungible_token_mapper.rs | 4 +++ .../src/storage/mappers/unique_id_mapper.rs | 4 +++ .../storage/mappers/unordered_set_mapper.rs | 4 +++ .../base/src/storage/mappers/user_mapper.rs | 4 +++ .../base/src/storage/mappers/vec_mapper.rs | 4 +++ .../src/types/interaction/function_call.rs | 4 +++ .../types/interaction/managed_arg_buffer.rs | 4 +++ framework/base/src/types/io/sc_result.rs | 4 +++ .../base/src/types/managed/basic/big_int.rs | 4 +++ .../src/types/managed/basic/big_int_sign.rs | 4 +++ .../src/types/managed/basic/elliptic_curve.rs | 4 +++ .../esdt_token_payment_multi_value.rs | 4 +++ .../multi_value/multi_value_encoded.rs | 4 +++ .../types/managed/wrapped/managed_address.rs | 4 +++ .../managed/wrapped/managed_byte_array.rs | 4 +++ .../types/managed/wrapped/managed_option.rs | 4 +++ .../src/types/managed/wrapped/managed_vec.rs | 4 +++ .../src/types/static_buffer/sparse_array.rs | 4 +++ .../contract/generate_proxy/proxy_gen_main.rs | 2 +- 26 files changed, 133 insertions(+), 1 deletion(-) diff --git a/framework/base/src/abi/type_abi_impl_basic.rs b/framework/base/src/abi/type_abi_impl_basic.rs index 00965215de..133e67085a 100644 --- a/framework/base/src/abi/type_abi_impl_basic.rs +++ b/framework/base/src/abi/type_abi_impl_basic.rs @@ -19,6 +19,10 @@ impl TypeAbi for &T { T::type_name() } + fn type_name_rust() -> TypeName { + T::type_name_rust() + } + fn provide_type_descriptions(accumulator: &mut TDC) { T::provide_type_descriptions(accumulator); } @@ -29,6 +33,10 @@ impl TypeAbi for Box { T::type_name() } + fn type_name_rust() -> TypeName { + T::type_name_rust() + } + fn provide_type_descriptions(accumulator: &mut TDC) { T::provide_type_descriptions(accumulator); } @@ -46,6 +54,10 @@ impl TypeAbi for &[T] { repr } + fn type_name_rust() -> TypeName { + T::type_name_rust() + } + fn provide_type_descriptions(accumulator: &mut TDC) { T::provide_type_descriptions(accumulator); } @@ -56,6 +68,10 @@ impl TypeAbi for Vec { <&[T]>::type_name() } + fn type_name_rust() -> TypeName { + <&[T]>::type_name_rust() + } + fn provide_type_descriptions(accumulator: &mut TDC) { T::provide_type_descriptions(accumulator); } @@ -66,6 +82,10 @@ impl TypeAbi for ArrayVec { <&[T]>::type_name() } + fn type_name_rust() -> TypeName { + <&[T]>::type_name_rust() + } + fn provide_type_descriptions(accumulator: &mut TDC) { T::provide_type_descriptions(accumulator); } @@ -76,6 +96,10 @@ impl TypeAbi for Box<[T]> { <&[T]>::type_name() } + fn type_name_rust() -> TypeName { + <&[T]>::type_name_rust() + } + fn provide_type_descriptions(accumulator: &mut TDC) { T::provide_type_descriptions(accumulator); } @@ -91,12 +115,20 @@ impl TypeAbi for &str { fn type_name() -> TypeName { TypeName::type_name() } + + fn type_name_rust() -> TypeName { + TypeName::type_name_rust() + } } impl TypeAbi for Box { fn type_name() -> TypeName { TypeName::type_name() } + + fn type_name_rust() -> TypeName { + TypeName::type_name_rust() + } } macro_rules! type_abi_name_only { @@ -144,6 +176,10 @@ impl TypeAbi for Result { T::type_name() } + fn type_name_rust() -> TypeName { + T::type_name_rust() + } + /// Similar to the SCResult implementation. fn output_abis(output_names: &[&'static str]) -> OutputAbis { T::output_abis(output_names) diff --git a/framework/base/src/storage/mappers/bi_di_mapper.rs b/framework/base/src/storage/mappers/bi_di_mapper.rs index 42c55e5275..4878e3c3fc 100644 --- a/framework/base/src/storage/mappers/bi_di_mapper.rs +++ b/framework/base/src/storage/mappers/bi_di_mapper.rs @@ -331,6 +331,10 @@ where MultiValueEncoded::>::type_name() } + fn type_name_rust() -> TypeName { + MultiValueEncoded::>::type_name_rust() + } + fn provide_type_descriptions(accumulator: &mut TDC) { K::provide_type_descriptions(accumulator); V::provide_type_descriptions(accumulator); diff --git a/framework/base/src/storage/mappers/linked_list_mapper.rs b/framework/base/src/storage/mappers/linked_list_mapper.rs index d58c0ad19d..38f71f9191 100644 --- a/framework/base/src/storage/mappers/linked_list_mapper.rs +++ b/framework/base/src/storage/mappers/linked_list_mapper.rs @@ -629,6 +629,10 @@ where crate::abi::type_name_variadic::() } + fn type_name_rust() -> TypeName { + T::type_name_rust() + } + fn provide_type_descriptions(accumulator: &mut TDC) { T::provide_type_descriptions(accumulator); } diff --git a/framework/base/src/storage/mappers/map_mapper.rs b/framework/base/src/storage/mappers/map_mapper.rs index af4bbda6ff..e8aac7adc1 100644 --- a/framework/base/src/storage/mappers/map_mapper.rs +++ b/framework/base/src/storage/mappers/map_mapper.rs @@ -559,6 +559,10 @@ where MultiValueEncoded::>::type_name() } + fn type_name_rust() -> TypeName { + MultiValueEncoded::>::type_name_rust() + } + fn provide_type_descriptions(accumulator: &mut TDC) { K::provide_type_descriptions(accumulator); V::provide_type_descriptions(accumulator); diff --git a/framework/base/src/storage/mappers/queue_mapper.rs b/framework/base/src/storage/mappers/queue_mapper.rs index 79ac5f37d7..c2b90f0fe3 100644 --- a/framework/base/src/storage/mappers/queue_mapper.rs +++ b/framework/base/src/storage/mappers/queue_mapper.rs @@ -535,6 +535,10 @@ where crate::abi::type_name_variadic::() } + fn type_name_rust() -> TypeName { + T::type_name_rust() + } + fn provide_type_descriptions(accumulator: &mut TDC) { T::provide_type_descriptions(accumulator); } diff --git a/framework/base/src/storage/mappers/set_mapper.rs b/framework/base/src/storage/mappers/set_mapper.rs index 28941a7a8c..d95ca8df6b 100644 --- a/framework/base/src/storage/mappers/set_mapper.rs +++ b/framework/base/src/storage/mappers/set_mapper.rs @@ -311,6 +311,10 @@ where crate::abi::type_name_variadic::() } + fn type_name_rust() -> TypeName { + T::type_name_rust() + } + fn provide_type_descriptions(accumulator: &mut TDC) { T::provide_type_descriptions(accumulator); } diff --git a/framework/base/src/storage/mappers/token/fungible_token_mapper.rs b/framework/base/src/storage/mappers/token/fungible_token_mapper.rs index 5cc3b88e2a..7f84501071 100644 --- a/framework/base/src/storage/mappers/token/fungible_token_mapper.rs +++ b/framework/base/src/storage/mappers/token/fungible_token_mapper.rs @@ -278,6 +278,10 @@ where TokenIdentifier::::type_name() } + fn type_name_rust() -> TypeName { + TokenIdentifier::::type_name_rust() + } + fn provide_type_descriptions(accumulator: &mut TDC) { TokenIdentifier::::provide_type_descriptions(accumulator); } diff --git a/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs b/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs index 11207c70a3..80946dd2a6 100644 --- a/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs +++ b/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs @@ -408,6 +408,10 @@ where TokenIdentifier::::type_name() } + fn type_name_rust() -> TypeName { + TokenIdentifier::::type_name_rust() + } + fn provide_type_descriptions(accumulator: &mut TDC) { TokenIdentifier::::provide_type_descriptions(accumulator); } diff --git a/framework/base/src/storage/mappers/unique_id_mapper.rs b/framework/base/src/storage/mappers/unique_id_mapper.rs index 779e1a1b71..546fdc9825 100644 --- a/framework/base/src/storage/mappers/unique_id_mapper.rs +++ b/framework/base/src/storage/mappers/unique_id_mapper.rs @@ -227,6 +227,10 @@ where crate::abi::type_name_variadic::() } + fn type_name_rust() -> TypeName { + usize::type_name_rust() + } + fn provide_type_descriptions(accumulator: &mut TDC) { usize::provide_type_descriptions(accumulator); } diff --git a/framework/base/src/storage/mappers/unordered_set_mapper.rs b/framework/base/src/storage/mappers/unordered_set_mapper.rs index fa151759ea..dac6516cca 100644 --- a/framework/base/src/storage/mappers/unordered_set_mapper.rs +++ b/framework/base/src/storage/mappers/unordered_set_mapper.rs @@ -242,6 +242,10 @@ where crate::abi::type_name_variadic::() } + fn type_name_rust() -> TypeName { + T::type_name_rust() + } + fn provide_type_descriptions(accumulator: &mut TDC) { T::provide_type_descriptions(accumulator); } diff --git a/framework/base/src/storage/mappers/user_mapper.rs b/framework/base/src/storage/mappers/user_mapper.rs index bbfdcfb27b..2339b019ab 100644 --- a/framework/base/src/storage/mappers/user_mapper.rs +++ b/framework/base/src/storage/mappers/user_mapper.rs @@ -233,6 +233,10 @@ where crate::abi::type_name_variadic::>() } + fn type_name_rust() -> TypeName { + ManagedAddress::::type_name_rust() + } + fn is_variadic() -> bool { true } diff --git a/framework/base/src/storage/mappers/vec_mapper.rs b/framework/base/src/storage/mappers/vec_mapper.rs index 49c9c159cc..af0afe3278 100644 --- a/framework/base/src/storage/mappers/vec_mapper.rs +++ b/framework/base/src/storage/mappers/vec_mapper.rs @@ -361,6 +361,10 @@ where crate::abi::type_name_variadic::() } + fn type_name_rust() -> TypeName { + T::type_name_rust() + } + fn provide_type_descriptions(accumulator: &mut TDC) { T::provide_type_descriptions(accumulator); } diff --git a/framework/base/src/types/interaction/function_call.rs b/framework/base/src/types/interaction/function_call.rs index 376aec879b..c21ab3a3e3 100644 --- a/framework/base/src/types/interaction/function_call.rs +++ b/framework/base/src/types/interaction/function_call.rs @@ -142,6 +142,10 @@ where crate::abi::type_name_variadic::>() } + fn type_name_rust() -> TypeName { + ManagedAddress::::type_name_rust() + } + fn is_variadic() -> bool { true } diff --git a/framework/base/src/types/interaction/managed_arg_buffer.rs b/framework/base/src/types/interaction/managed_arg_buffer.rs index 7af6346c7b..d9a009e01e 100644 --- a/framework/base/src/types/interaction/managed_arg_buffer.rs +++ b/framework/base/src/types/interaction/managed_arg_buffer.rs @@ -307,4 +307,8 @@ where fn type_name() -> TypeName { <&[ManagedBuffer] as TypeAbi>::type_name() } + + fn type_name_rust() -> TypeName { + <&[ManagedBuffer] as TypeAbi>::type_name_rust() + } } diff --git a/framework/base/src/types/io/sc_result.rs b/framework/base/src/types/io/sc_result.rs index 6278987b45..17d915994e 100644 --- a/framework/base/src/types/io/sc_result.rs +++ b/framework/base/src/types/io/sc_result.rs @@ -132,6 +132,10 @@ impl TypeAbi for SCResult { T::type_name() } + fn type_name_rust() -> TypeName { + T::type_name_rust() + } + /// Gives `SCResult<()>` the possibility to produce 0 output ABIs, /// just like `()`. /// It is also possible to have `SCResult>`, diff --git a/framework/base/src/types/managed/basic/big_int.rs b/framework/base/src/types/managed/basic/big_int.rs index 227a298d02..c2aed1704a 100644 --- a/framework/base/src/types/managed/basic/big_int.rs +++ b/framework/base/src/types/managed/basic/big_int.rs @@ -302,6 +302,10 @@ impl crate::abi::TypeAbi for BigInt { fn type_name() -> TypeName { TypeName::from("BigInt") } + + fn type_name_rust() -> TypeName { + TypeName::from("multiversx_sc::types::BigInt<$API>") + } } impl BigInt { diff --git a/framework/base/src/types/managed/basic/big_int_sign.rs b/framework/base/src/types/managed/basic/big_int_sign.rs index 5d850afe79..c0c7e01d81 100644 --- a/framework/base/src/types/managed/basic/big_int_sign.rs +++ b/framework/base/src/types/managed/basic/big_int_sign.rs @@ -83,4 +83,8 @@ impl crate::abi::TypeAbi for Sign { fn type_name() -> TypeName { TypeName::from("Sign") } + + fn type_name_rust() -> TypeName { + TypeName::from("multiversx_sc::types::Sign<$API>") + } } diff --git a/framework/base/src/types/managed/basic/elliptic_curve.rs b/framework/base/src/types/managed/basic/elliptic_curve.rs index d70f7f738d..95fecb7e2a 100644 --- a/framework/base/src/types/managed/basic/elliptic_curve.rs +++ b/framework/base/src/types/managed/basic/elliptic_curve.rs @@ -422,4 +422,8 @@ impl TypeAbi for EllipticCurve { fn type_name() -> TypeName { TypeName::from("EllipticCurve") } + + fn type_name_rust() -> TypeName { + TypeName::from("multiversx_sc::types::EllipticCurve<$API>") + } } diff --git a/framework/base/src/types/managed/multi_value/esdt_token_payment_multi_value.rs b/framework/base/src/types/managed/multi_value/esdt_token_payment_multi_value.rs index 66149fe04c..f1ce48e609 100644 --- a/framework/base/src/types/managed/multi_value/esdt_token_payment_multi_value.rs +++ b/framework/base/src/types/managed/multi_value/esdt_token_payment_multi_value.rs @@ -106,6 +106,10 @@ where MultiValue3::, u64, BigUint>::type_name() } + fn type_name_rust() -> TypeName { + MultiValue3::, u64, BigUint>::type_name_rust() + } + fn is_variadic() -> bool { true } diff --git a/framework/base/src/types/managed/multi_value/multi_value_encoded.rs b/framework/base/src/types/managed/multi_value/multi_value_encoded.rs index ebf8e0cb69..6cbb85fe54 100644 --- a/framework/base/src/types/managed/multi_value/multi_value_encoded.rs +++ b/framework/base/src/types/managed/multi_value/multi_value_encoded.rs @@ -231,6 +231,10 @@ where crate::abi::type_name_variadic::() } + fn type_name_rust() -> TypeName { + T::type_name_rust() + } + fn provide_type_descriptions(accumulator: &mut TDC) { T::provide_type_descriptions(accumulator); } diff --git a/framework/base/src/types/managed/wrapped/managed_address.rs b/framework/base/src/types/managed/wrapped/managed_address.rs index 80de540394..e65469fc63 100644 --- a/framework/base/src/types/managed/wrapped/managed_address.rs +++ b/framework/base/src/types/managed/wrapped/managed_address.rs @@ -242,6 +242,10 @@ where fn type_name() -> TypeName { Address::type_name() } + + fn type_name_rust() -> TypeName { + Address::type_name_rust() + } } impl SCLowerHex for ManagedAddress { diff --git a/framework/base/src/types/managed/wrapped/managed_byte_array.rs b/framework/base/src/types/managed/wrapped/managed_byte_array.rs index ed41ba4951..413152bcc1 100644 --- a/framework/base/src/types/managed/wrapped/managed_byte_array.rs +++ b/framework/base/src/types/managed/wrapped/managed_byte_array.rs @@ -211,6 +211,10 @@ where fn type_name() -> TypeName { <&[u8; N] as TypeAbi>::type_name() } + + fn type_name_rust() -> TypeName { + <&[u8; N] as TypeAbi>::type_name_rust() + } } impl SCLowerHex for ManagedByteArray diff --git a/framework/base/src/types/managed/wrapped/managed_option.rs b/framework/base/src/types/managed/wrapped/managed_option.rs index 1fe4366eb0..422a5e7753 100644 --- a/framework/base/src/types/managed/wrapped/managed_option.rs +++ b/framework/base/src/types/managed/wrapped/managed_option.rs @@ -279,6 +279,10 @@ where Option::::type_name() } + fn type_name_rust() -> TypeName { + Option::::type_name_rust() + } + fn provide_type_descriptions(accumulator: &mut TDC) { T::provide_type_descriptions(accumulator); } diff --git a/framework/base/src/types/managed/wrapped/managed_vec.rs b/framework/base/src/types/managed/wrapped/managed_vec.rs index f7b8cad171..d66e09436b 100644 --- a/framework/base/src/types/managed/wrapped/managed_vec.rs +++ b/framework/base/src/types/managed/wrapped/managed_vec.rs @@ -688,6 +688,10 @@ where <&[T] as TypeAbi>::type_name() } + fn type_name_rust() -> TypeName { + <&[T] as TypeAbi>::type_name_rust() + } + fn provide_type_descriptions(accumulator: &mut TDC) { T::provide_type_descriptions(accumulator); } diff --git a/framework/base/src/types/static_buffer/sparse_array.rs b/framework/base/src/types/static_buffer/sparse_array.rs index 2c6ddd61e2..59001062b1 100644 --- a/framework/base/src/types/static_buffer/sparse_array.rs +++ b/framework/base/src/types/static_buffer/sparse_array.rs @@ -311,6 +311,10 @@ where <&[usize] as TypeAbi>::type_name() } + fn type_name_rust() -> TypeName { + <&[usize] as TypeAbi>::type_name_rust() + } + fn provide_type_descriptions(accumulator: &mut TDC) { usize::provide_type_descriptions(accumulator); } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs index 10c1c33b1a..32916d02f7 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs @@ -13,7 +13,7 @@ use super::{ }, }; -const PROXIES_SOURCE_FILE_NAME: &str = "/output/proxies_struct_interactor_main.rs"; +const PROXIES_SOURCE_FILE_NAME: &str = "/output/proxy.rs"; impl MetaConfig { pub fn generate_rust_proxies_struct(&self, args: &GenerateProxyArgs) { From 6ff7b38e23c65b6753258fbad641ed2cd63dc34a Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Wed, 13 Mar 2024 20:01:41 +0200 Subject: [PATCH 079/461] change proxy name --- contracts/examples/adder/src/temp_proxy_v2.rs | 10 +++++----- .../contract/generate_proxy/proxy_gen_main.rs | 6 +++--- .../generate_proxy/proxy_sc_functions_gen.rs | 12 ++++++------ .../generate_proxy/proxy_template_gen.rs | 16 ++++++++-------- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/contracts/examples/adder/src/temp_proxy_v2.rs b/contracts/examples/adder/src/temp_proxy_v2.rs index 2d7a9b4c76..370df8324b 100644 --- a/contracts/examples/adder/src/temp_proxy_v2.rs +++ b/contracts/examples/adder/src/temp_proxy_v2.rs @@ -15,14 +15,14 @@ where To: TxTo, Gas: TxGas, { - type TxProxyMethods = TxProxyMethods; + type TxProxyMethods = TxAdderMethods; fn prepare_methods(self, tx: Tx) -> Self::TxProxyMethods { - TxProxyMethods { wrapped_tx: tx } + TxAdderMethods { wrapped_tx: tx } } } -pub struct TxProxyMethods +pub struct TxAdderMethods where Env: TxEnv, From: TxFrom, @@ -32,7 +32,7 @@ where wrapped_tx: Tx, } -impl TxProxyMethods +impl TxAdderMethods where Env: TxEnv, Env::Api: VMApi, @@ -60,7 +60,7 @@ where } } -impl TxProxyMethods +impl TxAdderMethods where Env: TxEnv, Env::Api: VMApi, diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs index 32916d02f7..3510eb640a 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs @@ -24,8 +24,8 @@ impl MetaConfig { fn write_proxies_to_file(mut file: File, abi: ContractAbi) { write_header(&mut file); - write_struct_template(&mut file); - write_impl_for_tx_proxy(&mut file); - write_struct_tx_proxy_methods(&mut file); + write_struct_template(&mut file, &abi.name); + write_impl_for_tx_proxy(&mut file, &abi.name); + write_struct_tx_proxy_methods(&mut file, &abi.name); write_content(&mut file, abi); } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs index b35e402a9d..e9c895ac40 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs @@ -8,7 +8,7 @@ use crate::cmd::contract::generate_snippets::{ }; pub(crate) fn write_content(file: &mut File, abi: ContractAbi) { - write_header_impl_constructor(file); + write_header_impl_constructor(file, &abi.name); for constructor_abi in abi.constructors { write_constructor_header(file, constructor_abi.clone()); write_constructor_content(file, constructor_abi.inputs); @@ -16,7 +16,7 @@ pub(crate) fn write_content(file: &mut File, abi: ContractAbi) { } writeln!(file, "}}").unwrap(); - write_header_impl_endpoints(file); + write_header_impl_endpoints(file, &abi.name); for endpoint_abi in abi.endpoints { write_endpoint_header(file, endpoint_abi.clone()); write_endpoint_content(file, endpoint_abi.name, endpoint_abi.inputs); @@ -26,10 +26,10 @@ pub(crate) fn write_content(file: &mut File, abi: ContractAbi) { writeln!(file, "}}").unwrap(); } -fn write_header_impl_constructor(file: &mut File) { +fn write_header_impl_constructor(file: &mut File, name: &String) { writeln!( file, - r#"impl TxProxyMethods + r#"impl Tx{name}Methods where Env: TxEnv, Env::Api: VMApi, @@ -40,10 +40,10 @@ where .unwrap(); } -fn write_header_impl_endpoints(file: &mut File) { +fn write_header_impl_endpoints(file: &mut File, name: &String) { writeln!( file, - r#"impl TxProxyMethods + r#"impl Tx{name}Methods where Env: TxEnv, Env::Api: VMApi, diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs index f5e82eced7..e476cb212f 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs @@ -18,25 +18,25 @@ pub(crate) fn write_header(file: &mut File) { write_newline(file); } -pub(crate) fn write_struct_template(file: &mut File) { - writeln!(file, "pub struct TxProxy;").unwrap(); +pub(crate) fn write_struct_template(file: &mut File, name: &String) { + writeln!(file, "pub struct Tx{name};").unwrap(); write_newline(file) } -pub(crate) fn write_impl_for_tx_proxy(file: &mut File) { +pub(crate) fn write_impl_for_tx_proxy(file: &mut File, name: &String) { writeln!( file, - r#"impl TxProxyTraitV2 for TxProxy + r#"impl TxProxyTraitV2 for Tx{name} where Env: TxEnv, From: TxFrom, To: TxTo, Gas: TxGas, {{ - type TxProxyMethods = TxProxyMethods; + type TxProxyMethods = Tx{name}Methods; fn prepare_methods(self, tx: Tx) -> Self::TxProxyMethods {{ - TxProxyMethods {{ wrapped_tx: tx }} + Tx{name}Methods {{ wrapped_tx: tx }} }} }}"# ) @@ -45,10 +45,10 @@ where write_newline(file); } -pub(crate) fn write_struct_tx_proxy_methods(file: &mut File) { +pub(crate) fn write_struct_tx_proxy_methods(file: &mut File, name: &String) { writeln!( file, - r#"pub struct TxProxyMethods + r#"pub struct Tx{name}Methods where Env: TxEnv, From: TxFrom, From 199f639cd3f502dbf9ca72623f9d8e0d235c6f25 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 14 Mar 2024 10:42:40 +0200 Subject: [PATCH 080/461] removed proxy v1 and changed v2 as the main --- contracts/examples/adder/src/adder.rs | 1 - contracts/examples/adder/src/temp_proxy.rs | 88 +++++++++----- contracts/examples/adder/src/temp_proxy_v2.rs | 110 ------------------ .../tests/adder_blackbox_chained_test.rs | 6 +- .../tests/adder_blackbox_legacy_proxy_test.rs | 2 +- .../adder/tests/adder_blackbox_test.rs | 17 +-- framework/base/src/types/interaction/tx.rs | 31 +---- .../base/src/types/interaction/tx_proxy.rs | 8 +- 8 files changed, 72 insertions(+), 191 deletions(-) delete mode 100644 contracts/examples/adder/src/temp_proxy_v2.rs diff --git a/contracts/examples/adder/src/adder.rs b/contracts/examples/adder/src/adder.rs index c6995b9d11..b9f5fe86fe 100644 --- a/contracts/examples/adder/src/adder.rs +++ b/contracts/examples/adder/src/adder.rs @@ -3,7 +3,6 @@ use multiversx_sc::imports::*; pub mod temp_proxy; -pub mod temp_proxy_v2; /// One of the simplest smart contracts possible, /// it holds a single variable in storage, which anyone can increment. diff --git a/contracts/examples/adder/src/temp_proxy.rs b/contracts/examples/adder/src/temp_proxy.rs index a3e72adde0..8a1569374e 100644 --- a/contracts/examples/adder/src/temp_proxy.rs +++ b/contracts/examples/adder/src/temp_proxy.rs @@ -1,76 +1,110 @@ -#![allow(clippy::all)] +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// -use multiversx_sc::api::VMApi; +#![allow(clippy::all)] -multiversx_sc::imports!(); +use multiversx_sc::imports::*; pub struct TxProxy; -impl TxProxyTrait for TxProxy +impl TxProxyTrait for TxProxy where Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, { - type TxProxyMethods = TxProxyMethods; + type TxProxyMethods = TxAdderMethods; - fn env(self, env: Env) -> Self::TxProxyMethods { - TxProxyMethods { env } + fn prepare_methods(self, tx: Tx) -> Self::TxProxyMethods { + TxAdderMethods { wrapped_tx: tx } } } -pub struct TxProxyMethods { - pub env: Env, +pub struct TxAdderMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, } -impl TxProxyMethods +impl TxAdderMethods where Env: TxEnv, Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, { - pub fn init>>( + pub fn init< + Arg0: CodecInto>, + >( self, initial_value: Arg0, - ) -> multiversx_sc::types::Tx, OriginalResultMarker<()>> - { - Tx::new_with_env(self.env) + ) -> Tx< + Env, + From, + (), + (), + Gas, + DeployCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx .raw_deploy() .argument(&initial_value) .original_result() } +} +impl TxAdderMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ pub fn sum( self, - ) -> multiversx_sc::types::Tx< + ) -> Tx< Env, + From, + To, (), - (), - (), - (), + Gas, FunctionCall, - OriginalResultMarker>>, + OriginalResultMarker>, > { - Tx::new_with_env(self.env) + self.wrapped_tx .raw_call() .function_name("getSum") .original_result() } - //Add desired amount to the storage variable. - pub fn add>>( + /// Add desired amount to the storage variable. + pub fn add< + Arg0: CodecInto>, + >( self, value: Arg0, - ) -> multiversx_sc::types::Tx< + ) -> Tx< Env, + From, + To, (), - (), - (), - (), + Gas, FunctionCall, OriginalResultMarker<()>, > { - Tx::new_with_env(self.env) + self.wrapped_tx .raw_call() .function_name("add") .argument(&value) .original_result() } + } diff --git a/contracts/examples/adder/src/temp_proxy_v2.rs b/contracts/examples/adder/src/temp_proxy_v2.rs deleted file mode 100644 index 370df8324b..0000000000 --- a/contracts/examples/adder/src/temp_proxy_v2.rs +++ /dev/null @@ -1,110 +0,0 @@ -//////////////////////////////////////////////////// -////////////////// AUTO-GENERATED ////////////////// -//////////////////////////////////////////////////// - -#![allow(clippy::all)] - -use multiversx_sc::imports::*; - -pub struct TxProxy; - -impl TxProxyTraitV2 for TxProxy -where - Env: TxEnv, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ - type TxProxyMethods = TxAdderMethods; - - fn prepare_methods(self, tx: Tx) -> Self::TxProxyMethods { - TxAdderMethods { wrapped_tx: tx } - } -} - -pub struct TxAdderMethods -where - Env: TxEnv, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ - wrapped_tx: Tx, -} - -impl TxAdderMethods -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - Gas: TxGas, -{ - pub fn init< - Arg0: CodecInto>, - >( - self, - initial_value: Arg0, - ) -> Tx< - Env, - From, - (), - (), - Gas, - DeployCall, - OriginalResultMarker<()>, - > { - self.wrapped_tx - .raw_deploy() - .argument(&initial_value) - .original_result() - } - -} -impl TxAdderMethods -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ - pub fn sum( - self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>, - > { - self.wrapped_tx - .raw_call() - .function_name("getSum") - .original_result() - } - - /// Add desired amount to the storage variable. - pub fn add< - Arg0: CodecInto>, - >( - self, - value: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { - self.wrapped_tx - .raw_call() - .function_name("add") - .argument(&value) - .original_result() - } - -} diff --git a/contracts/examples/adder/tests/adder_blackbox_chained_test.rs b/contracts/examples/adder/tests/adder_blackbox_chained_test.rs index 2edc5e4100..234a4aea52 100644 --- a/contracts/examples/adder/tests/adder_blackbox_chained_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_chained_test.rs @@ -27,7 +27,7 @@ fn adder_blackbox_chained() { ) .chain_deploy(|tx| { tx.from(AddressExpr("owner")) - .typed_v2(temp_proxy_v2::TxProxy) + .typed(temp_proxy::TxProxy) .init(5u32) .code(MxscExpr("output/adder.mxsc.json")) .with_result(WithResultNewAddress::new(|new_address| { @@ -36,7 +36,7 @@ fn adder_blackbox_chained() { }) .chain_query(|tx| { tx.to(ScExpr("adder")) - .typed_v2(temp_proxy_v2::TxProxy) + .typed(temp_proxy::TxProxy) .sum() .with_result(WithResultSimilar::new(|value: BigUint| { assert_eq!(value, BigUint::from(5u32)); @@ -45,7 +45,7 @@ fn adder_blackbox_chained() { .chain_call(|tx| { tx.from(AddressExpr("owner")) .to(ScExpr("adder")) - .typed_v2(temp_proxy_v2::TxProxy) + .typed(temp_proxy::TxProxy) .add(3u32) .with_result(WithRawTxResponse(|response| { assert!(response.tx_error.is_success()); diff --git a/contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs b/contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs index 373e75f49f..9da1ce9758 100644 --- a/contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs @@ -35,7 +35,7 @@ fn adder_blackbox_legacy_proxy() { world .tx() .from(OWNER) - .typed_v2(temp_proxy_v2::TxProxy) + .typed(temp_proxy::TxProxy) .init(5u32) .code(CODE_EXPR) .with_result(WithResultNewAddress::new(|new_address| { diff --git a/contracts/examples/adder/tests/adder_blackbox_test.rs b/contracts/examples/adder/tests/adder_blackbox_test.rs index 69f94a2e1e..39f9946d7f 100644 --- a/contracts/examples/adder/tests/adder_blackbox_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_test.rs @@ -33,7 +33,7 @@ fn adder_blackbox() { world .tx() .from(OWNER) - .typed_v2(temp_proxy_v2::TxProxy) + .typed(temp_proxy::TxProxy) .init(5u32) .code(CODE_EXPR) .with_result(WithResultNewAddress::new(|new_address| { @@ -44,28 +44,17 @@ fn adder_blackbox() { let value = world .query() .to(SC_ADDER) - .typed_v2(temp_proxy_v2::TxProxy) + .typed(temp_proxy::TxProxy) .sum() .returns(ReturnsSimilar::::new()) .run(); assert_eq!(value, BigUint::from(5u32)); - // TODO: remove world .tx() .from(OWNER) .to(SC_ADDER) - .typed_v1(temp_proxy::TxProxy, |p| p.add(2u32)) - .with_result(WithRawTxResponse(|response| { - assert!(response.tx_error.is_success()); - })) - .run(); - - world - .tx() - .from(OWNER) - .to(SC_ADDER) - .typed_v2(temp_proxy_v2::TxProxy) + .typed(temp_proxy::TxProxy) .add(1u32) .with_result(WithRawTxResponse(|response| { assert!(response.tx_error.is_success()); diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 77d32df17e..49d8b214be 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -15,7 +15,7 @@ use super::{ DeployCall, ExplicitGas, FromSource, FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, TxCodeValue, TxData, TxDataFunctionCall, TxEnv, TxFrom, TxFromSourceValue, TxFromSpecified, TxGas, TxPayment, - TxPaymentEgldOnly, TxProxyTrait, TxProxyTraitV2, TxResultHandler, TxScEnv, TxTo, TxToSpecified, + TxPaymentEgldOnly, TxProxyTrait, TxResultHandler, TxScEnv, TxTo, TxToSpecified, }; #[must_use] @@ -473,34 +473,9 @@ where To: TxTo, Gas: TxGas, { - pub fn typed_v1( - self, - proxy: Proxy, - f: F, - ) -> Tx - where - Proxy: TxProxyTrait, - Payment: TxPayment, - Data: TxData, - RH: TxResultHandler, - F: FnOnce(Proxy::TxProxyMethods) -> Tx, - { - let proxy_methods = proxy.env(self.env); - let proxy_tx = f(proxy_methods); - Tx { - env: proxy_tx.env, - from: self.from, - to: self.to, - payment: proxy_tx.payment, - gas: self.gas, - data: proxy_tx.data, - result_handler: proxy_tx.result_handler, - } - } - - pub fn typed_v2(self, proxy: Proxy) -> Proxy::TxProxyMethods + pub fn typed(self, proxy: Proxy) -> Proxy::TxProxyMethods where - Proxy: TxProxyTraitV2, + Proxy: TxProxyTrait, { proxy.prepare_methods(self) } diff --git a/framework/base/src/types/interaction/tx_proxy.rs b/framework/base/src/types/interaction/tx_proxy.rs index 90ac72d76b..4addee820d 100644 --- a/framework/base/src/types/interaction/tx_proxy.rs +++ b/framework/base/src/types/interaction/tx_proxy.rs @@ -1,12 +1,6 @@ use super::{Tx, TxEnv, TxFrom, TxGas, TxTo}; -pub trait TxProxyTrait { - type TxProxyMethods; - - fn env(self, env: Env) -> Self::TxProxyMethods; -} - -pub trait TxProxyTraitV2 +pub trait TxProxyTrait where Env: TxEnv, From: TxFrom, From 63fc3a8ffc93538b071b6b88e97941f5777fe09d Mon Sep 17 00:00:00 2001 From: Laurentiu Ciobanu Date: Thu, 14 Mar 2024 11:36:48 +0200 Subject: [PATCH 081/461] add idea and zed editor configs to gitignore --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 6e26ebc202..5a6b68624a 100644 --- a/.gitignore +++ b/.gitignore @@ -22,8 +22,10 @@ vm/**/Cargo.lock # These are backup files generated by rustfmt **/*.rs.bk -# VSCode config +# Editors config .vscode +.zed +.idea # Others my-vm-tests.sh From ed4bd0300335be9e43d48bf44d5306521b088a36 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 14 Mar 2024 11:28:20 +0200 Subject: [PATCH 082/461] fix btest fixed test fixed btest --- contracts/examples/adder/tests/adder_blackbox_test.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/examples/adder/tests/adder_blackbox_test.rs b/contracts/examples/adder/tests/adder_blackbox_test.rs index 39f9946d7f..5face2c48d 100644 --- a/contracts/examples/adder/tests/adder_blackbox_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_test.rs @@ -66,7 +66,7 @@ fn adder_blackbox() { .put_account(owner_address, CheckAccount::new()) .put_account( &adder_contract, - CheckAccount::new().check_storage("str:sum", "8"), + CheckAccount::new().check_storage("str:sum", "6"), ), ); From a6a6d7e10c86585b99b63ba2a5dfa5f6d4325cc0 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 14 Mar 2024 11:34:57 +0100 Subject: [PATCH 083/461] tx proxy gen naming fix --- contracts/examples/adder/src/temp_proxy.rs | 46 +++++-------------- .../tests/adder_blackbox_chained_test.rs | 6 +-- .../tests/adder_blackbox_legacy_proxy_test.rs | 2 +- .../adder/tests/adder_blackbox_test.rs | 6 +-- .../meta/src/cmd/contract/generate_proxy.rs | 1 + .../contract/generate_proxy/proxy_naming.rs | 7 +++ .../generate_proxy/proxy_sc_functions_gen.rs | 8 +++- .../generate_proxy/proxy_template_gen.rs | 16 +++++-- 8 files changed, 44 insertions(+), 48 deletions(-) create mode 100644 framework/meta/src/cmd/contract/generate_proxy/proxy_naming.rs diff --git a/contracts/examples/adder/src/temp_proxy.rs b/contracts/examples/adder/src/temp_proxy.rs index 8a1569374e..d733bd7439 100644 --- a/contracts/examples/adder/src/temp_proxy.rs +++ b/contracts/examples/adder/src/temp_proxy.rs @@ -6,23 +6,23 @@ use multiversx_sc::imports::*; -pub struct TxProxy; +pub struct AdderProxy; -impl TxProxyTrait for TxProxy +impl TxProxyTrait for AdderProxy where Env: TxEnv, From: TxFrom, To: TxTo, Gas: TxGas, { - type TxProxyMethods = TxAdderMethods; + type TxProxyMethods = AdderProxyMethods; fn prepare_methods(self, tx: Tx) -> Self::TxProxyMethods { - TxAdderMethods { wrapped_tx: tx } + AdderProxyMethods { wrapped_tx: tx } } } -pub struct TxAdderMethods +pub struct AdderProxyMethods where Env: TxEnv, From: TxFrom, @@ -32,35 +32,24 @@ where wrapped_tx: Tx, } -impl TxAdderMethods +impl AdderProxyMethods where Env: TxEnv, Env::Api: VMApi, From: TxFrom, Gas: TxGas, { - pub fn init< - Arg0: CodecInto>, - >( + pub fn init>>( self, initial_value: Arg0, - ) -> Tx< - Env, - From, - (), - (), - Gas, - DeployCall, - OriginalResultMarker<()>, - > { + ) -> Tx, OriginalResultMarker<()>> { self.wrapped_tx .raw_deploy() .argument(&initial_value) .original_result() } - } -impl TxAdderMethods +impl AdderProxyMethods where Env: TxEnv, Env::Api: VMApi, @@ -85,26 +74,15 @@ where .original_result() } - /// Add desired amount to the storage variable. - pub fn add< - Arg0: CodecInto>, - >( + /// Add desired amount to the storage variable. + pub fn add>>( self, value: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> Tx, OriginalResultMarker<()>> { self.wrapped_tx .raw_call() .function_name("add") .argument(&value) .original_result() } - } diff --git a/contracts/examples/adder/tests/adder_blackbox_chained_test.rs b/contracts/examples/adder/tests/adder_blackbox_chained_test.rs index 234a4aea52..8d3c51c11c 100644 --- a/contracts/examples/adder/tests/adder_blackbox_chained_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_chained_test.rs @@ -27,7 +27,7 @@ fn adder_blackbox_chained() { ) .chain_deploy(|tx| { tx.from(AddressExpr("owner")) - .typed(temp_proxy::TxProxy) + .typed(temp_proxy::AdderProxy) .init(5u32) .code(MxscExpr("output/adder.mxsc.json")) .with_result(WithResultNewAddress::new(|new_address| { @@ -36,7 +36,7 @@ fn adder_blackbox_chained() { }) .chain_query(|tx| { tx.to(ScExpr("adder")) - .typed(temp_proxy::TxProxy) + .typed(temp_proxy::AdderProxy) .sum() .with_result(WithResultSimilar::new(|value: BigUint| { assert_eq!(value, BigUint::from(5u32)); @@ -45,7 +45,7 @@ fn adder_blackbox_chained() { .chain_call(|tx| { tx.from(AddressExpr("owner")) .to(ScExpr("adder")) - .typed(temp_proxy::TxProxy) + .typed(temp_proxy::AdderProxy) .add(3u32) .with_result(WithRawTxResponse(|response| { assert!(response.tx_error.is_success()); diff --git a/contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs b/contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs index 9da1ce9758..ddd131905e 100644 --- a/contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs @@ -35,7 +35,7 @@ fn adder_blackbox_legacy_proxy() { world .tx() .from(OWNER) - .typed(temp_proxy::TxProxy) + .typed(temp_proxy::AdderProxy) .init(5u32) .code(CODE_EXPR) .with_result(WithResultNewAddress::new(|new_address| { diff --git a/contracts/examples/adder/tests/adder_blackbox_test.rs b/contracts/examples/adder/tests/adder_blackbox_test.rs index 5face2c48d..ffcf7fb81f 100644 --- a/contracts/examples/adder/tests/adder_blackbox_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_test.rs @@ -33,7 +33,7 @@ fn adder_blackbox() { world .tx() .from(OWNER) - .typed(temp_proxy::TxProxy) + .typed(temp_proxy::AdderProxy) .init(5u32) .code(CODE_EXPR) .with_result(WithResultNewAddress::new(|new_address| { @@ -44,7 +44,7 @@ fn adder_blackbox() { let value = world .query() .to(SC_ADDER) - .typed(temp_proxy::TxProxy) + .typed(temp_proxy::AdderProxy) .sum() .returns(ReturnsSimilar::::new()) .run(); @@ -54,7 +54,7 @@ fn adder_blackbox() { .tx() .from(OWNER) .to(SC_ADDER) - .typed(temp_proxy::TxProxy) + .typed(temp_proxy::AdderProxy) .add(1u32) .with_result(WithRawTxResponse(|response| { assert!(response.tx_error.is_success()); diff --git a/framework/meta/src/cmd/contract/generate_proxy.rs b/framework/meta/src/cmd/contract/generate_proxy.rs index 0dc83059b3..d8f689c428 100644 --- a/framework/meta/src/cmd/contract/generate_proxy.rs +++ b/framework/meta/src/cmd/contract/generate_proxy.rs @@ -1,4 +1,5 @@ pub mod proxy_crate_gen; pub mod proxy_gen_main; +mod proxy_naming; pub mod proxy_sc_functions_gen; pub mod proxy_template_gen; diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_naming.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_naming.rs new file mode 100644 index 0000000000..e71a6a0e64 --- /dev/null +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_naming.rs @@ -0,0 +1,7 @@ +pub(super) fn proxy_type_name(contract_trait_name: &str) -> String { + format!("{contract_trait_name}Proxy") +} + +pub(super) fn proxy_methods_type_name(contract_trait_name: &str) -> String { + format!("{contract_trait_name}ProxyMethods") +} diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs index e9c895ac40..ffb999f02c 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs @@ -7,6 +7,8 @@ use crate::cmd::contract::generate_snippets::{ snippet_type_map::{handle_abi_type, RustTypeString}, }; +use super::proxy_naming::proxy_methods_type_name; + pub(crate) fn write_content(file: &mut File, abi: ContractAbi) { write_header_impl_constructor(file, &abi.name); for constructor_abi in abi.constructors { @@ -27,9 +29,10 @@ pub(crate) fn write_content(file: &mut File, abi: ContractAbi) { } fn write_header_impl_constructor(file: &mut File, name: &String) { + let proxy_methods_type_name = proxy_methods_type_name(name); writeln!( file, - r#"impl Tx{name}Methods + r#"impl {proxy_methods_type_name} where Env: TxEnv, Env::Api: VMApi, @@ -41,9 +44,10 @@ where } fn write_header_impl_endpoints(file: &mut File, name: &String) { + let proxy_methods_type_name = proxy_methods_type_name(name); writeln!( file, - r#"impl Tx{name}Methods + r#"impl {proxy_methods_type_name} where Env: TxEnv, Env::Api: VMApi, diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs index e476cb212f..bd3c894ff0 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs @@ -2,6 +2,8 @@ use std::{fs::File, io::Write}; use crate::cmd::contract::generate_snippets::snippet_gen_common::write_newline; +use super::proxy_naming::{proxy_methods_type_name, proxy_type_name}; + const PREFIX_AUTO_GENERATED: &str = "//////////////////////////////////////////////////// ////////////////// AUTO-GENERATED ////////////////// //////////////////////////////////////////////////// @@ -19,24 +21,27 @@ pub(crate) fn write_header(file: &mut File) { } pub(crate) fn write_struct_template(file: &mut File, name: &String) { - writeln!(file, "pub struct Tx{name};").unwrap(); + let proxy_type_name = proxy_type_name(name); + writeln!(file, "pub struct {proxy_type_name};").unwrap(); write_newline(file) } pub(crate) fn write_impl_for_tx_proxy(file: &mut File, name: &String) { + let proxy_type_name = proxy_type_name(name); + let proxy_methods_type_name = proxy_methods_type_name(name); writeln!( file, - r#"impl TxProxyTraitV2 for Tx{name} + r#"impl TxProxyTrait for {proxy_type_name} where Env: TxEnv, From: TxFrom, To: TxTo, Gas: TxGas, {{ - type TxProxyMethods = Tx{name}Methods; + type TxProxyMethods = {proxy_methods_type_name}; fn prepare_methods(self, tx: Tx) -> Self::TxProxyMethods {{ - Tx{name}Methods {{ wrapped_tx: tx }} + {proxy_methods_type_name} {{ wrapped_tx: tx }} }} }}"# ) @@ -46,9 +51,10 @@ where } pub(crate) fn write_struct_tx_proxy_methods(file: &mut File, name: &String) { + let proxy_methods_type_name = proxy_methods_type_name(name); writeln!( file, - r#"pub struct Tx{name}Methods + r#"pub struct {proxy_methods_type_name} where Env: TxEnv, From: TxFrom, From f1a294e1cf52d59e4d8fcfbaf606c49eb8a0d246 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 14 Mar 2024 11:42:07 +0100 Subject: [PATCH 084/461] tx proxy refactor --- contracts/examples/adder/src/temp_proxy.rs | 2 +- framework/base/src/types/interaction/tx.rs | 2 +- framework/base/src/types/interaction/tx_proxy.rs | 4 +++- .../src/cmd/contract/generate_proxy/proxy_template_gen.rs | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/contracts/examples/adder/src/temp_proxy.rs b/contracts/examples/adder/src/temp_proxy.rs index d733bd7439..c1b5195101 100644 --- a/contracts/examples/adder/src/temp_proxy.rs +++ b/contracts/examples/adder/src/temp_proxy.rs @@ -17,7 +17,7 @@ where { type TxProxyMethods = AdderProxyMethods; - fn prepare_methods(self, tx: Tx) -> Self::TxProxyMethods { + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { AdderProxyMethods { wrapped_tx: tx } } } diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 49d8b214be..b7c47f1930 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -477,7 +477,7 @@ where where Proxy: TxProxyTrait, { - proxy.prepare_methods(self) + proxy.proxy_methods(self) } } diff --git a/framework/base/src/types/interaction/tx_proxy.rs b/framework/base/src/types/interaction/tx_proxy.rs index 4addee820d..273b9a2960 100644 --- a/framework/base/src/types/interaction/tx_proxy.rs +++ b/framework/base/src/types/interaction/tx_proxy.rs @@ -1,5 +1,6 @@ use super::{Tx, TxEnv, TxFrom, TxGas, TxTo}; +/// Defines a proxy object for a smart contract. pub trait TxProxyTrait where Env: TxEnv, @@ -9,5 +10,6 @@ where { type TxProxyMethods; - fn prepare_methods(self, tx: Tx) -> Self::TxProxyMethods; + /// Creates the associated type that contains the proxy methods implementations. + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods; } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs index bd3c894ff0..31b94c059b 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs @@ -40,7 +40,7 @@ where {{ type TxProxyMethods = {proxy_methods_type_name}; - fn prepare_methods(self, tx: Tx) -> Self::TxProxyMethods {{ + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods {{ {proxy_methods_type_name} {{ wrapped_tx: tx }} }} }}"# From bf92a14cc3e463b796191834db210c28f1f6dfaf Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 14 Mar 2024 13:13:02 +0200 Subject: [PATCH 085/461] fix clippy --- .../cmd/contract/generate_proxy/proxy_sc_functions_gen.rs | 4 ++-- .../src/cmd/contract/generate_proxy/proxy_template_gen.rs | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs index ffb999f02c..f3b4d6fccf 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs @@ -28,7 +28,7 @@ pub(crate) fn write_content(file: &mut File, abi: ContractAbi) { writeln!(file, "}}").unwrap(); } -fn write_header_impl_constructor(file: &mut File, name: &String) { +fn write_header_impl_constructor(file: &mut File, name: &str) { let proxy_methods_type_name = proxy_methods_type_name(name); writeln!( file, @@ -43,7 +43,7 @@ where .unwrap(); } -fn write_header_impl_endpoints(file: &mut File, name: &String) { +fn write_header_impl_endpoints(file: &mut File, name: &str) { let proxy_methods_type_name = proxy_methods_type_name(name); writeln!( file, diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs index 31b94c059b..71dc2e2287 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs @@ -20,13 +20,13 @@ pub(crate) fn write_header(file: &mut File) { write_newline(file); } -pub(crate) fn write_struct_template(file: &mut File, name: &String) { +pub(crate) fn write_struct_template(file: &mut File, name: &str) { let proxy_type_name = proxy_type_name(name); writeln!(file, "pub struct {proxy_type_name};").unwrap(); write_newline(file) } -pub(crate) fn write_impl_for_tx_proxy(file: &mut File, name: &String) { +pub(crate) fn write_impl_for_tx_proxy(file: &mut File, name: &str) { let proxy_type_name = proxy_type_name(name); let proxy_methods_type_name = proxy_methods_type_name(name); writeln!( @@ -50,7 +50,7 @@ where write_newline(file); } -pub(crate) fn write_struct_tx_proxy_methods(file: &mut File, name: &String) { +pub(crate) fn write_struct_tx_proxy_methods(file: &mut File, name: &str) { let proxy_methods_type_name = proxy_methods_type_name(name); writeln!( file, From 486b5ec7c49eea5a39cd43945f403edea98ea95e Mon Sep 17 00:00:00 2001 From: Laurentiu Ciobanu Date: Thu, 14 Mar 2024 14:01:28 +0200 Subject: [PATCH 086/461] move test coverage renderer in sc-meta standalone --- .github/workflows/actions.yml | 33 ++++++- .gitignore | 3 +- Cargo.lock | 9 -- Cargo.toml | 1 - .../meta/src/cli_args/cli_args_standalone.rs | 18 ++++ framework/meta/src/cmd/standalone.rs | 9 +- .../cmd/standalone/test_coverage_render.rs | 46 ++++++++++ .../standalone/test_coverage_render/cargo.rs | 20 +++++ .../standalone/test_coverage_render/error.rs | 28 ++++++ .../test_coverage_render}/llvm_cov.rs | 15 ++-- .../standalone/test_coverage_render/render.rs | 86 +++++++++++++++++++ tests-coverage.sh | 3 +- tools/coverage-renderer/Cargo.toml | 9 -- tools/coverage-renderer/src/cargo.rs | 17 ---- tools/coverage-renderer/src/main.rs | 28 ------ tools/coverage-renderer/src/renderer.rs | 65 -------------- 16 files changed, 251 insertions(+), 139 deletions(-) create mode 100644 framework/meta/src/cmd/standalone/test_coverage_render.rs create mode 100644 framework/meta/src/cmd/standalone/test_coverage_render/cargo.rs create mode 100644 framework/meta/src/cmd/standalone/test_coverage_render/error.rs rename {tools/coverage-renderer/src => framework/meta/src/cmd/standalone/test_coverage_render}/llvm_cov.rs (58%) create mode 100644 framework/meta/src/cmd/standalone/test_coverage_render/render.rs delete mode 100644 tools/coverage-renderer/Cargo.toml delete mode 100644 tools/coverage-renderer/src/cargo.rs delete mode 100644 tools/coverage-renderer/src/main.rs delete mode 100644 tools/coverage-renderer/src/renderer.rs diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index b6d06db260..024e737f08 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -144,7 +144,38 @@ jobs: env: RUSTFLAGS: "" run: | - ./tests-coverage.sh + RUSTFLAGS="-C instrument-coverage" \ + cargo test --tests + + PROFRAW_FILES=$(find . -name "default_*.profraw") + llvm-profdata merge -sparse $PROFRAW_FILES -o tests.profdata + find . -name "default_*.profraw" -delete + + llvm-cov export \ + $( \ + for file in \ + $( \ + RUSTFLAGS="-C instrument-coverage" \ + cargo test --tests --no-run --message-format=json \ + | jq -r "select(.profile.test == true) | .filenames[]" \ + | grep -v dSYM - \ + ); \ + do \ + printf "%s %s " -object $file; \ + done \ + ) \ + --ignore-filename-regex='/.cargo/registry' \ + --ignore-filename-regex='rustc/' \ + --ignore-filename-regex='meta/src' \ + --ignore-filename-regex='wasm-adapter' \ + --ignore-filename-regex='benchmarks/' \ + --ignore-filename-regex='tests/' \ + --instr-profile=tests.profdata --summary-only --format=text > tests.coverage + + rm ./tests.profdata + + cargo run --bin sc-meta test-coverage-render --input ./tests.coverage --output ./coverage.md + rm ./tests.coverage - name: Upload the report uses: actions/upload-artifact@v3 diff --git a/.gitignore b/.gitignore index 5a6b68624a..7c530277be 100644 --- a/.gitignore +++ b/.gitignore @@ -14,10 +14,11 @@ sdk/**/Cargo.lock tools/**/Cargo.lock vm/**/Cargo.lock -# Profiler outputs +# Coverage outputs *.profraw *.profdata *.coverage +coverage.md # These are backup files generated by rustfmt **/*.rs.bk diff --git a/Cargo.lock b/Cargo.lock index 1e015137d2..6274b48504 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -517,15 +517,6 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" -[[package]] -name = "coverage-renderer" -version = "0.1.0" -dependencies = [ - "anyhow", - "serde", - "serde_json", -] - [[package]] name = "cpufeatures" version = "0.2.12" diff --git a/Cargo.toml b/Cargo.toml index f2cc134137..ef92a8a7b9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,7 +16,6 @@ members = [ "sdk/scenario-format", "tools/mxpy-snippet-generator", - "tools/coverage-renderer", "vm", diff --git a/framework/meta/src/cli_args/cli_args_standalone.rs b/framework/meta/src/cli_args/cli_args_standalone.rs index a81d145dab..a16f12ecdc 100644 --- a/framework/meta/src/cli_args/cli_args_standalone.rs +++ b/framework/meta/src/cli_args/cli_args_standalone.rs @@ -66,6 +66,12 @@ pub enum StandaloneCliAction { #[command(name = "test", about = "Runs cargo test")] Test(TestArgs), + #[command( + name = "test-coverage-render", + about = "Render pretty output from test coverage result" + )] + TestCoverageRender(TestCoverageRenderArgs), + #[command(name = "install", about = "Installs framework dependencies")] Install(InstallArgs), } @@ -107,6 +113,18 @@ pub struct TestArgs { pub nocapture: bool, } +#[derive(Default, Clone, PartialEq, Eq, Debug, Args)] +pub struct TestCoverageRenderArgs { + /// Input file path (llvm-cov json5 format) + /// Generated by the llvm-cov export tool + #[arg(short, long, verbatim_doc_comment)] + pub input: String, + + /// Output file path + #[arg(short, long, verbatim_doc_comment)] + pub output: String, +} + #[derive(Default, Clone, PartialEq, Eq, Debug, Args)] pub struct AllArgs { #[command(subcommand)] diff --git a/framework/meta/src/cmd/standalone.rs b/framework/meta/src/cmd/standalone.rs index ddc8cef085..58f8c9b6b7 100644 --- a/framework/meta/src/cmd/standalone.rs +++ b/framework/meta/src/cmd/standalone.rs @@ -6,9 +6,13 @@ mod print_util; pub mod scen_test_gen; pub mod template; pub mod test; +mod test_coverage_render; pub(crate) mod upgrade; -use crate::cli_args::{StandaloneCliAction, StandaloneCliArgs}; +use crate::{ + cli_args::{StandaloneCliAction, StandaloneCliArgs}, + cmd::standalone::test_coverage_render::test_coverage_render, +}; use all::call_all_meta; use clap::Parser; use info::call_info; @@ -41,6 +45,9 @@ pub fn cli_main_standalone() { test_gen_tool(args); }, Some(StandaloneCliAction::Test(args)) => test(args), + Some(StandaloneCliAction::TestCoverageRender(args)) => { + test_coverage_render(args); + }, Some(StandaloneCliAction::Install(args)) => install(args), None => {}, } diff --git a/framework/meta/src/cmd/standalone/test_coverage_render.rs b/framework/meta/src/cmd/standalone/test_coverage_render.rs new file mode 100644 index 0000000000..2789fd3d43 --- /dev/null +++ b/framework/meta/src/cmd/standalone/test_coverage_render.rs @@ -0,0 +1,46 @@ +mod cargo; +mod error; +mod llvm_cov; +mod render; + +use crate::{ + cli_args::TestCoverageRenderArgs, + cmd::standalone::test_coverage_render::{ + cargo::get_workspace_root, error::TestCoverageRenderError, llvm_cov::parse_llvm_cov_output, + render::render_coverage, + }, +}; +use std::{fs, process}; + +fn run_test_coverage_renderer( + args: &TestCoverageRenderArgs, +) -> Result<(), TestCoverageRenderError> { + let Ok(input) = fs::read_to_string(&args.input) else { + return Err(TestCoverageRenderError::InvalidInputPath( + "failed to read".into(), + )); + }; + + let root = get_workspace_root()?; + + let coverage = parse_llvm_cov_output(&input)?; + + let mut output = String::new(); + + render_coverage(&mut output, &coverage, &root); + + let Ok(_) = fs::write(&args.output, output) else { + return Err(TestCoverageRenderError::InvalidOutputPath( + "failed to write".into(), + )); + }; + + Ok(()) +} + +pub fn test_coverage_render(args: &TestCoverageRenderArgs) { + if let Err(err) = run_test_coverage_renderer(args) { + eprintln!("{}", err); + process::exit(1); + } +} diff --git a/framework/meta/src/cmd/standalone/test_coverage_render/cargo.rs b/framework/meta/src/cmd/standalone/test_coverage_render/cargo.rs new file mode 100644 index 0000000000..ca5167ea4b --- /dev/null +++ b/framework/meta/src/cmd/standalone/test_coverage_render/cargo.rs @@ -0,0 +1,20 @@ +use crate::cmd::standalone::test_coverage_render::error::TestCoverageRenderError; +use std::process::Command; + +pub fn get_workspace_root() -> Result { + let output = Command::new("cargo") + .args(["metadata", "--no-deps", "--format-version=1"]) + .output() + .map_err(|e| TestCoverageRenderError::Cargo(format!("{}", e)))?; + + let metadata: serde_json::Value = serde_json::from_slice(&output.stdout) + .map_err(|_| TestCoverageRenderError::Cargo("invalid manifest data".into()))?; + + let Some(workspace_root) = metadata["workspace_root"].as_str() else { + return Err(TestCoverageRenderError::Cargo( + "invalid manifest data".into(), + )); + }; + + Ok(workspace_root.to_owned()) +} diff --git a/framework/meta/src/cmd/standalone/test_coverage_render/error.rs b/framework/meta/src/cmd/standalone/test_coverage_render/error.rs new file mode 100644 index 0000000000..36b2f1849a --- /dev/null +++ b/framework/meta/src/cmd/standalone/test_coverage_render/error.rs @@ -0,0 +1,28 @@ +use std::{ + error::Error, + fmt::{Display, Formatter}, +}; + +#[derive(Debug)] +pub enum TestCoverageRenderError { + InvalidInputPath(String), + InvalidOutputPath(String), + Cargo(String), + InvalidLlvmCovInput, +} + +impl Error for TestCoverageRenderError {} + +impl Display for TestCoverageRenderError { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + let message = match self { + TestCoverageRenderError::InvalidInputPath(msg) => format!("Invalid input path: {msg}"), + TestCoverageRenderError::InvalidOutputPath(msg) => { + format!("Invalid output path: {msg}") + }, + TestCoverageRenderError::Cargo(msg) => format!("Failed to run cargo: {msg}"), + TestCoverageRenderError::InvalidLlvmCovInput => "Invalid llvm-cov input".into(), + }; + write!(f, "TestCoverageRenderError: {}", message) + } +} diff --git a/tools/coverage-renderer/src/llvm_cov.rs b/framework/meta/src/cmd/standalone/test_coverage_render/llvm_cov.rs similarity index 58% rename from tools/coverage-renderer/src/llvm_cov.rs rename to framework/meta/src/cmd/standalone/test_coverage_render/llvm_cov.rs index ed4f40104f..ed499ec387 100644 --- a/tools/coverage-renderer/src/llvm_cov.rs +++ b/framework/meta/src/cmd/standalone/test_coverage_render/llvm_cov.rs @@ -1,7 +1,8 @@ -use anyhow::{bail, Result}; use serde::Deserialize; use serde_json::Value; +use super::error::TestCoverageRenderError; + #[derive(Deserialize)] pub struct Coverage { pub files: Vec, @@ -29,12 +30,16 @@ pub struct FileSummary { pub summary: Summary, } -pub fn parse_llvm_cov_output(output: &str) -> Result { - let llvm_cov_output: Value = serde_json::from_str(output)?; +pub fn parse_llvm_cov_output(output: &str) -> Result { + let llvm_cov_output: Value = + serde_json::from_str(output).map_err(|_| TestCoverageRenderError::InvalidLlvmCovInput)?; + let Some(coverage) = llvm_cov_output.get("data").and_then(|data| data.get(0)) else { - bail!("Invalid llvm-cov output"); + return Err(TestCoverageRenderError::InvalidLlvmCovInput); }; - let coverage = serde_json::from_value(coverage.to_owned())?; + let coverage = serde_json::from_value(coverage.to_owned()) + .map_err(|_| TestCoverageRenderError::InvalidLlvmCovInput)?; + Ok(coverage) } diff --git a/framework/meta/src/cmd/standalone/test_coverage_render/render.rs b/framework/meta/src/cmd/standalone/test_coverage_render/render.rs new file mode 100644 index 0000000000..3b0d8d1307 --- /dev/null +++ b/framework/meta/src/cmd/standalone/test_coverage_render/render.rs @@ -0,0 +1,86 @@ +use super::llvm_cov::{Coverage, FileSummary, Summary}; + +use std::fmt::Write; + +fn writeln_output_str>(output: &mut String, input: S) { + output.write_str(&format!("{}\n", input.as_ref())).ok(); +} + +pub fn render_coverage(output: &mut String, coverage: &Coverage, root: &str) { + render_header(output); + render_totals(output, &coverage.totals); + render_files(output, &coverage.files, root); +} + +fn render_header(output: &mut String) { + writeln_output_str(output, "# Coverage Summary\n"); +} + +fn render_totals(output: &mut String, summary: &Summary) { + writeln_output_str(output, "## Totals"); + + writeln_output_str(output, "| | Count | Covered | % |"); + writeln_output_str(output, "|---|---|---|---|"); + writeln_output_str( + output, + format!( + "| Lines | {} | {} | {:.2} |", + summary.lines.count, summary.lines.covered, summary.lines.percent + ), + ); + writeln_output_str( + output, + format!( + "| Regions | {} | {} | {:.2} |", + summary.regions.count, summary.regions.covered, summary.regions.percent + ), + ); + writeln_output_str( + output, + format!( + "| Functions | {} | {} | {:.2} |", + summary.functions.count, summary.functions.covered, summary.functions.percent + ), + ); + writeln_output_str( + output, + format!( + "| Instantiations | {} | {} | {:.2} |\n", + summary.instantiations.count, + summary.instantiations.covered, + summary.instantiations.percent + ), + ); +} + +fn render_files(output: &mut String, files: &[FileSummary], root: &str) { + writeln_output_str(output, "## Files"); + writeln_output_str(output, "

Expand\n"); + writeln_output_str( + output, + "| File | Lines | Regions | Functions | Instantiations |", + ); + writeln_output_str(output, "|---|---|---|---|---|"); + for file in files { + render_file(output, file, root); + } + + writeln_output_str(output, "
"); +} + +fn render_file(output: &mut String, file: &FileSummary, root: &str) { + let summary = &file.summary; + let filename = file.filename.strip_prefix(root).unwrap(); + + writeln_output_str( + output, + format!( + "| {} | {:.2}% | {:.2}% | {:.2}% | {:.2}% |", + filename, + summary.lines.percent, + summary.regions.percent, + summary.functions.percent, + summary.instantiations.percent + ), + ); +} diff --git a/tests-coverage.sh b/tests-coverage.sh index 68139f8a8e..e7ec167ff0 100755 --- a/tests-coverage.sh +++ b/tests-coverage.sh @@ -25,9 +25,8 @@ llvm-cov export \ --ignore-filename-regex='wasm-adapter' \ --ignore-filename-regex='benchmarks/' \ --ignore-filename-regex='tests/' \ - --ignore-filename-regex='tools/coverage-renderer/' \ --instr-profile=tests.profdata --summary-only --format=text > tests.coverage rm ./tests.profdata -cargo run --quiet --bin coverage-renderer ./tests.coverage > coverage.md +cargo run --bin sc-meta test-coverage-render --input ./tests.coverage --output ./coverage.md rm ./tests.coverage \ No newline at end of file diff --git a/tools/coverage-renderer/Cargo.toml b/tools/coverage-renderer/Cargo.toml deleted file mode 100644 index eb7a044055..0000000000 --- a/tools/coverage-renderer/Cargo.toml +++ /dev/null @@ -1,9 +0,0 @@ -[package] -name = "coverage-renderer" -version = "0.1.0" -edition = "2021" - -[dependencies] -serde = { version = "1.0", features = ["derive"] } -serde_json = "1.0" -anyhow = "1.0.44" \ No newline at end of file diff --git a/tools/coverage-renderer/src/cargo.rs b/tools/coverage-renderer/src/cargo.rs deleted file mode 100644 index 53c67e394c..0000000000 --- a/tools/coverage-renderer/src/cargo.rs +++ /dev/null @@ -1,17 +0,0 @@ -use std::process::Command; - -use anyhow::{bail, Result}; - -pub fn get_workspace_root() -> Result { - let output = Command::new("cargo") - .args(["metadata", "--no-deps", "--format-version=1"]) - .output()?; - - let metadata: serde_json::Value = serde_json::from_slice(&output.stdout)?; - - let Some(workspace_root) = metadata["workspace_root"].as_str() else { - bail!("Failed to get workspace root"); - }; - - Ok(workspace_root.to_owned()) -} diff --git a/tools/coverage-renderer/src/main.rs b/tools/coverage-renderer/src/main.rs deleted file mode 100644 index 4d4234555d..0000000000 --- a/tools/coverage-renderer/src/main.rs +++ /dev/null @@ -1,28 +0,0 @@ -mod cargo; -mod llvm_cov; -mod renderer; - -use anyhow::{bail, Result}; -use std::env; - -use llvm_cov::parse_llvm_cov_output; -use renderer::render_coverage; - -fn main() -> Result<()> { - let mut args = env::args(); - - if args.len() < 2 { - bail!("Usage: coverage-renderer "); - } - - let root = cargo::get_workspace_root()?; - - let input_path = args.nth(1).unwrap(); - let input = std::fs::read_to_string(input_path)?; - - let coverage = parse_llvm_cov_output(&input)?; - - render_coverage(&coverage, &root); - - Ok(()) -} diff --git a/tools/coverage-renderer/src/renderer.rs b/tools/coverage-renderer/src/renderer.rs deleted file mode 100644 index ae230d9c6c..0000000000 --- a/tools/coverage-renderer/src/renderer.rs +++ /dev/null @@ -1,65 +0,0 @@ -use crate::llvm_cov::{Coverage, FileSummary, Summary}; - -pub fn render_coverage(coverage: &Coverage, root: &str) { - render_header(); - render_totals(&coverage.totals); - render_files(&coverage.files, root); -} - -fn render_header() { - println!("# Coverage Summary"); - println!(); -} - -fn render_totals(summary: &Summary) { - println!("## Totals"); - - println!("| | Count | Covered | % |"); - println!("|---|---|---|---|"); - println!( - "| Lines | {} | {} | {:.2} |", - summary.lines.count, summary.lines.covered, summary.lines.percent - ); - println!( - "| Regions | {} | {} | {:.2} |", - summary.regions.count, summary.regions.covered, summary.regions.percent - ); - println!( - "| Functions | {} | {} | {:.2} |", - summary.functions.count, summary.functions.covered, summary.functions.percent - ); - println!( - "| Instantiations | {} | {} | {:.2} |", - summary.instantiations.count, - summary.instantiations.covered, - summary.instantiations.percent - ); - - println!(); -} - -fn render_files(files: &[FileSummary], root: &str) { - println!("## Files"); - println!("
Expand\n"); - println!("| File | Lines | Regions | Functions | Instantiations |"); - println!("|---|---|---|---|---|"); - for file in files { - render_file(file, root); - } - - println!("
"); -} - -fn render_file(file: &FileSummary, root: &str) { - let summary = &file.summary; - let filename = file.filename.strip_prefix(root).unwrap(); - - println!( - "| {} | {:.2}% | {:.2}% | {:.2}% | {:.2}% |", - filename, - summary.lines.percent, - summary.regions.percent, - summary.functions.percent, - summary.instantiations.percent - ); -} From 3e8e90088ad15d1e4f04b1ca3706616ec0e28b47 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 14 Mar 2024 13:09:17 +0100 Subject: [PATCH 087/461] tx proxy gen fix, multisig example --- contracts/examples/multisig/src/multisig.rs | 1 + contracts/examples/multisig/src/proxy.rs | 724 ++++++++++++++++++ framework/base/src/abi/type_abi.rs | 11 +- framework/base/src/abi/type_abi_impl_basic.rs | 25 +- .../base/src/abi/type_abi_impl_codec_multi.rs | 14 + .../src/storage/mappers/linked_list_mapper.rs | 2 +- .../base/src/storage/mappers/queue_mapper.rs | 2 +- .../base/src/storage/mappers/set_mapper.rs | 2 +- .../src/storage/mappers/unique_id_mapper.rs | 2 +- .../storage/mappers/unordered_set_mapper.rs | 2 +- .../base/src/storage/mappers/user_mapper.rs | 2 +- .../base/src/storage/mappers/vec_mapper.rs | 2 +- .../base/src/types/flags/code_metadata.rs | 4 + .../src/types/interaction/function_call.rs | 2 +- .../types/interaction/managed_arg_buffer.rs | 2 +- framework/base/src/types/io/sc_result.rs | 8 +- .../base/src/types/managed/basic/big_int.rs | 2 +- .../src/types/managed/basic/big_int_sign.rs | 2 +- .../base/src/types/managed/basic/big_uint.rs | 2 +- .../src/types/managed/basic/elliptic_curve.rs | 2 +- .../src/types/managed/basic/managed_buffer.rs | 4 + .../esdt_token_payment_multi_value.rs | 2 +- .../multi_value/multi_value_encoded.rs | 2 +- .../types/managed/wrapped/managed_address.rs | 2 +- .../managed/wrapped/managed_byte_array.rs | 4 +- .../src/types/managed/wrapped/managed_vec.rs | 4 +- .../src/types/static_buffer/sparse_array.rs | 4 +- .../generate_proxy/proxy_sc_functions_gen.rs | 25 +- 28 files changed, 806 insertions(+), 54 deletions(-) create mode 100644 contracts/examples/multisig/src/proxy.rs diff --git a/contracts/examples/multisig/src/multisig.rs b/contracts/examples/multisig/src/multisig.rs index a3baed53ce..da8c81d21f 100644 --- a/contracts/examples/multisig/src/multisig.rs +++ b/contracts/examples/multisig/src/multisig.rs @@ -5,6 +5,7 @@ pub mod multisig_events; pub mod multisig_perform; pub mod multisig_propose; pub mod multisig_state; +pub mod proxy; pub mod user_role; use action::ActionFullInfo; diff --git a/contracts/examples/multisig/src/proxy.rs b/contracts/examples/multisig/src/proxy.rs new file mode 100644 index 0000000000..73b99ea08c --- /dev/null +++ b/contracts/examples/multisig/src/proxy.rs @@ -0,0 +1,724 @@ +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(clippy::all)] + +use multiversx_sc::imports::*; +use crate as multisig; + +pub struct MultisigProxy; + +impl TxProxyTrait for MultisigProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = MultisigProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + MultisigProxyMethods { wrapped_tx: tx } + } +} + +pub struct MultisigProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +impl MultisigProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init< + Arg0: CodecInto, + Arg1: CodecInto>>, + >( + self, + quorum: Arg0, + board: Arg1, + ) -> Tx< + Env, + From, + (), + (), + Gas, + DeployCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_deploy() + .argument(&quorum) + .argument(&board) + .original_result() + } + +} +impl MultisigProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + /// Allows the contract to receive funds even if it is marked as unpayable in the protocol. + pub fn deposit( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("deposit") + .original_result() + } + + /// Iterates through all actions and retrieves those that are still pending. + /// Serialized full action data: + /// - the action id + /// - the serialized action data + /// - (number of signers followed by) list of signer addresses. + pub fn get_pending_action_full_info( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>>, + > { + self.wrapped_tx + .raw_call() + .function_name("getPendingActionFullInfo") + .original_result() + } + + /// Returns `true` (`1`) if the user has signed the action. + /// Does not check whether or not the user is still a board member and the signature valid. + pub fn signed< + Arg0: CodecInto>, + Arg1: CodecInto, + >( + self, + user: Arg0, + action_id: Arg1, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("signed") + .argument(&user) + .argument(&action_id) + .original_result() + } + + /// Indicates user rights. + /// `0` = no rights, + /// `1` = can propose, but not sign, + /// `2` = can propose and sign. + pub fn user_role< + Arg0: CodecInto>, + >( + self, + user: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("userRole") + .argument(&user) + .original_result() + } + + /// Lists all users that can sign actions. + pub fn get_all_board_members( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>>, + > { + self.wrapped_tx + .raw_call() + .function_name("getAllBoardMembers") + .original_result() + } + + /// Lists all proposers that are not board members. + pub fn get_all_proposers( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>>, + > { + self.wrapped_tx + .raw_call() + .function_name("getAllProposers") + .original_result() + } + + /// Used by board members to sign actions. + pub fn sign< + Arg0: CodecInto, + >( + self, + action_id: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("sign") + .argument(&action_id) + .original_result() + } + + /// Board members can withdraw their signatures if they no longer desire for the action to be executed. + /// Actions that are left with no valid signatures can be then deleted to free up storage. + pub fn unsign< + Arg0: CodecInto, + >( + self, + action_id: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("unsign") + .argument(&action_id) + .original_result() + } + + /// Clears storage pertaining to an action that is no longer supposed to be executed. + /// Any signatures that the action received must first be removed, via `unsign`. + /// Otherwise this endpoint would be prone to abuse. + pub fn discard_action< + Arg0: CodecInto, + >( + self, + action_id: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("discardAction") + .argument(&action_id) + .original_result() + } + + /// Minimum number of signatures needed to perform any action. + pub fn quorum( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("getQuorum") + .original_result() + } + + /// Denormalized board member count. + /// It is kept in sync with the user list by the contract. + pub fn num_board_members( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("getNumBoardMembers") + .original_result() + } + + /// Denormalized proposer count. + /// It is kept in sync with the user list by the contract. + pub fn num_proposers( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("getNumProposers") + .original_result() + } + + /// The index of the last proposed action. + /// 0 means that no action was ever proposed yet. + pub fn get_action_last_index( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("getActionLastIndex") + .original_result() + } + + /// Serialized action data of an action with index. + pub fn get_action_data< + Arg0: CodecInto, + >( + self, + action_id: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>, + > { + self.wrapped_tx + .raw_call() + .function_name("getActionData") + .argument(&action_id) + .original_result() + } + + /// Gets addresses of all users who signed an action. + /// Does not check if those users are still board members or not, + /// so the result may contain invalid signers. + pub fn get_action_signers< + Arg0: CodecInto, + >( + self, + action_id: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>>, + > { + self.wrapped_tx + .raw_call() + .function_name("getActionSigners") + .argument(&action_id) + .original_result() + } + + /// Gets addresses of all users who signed an action and are still board members. + /// All these signatures are currently valid. + pub fn get_action_signer_count< + Arg0: CodecInto, + >( + self, + action_id: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("getActionSignerCount") + .argument(&action_id) + .original_result() + } + + /// It is possible for board members to lose their role. + /// They are not automatically removed from all actions when doing so, + /// therefore the contract needs to re-check every time when actions are performed. + /// This function is used to validate the signers before performing an action. + /// It also makes it easy to check before performing an action. + pub fn get_action_valid_signer_count< + Arg0: CodecInto, + >( + self, + action_id: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("getActionValidSignerCount") + .argument(&action_id) + .original_result() + } + + /// Initiates board member addition process. + /// Can also be used to promote a proposer to board member. + pub fn propose_add_board_member< + Arg0: CodecInto>, + >( + self, + board_member_address: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("proposeAddBoardMember") + .argument(&board_member_address) + .original_result() + } + + /// Initiates proposer addition process.. + /// Can also be used to demote a board member to proposer. + pub fn propose_add_proposer< + Arg0: CodecInto>, + >( + self, + proposer_address: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("proposeAddProposer") + .argument(&proposer_address) + .original_result() + } + + /// Removes user regardless of whether it is a board member or proposer. + pub fn propose_remove_user< + Arg0: CodecInto>, + >( + self, + user_address: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("proposeRemoveUser") + .argument(&user_address) + .original_result() + } + + pub fn propose_change_quorum< + Arg0: CodecInto, + >( + self, + new_quorum: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("proposeChangeQuorum") + .argument(&new_quorum) + .original_result() + } + + /// Propose a transaction in which the contract will perform a transfer-execute call. + /// Can send EGLD without calling anything. + /// Can call smart contract endpoints directly. + /// Doesn't really work with builtin functions. + pub fn propose_transfer_execute< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>, + >( + self, + to: Arg0, + egld_amount: Arg1, + function_call: Arg2, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("proposeTransferExecute") + .argument(&to) + .argument(&egld_amount) + .argument(&function_call) + .original_result() + } + + /// Propose a transaction in which the contract will perform a transfer-execute call. + /// Can call smart contract endpoints directly. + /// Can use ESDTTransfer/ESDTNFTTransfer/MultiESDTTransfer to send tokens, while also optionally calling endpoints. + /// Works well with builtin functions. + /// Cannot simply send EGLD directly without calling anything. + pub fn propose_async_call< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>, + >( + self, + to: Arg0, + egld_amount: Arg1, + function_call: Arg2, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("proposeAsyncCall") + .argument(&to) + .argument(&egld_amount) + .argument(&function_call) + .original_result() + } + + pub fn propose_sc_deploy_from_source< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto, + Arg3: CodecInto>>, + >( + self, + amount: Arg0, + source: Arg1, + code_metadata: Arg2, + arguments: Arg3, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("proposeSCDeployFromSource") + .argument(&amount) + .argument(&source) + .argument(&code_metadata) + .argument(&arguments) + .original_result() + } + + pub fn propose_sc_upgrade_from_source< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>, + Arg3: CodecInto, + Arg4: CodecInto>>, + >( + self, + sc_address: Arg0, + amount: Arg1, + source: Arg2, + code_metadata: Arg3, + arguments: Arg4, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("proposeSCUpgradeFromSource") + .argument(&sc_address) + .argument(&amount) + .argument(&source) + .argument(&code_metadata) + .argument(&arguments) + .original_result() + } + + /// Returns `true` (`1`) if `getActionValidSignerCount >= getQuorum`. + pub fn quorum_reached< + Arg0: CodecInto, + >( + self, + action_id: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("quorumReached") + .argument(&action_id) + .original_result() + } + + /// Proposers and board members use this to launch signed actions. + pub fn perform_action_endpoint< + Arg0: CodecInto, + >( + self, + action_id: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>>, + > { + self.wrapped_tx + .raw_call() + .function_name("performAction") + .argument(&action_id) + .original_result() + } + + pub fn dns_register< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + dns_address: Arg0, + name: Arg1, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("dnsRegister") + .argument(&dns_address) + .argument(&name) + .original_result() + } + +} diff --git a/framework/base/src/abi/type_abi.rs b/framework/base/src/abi/type_abi.rs index 40c5022827..62633e2a70 100644 --- a/framework/base/src/abi/type_abi.rs +++ b/framework/base/src/abi/type_abi.rs @@ -1,5 +1,5 @@ use super::*; -use alloc::{string::ToString, vec::Vec}; +use alloc::{format, string::ToString, vec::Vec}; pub trait TypeAbi { fn type_names() -> TypeNames { @@ -63,10 +63,11 @@ pub trait TypeAbi { } pub fn type_name_variadic() -> TypeName { - let mut repr = TypeName::from("variadic<"); - repr.push_str(T::type_name().as_str()); - repr.push('>'); - repr + format!("variadic<{}>", T::type_name()) +} + +pub fn type_name_multi_value_encoded() -> TypeName { + format!("MultiValueEncoded<$API, {}>", T::type_name_rust()) } pub fn type_name_optional() -> TypeName { diff --git a/framework/base/src/abi/type_abi_impl_basic.rs b/framework/base/src/abi/type_abi_impl_basic.rs index 133e67085a..8a2bb41c94 100644 --- a/framework/base/src/abi/type_abi_impl_basic.rs +++ b/framework/base/src/abi/type_abi_impl_basic.rs @@ -2,6 +2,7 @@ use super::*; use crate::arrayvec::ArrayVec; use alloc::{ boxed::Box, + format, string::{String, ToString}, vec::Vec, }; @@ -55,7 +56,7 @@ impl TypeAbi for &[T] { } fn type_name_rust() -> TypeName { - T::type_name_rust() + format!("&[{}]", T::type_name_rust()) } fn provide_type_descriptions(accumulator: &mut TDC) { @@ -69,7 +70,7 @@ impl TypeAbi for Vec { } fn type_name_rust() -> TypeName { - <&[T]>::type_name_rust() + format!("Vec<{}>", T::type_name_rust()) } fn provide_type_descriptions(accumulator: &mut TDC) { @@ -83,7 +84,7 @@ impl TypeAbi for ArrayVec { } fn type_name_rust() -> TypeName { - <&[T]>::type_name_rust() + format!("ArrayVec<{}, {}usize>", T::type_name_rust(), CAP) } fn provide_type_descriptions(accumulator: &mut TDC) { @@ -117,7 +118,7 @@ impl TypeAbi for &str { } fn type_name_rust() -> TypeName { - TypeName::type_name_rust() + "&str".into() } } @@ -160,10 +161,12 @@ type_abi_name_only!(bool, "bool"); impl TypeAbi for Option { fn type_name() -> TypeName { - let mut repr = TypeName::from("Option<"); - repr.push_str(T::type_name().as_str()); - repr.push('>'); - repr + format!("Option<{}>", T::type_name()) + } + + + fn type_name_rust() -> TypeName { + format!("Option<{}>", T::type_name_rust()) } fn provide_type_descriptions(accumulator: &mut TDC) { @@ -177,7 +180,11 @@ impl TypeAbi for Result { } fn type_name_rust() -> TypeName { - T::type_name_rust() + format!( + "Result<{}, {}>", + T::type_name_rust(), + core::any::type_name::() + ) } /// Similar to the SCResult implementation. diff --git a/framework/base/src/abi/type_abi_impl_codec_multi.rs b/framework/base/src/abi/type_abi_impl_codec_multi.rs index 6227634258..9d34d8b5f9 100644 --- a/framework/base/src/abi/type_abi_impl_codec_multi.rs +++ b/framework/base/src/abi/type_abi_impl_codec_multi.rs @@ -1,3 +1,5 @@ +use alloc::format; + use crate::{ abi::{OutputAbis, TypeAbi, TypeDescriptionContainer, TypeName}, codec::multi_types::{IgnoreValue, OptionalValue}, @@ -9,6 +11,10 @@ impl TypeAbi for crate::codec::multi_types::MultiValueVec { super::type_name_variadic::() } + fn type_name_rust() -> TypeName { + format!("MultiValueVec<$API, {}>", T::type_name_rust()) + } + fn provide_type_descriptions(accumulator: &mut TDC) { T::provide_type_descriptions(accumulator); } @@ -23,6 +29,10 @@ impl TypeAbi for IgnoreValue { TypeName::from("ignore") } + fn type_name_rust() -> TypeName { + "IgnoreValue".into() + } + fn is_variadic() -> bool { true } @@ -33,6 +43,10 @@ impl TypeAbi for OptionalValue { super::type_name_optional::() } + fn type_name_rust() -> TypeName { + format!("OptionalValue<{}>", T::type_name_rust()) + } + fn provide_type_descriptions(accumulator: &mut TDC) { T::provide_type_descriptions(accumulator); } diff --git a/framework/base/src/storage/mappers/linked_list_mapper.rs b/framework/base/src/storage/mappers/linked_list_mapper.rs index 38f71f9191..7382ae8229 100644 --- a/framework/base/src/storage/mappers/linked_list_mapper.rs +++ b/framework/base/src/storage/mappers/linked_list_mapper.rs @@ -630,7 +630,7 @@ where } fn type_name_rust() -> TypeName { - T::type_name_rust() + crate::abi::type_name_multi_value_encoded::() } fn provide_type_descriptions(accumulator: &mut TDC) { diff --git a/framework/base/src/storage/mappers/queue_mapper.rs b/framework/base/src/storage/mappers/queue_mapper.rs index c2b90f0fe3..93d90de1a3 100644 --- a/framework/base/src/storage/mappers/queue_mapper.rs +++ b/framework/base/src/storage/mappers/queue_mapper.rs @@ -536,7 +536,7 @@ where } fn type_name_rust() -> TypeName { - T::type_name_rust() + crate::abi::type_name_multi_value_encoded::() } fn provide_type_descriptions(accumulator: &mut TDC) { diff --git a/framework/base/src/storage/mappers/set_mapper.rs b/framework/base/src/storage/mappers/set_mapper.rs index d95ca8df6b..79492b9a43 100644 --- a/framework/base/src/storage/mappers/set_mapper.rs +++ b/framework/base/src/storage/mappers/set_mapper.rs @@ -312,7 +312,7 @@ where } fn type_name_rust() -> TypeName { - T::type_name_rust() + crate::abi::type_name_multi_value_encoded::() } fn provide_type_descriptions(accumulator: &mut TDC) { diff --git a/framework/base/src/storage/mappers/unique_id_mapper.rs b/framework/base/src/storage/mappers/unique_id_mapper.rs index 546fdc9825..550729952f 100644 --- a/framework/base/src/storage/mappers/unique_id_mapper.rs +++ b/framework/base/src/storage/mappers/unique_id_mapper.rs @@ -228,7 +228,7 @@ where } fn type_name_rust() -> TypeName { - usize::type_name_rust() + crate::abi::type_name_multi_value_encoded::() } fn provide_type_descriptions(accumulator: &mut TDC) { diff --git a/framework/base/src/storage/mappers/unordered_set_mapper.rs b/framework/base/src/storage/mappers/unordered_set_mapper.rs index dac6516cca..ef2a708fad 100644 --- a/framework/base/src/storage/mappers/unordered_set_mapper.rs +++ b/framework/base/src/storage/mappers/unordered_set_mapper.rs @@ -243,7 +243,7 @@ where } fn type_name_rust() -> TypeName { - T::type_name_rust() + crate::abi::type_name_multi_value_encoded::() } fn provide_type_descriptions(accumulator: &mut TDC) { diff --git a/framework/base/src/storage/mappers/user_mapper.rs b/framework/base/src/storage/mappers/user_mapper.rs index 2339b019ab..4fc7a50f74 100644 --- a/framework/base/src/storage/mappers/user_mapper.rs +++ b/framework/base/src/storage/mappers/user_mapper.rs @@ -234,7 +234,7 @@ where } fn type_name_rust() -> TypeName { - ManagedAddress::::type_name_rust() + crate::abi::type_name_multi_value_encoded::>() } fn is_variadic() -> bool { diff --git a/framework/base/src/storage/mappers/vec_mapper.rs b/framework/base/src/storage/mappers/vec_mapper.rs index af0afe3278..457ac55cfa 100644 --- a/framework/base/src/storage/mappers/vec_mapper.rs +++ b/framework/base/src/storage/mappers/vec_mapper.rs @@ -362,7 +362,7 @@ where } fn type_name_rust() -> TypeName { - T::type_name_rust() + crate::abi::type_name_multi_value_encoded::() } fn provide_type_descriptions(accumulator: &mut TDC) { diff --git a/framework/base/src/types/flags/code_metadata.rs b/framework/base/src/types/flags/code_metadata.rs index 89df4b91de..6c65859c1a 100644 --- a/framework/base/src/types/flags/code_metadata.rs +++ b/framework/base/src/types/flags/code_metadata.rs @@ -107,6 +107,10 @@ impl TypeAbi for CodeMetadata { fn type_name() -> TypeName { "CodeMetadata".into() } + + fn type_name_rust() -> TypeName { + "CodeMetadata".into() + } } impl SCDisplay for CodeMetadata { diff --git a/framework/base/src/types/interaction/function_call.rs b/framework/base/src/types/interaction/function_call.rs index c21ab3a3e3..63814de88a 100644 --- a/framework/base/src/types/interaction/function_call.rs +++ b/framework/base/src/types/interaction/function_call.rs @@ -143,7 +143,7 @@ where } fn type_name_rust() -> TypeName { - ManagedAddress::::type_name_rust() + "FunctionCall<$API>".into() } fn is_variadic() -> bool { diff --git a/framework/base/src/types/interaction/managed_arg_buffer.rs b/framework/base/src/types/interaction/managed_arg_buffer.rs index d9a009e01e..e2d13f3566 100644 --- a/framework/base/src/types/interaction/managed_arg_buffer.rs +++ b/framework/base/src/types/interaction/managed_arg_buffer.rs @@ -309,6 +309,6 @@ where } fn type_name_rust() -> TypeName { - <&[ManagedBuffer] as TypeAbi>::type_name_rust() + "ManagedArgBufer<$API>".into() } } diff --git a/framework/base/src/types/io/sc_result.rs b/framework/base/src/types/io/sc_result.rs index 17d915994e..78a4d2ec18 100644 --- a/framework/base/src/types/io/sc_result.rs +++ b/framework/base/src/types/io/sc_result.rs @@ -1,3 +1,5 @@ +use alloc::format; + use crate::codec::{EncodeErrorHandler, TopEncodeMulti, TopEncodeMultiOutput}; use crate::{ @@ -133,7 +135,11 @@ impl TypeAbi for SCResult { } fn type_name_rust() -> TypeName { - T::type_name_rust() + format!( + "SCResult<{}, {}>", + T::type_name_rust(), + core::any::type_name::() + ) } /// Gives `SCResult<()>` the possibility to produce 0 output ABIs, diff --git a/framework/base/src/types/managed/basic/big_int.rs b/framework/base/src/types/managed/basic/big_int.rs index c2aed1704a..e924a14787 100644 --- a/framework/base/src/types/managed/basic/big_int.rs +++ b/framework/base/src/types/managed/basic/big_int.rs @@ -304,7 +304,7 @@ impl crate::abi::TypeAbi for BigInt { } fn type_name_rust() -> TypeName { - TypeName::from("multiversx_sc::types::BigInt<$API>") + TypeName::from("BigInt<$API>") } } diff --git a/framework/base/src/types/managed/basic/big_int_sign.rs b/framework/base/src/types/managed/basic/big_int_sign.rs index c0c7e01d81..641e1c9328 100644 --- a/framework/base/src/types/managed/basic/big_int_sign.rs +++ b/framework/base/src/types/managed/basic/big_int_sign.rs @@ -85,6 +85,6 @@ impl crate::abi::TypeAbi for Sign { } fn type_name_rust() -> TypeName { - TypeName::from("multiversx_sc::types::Sign<$API>") + TypeName::from("multiversx_sc::types::Sign") } } diff --git a/framework/base/src/types/managed/basic/big_uint.rs b/framework/base/src/types/managed/basic/big_uint.rs index df0c1b947b..4e1d286908 100644 --- a/framework/base/src/types/managed/basic/big_uint.rs +++ b/framework/base/src/types/managed/basic/big_uint.rs @@ -293,7 +293,7 @@ impl crate::abi::TypeAbi for BigUint { } fn type_name_rust() -> TypeName { - TypeName::from("multiversx_sc::types::BigUint<$API>") + TypeName::from("BigUint<$API>") } } diff --git a/framework/base/src/types/managed/basic/elliptic_curve.rs b/framework/base/src/types/managed/basic/elliptic_curve.rs index 95fecb7e2a..904a0de67a 100644 --- a/framework/base/src/types/managed/basic/elliptic_curve.rs +++ b/framework/base/src/types/managed/basic/elliptic_curve.rs @@ -424,6 +424,6 @@ impl TypeAbi for EllipticCurve { } fn type_name_rust() -> TypeName { - TypeName::from("multiversx_sc::types::EllipticCurve<$API>") + TypeName::from("EllipticCurve<$API>") } } diff --git a/framework/base/src/types/managed/basic/managed_buffer.rs b/framework/base/src/types/managed/basic/managed_buffer.rs index 1caa2411f1..b39643a27d 100644 --- a/framework/base/src/types/managed/basic/managed_buffer.rs +++ b/framework/base/src/types/managed/basic/managed_buffer.rs @@ -465,6 +465,10 @@ impl crate::abi::TypeAbi for ManagedBuffer { fn type_name() -> TypeName { "bytes".into() } + + fn type_name_rust() -> TypeName { + "ManagedBuffer<$API>".into() + } } impl SCDisplay for ManagedBuffer { diff --git a/framework/base/src/types/managed/multi_value/esdt_token_payment_multi_value.rs b/framework/base/src/types/managed/multi_value/esdt_token_payment_multi_value.rs index f1ce48e609..9f27f1cd89 100644 --- a/framework/base/src/types/managed/multi_value/esdt_token_payment_multi_value.rs +++ b/framework/base/src/types/managed/multi_value/esdt_token_payment_multi_value.rs @@ -107,7 +107,7 @@ where } fn type_name_rust() -> TypeName { - MultiValue3::, u64, BigUint>::type_name_rust() + "EsdtTokenPaymentMultiValue<$API>".into() } fn is_variadic() -> bool { diff --git a/framework/base/src/types/managed/multi_value/multi_value_encoded.rs b/framework/base/src/types/managed/multi_value/multi_value_encoded.rs index 6cbb85fe54..be22e29b10 100644 --- a/framework/base/src/types/managed/multi_value/multi_value_encoded.rs +++ b/framework/base/src/types/managed/multi_value/multi_value_encoded.rs @@ -232,7 +232,7 @@ where } fn type_name_rust() -> TypeName { - T::type_name_rust() + crate::abi::type_name_multi_value_encoded::() } fn provide_type_descriptions(accumulator: &mut TDC) { diff --git a/framework/base/src/types/managed/wrapped/managed_address.rs b/framework/base/src/types/managed/wrapped/managed_address.rs index e65469fc63..d0bf38f9dc 100644 --- a/framework/base/src/types/managed/wrapped/managed_address.rs +++ b/framework/base/src/types/managed/wrapped/managed_address.rs @@ -244,7 +244,7 @@ where } fn type_name_rust() -> TypeName { - Address::type_name_rust() + "ManagedAddress<$API>".into() } } diff --git a/framework/base/src/types/managed/wrapped/managed_byte_array.rs b/framework/base/src/types/managed/wrapped/managed_byte_array.rs index 413152bcc1..5ff3b37c6f 100644 --- a/framework/base/src/types/managed/wrapped/managed_byte_array.rs +++ b/framework/base/src/types/managed/wrapped/managed_byte_array.rs @@ -1,5 +1,7 @@ use core::convert::TryFrom; +use alloc::format; + use crate::{ abi::{TypeAbi, TypeName}, api::ManagedTypeApi, @@ -213,7 +215,7 @@ where } fn type_name_rust() -> TypeName { - <&[u8; N] as TypeAbi>::type_name_rust() + format!("ManagedByteArray<$API, {N}usize>") } } diff --git a/framework/base/src/types/managed/wrapped/managed_vec.rs b/framework/base/src/types/managed/wrapped/managed_vec.rs index d66e09436b..0b6b4c996a 100644 --- a/framework/base/src/types/managed/wrapped/managed_vec.rs +++ b/framework/base/src/types/managed/wrapped/managed_vec.rs @@ -12,7 +12,7 @@ use crate::{ ManagedVecRefIterator, MultiValueEncoded, MultiValueManagedVec, }, }; -use alloc::vec::Vec; +use alloc::{format, vec::Vec}; use core::{ borrow::Borrow, cmp::Ordering, @@ -689,7 +689,7 @@ where } fn type_name_rust() -> TypeName { - <&[T] as TypeAbi>::type_name_rust() + format!("ManagedVec<$API, {}>", T::type_name_rust()) } fn provide_type_descriptions(accumulator: &mut TDC) { diff --git a/framework/base/src/types/static_buffer/sparse_array.rs b/framework/base/src/types/static_buffer/sparse_array.rs index 59001062b1..a0e556f2d8 100644 --- a/framework/base/src/types/static_buffer/sparse_array.rs +++ b/framework/base/src/types/static_buffer/sparse_array.rs @@ -1,3 +1,5 @@ +use alloc::format; + use crate::{ abi::{TypeAbi, TypeDescriptionContainer, TypeName}, api::{ErrorApi, ErrorApiImpl}, @@ -312,7 +314,7 @@ where } fn type_name_rust() -> TypeName { - <&[usize] as TypeAbi>::type_name_rust() + format!("SparseArray<$API, {CAPACITY}usize>") } fn provide_type_descriptions(accumulator: &mut TDC) { diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs index f3b4d6fccf..d1909b25c6 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs @@ -2,10 +2,7 @@ use std::{fs::File, io::Write}; use multiversx_sc::abi::{ContractAbi, EndpointAbi, InputAbi, OutputAbi}; -use crate::cmd::contract::generate_snippets::{ - snippet_gen_common::write_newline, - snippet_type_map::{handle_abi_type, RustTypeString}, -}; +use crate::cmd::contract::generate_snippets::snippet_gen_common::write_newline; use super::proxy_naming::proxy_methods_type_name; @@ -168,12 +165,8 @@ fn write_function_header_endpoint(file: &mut File, rust_method_name: String) { } fn write_endpoint_docs(file: &mut File, docs: Vec) { - if !docs.is_empty() { - write!(file, " /// ").unwrap(); - } - for abi_doc in docs { - writeln!(file, "{abi_doc} ").unwrap(); + writeln!(file, " /// {abi_doc} ").unwrap(); } } @@ -185,21 +178,15 @@ fn write_args(file: &mut File, inputs: Vec) { writeln!(file, "<").unwrap(); for (index, input) in inputs.iter().enumerate() { - write_argument(file, index, input.type_names.abi.to_string()); + write_argument(file, index, &input.type_names.rust); } write!(file, " >").unwrap(); } -fn write_argument(file: &mut File, index: usize, type_name: String) { - let mut type_string = RustTypeString::default(); - handle_abi_type(&mut type_string, type_name); - let type_print = type_string - .get_type_name() - .replace("StaticApi", "Env::Api") - .to_string(); - - writeln!(file, " Arg{index}: CodecInto<{}>,", type_print).unwrap(); +fn write_argument(file: &mut File, index: usize, rust_name: &str) { + let adjusted = adjust_type_name(rust_name); + writeln!(file, " Arg{index}: CodecInto<{adjusted}>,").unwrap(); } fn write_end_of_function(file: &mut File) { From af48f3857df00023e9f1f9f33f9a31a773c2c74c Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 14 Mar 2024 13:11:51 +0100 Subject: [PATCH 088/461] clippy fix --- framework/base/src/types/interaction/tx.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index b7c47f1930..c2ca6a8903 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -543,6 +543,7 @@ where FC: TxDataFunctionCall, RH: TxResultHandler, { + #[allow(clippy::type_complexity)] pub fn normalize_tx( self, ) -> Tx< From aa0ef9af7fcea0171a173bd5ea5f106f671d8e95 Mon Sep 17 00:00:00 2001 From: Laurentiu Ciobanu Date: Thu, 14 Mar 2024 14:19:37 +0200 Subject: [PATCH 089/461] remove old tests-coverage.sh script --- tests-coverage.sh | 32 -------------------------------- 1 file changed, 32 deletions(-) delete mode 100755 tests-coverage.sh diff --git a/tests-coverage.sh b/tests-coverage.sh deleted file mode 100755 index e7ec167ff0..0000000000 --- a/tests-coverage.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh -RUSTFLAGS="-C instrument-coverage" \ - cargo test --tests - -PROFRAW_FILES=$(find . -name "default_*.profraw") -llvm-profdata merge -sparse $PROFRAW_FILES -o tests.profdata -find . -name "default_*.profraw" -delete - -llvm-cov export \ - $( \ - for file in \ - $( \ - RUSTFLAGS="-C instrument-coverage" \ - cargo test --tests --no-run --message-format=json \ - | jq -r "select(.profile.test == true) | .filenames[]" \ - | grep -v dSYM - \ - ); \ - do \ - printf "%s %s " -object $file; \ - done \ - ) \ - --ignore-filename-regex='/.cargo/registry' \ - --ignore-filename-regex='rustc/' \ - --ignore-filename-regex='meta/src' \ - --ignore-filename-regex='wasm-adapter' \ - --ignore-filename-regex='benchmarks/' \ - --ignore-filename-regex='tests/' \ - --instr-profile=tests.profdata --summary-only --format=text > tests.coverage -rm ./tests.profdata - -cargo run --bin sc-meta test-coverage-render --input ./tests.coverage --output ./coverage.md -rm ./tests.coverage \ No newline at end of file From 89cf6612fb65b7ea8062fa3601794139e758e90d Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 14 Mar 2024 17:55:35 +0100 Subject: [PATCH 090/461] adder interactor in template --- Cargo.lock | 22 ++++++------ contracts/examples/adder/interact/Cargo.toml | 6 ++-- .../{adder_interact.rs => basic_interact.rs} | 34 +++++++++---------- ..._interact_cli.rs => basic_interact_cli.rs} | 0 ...act_config.rs => basic_interact_config.rs} | 0 ...eract_state.rs => basic_interact_state.rs} | 0 contracts/examples/adder/mxsc-template.toml | 5 +++ .../standalone/template/template_adjuster.rs | 22 +++++++++++- .../standalone/template/template_metadata.rs | 3 ++ framework/meta/tests/template_test.rs | 21 ++++++++++++ 10 files changed, 81 insertions(+), 32 deletions(-) rename contracts/examples/adder/interact/src/{adder_interact.rs => basic_interact.rs} (87%) rename contracts/examples/adder/interact/src/{adder_interact_cli.rs => basic_interact_cli.rs} (100%) rename contracts/examples/adder/interact/src/{adder_interact_config.rs => basic_interact_config.rs} (100%) rename contracts/examples/adder/interact/src/{adder_interact_state.rs => basic_interact_state.rs} (100%) diff --git a/Cargo.lock b/Cargo.lock index 1e015137d2..a499eedc34 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -37,17 +37,6 @@ dependencies = [ "multiversx-sc-scenario", ] -[[package]] -name = "adder-interact" -version = "0.0.0" -dependencies = [ - "adder", - "clap", - "multiversx-sc-snippets", - "serde", - "toml", -] - [[package]] name = "adder-meta" version = "0.0.0" @@ -213,6 +202,17 @@ dependencies = [ "multiversx-sc-meta", ] +[[package]] +name = "basic-interact" +version = "0.0.0" +dependencies = [ + "adder", + "clap", + "multiversx-sc-snippets", + "serde", + "toml", +] + [[package]] name = "bech32" version = "0.9.1" diff --git a/contracts/examples/adder/interact/Cargo.toml b/contracts/examples/adder/interact/Cargo.toml index 5ff9488dbf..a9d36faf3b 100644 --- a/contracts/examples/adder/interact/Cargo.toml +++ b/contracts/examples/adder/interact/Cargo.toml @@ -1,13 +1,13 @@ [package] -name = "adder-interact" +name = "basic-interact" version = "0.0.0" authors = ["Ovidiu Stinga "] edition = "2021" publish = false [[bin]] -name = "adder-interact" -path = "src/adder_interact.rs" +name = "basic-interact" +path = "src/basic_interact.rs" [dependencies] clap = { version = "4.4.7", features = ["derive"] } diff --git a/contracts/examples/adder/interact/src/adder_interact.rs b/contracts/examples/adder/interact/src/basic_interact.rs similarity index 87% rename from contracts/examples/adder/interact/src/adder_interact.rs rename to contracts/examples/adder/interact/src/basic_interact.rs index 10df4ddf61..3dd78d048a 100644 --- a/contracts/examples/adder/interact/src/adder_interact.rs +++ b/contracts/examples/adder/interact/src/basic_interact.rs @@ -1,10 +1,10 @@ -mod adder_interact_cli; -mod adder_interact_config; -mod adder_interact_state; +mod basic_interact_cli; +mod basic_interact_config; +mod basic_interact_state; use adder::ProxyTrait; -use adder_interact_config::Config; -use adder_interact_state::State; +use basic_interact_config::Config; +use basic_interact_state::State; use clap::Parser; use multiversx_sc_snippets::{ env_logger, @@ -30,24 +30,24 @@ const INTERACTOR_SCENARIO_TRACE_PATH: &str = "interactor_trace.scen.json"; async fn main() { env_logger::init(); - let mut adder_interact = AdderInteract::init().await; + let mut basic_interact = AdderInteract::init().await; - let cli = adder_interact_cli::InteractCli::parse(); + let cli = basic_interact_cli::InteractCli::parse(); match &cli.command { - Some(adder_interact_cli::InteractCliCommand::Add(args)) => { - adder_interact.add(args.value).await; + Some(basic_interact_cli::InteractCliCommand::Add(args)) => { + basic_interact.add(args.value).await; }, - Some(adder_interact_cli::InteractCliCommand::Deploy) => { - adder_interact.deploy().await; + Some(basic_interact_cli::InteractCliCommand::Deploy) => { + basic_interact.deploy().await; }, - Some(adder_interact_cli::InteractCliCommand::Feed) => { - adder_interact.feed_contract_egld().await; + Some(basic_interact_cli::InteractCliCommand::Feed) => { + basic_interact.feed_contract_egld().await; }, - Some(adder_interact_cli::InteractCliCommand::MultiDeploy(args)) => { - adder_interact.multi_deploy(&args.count).await; + Some(basic_interact_cli::InteractCliCommand::MultiDeploy(args)) => { + basic_interact.multi_deploy(&args.count).await; }, - Some(adder_interact_cli::InteractCliCommand::Sum) => { - adder_interact.print_sum().await; + Some(basic_interact_cli::InteractCliCommand::Sum) => { + basic_interact.print_sum().await; }, None => {}, } diff --git a/contracts/examples/adder/interact/src/adder_interact_cli.rs b/contracts/examples/adder/interact/src/basic_interact_cli.rs similarity index 100% rename from contracts/examples/adder/interact/src/adder_interact_cli.rs rename to contracts/examples/adder/interact/src/basic_interact_cli.rs diff --git a/contracts/examples/adder/interact/src/adder_interact_config.rs b/contracts/examples/adder/interact/src/basic_interact_config.rs similarity index 100% rename from contracts/examples/adder/interact/src/adder_interact_config.rs rename to contracts/examples/adder/interact/src/basic_interact_config.rs diff --git a/contracts/examples/adder/interact/src/adder_interact_state.rs b/contracts/examples/adder/interact/src/basic_interact_state.rs similarity index 100% rename from contracts/examples/adder/interact/src/adder_interact_state.rs rename to contracts/examples/adder/interact/src/basic_interact_state.rs diff --git a/contracts/examples/adder/mxsc-template.toml b/contracts/examples/adder/mxsc-template.toml index 59d08379d0..341c2d6cf5 100644 --- a/contracts/examples/adder/mxsc-template.toml +++ b/contracts/examples/adder/mxsc-template.toml @@ -15,4 +15,9 @@ files_include = [ "Cargo.toml", "README.md", "multiversx.json", + "interact/Cargo.toml", + "interact/config.toml", + "interact/.gitignore", + "interact/src", ] +has_interactor = true diff --git a/framework/meta/src/cmd/standalone/template/template_adjuster.rs b/framework/meta/src/cmd/standalone/template/template_adjuster.rs index 6751fb175c..9fd3ee741e 100644 --- a/framework/meta/src/cmd/standalone/template/template_adjuster.rs +++ b/framework/meta/src/cmd/standalone/template/template_adjuster.rs @@ -10,6 +10,7 @@ use ruplacer::Query; use toml::value::Table; const TEST_DIRECTORY: &str = "./tests"; +const INTERACT_DIRECTORY: &str = "./interact"; const ROOT_CARGO_TOML: &str = "./Cargo.toml"; const META_CARGO_TOML: &str = "./meta/Cargo.toml"; const WASM_CARGO_TOML: &str = "./wasm/Cargo.toml"; @@ -34,7 +35,11 @@ impl TemplateAdjuster { remove_paths_from_deps(&mut toml, &[]); } - toml.add_workspace(&[".", "meta"]); + if self.metadata.has_interactor { + toml.add_workspace(&[".", "meta", "interact"]); + } else { + toml.add_workspace(&[".", "meta"]); + } toml.save_to_file(&cargo_toml_path); } @@ -71,6 +76,7 @@ impl TemplateAdjuster { self.rename_in_cargo_toml_meta(); self.rename_in_cargo_toml_wasm(); self.rename_in_tests(); + self.rename_in_interactor(); self.rename_solution_files(); } @@ -193,6 +199,20 @@ impl TemplateAdjuster { ); } + fn rename_in_interactor(&self) { + let old_mxsc = mxsc_file_name(&self.metadata.name); + let new_mxsc = mxsc_file_name(&self.target.new_name); + + let mut queries = Vec::::new(); + queries.push(Query::substring(&old_mxsc, &new_mxsc)); + + replace_in_files( + &self.target.contract_dir().join(INTERACT_DIRECTORY), + "*.rs", + &queries, + ); + } + fn rename_solution_files(&self) { let new_name = self.target.new_name.to_case(Case::Snake); let new_src_name = rs_file_name(&new_name); diff --git a/framework/meta/src/cmd/standalone/template/template_metadata.rs b/framework/meta/src/cmd/standalone/template/template_metadata.rs index 2f47f47617..b2113d21b3 100644 --- a/framework/meta/src/cmd/standalone/template/template_metadata.rs +++ b/framework/meta/src/cmd/standalone/template/template_metadata.rs @@ -7,6 +7,9 @@ pub struct TemplateMetadata { pub src_file: String, pub rename_pairs: Vec<(String, String)>, pub files_include: Vec, + + #[serde(default)] + pub has_interactor: bool, } #[cfg(test)] diff --git a/framework/meta/tests/template_test.rs b/framework/meta/tests/template_test.rs index e3463d09a2..1f5f0edc7c 100644 --- a/framework/meta/tests/template_test.rs +++ b/framework/meta/tests/template_test.rs @@ -33,6 +33,8 @@ fn test_template_list() { #[cfg_attr(not(feature = "template-test-current"), ignore)] fn template_current_adder() { template_test_current("adder", "examples", "new-adder"); + + cargo_check_interactor("examples", "new-adder"); } #[test] @@ -198,3 +200,22 @@ pub fn build_contract(target: &ContractCreatorTarget) { assert!(exit_status.success(), "contract build process failed"); } + +fn cargo_check_interactor(sub_path: &str, new_name: &str) { + let workspace_path = find_current_workspace().unwrap(); + let target_path = workspace_path + .join(TEMPLATE_TEMP_DIR_NAME) + .join(sub_path) + .join(new_name) + .join("interact"); + + let exit_status = Command::new("cargo") + .arg("check") + .current_dir(target_path) + .spawn() + .expect("failed to spawn contract clean process") + .wait() + .expect("contract test process was not running"); + + assert!(exit_status.success(), "contract test process failed"); +} From 34eabff98c7b765146e1c04164918d4e3a4b6b7f Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 14 Mar 2024 18:05:20 +0100 Subject: [PATCH 091/461] clippy fix --- .../meta/src/cmd/standalone/template/template_adjuster.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/framework/meta/src/cmd/standalone/template/template_adjuster.rs b/framework/meta/src/cmd/standalone/template/template_adjuster.rs index 9fd3ee741e..d84422c536 100644 --- a/framework/meta/src/cmd/standalone/template/template_adjuster.rs +++ b/framework/meta/src/cmd/standalone/template/template_adjuster.rs @@ -203,8 +203,7 @@ impl TemplateAdjuster { let old_mxsc = mxsc_file_name(&self.metadata.name); let new_mxsc = mxsc_file_name(&self.target.new_name); - let mut queries = Vec::::new(); - queries.push(Query::substring(&old_mxsc, &new_mxsc)); + let queries = vec![Query::substring(&old_mxsc, &new_mxsc)]; replace_in_files( &self.target.contract_dir().join(INTERACT_DIRECTORY), From e4b1620f739ccdeaacf6d012acc5e2c118a52be6 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 15 Mar 2024 00:25:25 +0100 Subject: [PATCH 092/461] sc 0.47.6 --- CHANGELOG.md | 5 + Cargo.lock | 18 ++-- 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 +- .../scenarios/stress_submit_test.scen.json | 100 +++++++++--------- .../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/nft-subscription/Cargo.toml | 6 +- .../examples/nft-subscription/meta/Cargo.toml | 2 +- .../examples/nft-subscription/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 +- .../wasm-alloc-mem-fail/Cargo.toml | 2 +- .../wasm-alloc-mem-leaking/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 | 4 +- .../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 | 2 +- .../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 +- .../vault/wasm-vault-upgrade/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 +- framework/base/Cargo.toml | 4 +- framework/derive/Cargo.toml | 2 +- framework/meta/Cargo.toml | 4 +- .../generate_snippets/snippet_crate_gen.rs | 2 +- .../meta/src/cmd/contract/meta_config.rs | 4 +- framework/meta/src/version_history.rs | 3 +- framework/scenario/Cargo.toml | 6 +- 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 | 4 +- 263 files changed, 437 insertions(+), 431 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c9c2118770..7bcc7b063a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,11 @@ They are: - `multiversx-chain-scenario-format`, in short `scenario-format`, scenario JSON serializer/deserializer, 1 crate. - `multiversx-sdk`, in short `sdk`, allows communication with the chain(s), 1 crate. + +## [sc 0.47.6] - 2024-03-15 +- Template naming bugfix, regarding numbers in the project name. +- Added the interactor to the adder template. + ## [sc 0.47.5] - 2024-03-08 - Fixed an issue with `MapMapper` when reading from another contract. - Got rid of nightly feature `maybe_uninit_uninit_array`/`maybe_uninit_array_assume_init`. diff --git a/Cargo.lock b/Cargo.lock index a499eedc34..670a0d00ae 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -1794,7 +1794,7 @@ checksum = "b59072fa0624b55ae5ae3fa6bfa91515bbeb4ac440214bc4a509e2c8806d6e9f" [[package]] name = "multiversx-price-aggregator-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "arrayvec", "getrandom 0.2.12", @@ -1815,7 +1815,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags 2.4.2", "hex-literal", @@ -1845,7 +1845,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -1856,7 +1856,7 @@ dependencies = [ [[package]] name = "multiversx-sc-meta" -version = "0.47.5" +version = "0.47.6" dependencies = [ "clap", "colored", @@ -1882,14 +1882,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-scenario" -version = "0.47.5" +version = "0.47.6" dependencies = [ "base64", "bech32", @@ -1915,7 +1915,7 @@ dependencies = [ [[package]] name = "multiversx-sc-snippets" -version = "0.47.5" +version = "0.47.6" dependencies = [ "base64", "env_logger", @@ -1929,7 +1929,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] @@ -1960,7 +1960,7 @@ dependencies = [ [[package]] name = "multiversx-wegld-swap-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", "multiversx-sc-modules", diff --git a/contracts/benchmarks/large-storage/Cargo.toml b/contracts/benchmarks/large-storage/Cargo.toml index 804f964141..5fb591be86 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/large-storage/meta/Cargo.toml b/contracts/benchmarks/large-storage/meta/Cargo.toml index 7516ee6f65..ce060cbb49 100644 --- a/contracts/benchmarks/large-storage/meta/Cargo.toml +++ b/contracts/benchmarks/large-storage/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/large-storage/wasm/Cargo.toml b/contracts/benchmarks/large-storage/wasm/Cargo.toml index 3442101383..b55c72c7c2 100644 --- a/contracts/benchmarks/large-storage/wasm/Cargo.toml +++ b/contracts/benchmarks/large-storage/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/benchmark-common/Cargo.toml b/contracts/benchmarks/mappers/benchmark-common/Cargo.toml index f2db85ecfe..09f6f6b1ea 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.47.5" +version = "0.47.6" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/linked-list-repeat/Cargo.toml b/contracts/benchmarks/mappers/linked-list-repeat/Cargo.toml index 558fbb4720..d7295369df 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.47.5" +version = "0.47.6" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 3a2b64389a..c9f0d0f743 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/linked-list-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml index 8682d7b966..f43fc00def 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/map-repeat/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/Cargo.toml index 63d397512e..dbac0a2fc4 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.47.5" +version = "0.47.6" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml index 9325ed7ae6..aaafa11fd8 100644 --- a/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml index 62e8789c3b..c9949f2909 100644 --- a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/queue-repeat/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/Cargo.toml index a9f7dd1a38..f3f0675e36 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.47.5" +version = "0.47.6" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml index 29f1dc78c8..a56ea924d4 100644 --- a/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml index 9c4d336e91..0810177dcf 100644 --- a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/set-repeat/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/Cargo.toml index f62ee44aa2..465175b82a 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.47.5" +version = "0.47.6" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml index 7e05b0d40c..61ccaa8425 100644 --- a/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml index 7dcc58ebd4..ab29b05874 100644 --- a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 c4f974f557..52a712c1c6 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.47.5" +version = "0.47.6" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 a10f248f31..a3091fffc1 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/single-value-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml index b738172a26..40b27f6ae7 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/vec-repeat/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/Cargo.toml index 68f1484056..db78e32d9e 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.47.5" +version = "0.47.6" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml index d3b013bb67..3d50c9a221 100644 --- a/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml index fe03b05162..798d769c5f 100644 --- a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/send-tx-repeat/Cargo.toml b/contracts/benchmarks/send-tx-repeat/Cargo.toml index 5517cf4101..eef886e33a 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml b/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml index 13920dbf06..9af50be174 100644 --- a/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml index 8f631f3518..32ace41bb8 100644 --- a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/str-repeat/Cargo.toml b/contracts/benchmarks/str-repeat/Cargo.toml index 123cfae104..faad09ae64 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.47.5" +version = "0.47.6" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/str-repeat/meta/Cargo.toml b/contracts/benchmarks/str-repeat/meta/Cargo.toml index 5a5d4b5d28..209f138d48 100644 --- a/contracts/benchmarks/str-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/str-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/str-repeat/wasm/Cargo.toml b/contracts/benchmarks/str-repeat/wasm/Cargo.toml index 64354ce36c..3da3e115a2 100644 --- a/contracts/benchmarks/str-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/str-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/core/price-aggregator/Cargo.toml b/contracts/core/price-aggregator/Cargo.toml index 1dd51d5792..fec7498b3e 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.47.5" +version = "0.47.6" authors = [ "Claudiu-Marcel Bruda ", "MultiversX ", @@ -19,15 +19,15 @@ edition = "2021" path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.5" +version = "0.47.6" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" [dependencies] diff --git a/contracts/core/price-aggregator/meta/Cargo.toml b/contracts/core/price-aggregator/meta/Cargo.toml index 07bc777dc8..1af2bc366a 100644 --- a/contracts/core/price-aggregator/meta/Cargo.toml +++ b/contracts/core/price-aggregator/meta/Cargo.toml @@ -8,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/core/price-aggregator/scenarios/stress_submit_test.scen.json b/contracts/core/price-aggregator/scenarios/stress_submit_test.scen.json index 6542b59c39..79a075b626 100644 --- a/contracts/core/price-aggregator/scenarios/stress_submit_test.scen.json +++ b/contracts/core/price-aggregator/scenarios/stress_submit_test.scen.json @@ -1133,7 +1133,7 @@ "0x45474c44", "0x55534443", "0x5f", - "0x3beec6f9cf5130ed", + "0x7788c70a9610c4be", "0x" ], "gasLimit": "7,000,000" @@ -1154,7 +1154,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x50d924566a98aec8", + "0xc1ea824e31efc9e4", "0x" ], "gasLimit": "7,000,000" @@ -1175,7 +1175,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x097b928bb2d85516", + "0xce32013182f11964", "0x" ], "gasLimit": "7,000,000" @@ -1196,7 +1196,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x765c960a5c3c6b95", + "0x7b5585abc8746bba", "0x" ], "gasLimit": "7,000,000" @@ -1217,7 +1217,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xf7426f44c20f404c", + "0x5b72e1448c0d88e9", "0x" ], "gasLimit": "7,000,000" @@ -1238,7 +1238,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xa5c69769ba606c2b", + "0x84ffa4c93adbf03f", "0x" ], "gasLimit": "7,000,000" @@ -1259,7 +1259,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xe8f77e933d1f2517", + "0xdf49c7683aa8f812", "0x" ], "gasLimit": "7,000,000" @@ -1280,7 +1280,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x94fba404681c1183", + "0xdd16d54980e37a14", "0x" ], "gasLimit": "7,000,000" @@ -1301,7 +1301,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xdc506f08b25d3b71", + "0x489fc7abc281bff5", "0x" ], "gasLimit": "7,000,000" @@ -1322,7 +1322,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xf5b0acb8ddff3752", + "0x2b21387b70dc68fa", "0x" ], "gasLimit": "7,000,000" @@ -1343,7 +1343,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x39a7d356f768ea5e", + "0x73a7c835bc2c5cc1", "0x" ], "gasLimit": "7,000,000" @@ -1364,7 +1364,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xaf145a7f797a48a1", + "0xd0f9d6948f749e88", "0x" ], "gasLimit": "7,000,000" @@ -1385,7 +1385,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xb18143fe76eef718", + "0xefa0dd75e273f855", "0x" ], "gasLimit": "7,000,000" @@ -1406,7 +1406,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x6f64a1ddec18e577", + "0xa4e30019602ac07a", "0x" ], "gasLimit": "7,000,000" @@ -1427,7 +1427,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x87ffce2a932db3d4", + "0x6a76200c754ab268", "0x" ], "gasLimit": "7,000,000" @@ -1448,7 +1448,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xe6642c7265c738c1", + "0xf80c0fe7c4f2d2ab", "0x" ], "gasLimit": "7,000,000" @@ -1469,7 +1469,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xd6079c55087a67d5", + "0xc3311fd07a622588", "0x" ], "gasLimit": "7,000,000" @@ -1490,7 +1490,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x90f7bb0d816fb87d", + "0x7e1ed49ae692e3c2", "0x" ], "gasLimit": "7,000,000" @@ -1511,7 +1511,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xa0ccc6f5f8c73ff2", + "0x1bc08702bf94881d", "0x" ], "gasLimit": "7,000,000" @@ -1532,7 +1532,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x258d38a35ccfd93d", + "0xe1ef12a5d5de7a5b", "0x" ], "gasLimit": "7,000,000" @@ -1553,7 +1553,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x903f62b19408019d", + "0xbe81b81b461e586a", "0x" ], "gasLimit": "7,000,000" @@ -1574,7 +1574,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xc319aab79b2f512e", + "0x5299386cac2959d3", "0x" ], "gasLimit": "7,000,000" @@ -1595,7 +1595,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x4b41176cd679e194", + "0x7ad8b2a2d0d8bb25", "0x" ], "gasLimit": "7,000,000" @@ -1616,7 +1616,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xaf3c4ad7cdcac230", + "0xc699d9b2a2265377", "0x" ], "gasLimit": "7,000,000" @@ -1637,7 +1637,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x2a8c4a82dfb68f13", + "0xb901a55b0792d1e0", "0x" ], "gasLimit": "7,000,000" @@ -1658,7 +1658,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x358e92c93a69a2f9", + "0xfeea45b5beba2c40", "0x" ], "gasLimit": "7,000,000" @@ -1679,7 +1679,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xb4bd55d9eebad664", + "0x65302a6c38774d4d", "0x" ], "gasLimit": "7,000,000" @@ -1700,7 +1700,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x9061fc2440f4db51", + "0xe7ca98860b4e0732", "0x" ], "gasLimit": "7,000,000" @@ -1721,7 +1721,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xc8fde2d627d1b95a", + "0x8bc5c26698edefb0", "0x" ], "gasLimit": "7,000,000" @@ -1742,7 +1742,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xacede2c42f9bc928", + "0x0a3fe4dea3530a88", "0x" ], "gasLimit": "7,000,000" @@ -1763,7 +1763,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xb0a4ecb8d46cfe86", + "0x0fbbfc508ed1daea", "0x" ], "gasLimit": "7,000,000" @@ -1784,7 +1784,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xa8d8ee43a5c4ade8", + "0x776254af7eee5567", "0x" ], "gasLimit": "7,000,000" @@ -1805,7 +1805,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xe20bb0819b83cbb6", + "0xa1fdcba5f1a891d6", "0x" ], "gasLimit": "7,000,000" @@ -1826,7 +1826,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xb5566ca4a8a6da5b", + "0x44d1ed7c7ae1e173", "0x" ], "gasLimit": "7,000,000" @@ -1847,7 +1847,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x30b4e318dbf9c0a1", + "0xaa4c9135752b8024", "0x" ], "gasLimit": "7,000,000" @@ -1868,7 +1868,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x34cd5592ee7ab5f0", + "0x7e2d24a77721cabb", "0x" ], "gasLimit": "7,000,000" @@ -1889,7 +1889,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x4908da8f754f9e29", + "0x776c84750a7890f7", "0x" ], "gasLimit": "7,000,000" @@ -1910,7 +1910,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x460da40079bef875", + "0xd18201dfce0e5317", "0x" ], "gasLimit": "7,000,000" @@ -1931,7 +1931,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x6eb6dd52e24341b6", + "0xb7288d6a6593e051", "0x" ], "gasLimit": "7,000,000" @@ -1952,7 +1952,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xa06bb000b0901e98", + "0x97eab65a65b5f17d", "0x" ], "gasLimit": "7,000,000" @@ -1973,7 +1973,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x4f83b3dd7f1dd80e", + "0x8e24cf5782e9cb6c", "0x" ], "gasLimit": "7,000,000" @@ -1994,7 +1994,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x169e4556e8cd5271", + "0xab04f3386a213e9e", "0x" ], "gasLimit": "7,000,000" @@ -2015,7 +2015,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xa45b9cfe7527301b", + "0xa7f258578eacd75d", "0x" ], "gasLimit": "7,000,000" @@ -2036,7 +2036,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xe3a28965ea6a3ae4", + "0xd42348b209cd6e99", "0x" ], "gasLimit": "7,000,000" @@ -2057,7 +2057,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x4efa7be66acf5ded", + "0xe22ff5fdee16b542", "0x" ], "gasLimit": "7,000,000" @@ -2078,7 +2078,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x5f75311f8cd29ea9", + "0xc3b6af3c8792a1ea", "0x" ], "gasLimit": "7,000,000" @@ -2099,7 +2099,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xfc7c1268abc1d8e3", + "0x81a7c3dd9adfa891", "0x" ], "gasLimit": "7,000,000" @@ -2120,7 +2120,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xd24cc52d844c6a40", + "0x53df0a0a26a53996", "0x" ], "gasLimit": "7,000,000" @@ -2141,7 +2141,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x804fc08cd1c73c42", + "0xdcb0a37d6cb1bc42", "0x" ], "gasLimit": "7,000,000" @@ -2162,7 +2162,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x093077783f01d496", + "0x127a946b5bbaed56", "0x" ], "gasLimit": "7,000,000" diff --git a/contracts/core/price-aggregator/wasm/Cargo.toml b/contracts/core/price-aggregator/wasm/Cargo.toml index c39965acb9..842befe349 100644 --- a/contracts/core/price-aggregator/wasm/Cargo.toml +++ b/contracts/core/price-aggregator/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/core/wegld-swap/Cargo.toml b/contracts/core/wegld-swap/Cargo.toml index 5cce44f08e..a52652c87c 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.47.5" +version = "0.47.6" authors = [ "Dorin Iancu ", @@ -20,13 +20,13 @@ edition = "2021" path = "src/wegld.rs" [dependencies.multiversx-sc] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.5" +version = "0.47.6" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" diff --git a/contracts/core/wegld-swap/meta/Cargo.toml b/contracts/core/wegld-swap/meta/Cargo.toml index 222f0692d6..98214c5c45 100644 --- a/contracts/core/wegld-swap/meta/Cargo.toml +++ b/contracts/core/wegld-swap/meta/Cargo.toml @@ -11,10 +11,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/core/wegld-swap/wasm/Cargo.toml b/contracts/core/wegld-swap/wasm/Cargo.toml index f622d5d6b9..42da670c1c 100644 --- a/contracts/core/wegld-swap/wasm/Cargo.toml +++ b/contracts/core/wegld-swap/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/adder/Cargo.toml b/contracts/examples/adder/Cargo.toml index 409f471ee5..b8eea0debf 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" diff --git a/contracts/examples/adder/interact/Cargo.toml b/contracts/examples/adder/interact/Cargo.toml index a9d36faf3b..9a3cfa2282 100644 --- a/contracts/examples/adder/interact/Cargo.toml +++ b/contracts/examples/adder/interact/Cargo.toml @@ -18,5 +18,5 @@ toml = "0.8.6" path = ".." [dependencies.multiversx-sc-snippets] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/snippets" diff --git a/contracts/examples/adder/meta/Cargo.toml b/contracts/examples/adder/meta/Cargo.toml index caf3b453e2..4177224e49 100644 --- a/contracts/examples/adder/meta/Cargo.toml +++ b/contracts/examples/adder/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/adder/wasm/Cargo.toml b/contracts/examples/adder/wasm/Cargo.toml index 04be870421..2d90464201 100644 --- a/contracts/examples/adder/wasm/Cargo.toml +++ b/contracts/examples/adder/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/bonding-curve-contract/Cargo.toml b/contracts/examples/bonding-curve-contract/Cargo.toml index 0b5939281e..f75bedbdd5 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.5" +version = "0.47.6" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" diff --git a/contracts/examples/bonding-curve-contract/meta/Cargo.toml b/contracts/examples/bonding-curve-contract/meta/Cargo.toml index 91b330f0ab..998bf5381c 100644 --- a/contracts/examples/bonding-curve-contract/meta/Cargo.toml +++ b/contracts/examples/bonding-curve-contract/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/bonding-curve-contract/wasm/Cargo.toml b/contracts/examples/bonding-curve-contract/wasm/Cargo.toml index d95c21a85d..9ef2d26d25 100644 --- a/contracts/examples/bonding-curve-contract/wasm/Cargo.toml +++ b/contracts/examples/bonding-curve-contract/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/check-pause/Cargo.toml b/contracts/examples/check-pause/Cargo.toml index 956cff6046..60884428d1 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" [dependencies.multiversx-sc] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.5" +version = "0.47.6" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" diff --git a/contracts/examples/check-pause/meta/Cargo.toml b/contracts/examples/check-pause/meta/Cargo.toml index db3e95ad78..59360f259a 100644 --- a/contracts/examples/check-pause/meta/Cargo.toml +++ b/contracts/examples/check-pause/meta/Cargo.toml @@ -9,6 +9,6 @@ authors = ["Alin Cruceat "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/check-pause/wasm/Cargo.toml b/contracts/examples/check-pause/wasm/Cargo.toml index 619a7270c4..ab4176d63f 100644 --- a/contracts/examples/check-pause/wasm/Cargo.toml +++ b/contracts/examples/check-pause/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crowdfunding-esdt/Cargo.toml b/contracts/examples/crowdfunding-esdt/Cargo.toml index 5a5a94d5a3..dd987f9168 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" [dev-dependencies] diff --git a/contracts/examples/crowdfunding-esdt/meta/Cargo.toml b/contracts/examples/crowdfunding-esdt/meta/Cargo.toml index b5bef9909d..177efdbcc1 100644 --- a/contracts/examples/crowdfunding-esdt/meta/Cargo.toml +++ b/contracts/examples/crowdfunding-esdt/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml b/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml index 877d8761fb..246445cd42 100644 --- a/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml +++ b/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-bubbles/Cargo.toml b/contracts/examples/crypto-bubbles/Cargo.toml index f63a8b8af5..bf37ef5fd8 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" diff --git a/contracts/examples/crypto-bubbles/meta/Cargo.toml b/contracts/examples/crypto-bubbles/meta/Cargo.toml index 1defd419e1..de1f82844d 100644 --- a/contracts/examples/crypto-bubbles/meta/Cargo.toml +++ b/contracts/examples/crypto-bubbles/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-bubbles/wasm/Cargo.toml b/contracts/examples/crypto-bubbles/wasm/Cargo.toml index 5f8975e177..52a989cb0e 100644 --- a/contracts/examples/crypto-bubbles/wasm/Cargo.toml +++ b/contracts/examples/crypto-bubbles/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 495b1894ff..83b65857e0 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.47.5" +version = "0.47.6" 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 2cc2fc4bd9..24ebd9e621 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.47.5" +version = "0.47.6" path = "../../../../../framework/base" diff --git a/contracts/examples/crypto-kitties/kitty-auction/Cargo.toml b/contracts/examples/crypto-kitties/kitty-auction/Cargo.toml index 646835ce94..a755f4fc4e 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.47.5" +version = "0.47.6" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 2adc1e4a32..489a222777 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-auction/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml index 3a7e4400aa..708dd5e87a 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-kitties/kitty-genetic-alg/Cargo.toml b/contracts/examples/crypto-kitties/kitty-genetic-alg/Cargo.toml index 8c94bfe0de..146f1535ae 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.47.5" +version = "0.47.6" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 8e09c03447..6c47bf57ef 100644 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false 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 a7105ac21c..78060f6e1e 100644 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-kitties/kitty-ownership/Cargo.toml b/contracts/examples/crypto-kitties/kitty-ownership/Cargo.toml index cbd78aed52..1554492c61 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.47.5" +version = "0.47.6" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 fe5c579c57..d96c0229d1 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-ownership/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml index d81e2aec49..bed211e9ba 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-zombies/Cargo.toml b/contracts/examples/crypto-zombies/Cargo.toml index 3f30e8030e..7d7010857a 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" diff --git a/contracts/examples/crypto-zombies/meta/Cargo.toml b/contracts/examples/crypto-zombies/meta/Cargo.toml index 396fb6584e..20b5e5cd5b 100644 --- a/contracts/examples/crypto-zombies/meta/Cargo.toml +++ b/contracts/examples/crypto-zombies/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-zombies/wasm/Cargo.toml b/contracts/examples/crypto-zombies/wasm/Cargo.toml index 3234a023e6..7e2708f437 100644 --- a/contracts/examples/crypto-zombies/wasm/Cargo.toml +++ b/contracts/examples/crypto-zombies/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/digital-cash/Cargo.toml b/contracts/examples/digital-cash/Cargo.toml index c9a21caba1..08c4259881 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" diff --git a/contracts/examples/digital-cash/meta/Cargo.toml b/contracts/examples/digital-cash/meta/Cargo.toml index 42e08a4777..d8a20bcba9 100644 --- a/contracts/examples/digital-cash/meta/Cargo.toml +++ b/contracts/examples/digital-cash/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/digital-cash/wasm/Cargo.toml b/contracts/examples/digital-cash/wasm/Cargo.toml index ec1d9efa8f..be892f045c 100644 --- a/contracts/examples/digital-cash/wasm/Cargo.toml +++ b/contracts/examples/digital-cash/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/empty/Cargo.toml b/contracts/examples/empty/Cargo.toml index a8403c0d71..0bf1a921b2 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" [dev-dependencies] diff --git a/contracts/examples/empty/meta/Cargo.toml b/contracts/examples/empty/meta/Cargo.toml index 47a8dbdfd0..55b650cbec 100644 --- a/contracts/examples/empty/meta/Cargo.toml +++ b/contracts/examples/empty/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/empty/wasm/Cargo.toml b/contracts/examples/empty/wasm/Cargo.toml index 9a551ecd8a..ac4dd8cce9 100644 --- a/contracts/examples/empty/wasm/Cargo.toml +++ b/contracts/examples/empty/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 a930ff827c..0f7591af8b 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 5f0ac8e76f..06316a3b20 100644 --- a/contracts/examples/esdt-transfer-with-fee/meta/Cargo.toml +++ b/contracts/examples/esdt-transfer-with-fee/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml index dd7d97cdb8..5855a9e99b 100644 --- a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml +++ b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/factorial/Cargo.toml b/contracts/examples/factorial/Cargo.toml index a8e1caf074..d0c7032607 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" diff --git a/contracts/examples/factorial/meta/Cargo.toml b/contracts/examples/factorial/meta/Cargo.toml index 6cdefc436d..1df33d3fd2 100644 --- a/contracts/examples/factorial/meta/Cargo.toml +++ b/contracts/examples/factorial/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/factorial/wasm/Cargo.toml b/contracts/examples/factorial/wasm/Cargo.toml index 8889a9b7ae..4ad683cc2f 100644 --- a/contracts/examples/factorial/wasm/Cargo.toml +++ b/contracts/examples/factorial/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/fractional-nfts/Cargo.toml b/contracts/examples/fractional-nfts/Cargo.toml index a64f7f323d..772f5cdcad 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.5" +version = "0.47.6" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" diff --git a/contracts/examples/fractional-nfts/meta/Cargo.toml b/contracts/examples/fractional-nfts/meta/Cargo.toml index 24ca9dc1c9..814f89e481 100644 --- a/contracts/examples/fractional-nfts/meta/Cargo.toml +++ b/contracts/examples/fractional-nfts/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/fractional-nfts/wasm/Cargo.toml b/contracts/examples/fractional-nfts/wasm/Cargo.toml index ae8fa6d005..cc319d03b1 100644 --- a/contracts/examples/fractional-nfts/wasm/Cargo.toml +++ b/contracts/examples/fractional-nfts/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/lottery-esdt/Cargo.toml b/contracts/examples/lottery-esdt/Cargo.toml index 75cb2cdb2f..14f07cb698 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" diff --git a/contracts/examples/lottery-esdt/meta/Cargo.toml b/contracts/examples/lottery-esdt/meta/Cargo.toml index fe025f1fbf..585766f77b 100644 --- a/contracts/examples/lottery-esdt/meta/Cargo.toml +++ b/contracts/examples/lottery-esdt/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/lottery-esdt/wasm/Cargo.toml b/contracts/examples/lottery-esdt/wasm/Cargo.toml index c0395a9569..3b9c9009c6 100644 --- a/contracts/examples/lottery-esdt/wasm/Cargo.toml +++ b/contracts/examples/lottery-esdt/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/multisig/Cargo.toml b/contracts/examples/multisig/Cargo.toml index 784f5b8bfd..72315654ab 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.5" +version = "0.47.6" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" [dev-dependencies.adder] @@ -27,7 +27,7 @@ path = "../adder" path = "../factorial" [dev-dependencies.multiversx-wegld-swap-sc] -version = "0.47.5" +version = "0.47.6" path = "../../core/wegld-swap" [dev-dependencies] diff --git a/contracts/examples/multisig/interact/Cargo.toml b/contracts/examples/multisig/interact/Cargo.toml index 3720db003d..e5d783eb74 100644 --- a/contracts/examples/multisig/interact/Cargo.toml +++ b/contracts/examples/multisig/interact/Cargo.toml @@ -18,13 +18,13 @@ toml = "0.8.6" path = ".." [dependencies.multiversx-sc-modules] -version = "0.47.5" +version = "0.47.6" path = "../../../../contracts/modules" [dependencies.multiversx-sc-snippets] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/snippets" [dependencies.multiversx-sc-scenario] -version = "=0.47.5" +version = "=0.47.6" path = "../../../../framework/scenario" diff --git a/contracts/examples/multisig/meta/Cargo.toml b/contracts/examples/multisig/meta/Cargo.toml index 1b46da4489..0a92bfb7f3 100644 --- a/contracts/examples/multisig/meta/Cargo.toml +++ b/contracts/examples/multisig/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/multisig/wasm-multisig-full/Cargo.toml b/contracts/examples/multisig/wasm-multisig-full/Cargo.toml index 64faae5032..6cf54e2aa4 100644 --- a/contracts/examples/multisig/wasm-multisig-full/Cargo.toml +++ b/contracts/examples/multisig/wasm-multisig-full/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 ec1c6aba87..49029387f6 100644 --- a/contracts/examples/multisig/wasm-multisig-view/Cargo.toml +++ b/contracts/examples/multisig/wasm-multisig-view/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/multisig/wasm/Cargo.toml b/contracts/examples/multisig/wasm/Cargo.toml index de21ada11d..a8a21b6cd5 100644 --- a/contracts/examples/multisig/wasm/Cargo.toml +++ b/contracts/examples/multisig/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-minter/Cargo.toml b/contracts/examples/nft-minter/Cargo.toml index 9bcab9f7cc..848a54ff69 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-minter/meta/Cargo.toml b/contracts/examples/nft-minter/meta/Cargo.toml index 9193979931..48c93adfb8 100644 --- a/contracts/examples/nft-minter/meta/Cargo.toml +++ b/contracts/examples/nft-minter/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-minter/wasm/Cargo.toml b/contracts/examples/nft-minter/wasm/Cargo.toml index d44e299f52..31796c2315 100644 --- a/contracts/examples/nft-minter/wasm/Cargo.toml +++ b/contracts/examples/nft-minter/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-storage-prepay/Cargo.toml b/contracts/examples/nft-storage-prepay/Cargo.toml index c40c8096e5..56124a7d4a 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-storage-prepay/meta/Cargo.toml b/contracts/examples/nft-storage-prepay/meta/Cargo.toml index 2ecb100f40..7efa3acb1b 100644 --- a/contracts/examples/nft-storage-prepay/meta/Cargo.toml +++ b/contracts/examples/nft-storage-prepay/meta/Cargo.toml @@ -11,6 +11,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-storage-prepay/wasm/Cargo.toml b/contracts/examples/nft-storage-prepay/wasm/Cargo.toml index 2d0fa1f340..a8f76a1501 100644 --- a/contracts/examples/nft-storage-prepay/wasm/Cargo.toml +++ b/contracts/examples/nft-storage-prepay/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-subscription/Cargo.toml b/contracts/examples/nft-subscription/Cargo.toml index c3a15ca04e..8098098892 100644 --- a/contracts/examples/nft-subscription/Cargo.toml +++ b/contracts/examples/nft-subscription/Cargo.toml @@ -9,13 +9,13 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.5" +version = "0.47.6" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-subscription/meta/Cargo.toml b/contracts/examples/nft-subscription/meta/Cargo.toml index ebb5c97716..b6b576f83a 100644 --- a/contracts/examples/nft-subscription/meta/Cargo.toml +++ b/contracts/examples/nft-subscription/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-subscription/wasm/Cargo.toml b/contracts/examples/nft-subscription/wasm/Cargo.toml index 0469136d02..a511fa5b0a 100644 --- a/contracts/examples/nft-subscription/wasm/Cargo.toml +++ b/contracts/examples/nft-subscription/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/order-book/factory/Cargo.toml b/contracts/examples/order-book/factory/Cargo.toml index e78a41e300..89ca0536c7 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.47.5" +version = "0.47.6" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/scenario" diff --git a/contracts/examples/order-book/factory/meta/Cargo.toml b/contracts/examples/order-book/factory/meta/Cargo.toml index c81b977517..d014e078bb 100644 --- a/contracts/examples/order-book/factory/meta/Cargo.toml +++ b/contracts/examples/order-book/factory/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/order-book/factory/wasm/Cargo.toml b/contracts/examples/order-book/factory/wasm/Cargo.toml index 491a30d13c..21ce9dedc7 100644 --- a/contracts/examples/order-book/factory/wasm/Cargo.toml +++ b/contracts/examples/order-book/factory/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/order-book/pair/Cargo.toml b/contracts/examples/order-book/pair/Cargo.toml index db90006821..5564e659a5 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.47.5" +version = "0.47.6" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/scenario" diff --git a/contracts/examples/order-book/pair/meta/Cargo.toml b/contracts/examples/order-book/pair/meta/Cargo.toml index b9af3fa938..6351950abf 100644 --- a/contracts/examples/order-book/pair/meta/Cargo.toml +++ b/contracts/examples/order-book/pair/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/order-book/pair/wasm/Cargo.toml b/contracts/examples/order-book/pair/wasm/Cargo.toml index f00e902291..ed79171648 100644 --- a/contracts/examples/order-book/pair/wasm/Cargo.toml +++ b/contracts/examples/order-book/pair/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/ping-pong-egld/Cargo.toml b/contracts/examples/ping-pong-egld/Cargo.toml index 2679417da3..8e4476d9cd 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" diff --git a/contracts/examples/ping-pong-egld/meta/Cargo.toml b/contracts/examples/ping-pong-egld/meta/Cargo.toml index 0b40d9aa0b..a1048e6bf3 100644 --- a/contracts/examples/ping-pong-egld/meta/Cargo.toml +++ b/contracts/examples/ping-pong-egld/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/ping-pong-egld/wasm/Cargo.toml b/contracts/examples/ping-pong-egld/wasm/Cargo.toml index 73147c5c45..7422ef15d8 100644 --- a/contracts/examples/ping-pong-egld/wasm/Cargo.toml +++ b/contracts/examples/ping-pong-egld/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/proxy-pause/Cargo.toml b/contracts/examples/proxy-pause/Cargo.toml index 3e4c3a6aec..c226500631 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 fba5a0b1bc..7016affa99 100644 --- a/contracts/examples/proxy-pause/meta/Cargo.toml +++ b/contracts/examples/proxy-pause/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = [ "you",] path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/proxy-pause/wasm/Cargo.toml b/contracts/examples/proxy-pause/wasm/Cargo.toml index bdf21b6703..fd17464600 100644 --- a/contracts/examples/proxy-pause/wasm/Cargo.toml +++ b/contracts/examples/proxy-pause/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/rewards-distribution/Cargo.toml b/contracts/examples/rewards-distribution/Cargo.toml index bafdb40929..e1f67893d3 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.5" +version = "0.47.6" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" diff --git a/contracts/examples/rewards-distribution/meta/Cargo.toml b/contracts/examples/rewards-distribution/meta/Cargo.toml index cf59d2db46..6319b2bb00 100644 --- a/contracts/examples/rewards-distribution/meta/Cargo.toml +++ b/contracts/examples/rewards-distribution/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = ["Claudiu-Marcel Bruda "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/rewards-distribution/wasm/Cargo.toml b/contracts/examples/rewards-distribution/wasm/Cargo.toml index a17709b9e7..0248259c78 100644 --- a/contracts/examples/rewards-distribution/wasm/Cargo.toml +++ b/contracts/examples/rewards-distribution/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/seed-nft-minter/Cargo.toml b/contracts/examples/seed-nft-minter/Cargo.toml index b1b22d1276..f55298cb22 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.5" +version = "0.47.6" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" diff --git a/contracts/examples/seed-nft-minter/meta/Cargo.toml b/contracts/examples/seed-nft-minter/meta/Cargo.toml index 9828dc2788..13fb20029a 100644 --- a/contracts/examples/seed-nft-minter/meta/Cargo.toml +++ b/contracts/examples/seed-nft-minter/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = ["Claudiu-Marcel Bruda "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/seed-nft-minter/wasm/Cargo.toml b/contracts/examples/seed-nft-minter/wasm/Cargo.toml index b6f616bf91..bf62e69388 100644 --- a/contracts/examples/seed-nft-minter/wasm/Cargo.toml +++ b/contracts/examples/seed-nft-minter/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/token-release/Cargo.toml b/contracts/examples/token-release/Cargo.toml index 2e20827705..57eeb7e92a 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" diff --git a/contracts/examples/token-release/meta/Cargo.toml b/contracts/examples/token-release/meta/Cargo.toml index d774d4a2bb..08378ca6d0 100644 --- a/contracts/examples/token-release/meta/Cargo.toml +++ b/contracts/examples/token-release/meta/Cargo.toml @@ -10,7 +10,7 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/token-release/wasm/Cargo.toml b/contracts/examples/token-release/wasm/Cargo.toml index 71ad98f976..6383a6ed3b 100644 --- a/contracts/examples/token-release/wasm/Cargo.toml +++ b/contracts/examples/token-release/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/abi-tester/Cargo.toml b/contracts/feature-tests/abi-tester/Cargo.toml index 66ff8bb666..c01817136a 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.47.5" +version = "0.47.6" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" [dev-dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" 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 24c96a91f5..a654d33b25 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.47.5" + "version": "0.47.6" } }, "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 72b756e470..61dc7d29ca 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.47.5" + "version": "0.47.6" } }, "docs": [ diff --git a/contracts/feature-tests/abi-tester/meta/Cargo.toml b/contracts/feature-tests/abi-tester/meta/Cargo.toml index 00bd658c54..22e005167f 100644 --- a/contracts/feature-tests/abi-tester/meta/Cargo.toml +++ b/contracts/feature-tests/abi-tester/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false 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 f6fa5ff5af..66dc257026 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 b5171c7792..42cd160365 100644 --- a/contracts/feature-tests/abi-tester/wasm/Cargo.toml +++ b/contracts/feature-tests/abi-tester/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/Cargo.toml b/contracts/feature-tests/alloc-features/Cargo.toml index 3af733d06d..0af3de93d1 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.47.5" +version = "0.47.6" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 e737db810b..9f7d0a9c26 100644 --- a/contracts/feature-tests/alloc-features/meta/Cargo.toml +++ b/contracts/feature-tests/alloc-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml index c4a1f55e35..2d85bd1f91 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml index 3380c24cf1..1f0a7140d0 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/wasm/Cargo.toml b/contracts/feature-tests/alloc-features/wasm/Cargo.toml index 398ff4d589..bd900991eb 100644 --- a/contracts/feature-tests/alloc-features/wasm/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/basic-features/Cargo.toml b/contracts/feature-tests/basic-features/Cargo.toml index 52a6628859..b8d4b8b236 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" [dependencies.multiversx-sc-modules] -version = "0.47.5" +version = "0.47.6" 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 e761436e47..a7cf4aecd8 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.8.6" path = ".." [dependencies.multiversx-sc-snippets] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/snippets" diff --git a/contracts/feature-tests/basic-features/meta/Cargo.toml b/contracts/feature-tests/basic-features/meta/Cargo.toml index 0f728ed49f..7f2421ad5a 100644 --- a/contracts/feature-tests/basic-features/meta/Cargo.toml +++ b/contracts/feature-tests/basic-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false 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 22d26cd5d5..01a88e074e 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 5b2c30319d..f08c381dc3 100644 --- a/contracts/feature-tests/basic-features/wasm/Cargo.toml +++ b/contracts/feature-tests/basic-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = true path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 3444fe9e30..925bdefbdd 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 9d7b7d3850..bcfabc08e8 100644 --- a/contracts/feature-tests/big-float-features/meta/Cargo.toml +++ b/contracts/feature-tests/big-float-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/big-float-features/wasm/Cargo.toml b/contracts/feature-tests/big-float-features/wasm/Cargo.toml index e62efe10e7..3009fb8622 100644 --- a/contracts/feature-tests/big-float-features/wasm/Cargo.toml +++ b/contracts/feature-tests/big-float-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/Cargo.toml b/contracts/feature-tests/composability/Cargo.toml index d9ae0995ca..e3f6ef1289 100644 --- a/contracts/feature-tests/composability/Cargo.toml +++ b/contracts/feature-tests/composability/Cargo.toml @@ -33,9 +33,9 @@ path = "recursive-caller" path = "vault" [dependencies.multiversx-sc] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 c3f3d304ed..e44e39bb90 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.47.5" +version = "0.47.6" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 ab7adb1818..bd93bf1e24 100644 --- a/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false 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 fb43fc2f21..dc3866cc80 100644 --- a/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 d5cae9e497..dec107ce74 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.47.5" +version = "0.47.6" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 710f03fd71..922076491c 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.47.5" +version = "0.47.6" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 c2449efbf6..373381ce93 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.5" +version = "0.47.6" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../../framework/meta" default-features = false 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 544a09a21e..1ebb400b16 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 6d5c7636d0..e85e4b699b 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.47.5" +version = "0.47.6" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 144cff2dbc..12d36d6033 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.5" +version = "0.47.6" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../../framework/meta" default-features = false 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 6a878e1822..a20aa71942 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 298cc38ea3..93e83468e9 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 f1bd614d0b..3ebbe8338d 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.47.5" +version = "0.47.6" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 159ee29fa7..770e8e77da 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.5" +version = "0.47.6" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../../framework/meta" default-features = false 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 8737c18b6a..e84938d004 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 7062232070..455e5b0b03 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.47.5" +version = "0.47.6" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 5649f09d1f..761bbe612b 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.5" +version = "0.47.6" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../../framework/meta" default-features = false 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 38c12cb392..23fee292e2 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 943ec49253..d15beaace1 100644 --- a/contracts/feature-tests/composability/forwarder-queue/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/Cargo.toml @@ -12,14 +12,14 @@ path = "src/forwarder_queue.rs" path = "../vault" [dependencies.multiversx-sc] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/base" [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" optional = true [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 e9eb852173..d286d863b4 100644 --- a/contracts/feature-tests/composability/forwarder-queue/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false 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 38dd4a6e53..762dedbde1 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 23944ba669..4ffc557a76 100644 --- a/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 759a6a64cd..ad123d8008 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.47.5" +version = "0.47.6" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 8fc82f5db3..651ea4dee6 100644 --- a/contracts/feature-tests/composability/forwarder-raw/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-raw/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false 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 e247aff0e9..f4f8cdcdc3 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 1752f95e34..51bccab90a 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 23a0df99d8..eaeb7026a2 100644 --- a/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/forwarder/Cargo.toml b/contracts/feature-tests/composability/forwarder/Cargo.toml index bd5e426fce..5b6914d7ac 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.47.5" +version = "0.47.6" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/forwarder/meta/Cargo.toml b/contracts/feature-tests/composability/forwarder/meta/Cargo.toml index 709498d977..3983d9fa4e 100644 --- a/contracts/feature-tests/composability/forwarder/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml b/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml index e9af598856..9504e2f48b 100644 --- a/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/interact/Cargo.toml b/contracts/feature-tests/composability/interact/Cargo.toml index 3ca2ae6953..1f8dfafece 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.47.5" +version = "0.47.6" path = "../../../../contracts/modules" [dependencies.multiversx-sc-snippets] -version = "0.47.5" +version = "0.47.6" 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 3f9638f4d2..379f930e0d 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.47.5" +version = "0.47.6" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 8b6d5f3929..67141d7e4f 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,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false 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 8808b6c488..cc52f9652f 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 c2ffef9059..0c54e9ca6c 100644 --- a/contracts/feature-tests/composability/promises-features/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/Cargo.toml @@ -12,6 +12,6 @@ path = "src/promises_main.rs" path = "../vault" [dependencies.multiversx-sc] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/base" diff --git a/contracts/feature-tests/composability/promises-features/meta/Cargo.toml b/contracts/feature-tests/composability/promises-features/meta/Cargo.toml index be4f70e057..4f15b8e5eb 100644 --- a/contracts/feature-tests/composability/promises-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml b/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml index ae07ea0f64..ba2aa8961a 100644 --- a/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 dd0e5e3190..c45cea4950 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.4.1" [dependencies.multiversx-sc] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 5ba64dbc91..a9a2ecb49d 100644 --- a/contracts/feature-tests/composability/proxy-test-first/meta/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-first/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false 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 1c4e66daad..8adc41ac0d 100644 --- a/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 6aacf4c17c..ad95170147 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.47.5" +version = "0.47.6" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 8ad3614823..cc0dce54fe 100644 --- a/contracts/feature-tests/composability/proxy-test-second/meta/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-second/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false 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 4f0ac22bbc..b1bc1ef21f 100644 --- a/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 3d706c42a4..f2b77ca992 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.47.5" +version = "0.47.6" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 3439b25847..0c8ccb0372 100644 --- a/contracts/feature-tests/composability/recursive-caller/meta/Cargo.toml +++ b/contracts/feature-tests/composability/recursive-caller/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml index 47b5eb2cf3..d874f6e8b4 100644 --- a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 40085fa73e..f7562b838f 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.47.5" +version = "0.47.6" path = "../../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.5" +version = "0.47.6" path = "../../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 203a996a76..8e379bf43e 100644 --- a/contracts/feature-tests/composability/transfer-role-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/transfer-role-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false 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 ff699a705e..8c91eb8859 100644 --- a/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/vault/Cargo.toml b/contracts/feature-tests/composability/vault/Cargo.toml index 6d81c26350..97f5b97371 100644 --- a/contracts/feature-tests/composability/vault/Cargo.toml +++ b/contracts/feature-tests/composability/vault/Cargo.toml @@ -10,9 +10,9 @@ path = "src/vault.rs" [dependencies.multiversx-sc] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/vault/meta/Cargo.toml b/contracts/feature-tests/composability/vault/meta/Cargo.toml index 2fc51374aa..4ab77c4b1a 100644 --- a/contracts/feature-tests/composability/vault/meta/Cargo.toml +++ b/contracts/feature-tests/composability/vault/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false 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 63df7d0d02..3c865c7080 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml index 33c14f4fd5..faacfa4958 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 31122e31f2..1812fd9940 100644 --- a/contracts/feature-tests/composability/vault/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 af4e57038a..aff54f13b1 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.47.5" +version = "0.47.6" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 ce6234c630..3cc15aabe4 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false 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 a73660bac8..51248463d6 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 83577513c1..72f9a18cab 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.47.5" +version = "0.47.6" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 b2c318dd13..b003c9b982 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false 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 bd55b29f36..bb53084b5c 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 e538bc4de9..b746b973e2 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.47.5" +version = "0.47.6" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 5608c548a3..a33bb345af 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false 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 fcb4237512..da3b74318e 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 c39f7d5f16..83c8dd14a8 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.47.5" +version = "0.47.6" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 1815a7f706..49f3be1eb5 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false 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 e964700ec5..4974a81405 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 20671838db..f096425dd6 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.47.5" +version = "0.47.6" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 db4e5ff3df..03a604c31c 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc20/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false 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 59d6c7a7b8..68bd125939 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 8372f0354a..c082fc26c0 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.47.5" +version = "0.47.6" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 96afb07b44..4e65b4a70b 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc721/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false 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 a80419dcab..28677d89a4 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/wasm-adapter" [workspace] 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 46ffb3c5ea..8325377c72 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.47.5" +version = "0.47.6" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 ce2495310a..bcb736b2c5 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/meta" default-features = false 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 9338d5fd10..51bf87cd2b 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/esdt-system-sc-mock/Cargo.toml b/contracts/feature-tests/esdt-system-sc-mock/Cargo.toml index 134d30ce63..fe18ccf688 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 e316dac5ad..f0be9537fd 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/meta/Cargo.toml +++ b/contracts/feature-tests/esdt-system-sc-mock/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false 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 656e98c8d1..72dfa8d22d 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.toml +++ b/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 49dcba60aa..214e59652c 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 b440c8cf8d..1af90b4ab0 100644 --- a/contracts/feature-tests/formatted-message-features/meta/Cargo.toml +++ b/contracts/feature-tests/formatted-message-features/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = [ "you",] path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml b/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml index 912900e134..7191a15963 100644 --- a/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml +++ b/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/managed-map-features/Cargo.toml b/contracts/feature-tests/managed-map-features/Cargo.toml index 4e44c248df..ed703f3075 100644 --- a/contracts/feature-tests/managed-map-features/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/Cargo.toml @@ -9,11 +9,11 @@ publish = false path = "src/mmap_features.rs" [dependencies.multiversx-sc] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 fdb2ea7cc8..329543ba08 100644 --- a/contracts/feature-tests/managed-map-features/meta/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/managed-map-features/wasm/Cargo.toml b/contracts/feature-tests/managed-map-features/wasm/Cargo.toml index c688388a91..03b93b10dd 100644 --- a/contracts/feature-tests/managed-map-features/wasm/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 d4b5121141..f41cc01ce4 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 053f902584..e7a6d60187 100644 --- a/contracts/feature-tests/multi-contract-features/meta/Cargo.toml +++ b/contracts/feature-tests/multi-contract-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false 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 d524d039f3..32d0b6f060 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 20839cea31..572367ec21 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 @@ -26,7 +26,7 @@ path = ".." features = ["example_feature"] [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 beca5b4d75..17ee4e7f75 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 190c9b1fb5..2dcc933328 100644 --- a/contracts/feature-tests/multi-contract-features/wasm/Cargo.toml +++ b/contracts/feature-tests/multi-contract-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 d76417a223..664ed96cdd 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 921c4f2671..b50def053b 100644 --- a/contracts/feature-tests/panic-message-features/meta/Cargo.toml +++ b/contracts/feature-tests/panic-message-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/panic-message-features/wasm/Cargo.toml b/contracts/feature-tests/panic-message-features/wasm/Cargo.toml index b55981873c..ca41ca4bd8 100644 --- a/contracts/feature-tests/panic-message-features/wasm/Cargo.toml +++ b/contracts/feature-tests/panic-message-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/payable-features/Cargo.toml b/contracts/feature-tests/payable-features/Cargo.toml index acf93f21d7..4275d0c50e 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/payable-features/meta/Cargo.toml b/contracts/feature-tests/payable-features/meta/Cargo.toml index 4fb0cc3a23..15aef444c1 100644 --- a/contracts/feature-tests/payable-features/meta/Cargo.toml +++ b/contracts/feature-tests/payable-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/payable-features/wasm/Cargo.toml b/contracts/feature-tests/payable-features/wasm/Cargo.toml index 9e9d3c0cd2..f4c9524fef 100644 --- a/contracts/feature-tests/payable-features/wasm/Cargo.toml +++ b/contracts/feature-tests/payable-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 3fdc4d3e5b..aeb8806dc0 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.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 a942895412..f529a43554 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.47.5" +version = "0.47.6" 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 851caad934..ecc108c9ac 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/meta/Cargo.toml +++ b/contracts/feature-tests/rust-snippets-generator-test/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false 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 711deb667e..d3de295f52 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.47.5" +// version = "0.47.6" // 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 23f7a37d4d..1bcd9911ee 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.toml +++ b/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 2a5bd51b12..7f56f74850 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.47.5" +version = "0.47.6" path = "../../../framework/base" features = [ "alloc" ] @@ -17,7 +17,7 @@ path = "../../examples/adder" path = "../../feature-tests/basic-features" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" 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 a378195cc9..c66e556d33 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/meta/Cargo.toml +++ b/contracts/feature-tests/rust-testing-framework-tester/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false 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 c50643a4db..122854100f 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.toml +++ b/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/use-module/Cargo.toml b/contracts/feature-tests/use-module/Cargo.toml index 281bd20397..4909bcc5b6 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.47.5" +version = "0.47.6" path = "../../../contracts/modules" [dependencies.multiversx-sc] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/scenario" [dev-dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../framework/meta" diff --git a/contracts/feature-tests/use-module/meta/Cargo.toml b/contracts/feature-tests/use-module/meta/Cargo.toml index 8246cc5fce..d67ab6febf 100644 --- a/contracts/feature-tests/use-module/meta/Cargo.toml +++ b/contracts/feature-tests/use-module/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/use-module/meta/abi/Cargo.toml b/contracts/feature-tests/use-module/meta/abi/Cargo.toml index 7a0eecd776..fe4ec859bf 100644 --- a/contracts/feature-tests/use-module/meta/abi/Cargo.toml +++ b/contracts/feature-tests/use-module/meta/abi/Cargo.toml @@ -9,10 +9,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/meta" default-features = false 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 56d64db6c4..37974a3659 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.47.5" + "version": "0.47.6" } }, "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 8fef61ec76..948e9d09f4 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.47.5" + "version": "0.47.6" } }, "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 bf3768167c..746abe441f 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" 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 129b71c83e..1a0e69499a 100644 --- a/contracts/feature-tests/use-module/wasm/Cargo.toml +++ b/contracts/feature-tests/use-module/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.5" +version = "0.47.6" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/modules/Cargo.toml b/contracts/modules/Cargo.toml index dcdc0d02e5..5f0c2f43ed 100644 --- a/contracts/modules/Cargo.toml +++ b/contracts/modules/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-modules" -version = "0.47.5" +version = "0.47.6" edition = "2021" authors = ["MultiversX "] @@ -17,5 +17,5 @@ categories = ["no-std", "wasm", "cryptography::cryptocurrencies"] alloc = ["multiversx-sc/alloc"] [dependencies.multiversx-sc] -version = "0.47.5" +version = "0.47.6" path = "../../framework/base" diff --git a/framework/base/Cargo.toml b/framework/base/Cargo.toml index ad2b6e260c..f85aa5896e 100644 --- a/framework/base/Cargo.toml +++ b/framework/base/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" edition = "2021" authors = ["Andrei Marinica ", "MultiversX "] @@ -27,7 +27,7 @@ bitflags = "=2.4.2" num-traits = { version = "=0.2.17", default-features = false } [dependencies.multiversx-sc-derive] -version = "=0.47.5" +version = "=0.47.6" path = "../derive" [dependencies.multiversx-sc-codec] diff --git a/framework/derive/Cargo.toml b/framework/derive/Cargo.toml index 490cccf7d8..3f745d768a 100644 --- a/framework/derive/Cargo.toml +++ b/framework/derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" edition = "2021" authors = ["Andrei Marinica ", "MultiversX "] diff --git a/framework/meta/Cargo.toml b/framework/meta/Cargo.toml index a4554cf766..4825f960a9 100644 --- a/framework/meta/Cargo.toml +++ b/framework/meta/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-meta" -version = "0.47.5" +version = "0.47.6" edition = "2021" authors = [ @@ -52,7 +52,7 @@ pathdiff = { version = "0.2.1", optional = true } common-path = { version = "1.0.0", optional = true } [dependencies.multiversx-sc] -version = "=0.47.5" +version = "=0.47.6" path = "../base" features = ["alloc", "num-bigint"] 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 d65b1b6094..73bb69786f 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.47.5" +version = "0.47.6" # [workspace] diff --git a/framework/meta/src/cmd/contract/meta_config.rs b/framework/meta/src/cmd/contract/meta_config.rs index f492884743..ff9ed2f2f5 100644 --- a/framework/meta/src/cmd/contract/meta_config.rs +++ b/framework/meta/src/cmd/contract/meta_config.rs @@ -205,7 +205,7 @@ overflow-checks = false path = \"..\" [dependencies.multiversx-sc-wasm-adapter] -version = \"0.47.5\" +version = \"0.47.6\" path = \"../../../../framework/wasm-adapter\" [workspace] @@ -218,7 +218,7 @@ members = [\".\"] name: "test".to_string(), edition: "2021".to_string(), profile: ContractVariantProfile::default(), - framework_version: "0.47.5".to_string(), + framework_version: "0.47.6".to_string(), framework_path: Option::Some("../../../framework/base".to_string()), contract_features: Vec::::new(), }; diff --git a/framework/meta/src/version_history.rs b/framework/meta/src/version_history.rs index dbd391af6e..28e3deb2fa 100644 --- a/framework/meta/src/version_history.rs +++ b/framework/meta/src/version_history.rs @@ -3,7 +3,7 @@ use crate::{framework_version, framework_versions, version::FrameworkVersion}; /// 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: FrameworkVersion = framework_version!(0.47.5); +pub const LAST_VERSION: FrameworkVersion = framework_version!(0.47.6); /// Indicates where to stop with the upgrades. pub const LAST_UPGRADE_VERSION: FrameworkVersion = LAST_VERSION; @@ -63,6 +63,7 @@ pub const VERSIONS: &[FrameworkVersion] = framework_versions![ 0.47.3, 0.47.4, 0.47.5, + 0.47.6, ]; #[rustfmt::skip] diff --git a/framework/scenario/Cargo.toml b/framework/scenario/Cargo.toml index 560cf08281..cff475ee2f 100644 --- a/framework/scenario/Cargo.toml +++ b/framework/scenario/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-scenario" -version = "0.47.5" +version = "0.47.6" edition = "2021" authors = [ @@ -40,12 +40,12 @@ path = "src/main.rs" run-go-tests = [] [dependencies.multiversx-sc] -version = "=0.47.5" +version = "=0.47.6" features = ["alloc", "num-bigint"] path = "../base" [dependencies.multiversx-sc-meta] -version = "=0.47.5" +version = "=0.47.6" path = "../meta" [dependencies.multiversx-chain-scenario-format] diff --git a/framework/snippets/Cargo.toml b/framework/snippets/Cargo.toml index 3eb1a578df..700053f340 100644 --- a/framework/snippets/Cargo.toml +++ b/framework/snippets/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-snippets" -version = "0.47.5" +version = "0.47.6" edition = "2021" authors = ["MultiversX "] @@ -22,7 +22,7 @@ env_logger = "0.11" futures = "0.3" [dependencies.multiversx-sc-scenario] -version = "=0.47.5" +version = "=0.47.6" path = "../scenario" [dependencies.multiversx-sdk] diff --git a/framework/wasm-adapter/Cargo.toml b/framework/wasm-adapter/Cargo.toml index 4630f3d7d4..a4efa2c1eb 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.47.5" +version = "0.47.6" edition = "2021" authors = [ @@ -22,5 +22,5 @@ categories = [ ] [dependencies.multiversx-sc] -version = "=0.47.5" +version = "=0.47.6" path = "../base" diff --git a/tools/mxpy-snippet-generator/Cargo.toml b/tools/mxpy-snippet-generator/Cargo.toml index 6e7ab2d1b7..0de044383f 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.47.5" +version = "0.47.6" path = "../../framework/base" [dependencies] diff --git a/tools/rust-debugger/format-tests/Cargo.toml b/tools/rust-debugger/format-tests/Cargo.toml index 806ca531ea..c7109ff434 100644 --- a/tools/rust-debugger/format-tests/Cargo.toml +++ b/tools/rust-debugger/format-tests/Cargo.toml @@ -9,11 +9,11 @@ name = "format-tests" path = "src/format_tests.rs" [dependencies.multiversx-sc] -version = "=0.47.5" +version = "=0.47.6" path = "../../../framework/base" [dependencies.multiversx-sc-scenario] -version = "=0.47.5" +version = "=0.47.6" path = "../../../framework/scenario" [dependencies.multiversx-chain-vm] From faa9941d138543f7251742b1814e97c9c4014f79 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 15 Mar 2024 00:37:28 +0100 Subject: [PATCH 093/461] Cargo.lock update --- .../benchmarks/large-storage/wasm/Cargo.lock | 6 +-- .../linked-list-repeat/wasm/Cargo.lock | 6 +-- .../mappers/map-repeat/wasm/Cargo.lock | 6 +-- .../mappers/queue-repeat/wasm/Cargo.lock | 6 +-- .../mappers/set-repeat/wasm/Cargo.lock | 6 +-- .../single-value-repeat/wasm/Cargo.lock | 6 +-- .../mappers/vec-repeat/wasm/Cargo.lock | 6 +-- .../benchmarks/send-tx-repeat/wasm/Cargo.lock | 6 +-- .../benchmarks/str-repeat/wasm/Cargo.lock | 6 +-- .../core/price-aggregator/wasm/Cargo.lock | 42 +++++++++---------- contracts/examples/adder/wasm/Cargo.lock | 6 +-- .../bonding-curve-contract/wasm/Cargo.lock | 8 ++-- .../examples/check-pause/wasm/Cargo.lock | 8 ++-- .../crowdfunding-esdt/wasm/Cargo.lock | 6 +-- .../examples/crypto-bubbles/wasm/Cargo.lock | 6 +-- .../kitty-auction/wasm/Cargo.lock | 6 +-- .../kitty-genetic-alg/wasm/Cargo.lock | 6 +-- .../kitty-ownership/wasm/Cargo.lock | 6 +-- .../examples/crypto-zombies/wasm/Cargo.lock | 6 +-- .../examples/digital-cash/wasm/Cargo.lock | 6 +-- contracts/examples/empty/wasm/Cargo.lock | 6 +-- .../esdt-transfer-with-fee/wasm/Cargo.lock | 6 +-- contracts/examples/factorial/wasm/Cargo.lock | 6 +-- .../examples/fractional-nfts/wasm/Cargo.lock | 8 ++-- .../examples/lottery-esdt/wasm/Cargo.lock | 6 +-- .../multisig/wasm-multisig-full/Cargo.lock | 8 ++-- .../multisig/wasm-multisig-view/Cargo.lock | 8 ++-- contracts/examples/multisig/wasm/Cargo.lock | 8 ++-- contracts/examples/nft-minter/wasm/Cargo.lock | 6 +-- .../nft-storage-prepay/wasm/Cargo.lock | 6 +-- .../examples/nft-subscription/wasm/Cargo.lock | 8 ++-- .../order-book/factory/wasm/Cargo.lock | 6 +-- .../examples/order-book/pair/wasm/Cargo.lock | 6 +-- .../examples/ping-pong-egld/wasm/Cargo.lock | 6 +-- .../examples/proxy-pause/wasm/Cargo.lock | 6 +-- .../rewards-distribution/wasm/Cargo.lock | 8 ++-- .../examples/seed-nft-minter/wasm/Cargo.lock | 8 ++-- .../examples/token-release/wasm/Cargo.lock | 6 +-- .../abi-tester/wasm-abi-tester-ev/Cargo.lock | 6 +-- .../feature-tests/abi-tester/wasm/Cargo.lock | 6 +-- .../wasm-alloc-mem-fail/Cargo.lock | 6 +-- .../wasm-alloc-mem-leaking/Cargo.lock | 6 +-- .../alloc-features/wasm/Cargo.lock | 6 +-- .../Cargo.lock | 8 ++-- .../basic-features/wasm/Cargo.lock | 8 ++-- .../big-float-features/wasm/Cargo.lock | 6 +-- .../builtin-func-features/wasm/Cargo.lock | 6 +-- .../first-contract/wasm/Cargo.lock | 6 +-- .../second-contract/wasm/Cargo.lock | 6 +-- .../child/wasm/Cargo.lock | 6 +-- .../parent/wasm/Cargo.lock | 6 +-- .../wasm-forwarder-queue-promises/Cargo.lock | 6 +-- .../forwarder-queue/wasm/Cargo.lock | 6 +-- .../Cargo.lock | 6 +-- .../Cargo.lock | 6 +-- .../forwarder-raw/wasm/Cargo.lock | 6 +-- .../composability/forwarder/wasm/Cargo.lock | 6 +-- .../local-esdt-and-nft/wasm/Cargo.lock | 6 +-- .../promises-features/wasm/Cargo.lock | 6 +-- .../proxy-test-first/wasm/Cargo.lock | 6 +-- .../proxy-test-second/wasm/Cargo.lock | 6 +-- .../recursive-caller/wasm/Cargo.lock | 6 +-- .../transfer-role-features/wasm/Cargo.lock | 8 ++-- .../vault/wasm-vault-promises/Cargo.lock | 6 +-- .../vault/wasm-vault-upgrade/Cargo.lock | 6 +-- .../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 +-- .../erc1155/wasm/Cargo.lock | 6 +-- .../erc-style-contracts/erc20/wasm/Cargo.lock | 6 +-- .../erc721/wasm/Cargo.lock | 6 +-- .../lottery-erc20/wasm/Cargo.lock | 6 +-- .../esdt-system-sc-mock/wasm/Cargo.lock | 6 +-- .../wasm/Cargo.lock | 6 +-- .../managed-map-features/wasm/Cargo.lock | 6 +-- .../wasm-multi-contract-alt-impl/Cargo.lock | 6 +-- .../Cargo.lock | 6 +-- .../Cargo.lock | 6 +-- .../multi-contract-features/wasm/Cargo.lock | 6 +-- .../panic-message-features/wasm/Cargo.lock | 6 +-- .../payable-features/wasm/Cargo.lock | 6 +-- .../wasm/Cargo.lock | 6 +-- .../wasm/Cargo.lock | 6 +-- .../wasm-use-module-view/Cargo.lock | 8 ++-- .../feature-tests/use-module/wasm/Cargo.lock | 8 ++-- 86 files changed, 290 insertions(+), 290 deletions(-) diff --git a/contracts/benchmarks/large-storage/wasm/Cargo.lock b/contracts/benchmarks/large-storage/wasm/Cargo.lock index fa29ad6f14..7be1d06796 100755 --- a/contracts/benchmarks/large-storage/wasm/Cargo.lock +++ b/contracts/benchmarks/large-storage/wasm/Cargo.lock @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 b81c08488a..c53d36c9e6 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.lock @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock index 54e27ced42..8e9ecb0aff 100644 --- a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock index a92443bd08..a05e0cbf9c 100644 --- a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock index 5e5d756355..82ecbafa98 100644 --- a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 558c2921c6..aeda5a7bc8 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.lock @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock index 2feba1a867..12e9bf5ce5 100644 --- a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock index f9dfe9d5b2..5ae88675b5 100755 --- a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/str-repeat/wasm/Cargo.lock b/contracts/benchmarks/str-repeat/wasm/Cargo.lock index 1486892d5c..5a33cbf8ea 100755 --- a/contracts/benchmarks/str-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/str-repeat/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/core/price-aggregator/wasm/Cargo.lock b/contracts/core/price-aggregator/wasm/Cargo.lock index 3c49a61d3a..7e1f74ef3b 100644 --- a/contracts/core/price-aggregator/wasm/Cargo.lock +++ b/contracts/core/price-aggregator/wasm/Cargo.lock @@ -22,9 +22,9 @@ checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" [[package]] name = "cfg-if" @@ -65,9 +65,9 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "js-sys" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] @@ -80,13 +80,13 @@ checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "log" -version = "0.4.20" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "multiversx-price-aggregator-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "arrayvec", "getrandom", @@ -105,7 +105,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -134,7 +134,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -145,14 +145,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] @@ -276,9 +276,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -286,9 +286,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", @@ -301,9 +301,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -311,9 +311,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", @@ -324,6 +324,6 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" diff --git a/contracts/examples/adder/wasm/Cargo.lock b/contracts/examples/adder/wasm/Cargo.lock index ee2b588c5d..f1e406be0b 100755 --- a/contracts/examples/adder/wasm/Cargo.lock +++ b/contracts/examples/adder/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/bonding-curve-contract/wasm/Cargo.lock b/contracts/examples/bonding-curve-contract/wasm/Cargo.lock index 4764163b77..b95f064ec9 100644 --- a/contracts/examples/bonding-curve-contract/wasm/Cargo.lock +++ b/contracts/examples/bonding-curve-contract/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/check-pause/wasm/Cargo.lock b/contracts/examples/check-pause/wasm/Cargo.lock index 659770d735..381a32895d 100644 --- a/contracts/examples/check-pause/wasm/Cargo.lock +++ b/contracts/examples/check-pause/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock b/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock index 06a703eb14..188e8e70e9 100644 --- a/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock +++ b/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/crypto-bubbles/wasm/Cargo.lock b/contracts/examples/crypto-bubbles/wasm/Cargo.lock index f2c55800ed..56782e48f4 100755 --- a/contracts/examples/crypto-bubbles/wasm/Cargo.lock +++ b/contracts/examples/crypto-bubbles/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 844e92ad69..5ccd000fa0 100755 --- a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.lock +++ b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.lock @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -113,7 +113,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -124,7 +124,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 3b48261415..e2d7648bec 100755 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.lock +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.lock @@ -65,7 +65,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -94,7 +94,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -105,7 +105,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 2305919360..95e227f126 100755 --- a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.lock +++ b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.lock @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -104,7 +104,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -115,7 +115,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/crypto-zombies/wasm/Cargo.lock b/contracts/examples/crypto-zombies/wasm/Cargo.lock index 9425f7d3fe..4375fdad74 100755 --- a/contracts/examples/crypto-zombies/wasm/Cargo.lock +++ b/contracts/examples/crypto-zombies/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/digital-cash/wasm/Cargo.lock b/contracts/examples/digital-cash/wasm/Cargo.lock index d01e7ca5d3..80451862a4 100644 --- a/contracts/examples/digital-cash/wasm/Cargo.lock +++ b/contracts/examples/digital-cash/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/empty/wasm/Cargo.lock b/contracts/examples/empty/wasm/Cargo.lock index ed51dd0f2d..77c2d35593 100755 --- a/contracts/examples/empty/wasm/Cargo.lock +++ b/contracts/examples/empty/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 4a29f51769..0b1120c4bb 100644 --- a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.lock +++ b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/factorial/wasm/Cargo.lock b/contracts/examples/factorial/wasm/Cargo.lock index 93ca6d814f..61020c7136 100755 --- a/contracts/examples/factorial/wasm/Cargo.lock +++ b/contracts/examples/factorial/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/fractional-nfts/wasm/Cargo.lock b/contracts/examples/fractional-nfts/wasm/Cargo.lock index 8cb705ce82..fcf3281a66 100644 --- a/contracts/examples/fractional-nfts/wasm/Cargo.lock +++ b/contracts/examples/fractional-nfts/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/lottery-esdt/wasm/Cargo.lock b/contracts/examples/lottery-esdt/wasm/Cargo.lock index a597e353be..4fb2a0da1a 100755 --- a/contracts/examples/lottery-esdt/wasm/Cargo.lock +++ b/contracts/examples/lottery-esdt/wasm/Cargo.lock @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/multisig/wasm-multisig-full/Cargo.lock b/contracts/examples/multisig/wasm-multisig-full/Cargo.lock index 329757cdb6..91527cb329 100644 --- a/contracts/examples/multisig/wasm-multisig-full/Cargo.lock +++ b/contracts/examples/multisig/wasm-multisig-full/Cargo.lock @@ -56,7 +56,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/multisig/wasm-multisig-view/Cargo.lock b/contracts/examples/multisig/wasm-multisig-view/Cargo.lock index 9ec7d5be1e..f7651215a2 100644 --- a/contracts/examples/multisig/wasm-multisig-view/Cargo.lock +++ b/contracts/examples/multisig/wasm-multisig-view/Cargo.lock @@ -56,7 +56,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/multisig/wasm/Cargo.lock b/contracts/examples/multisig/wasm/Cargo.lock index a1f0090ffe..703a789b67 100755 --- a/contracts/examples/multisig/wasm/Cargo.lock +++ b/contracts/examples/multisig/wasm/Cargo.lock @@ -56,7 +56,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/nft-minter/wasm/Cargo.lock b/contracts/examples/nft-minter/wasm/Cargo.lock index 8137f69e11..4e52a3e4ce 100644 --- a/contracts/examples/nft-minter/wasm/Cargo.lock +++ b/contracts/examples/nft-minter/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/nft-storage-prepay/wasm/Cargo.lock b/contracts/examples/nft-storage-prepay/wasm/Cargo.lock index 9618be73c9..e86af50f12 100755 --- a/contracts/examples/nft-storage-prepay/wasm/Cargo.lock +++ b/contracts/examples/nft-storage-prepay/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/nft-subscription/wasm/Cargo.lock b/contracts/examples/nft-subscription/wasm/Cargo.lock index 53bd528197..9b4c96f380 100644 --- a/contracts/examples/nft-subscription/wasm/Cargo.lock +++ b/contracts/examples/nft-subscription/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/order-book/factory/wasm/Cargo.lock b/contracts/examples/order-book/factory/wasm/Cargo.lock index c5b0d6fa16..8a0892b4f0 100644 --- a/contracts/examples/order-book/factory/wasm/Cargo.lock +++ b/contracts/examples/order-book/factory/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/order-book/pair/wasm/Cargo.lock b/contracts/examples/order-book/pair/wasm/Cargo.lock index ee004b1197..7b781cacc5 100644 --- a/contracts/examples/order-book/pair/wasm/Cargo.lock +++ b/contracts/examples/order-book/pair/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/ping-pong-egld/wasm/Cargo.lock b/contracts/examples/ping-pong-egld/wasm/Cargo.lock index b1fa1d7bee..ea650d9183 100755 --- a/contracts/examples/ping-pong-egld/wasm/Cargo.lock +++ b/contracts/examples/ping-pong-egld/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/proxy-pause/wasm/Cargo.lock b/contracts/examples/proxy-pause/wasm/Cargo.lock index d9ee7fd1bf..0255476045 100644 --- a/contracts/examples/proxy-pause/wasm/Cargo.lock +++ b/contracts/examples/proxy-pause/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/rewards-distribution/wasm/Cargo.lock b/contracts/examples/rewards-distribution/wasm/Cargo.lock index 2f7aa5b9c9..7a48d77b79 100644 --- a/contracts/examples/rewards-distribution/wasm/Cargo.lock +++ b/contracts/examples/rewards-distribution/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/seed-nft-minter/wasm/Cargo.lock b/contracts/examples/seed-nft-minter/wasm/Cargo.lock index cf8559ba91..fb7221c3d2 100644 --- a/contracts/examples/seed-nft-minter/wasm/Cargo.lock +++ b/contracts/examples/seed-nft-minter/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/token-release/wasm/Cargo.lock b/contracts/examples/token-release/wasm/Cargo.lock index 04771bffe7..8c8f3dc478 100644 --- a/contracts/examples/token-release/wasm/Cargo.lock +++ b/contracts/examples/token-release/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 68b0945a4a..10c6773f26 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/abi-tester/wasm/Cargo.lock b/contracts/feature-tests/abi-tester/wasm/Cargo.lock index 8f5706541d..a5aff97dd6 100755 --- a/contracts/feature-tests/abi-tester/wasm/Cargo.lock +++ b/contracts/feature-tests/abi-tester/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock index 86a0dd8369..487a94fe63 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock index e6478aa683..0ad48515fe 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/alloc-features/wasm/Cargo.lock b/contracts/feature-tests/alloc-features/wasm/Cargo.lock index 78cd8de067..6c98001362 100644 --- a/contracts/feature-tests/alloc-features/wasm/Cargo.lock +++ b/contracts/feature-tests/alloc-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 fd4d59761c..3a6b9aafb9 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 @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/basic-features/wasm/Cargo.lock b/contracts/feature-tests/basic-features/wasm/Cargo.lock index e4bb971005..1ce9fe2626 100755 --- a/contracts/feature-tests/basic-features/wasm/Cargo.lock +++ b/contracts/feature-tests/basic-features/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 8de5fab712..b51f2b38fc 100644 --- a/contracts/feature-tests/big-float-features/wasm/Cargo.lock +++ b/contracts/feature-tests/big-float-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 4e9e07752c..86dcd9f808 100644 --- a/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 c38b6fb0ce..eecef5998f 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 b6b9fc008d..7c177a1cb4 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 @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 1fcf243263..05ce10fcdf 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 a1695205f6..1203771393 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 @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 77b8dddef6..6cd0f8bf6f 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 @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 16c620e6f3..204fd42b2c 100644 --- a/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 dc9d4ac00a..114dcac248 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 1e3db2655b..c3a50248c5 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 f5ba514af5..938e700dd1 100755 --- a/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock b/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock index 3d866d859a..f261a8a95a 100755 --- a/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 acc6558d24..54764c0e5f 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 @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 eb6e4092ed..8be785965b 100644 --- a/contracts/feature-tests/composability/promises-features/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/promises-features/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 4aff4f7065..4c616d091a 100755 --- a/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 3420a7b3f6..2fd411835f 100755 --- a/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 1c86119ff1..ac7deaf7a0 100755 --- a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 bb7ae8f108..d2e6b98b35 100644 --- a/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 ee08553757..a8fb67560e 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.lock +++ b/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock index 5130bd4f11..91342201d7 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock +++ b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/vault/wasm/Cargo.lock b/contracts/feature-tests/composability/vault/wasm/Cargo.lock index 7c62c838a8..7f7b448ea1 100755 --- a/contracts/feature-tests/composability/vault/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/vault/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 c1f6bbab6c..e9da526720 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 @@ -63,7 +63,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 e1d897e85b..f7da662233 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 @@ -63,7 +63,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 89b2e55240..02a77c911f 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 edcb0e4176..f068f66024 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 4833835c10..31f5c7a5b3 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 7b5004e949..921baab25d 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 2d821b9e29..49b706b912 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 @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 d789558af3..7d3eb7e294 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.lock +++ b/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 b19830db13..80f9af5533 100644 --- a/contracts/feature-tests/formatted-message-features/wasm/Cargo.lock +++ b/contracts/feature-tests/formatted-message-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 e8fa9edd3d..491ef2f890 100644 --- a/contracts/feature-tests/managed-map-features/wasm/Cargo.lock +++ b/contracts/feature-tests/managed-map-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 1361ebb7c7..f08ba00acd 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 @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 3928df2b36..aef8e2e065 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 @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 db8878b7ad..0fb553246f 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 @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 a8b5526b05..2be74ea6d2 100755 --- a/contracts/feature-tests/multi-contract-features/wasm/Cargo.lock +++ b/contracts/feature-tests/multi-contract-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 daee57efc3..d7a615f03b 100755 --- a/contracts/feature-tests/panic-message-features/wasm/Cargo.lock +++ b/contracts/feature-tests/panic-message-features/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/payable-features/wasm/Cargo.lock b/contracts/feature-tests/payable-features/wasm/Cargo.lock index 56c5e9e863..5fd8334ff0 100755 --- a/contracts/feature-tests/payable-features/wasm/Cargo.lock +++ b/contracts/feature-tests/payable-features/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 1f0efa51a3..11de3fca41 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.lock +++ b/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 83116fbd50..0fa9a620bc 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.lock +++ b/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" 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 6de9cf30eb..d5e7c069db 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 @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/use-module/wasm/Cargo.lock b/contracts/feature-tests/use-module/wasm/Cargo.lock index 9d8b2504a3..7c11441a64 100644 --- a/contracts/feature-tests/use-module/wasm/Cargo.lock +++ b/contracts/feature-tests/use-module/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.5" +version = "0.47.6" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.5" +version = "0.47.6" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.5" +version = "0.47.6" dependencies = [ "multiversx-sc", ] From 835ac026e3a3b1e93aca9b754e8144315d11a980 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 15 Mar 2024 07:23:54 +0100 Subject: [PATCH 094/461] template fix: remove path from interactor Cargo.toml --- .../standalone/template/template_adjuster.rs | 17 +++++++++++++++++ framework/meta/tests/template_test.rs | 2 ++ 2 files changed, 19 insertions(+) diff --git a/framework/meta/src/cmd/standalone/template/template_adjuster.rs b/framework/meta/src/cmd/standalone/template/template_adjuster.rs index d84422c536..1182463c8f 100644 --- a/framework/meta/src/cmd/standalone/template/template_adjuster.rs +++ b/framework/meta/src/cmd/standalone/template/template_adjuster.rs @@ -14,6 +14,7 @@ const INTERACT_DIRECTORY: &str = "./interact"; const ROOT_CARGO_TOML: &str = "./Cargo.toml"; const META_CARGO_TOML: &str = "./meta/Cargo.toml"; const WASM_CARGO_TOML: &str = "./wasm/Cargo.toml"; +const INTERACT_CARGO_TOML: &str = "./interact/Cargo.toml"; pub struct TemplateAdjuster { pub metadata: TemplateMetadata, @@ -25,6 +26,7 @@ impl TemplateAdjuster { self.update_dependencies_root(); self.update_dependencies_meta(); self.update_dependencies_wasm(args_tag); + self.update_dependencies_interact(); } fn update_dependencies_root(&self) { @@ -70,6 +72,21 @@ impl TemplateAdjuster { toml.save_to_file(&cargo_toml_path); } + fn update_dependencies_interact(&self) { + if !self.metadata.has_interactor { + return; + } + + let cargo_toml_path = self.target.contract_dir().join(INTERACT_CARGO_TOML); + let mut toml = CargoTomlContents::load_from_file(&cargo_toml_path); + + if !self.keep_paths { + remove_paths_from_deps(&mut toml, &[&self.metadata.name]); + } + + toml.save_to_file(&cargo_toml_path); + } + pub fn rename_template_to(&self) { self.rename_trait_to(); self.rename_in_cargo_toml_root(); diff --git a/framework/meta/tests/template_test.rs b/framework/meta/tests/template_test.rs index 1f5f0edc7c..335fcb240b 100644 --- a/framework/meta/tests/template_test.rs +++ b/framework/meta/tests/template_test.rs @@ -98,6 +98,8 @@ fn template_test_current(template_name: &str, sub_path: &str, new_name: &str) { #[cfg_attr(not(feature = "template-test-released"), ignore)] fn template_released_adder() { template_test_released("adder", "released-adder"); + + cargo_check_interactor("", "released-adder"); } #[test] From 54789fe3eba79ad42742665a99be1477f093a4d0 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 15 Mar 2024 07:49:49 +0100 Subject: [PATCH 095/461] sc 0.47.7 --- CHANGELOG.md | 5 +- Cargo.lock | 18 ++-- 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 +- .../scenarios/stress_submit_test.scen.json | 100 +++++++++--------- .../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/nft-subscription/Cargo.toml | 6 +- .../examples/nft-subscription/meta/Cargo.toml | 2 +- .../examples/nft-subscription/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 +- .../wasm-alloc-mem-fail/Cargo.toml | 2 +- .../wasm-alloc-mem-leaking/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 | 4 +- .../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 | 2 +- .../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 +- .../vault/wasm-vault-upgrade/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 +- framework/base/Cargo.toml | 4 +- framework/derive/Cargo.toml | 2 +- framework/meta/Cargo.toml | 4 +- .../generate_snippets/snippet_crate_gen.rs | 2 +- .../meta/src/cmd/contract/meta_config.rs | 4 +- framework/meta/src/version_history.rs | 3 +- framework/scenario/Cargo.toml | 6 +- 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 | 4 +- 263 files changed, 436 insertions(+), 432 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7bcc7b063a..c69c506421 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,7 +27,10 @@ They are: - `multiversx-sdk`, in short `sdk`, allows communication with the chain(s), 1 crate. -## [sc 0.47.6] - 2024-03-15 +## [sc 0.47.7] - 2024-03-15 +- Template bugfix (concerning the interactor). + +## [sc 0.47.6] - 2024-03-14 - Template naming bugfix, regarding numbers in the project name. - Added the interactor to the adder template. diff --git a/Cargo.lock b/Cargo.lock index 670a0d00ae..91f8b05cc7 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -1794,7 +1794,7 @@ checksum = "b59072fa0624b55ae5ae3fa6bfa91515bbeb4ac440214bc4a509e2c8806d6e9f" [[package]] name = "multiversx-price-aggregator-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "arrayvec", "getrandom 0.2.12", @@ -1815,7 +1815,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags 2.4.2", "hex-literal", @@ -1845,7 +1845,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -1856,7 +1856,7 @@ dependencies = [ [[package]] name = "multiversx-sc-meta" -version = "0.47.6" +version = "0.47.7" dependencies = [ "clap", "colored", @@ -1882,14 +1882,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-scenario" -version = "0.47.6" +version = "0.47.7" dependencies = [ "base64", "bech32", @@ -1915,7 +1915,7 @@ dependencies = [ [[package]] name = "multiversx-sc-snippets" -version = "0.47.6" +version = "0.47.7" dependencies = [ "base64", "env_logger", @@ -1929,7 +1929,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] @@ -1960,7 +1960,7 @@ dependencies = [ [[package]] name = "multiversx-wegld-swap-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", "multiversx-sc-modules", diff --git a/contracts/benchmarks/large-storage/Cargo.toml b/contracts/benchmarks/large-storage/Cargo.toml index 5fb591be86..c14636ef07 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/large-storage/meta/Cargo.toml b/contracts/benchmarks/large-storage/meta/Cargo.toml index ce060cbb49..df4b4ca87a 100644 --- a/contracts/benchmarks/large-storage/meta/Cargo.toml +++ b/contracts/benchmarks/large-storage/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/large-storage/wasm/Cargo.toml b/contracts/benchmarks/large-storage/wasm/Cargo.toml index b55c72c7c2..979d575564 100644 --- a/contracts/benchmarks/large-storage/wasm/Cargo.toml +++ b/contracts/benchmarks/large-storage/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/benchmark-common/Cargo.toml b/contracts/benchmarks/mappers/benchmark-common/Cargo.toml index 09f6f6b1ea..125a2154ef 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.47.6" +version = "0.47.7" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/linked-list-repeat/Cargo.toml b/contracts/benchmarks/mappers/linked-list-repeat/Cargo.toml index d7295369df..7d204e2520 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.47.6" +version = "0.47.7" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 c9f0d0f743..fbe11e8dfb 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/linked-list-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml index f43fc00def..c894b1c183 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/map-repeat/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/Cargo.toml index dbac0a2fc4..02a30108b1 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.47.6" +version = "0.47.7" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml index aaafa11fd8..bf452ee2cd 100644 --- a/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml index c9949f2909..c8350b0002 100644 --- a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/queue-repeat/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/Cargo.toml index f3f0675e36..484adebeb7 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.47.6" +version = "0.47.7" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml index a56ea924d4..6616ebe0ed 100644 --- a/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml index 0810177dcf..5dee69f0e3 100644 --- a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/set-repeat/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/Cargo.toml index 465175b82a..b02586fda1 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.47.6" +version = "0.47.7" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml index 61ccaa8425..44f4460ec8 100644 --- a/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml index ab29b05874..8582da6423 100644 --- a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 52a712c1c6..6d514a9876 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.47.6" +version = "0.47.7" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 a3091fffc1..27636e6c3b 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/single-value-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml index 40b27f6ae7..a32bd93768 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/vec-repeat/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/Cargo.toml index db78e32d9e..86a34d011c 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.47.6" +version = "0.47.7" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml index 3d50c9a221..39c9156194 100644 --- a/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml index 798d769c5f..98b52695ce 100644 --- a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/send-tx-repeat/Cargo.toml b/contracts/benchmarks/send-tx-repeat/Cargo.toml index eef886e33a..b2228d2bb3 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml b/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml index 9af50be174..e497927391 100644 --- a/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml index 32ace41bb8..ca9b654305 100644 --- a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/str-repeat/Cargo.toml b/contracts/benchmarks/str-repeat/Cargo.toml index faad09ae64..b2f9886089 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.47.6" +version = "0.47.7" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/str-repeat/meta/Cargo.toml b/contracts/benchmarks/str-repeat/meta/Cargo.toml index 209f138d48..6552eff709 100644 --- a/contracts/benchmarks/str-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/str-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/str-repeat/wasm/Cargo.toml b/contracts/benchmarks/str-repeat/wasm/Cargo.toml index 3da3e115a2..0927435100 100644 --- a/contracts/benchmarks/str-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/str-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/core/price-aggregator/Cargo.toml b/contracts/core/price-aggregator/Cargo.toml index fec7498b3e..324d1192de 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.47.6" +version = "0.47.7" authors = [ "Claudiu-Marcel Bruda ", "MultiversX ", @@ -19,15 +19,15 @@ edition = "2021" path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.6" +version = "0.47.7" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" [dependencies] diff --git a/contracts/core/price-aggregator/meta/Cargo.toml b/contracts/core/price-aggregator/meta/Cargo.toml index 1af2bc366a..8116be6e4d 100644 --- a/contracts/core/price-aggregator/meta/Cargo.toml +++ b/contracts/core/price-aggregator/meta/Cargo.toml @@ -8,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/core/price-aggregator/scenarios/stress_submit_test.scen.json b/contracts/core/price-aggregator/scenarios/stress_submit_test.scen.json index 79a075b626..a8f13f2994 100644 --- a/contracts/core/price-aggregator/scenarios/stress_submit_test.scen.json +++ b/contracts/core/price-aggregator/scenarios/stress_submit_test.scen.json @@ -1133,7 +1133,7 @@ "0x45474c44", "0x55534443", "0x5f", - "0x7788c70a9610c4be", + "0xe4431c9cfb505fea", "0x" ], "gasLimit": "7,000,000" @@ -1154,7 +1154,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xc1ea824e31efc9e4", + "0xcca317a0b6489409", "0x" ], "gasLimit": "7,000,000" @@ -1175,7 +1175,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xce32013182f11964", + "0xd5da94d218e8b3e3", "0x" ], "gasLimit": "7,000,000" @@ -1196,7 +1196,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x7b5585abc8746bba", + "0x9b9f24755509abe6", "0x" ], "gasLimit": "7,000,000" @@ -1217,7 +1217,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x5b72e1448c0d88e9", + "0x596faa56dc4d9d4e", "0x" ], "gasLimit": "7,000,000" @@ -1238,7 +1238,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x84ffa4c93adbf03f", + "0x69ccc76678e2499e", "0x" ], "gasLimit": "7,000,000" @@ -1259,7 +1259,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xdf49c7683aa8f812", + "0x0176a6a333f061", "0x" ], "gasLimit": "7,000,000" @@ -1280,7 +1280,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xdd16d54980e37a14", + "0xee2ede42941ffb6f", "0x" ], "gasLimit": "7,000,000" @@ -1301,7 +1301,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x489fc7abc281bff5", + "0xfe5a2ca21500c94a", "0x" ], "gasLimit": "7,000,000" @@ -1322,7 +1322,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x2b21387b70dc68fa", + "0x98c16991e599ae6b", "0x" ], "gasLimit": "7,000,000" @@ -1343,7 +1343,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x73a7c835bc2c5cc1", + "0xec0197ac7c0da4a2", "0x" ], "gasLimit": "7,000,000" @@ -1364,7 +1364,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xd0f9d6948f749e88", + "0x4758692d635dde95", "0x" ], "gasLimit": "7,000,000" @@ -1385,7 +1385,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xefa0dd75e273f855", + "0xfa99ca83e839c136", "0x" ], "gasLimit": "7,000,000" @@ -1406,7 +1406,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xa4e30019602ac07a", + "0x2542eed0ad760b6f", "0x" ], "gasLimit": "7,000,000" @@ -1427,7 +1427,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x6a76200c754ab268", + "0xcaa56ad357bf558a", "0x" ], "gasLimit": "7,000,000" @@ -1448,7 +1448,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xf80c0fe7c4f2d2ab", + "0x4104ad72636fdc35", "0x" ], "gasLimit": "7,000,000" @@ -1469,7 +1469,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xc3311fd07a622588", + "0x08b6adc46d6dccf0", "0x" ], "gasLimit": "7,000,000" @@ -1490,7 +1490,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x7e1ed49ae692e3c2", + "0xb5c8708954d584e4", "0x" ], "gasLimit": "7,000,000" @@ -1511,7 +1511,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x1bc08702bf94881d", + "0x6136e999fb83ab09", "0x" ], "gasLimit": "7,000,000" @@ -1532,7 +1532,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xe1ef12a5d5de7a5b", + "0x214d92d0a7450389", "0x" ], "gasLimit": "7,000,000" @@ -1553,7 +1553,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xbe81b81b461e586a", + "0xea21e03952d07af9", "0x" ], "gasLimit": "7,000,000" @@ -1574,7 +1574,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x5299386cac2959d3", + "0xdd822b3e1a5bb8a3", "0x" ], "gasLimit": "7,000,000" @@ -1595,7 +1595,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x7ad8b2a2d0d8bb25", + "0x80e2a3c4b931c4bc", "0x" ], "gasLimit": "7,000,000" @@ -1616,7 +1616,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xc699d9b2a2265377", + "0x279c3fa2eeaf0fb0", "0x" ], "gasLimit": "7,000,000" @@ -1637,7 +1637,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xb901a55b0792d1e0", + "0x768021226eba1043", "0x" ], "gasLimit": "7,000,000" @@ -1658,7 +1658,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xfeea45b5beba2c40", + "0x026089384f007444", "0x" ], "gasLimit": "7,000,000" @@ -1679,7 +1679,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x65302a6c38774d4d", + "0x49f7ab393052bb", "0x" ], "gasLimit": "7,000,000" @@ -1700,7 +1700,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xe7ca98860b4e0732", + "0x049afbf40fa88fb8", "0x" ], "gasLimit": "7,000,000" @@ -1721,7 +1721,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x8bc5c26698edefb0", + "0x6d9edf2f943d0c48", "0x" ], "gasLimit": "7,000,000" @@ -1742,7 +1742,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x0a3fe4dea3530a88", + "0x9fa99de813defc0c", "0x" ], "gasLimit": "7,000,000" @@ -1763,7 +1763,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x0fbbfc508ed1daea", + "0xd1d93e3611904d25", "0x" ], "gasLimit": "7,000,000" @@ -1784,7 +1784,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x776254af7eee5567", + "0x8696ff1edc27700e", "0x" ], "gasLimit": "7,000,000" @@ -1805,7 +1805,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xa1fdcba5f1a891d6", + "0xb20b2290aaa5a45e", "0x" ], "gasLimit": "7,000,000" @@ -1826,7 +1826,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x44d1ed7c7ae1e173", + "0x46f399722142c7dc", "0x" ], "gasLimit": "7,000,000" @@ -1847,7 +1847,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xaa4c9135752b8024", + "0x812c7b08e5ef93bb", "0x" ], "gasLimit": "7,000,000" @@ -1868,7 +1868,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x7e2d24a77721cabb", + "0x9f42bd04602aabfa", "0x" ], "gasLimit": "7,000,000" @@ -1889,7 +1889,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x776c84750a7890f7", + "0x3313bced09c1b91f", "0x" ], "gasLimit": "7,000,000" @@ -1910,7 +1910,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xd18201dfce0e5317", + "0xcc71d4a051c86da1", "0x" ], "gasLimit": "7,000,000" @@ -1931,7 +1931,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xb7288d6a6593e051", + "0x020dcbfee96f9111", "0x" ], "gasLimit": "7,000,000" @@ -1952,7 +1952,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x97eab65a65b5f17d", + "0x66803b9e9fb6ae87", "0x" ], "gasLimit": "7,000,000" @@ -1973,7 +1973,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x8e24cf5782e9cb6c", + "0x5e784067e72d6000", "0x" ], "gasLimit": "7,000,000" @@ -1994,7 +1994,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xab04f3386a213e9e", + "0x1990e5a459100514", "0x" ], "gasLimit": "7,000,000" @@ -2015,7 +2015,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xa7f258578eacd75d", + "0x643b36cf7c98aed2", "0x" ], "gasLimit": "7,000,000" @@ -2036,7 +2036,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xd42348b209cd6e99", + "0x19b768a5982e5d17", "0x" ], "gasLimit": "7,000,000" @@ -2057,7 +2057,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xe22ff5fdee16b542", + "0xe8396bc4dade2e38", "0x" ], "gasLimit": "7,000,000" @@ -2078,7 +2078,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xc3b6af3c8792a1ea", + "0xbd1b166e888f23b8", "0x" ], "gasLimit": "7,000,000" @@ -2099,7 +2099,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x81a7c3dd9adfa891", + "0x4541ecf9e1bcd219", "0x" ], "gasLimit": "7,000,000" @@ -2120,7 +2120,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x53df0a0a26a53996", + "0xac32e3eac4733d3e", "0x" ], "gasLimit": "7,000,000" @@ -2141,7 +2141,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xdcb0a37d6cb1bc42", + "0x7d7dde2542dfa2d9", "0x" ], "gasLimit": "7,000,000" @@ -2162,7 +2162,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x127a946b5bbaed56", + "0xd2c63e8cf9db301a", "0x" ], "gasLimit": "7,000,000" diff --git a/contracts/core/price-aggregator/wasm/Cargo.toml b/contracts/core/price-aggregator/wasm/Cargo.toml index 842befe349..5a6caae0e4 100644 --- a/contracts/core/price-aggregator/wasm/Cargo.toml +++ b/contracts/core/price-aggregator/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/core/wegld-swap/Cargo.toml b/contracts/core/wegld-swap/Cargo.toml index a52652c87c..011eda03bc 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.47.6" +version = "0.47.7" authors = [ "Dorin Iancu ", @@ -20,13 +20,13 @@ edition = "2021" path = "src/wegld.rs" [dependencies.multiversx-sc] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.6" +version = "0.47.7" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" diff --git a/contracts/core/wegld-swap/meta/Cargo.toml b/contracts/core/wegld-swap/meta/Cargo.toml index 98214c5c45..5544435199 100644 --- a/contracts/core/wegld-swap/meta/Cargo.toml +++ b/contracts/core/wegld-swap/meta/Cargo.toml @@ -11,10 +11,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/core/wegld-swap/wasm/Cargo.toml b/contracts/core/wegld-swap/wasm/Cargo.toml index 42da670c1c..2edcc0b9b7 100644 --- a/contracts/core/wegld-swap/wasm/Cargo.toml +++ b/contracts/core/wegld-swap/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/adder/Cargo.toml b/contracts/examples/adder/Cargo.toml index b8eea0debf..e5e3295387 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" diff --git a/contracts/examples/adder/interact/Cargo.toml b/contracts/examples/adder/interact/Cargo.toml index 9a3cfa2282..b82fd0a198 100644 --- a/contracts/examples/adder/interact/Cargo.toml +++ b/contracts/examples/adder/interact/Cargo.toml @@ -18,5 +18,5 @@ toml = "0.8.6" path = ".." [dependencies.multiversx-sc-snippets] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/snippets" diff --git a/contracts/examples/adder/meta/Cargo.toml b/contracts/examples/adder/meta/Cargo.toml index 4177224e49..5b91c45d86 100644 --- a/contracts/examples/adder/meta/Cargo.toml +++ b/contracts/examples/adder/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/adder/wasm/Cargo.toml b/contracts/examples/adder/wasm/Cargo.toml index 2d90464201..8d6ad9d33a 100644 --- a/contracts/examples/adder/wasm/Cargo.toml +++ b/contracts/examples/adder/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/bonding-curve-contract/Cargo.toml b/contracts/examples/bonding-curve-contract/Cargo.toml index f75bedbdd5..e49b33e18c 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.6" +version = "0.47.7" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" diff --git a/contracts/examples/bonding-curve-contract/meta/Cargo.toml b/contracts/examples/bonding-curve-contract/meta/Cargo.toml index 998bf5381c..daa146036b 100644 --- a/contracts/examples/bonding-curve-contract/meta/Cargo.toml +++ b/contracts/examples/bonding-curve-contract/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/bonding-curve-contract/wasm/Cargo.toml b/contracts/examples/bonding-curve-contract/wasm/Cargo.toml index 9ef2d26d25..ed65eb737e 100644 --- a/contracts/examples/bonding-curve-contract/wasm/Cargo.toml +++ b/contracts/examples/bonding-curve-contract/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/check-pause/Cargo.toml b/contracts/examples/check-pause/Cargo.toml index 60884428d1..b88e277df8 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" [dependencies.multiversx-sc] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.6" +version = "0.47.7" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" diff --git a/contracts/examples/check-pause/meta/Cargo.toml b/contracts/examples/check-pause/meta/Cargo.toml index 59360f259a..f24dffa830 100644 --- a/contracts/examples/check-pause/meta/Cargo.toml +++ b/contracts/examples/check-pause/meta/Cargo.toml @@ -9,6 +9,6 @@ authors = ["Alin Cruceat "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/check-pause/wasm/Cargo.toml b/contracts/examples/check-pause/wasm/Cargo.toml index ab4176d63f..96ad3090db 100644 --- a/contracts/examples/check-pause/wasm/Cargo.toml +++ b/contracts/examples/check-pause/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crowdfunding-esdt/Cargo.toml b/contracts/examples/crowdfunding-esdt/Cargo.toml index dd987f9168..f613fa063b 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" [dev-dependencies] diff --git a/contracts/examples/crowdfunding-esdt/meta/Cargo.toml b/contracts/examples/crowdfunding-esdt/meta/Cargo.toml index 177efdbcc1..bd09bd4551 100644 --- a/contracts/examples/crowdfunding-esdt/meta/Cargo.toml +++ b/contracts/examples/crowdfunding-esdt/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml b/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml index 246445cd42..689fec6919 100644 --- a/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml +++ b/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-bubbles/Cargo.toml b/contracts/examples/crypto-bubbles/Cargo.toml index bf37ef5fd8..125eaf59db 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" diff --git a/contracts/examples/crypto-bubbles/meta/Cargo.toml b/contracts/examples/crypto-bubbles/meta/Cargo.toml index de1f82844d..e05a6f0fd3 100644 --- a/contracts/examples/crypto-bubbles/meta/Cargo.toml +++ b/contracts/examples/crypto-bubbles/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-bubbles/wasm/Cargo.toml b/contracts/examples/crypto-bubbles/wasm/Cargo.toml index 52a989cb0e..d1fd604852 100644 --- a/contracts/examples/crypto-bubbles/wasm/Cargo.toml +++ b/contracts/examples/crypto-bubbles/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 83b65857e0..c76b6d4ef0 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.47.6" +version = "0.47.7" 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 24ebd9e621..89e113c11e 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.47.6" +version = "0.47.7" path = "../../../../../framework/base" diff --git a/contracts/examples/crypto-kitties/kitty-auction/Cargo.toml b/contracts/examples/crypto-kitties/kitty-auction/Cargo.toml index a755f4fc4e..e6d49ccec0 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.47.6" +version = "0.47.7" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 489a222777..9928efcd4f 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-auction/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml index 708dd5e87a..df1952bd3c 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-kitties/kitty-genetic-alg/Cargo.toml b/contracts/examples/crypto-kitties/kitty-genetic-alg/Cargo.toml index 146f1535ae..a73684282c 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.47.6" +version = "0.47.7" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 6c47bf57ef..b69a84ab3f 100644 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false 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 78060f6e1e..ce608c6fcc 100644 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-kitties/kitty-ownership/Cargo.toml b/contracts/examples/crypto-kitties/kitty-ownership/Cargo.toml index 1554492c61..40ccfe9d17 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.47.6" +version = "0.47.7" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 d96c0229d1..51c19d26be 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-ownership/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml index bed211e9ba..edd45c233c 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-zombies/Cargo.toml b/contracts/examples/crypto-zombies/Cargo.toml index 7d7010857a..5b3a3ec3b4 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" diff --git a/contracts/examples/crypto-zombies/meta/Cargo.toml b/contracts/examples/crypto-zombies/meta/Cargo.toml index 20b5e5cd5b..ab9e646a43 100644 --- a/contracts/examples/crypto-zombies/meta/Cargo.toml +++ b/contracts/examples/crypto-zombies/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-zombies/wasm/Cargo.toml b/contracts/examples/crypto-zombies/wasm/Cargo.toml index 7e2708f437..e9e2eed377 100644 --- a/contracts/examples/crypto-zombies/wasm/Cargo.toml +++ b/contracts/examples/crypto-zombies/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/digital-cash/Cargo.toml b/contracts/examples/digital-cash/Cargo.toml index 08c4259881..c3e97b9d50 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" diff --git a/contracts/examples/digital-cash/meta/Cargo.toml b/contracts/examples/digital-cash/meta/Cargo.toml index d8a20bcba9..6a47014d9a 100644 --- a/contracts/examples/digital-cash/meta/Cargo.toml +++ b/contracts/examples/digital-cash/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/digital-cash/wasm/Cargo.toml b/contracts/examples/digital-cash/wasm/Cargo.toml index be892f045c..14405201e3 100644 --- a/contracts/examples/digital-cash/wasm/Cargo.toml +++ b/contracts/examples/digital-cash/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/empty/Cargo.toml b/contracts/examples/empty/Cargo.toml index 0bf1a921b2..d385cb0ae7 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" [dev-dependencies] diff --git a/contracts/examples/empty/meta/Cargo.toml b/contracts/examples/empty/meta/Cargo.toml index 55b650cbec..805066b5c8 100644 --- a/contracts/examples/empty/meta/Cargo.toml +++ b/contracts/examples/empty/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/empty/wasm/Cargo.toml b/contracts/examples/empty/wasm/Cargo.toml index ac4dd8cce9..3070e27098 100644 --- a/contracts/examples/empty/wasm/Cargo.toml +++ b/contracts/examples/empty/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 0f7591af8b..03f96eba03 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 06316a3b20..684ace8d06 100644 --- a/contracts/examples/esdt-transfer-with-fee/meta/Cargo.toml +++ b/contracts/examples/esdt-transfer-with-fee/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml index 5855a9e99b..0afb5f35f9 100644 --- a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml +++ b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/factorial/Cargo.toml b/contracts/examples/factorial/Cargo.toml index d0c7032607..3c39cfb14b 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" diff --git a/contracts/examples/factorial/meta/Cargo.toml b/contracts/examples/factorial/meta/Cargo.toml index 1df33d3fd2..e781b294dd 100644 --- a/contracts/examples/factorial/meta/Cargo.toml +++ b/contracts/examples/factorial/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/factorial/wasm/Cargo.toml b/contracts/examples/factorial/wasm/Cargo.toml index 4ad683cc2f..e8bdd8a99a 100644 --- a/contracts/examples/factorial/wasm/Cargo.toml +++ b/contracts/examples/factorial/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/fractional-nfts/Cargo.toml b/contracts/examples/fractional-nfts/Cargo.toml index 772f5cdcad..75fc12bcef 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.6" +version = "0.47.7" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" diff --git a/contracts/examples/fractional-nfts/meta/Cargo.toml b/contracts/examples/fractional-nfts/meta/Cargo.toml index 814f89e481..e3ea4de942 100644 --- a/contracts/examples/fractional-nfts/meta/Cargo.toml +++ b/contracts/examples/fractional-nfts/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/fractional-nfts/wasm/Cargo.toml b/contracts/examples/fractional-nfts/wasm/Cargo.toml index cc319d03b1..ef3c3f47db 100644 --- a/contracts/examples/fractional-nfts/wasm/Cargo.toml +++ b/contracts/examples/fractional-nfts/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/lottery-esdt/Cargo.toml b/contracts/examples/lottery-esdt/Cargo.toml index 14f07cb698..839f52d773 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" diff --git a/contracts/examples/lottery-esdt/meta/Cargo.toml b/contracts/examples/lottery-esdt/meta/Cargo.toml index 585766f77b..7e5658adbd 100644 --- a/contracts/examples/lottery-esdt/meta/Cargo.toml +++ b/contracts/examples/lottery-esdt/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/lottery-esdt/wasm/Cargo.toml b/contracts/examples/lottery-esdt/wasm/Cargo.toml index 3b9c9009c6..b80ccdb610 100644 --- a/contracts/examples/lottery-esdt/wasm/Cargo.toml +++ b/contracts/examples/lottery-esdt/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/multisig/Cargo.toml b/contracts/examples/multisig/Cargo.toml index 72315654ab..8ca32c7c05 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.6" +version = "0.47.7" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" [dev-dependencies.adder] @@ -27,7 +27,7 @@ path = "../adder" path = "../factorial" [dev-dependencies.multiversx-wegld-swap-sc] -version = "0.47.6" +version = "0.47.7" path = "../../core/wegld-swap" [dev-dependencies] diff --git a/contracts/examples/multisig/interact/Cargo.toml b/contracts/examples/multisig/interact/Cargo.toml index e5d783eb74..ecef6173f0 100644 --- a/contracts/examples/multisig/interact/Cargo.toml +++ b/contracts/examples/multisig/interact/Cargo.toml @@ -18,13 +18,13 @@ toml = "0.8.6" path = ".." [dependencies.multiversx-sc-modules] -version = "0.47.6" +version = "0.47.7" path = "../../../../contracts/modules" [dependencies.multiversx-sc-snippets] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/snippets" [dependencies.multiversx-sc-scenario] -version = "=0.47.6" +version = "=0.47.7" path = "../../../../framework/scenario" diff --git a/contracts/examples/multisig/meta/Cargo.toml b/contracts/examples/multisig/meta/Cargo.toml index 0a92bfb7f3..7fa9cc2c46 100644 --- a/contracts/examples/multisig/meta/Cargo.toml +++ b/contracts/examples/multisig/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/multisig/wasm-multisig-full/Cargo.toml b/contracts/examples/multisig/wasm-multisig-full/Cargo.toml index 6cf54e2aa4..ca6d88e1d0 100644 --- a/contracts/examples/multisig/wasm-multisig-full/Cargo.toml +++ b/contracts/examples/multisig/wasm-multisig-full/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 49029387f6..f7e2721efb 100644 --- a/contracts/examples/multisig/wasm-multisig-view/Cargo.toml +++ b/contracts/examples/multisig/wasm-multisig-view/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/multisig/wasm/Cargo.toml b/contracts/examples/multisig/wasm/Cargo.toml index a8a21b6cd5..6b844797f2 100644 --- a/contracts/examples/multisig/wasm/Cargo.toml +++ b/contracts/examples/multisig/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-minter/Cargo.toml b/contracts/examples/nft-minter/Cargo.toml index 848a54ff69..aff73e25c2 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-minter/meta/Cargo.toml b/contracts/examples/nft-minter/meta/Cargo.toml index 48c93adfb8..756b066668 100644 --- a/contracts/examples/nft-minter/meta/Cargo.toml +++ b/contracts/examples/nft-minter/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-minter/wasm/Cargo.toml b/contracts/examples/nft-minter/wasm/Cargo.toml index 31796c2315..069fba528a 100644 --- a/contracts/examples/nft-minter/wasm/Cargo.toml +++ b/contracts/examples/nft-minter/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-storage-prepay/Cargo.toml b/contracts/examples/nft-storage-prepay/Cargo.toml index 56124a7d4a..a368d88336 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-storage-prepay/meta/Cargo.toml b/contracts/examples/nft-storage-prepay/meta/Cargo.toml index 7efa3acb1b..0e49db9a62 100644 --- a/contracts/examples/nft-storage-prepay/meta/Cargo.toml +++ b/contracts/examples/nft-storage-prepay/meta/Cargo.toml @@ -11,6 +11,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-storage-prepay/wasm/Cargo.toml b/contracts/examples/nft-storage-prepay/wasm/Cargo.toml index a8f76a1501..05644d41ae 100644 --- a/contracts/examples/nft-storage-prepay/wasm/Cargo.toml +++ b/contracts/examples/nft-storage-prepay/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-subscription/Cargo.toml b/contracts/examples/nft-subscription/Cargo.toml index 8098098892..df21696927 100644 --- a/contracts/examples/nft-subscription/Cargo.toml +++ b/contracts/examples/nft-subscription/Cargo.toml @@ -9,13 +9,13 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.6" +version = "0.47.7" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-subscription/meta/Cargo.toml b/contracts/examples/nft-subscription/meta/Cargo.toml index b6b576f83a..89dffa7dfa 100644 --- a/contracts/examples/nft-subscription/meta/Cargo.toml +++ b/contracts/examples/nft-subscription/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-subscription/wasm/Cargo.toml b/contracts/examples/nft-subscription/wasm/Cargo.toml index a511fa5b0a..2cf17a24e4 100644 --- a/contracts/examples/nft-subscription/wasm/Cargo.toml +++ b/contracts/examples/nft-subscription/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/order-book/factory/Cargo.toml b/contracts/examples/order-book/factory/Cargo.toml index 89ca0536c7..ca12b9cc3d 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.47.6" +version = "0.47.7" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/scenario" diff --git a/contracts/examples/order-book/factory/meta/Cargo.toml b/contracts/examples/order-book/factory/meta/Cargo.toml index d014e078bb..cefbe2fcde 100644 --- a/contracts/examples/order-book/factory/meta/Cargo.toml +++ b/contracts/examples/order-book/factory/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/order-book/factory/wasm/Cargo.toml b/contracts/examples/order-book/factory/wasm/Cargo.toml index 21ce9dedc7..6b7817678b 100644 --- a/contracts/examples/order-book/factory/wasm/Cargo.toml +++ b/contracts/examples/order-book/factory/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/order-book/pair/Cargo.toml b/contracts/examples/order-book/pair/Cargo.toml index 5564e659a5..bb5c2f1627 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.47.6" +version = "0.47.7" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/scenario" diff --git a/contracts/examples/order-book/pair/meta/Cargo.toml b/contracts/examples/order-book/pair/meta/Cargo.toml index 6351950abf..a81995baef 100644 --- a/contracts/examples/order-book/pair/meta/Cargo.toml +++ b/contracts/examples/order-book/pair/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/order-book/pair/wasm/Cargo.toml b/contracts/examples/order-book/pair/wasm/Cargo.toml index ed79171648..5d37fa7b60 100644 --- a/contracts/examples/order-book/pair/wasm/Cargo.toml +++ b/contracts/examples/order-book/pair/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/ping-pong-egld/Cargo.toml b/contracts/examples/ping-pong-egld/Cargo.toml index 8e4476d9cd..fdb2d555ca 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" diff --git a/contracts/examples/ping-pong-egld/meta/Cargo.toml b/contracts/examples/ping-pong-egld/meta/Cargo.toml index a1048e6bf3..de3cc18e68 100644 --- a/contracts/examples/ping-pong-egld/meta/Cargo.toml +++ b/contracts/examples/ping-pong-egld/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/ping-pong-egld/wasm/Cargo.toml b/contracts/examples/ping-pong-egld/wasm/Cargo.toml index 7422ef15d8..1df8da0cc8 100644 --- a/contracts/examples/ping-pong-egld/wasm/Cargo.toml +++ b/contracts/examples/ping-pong-egld/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/proxy-pause/Cargo.toml b/contracts/examples/proxy-pause/Cargo.toml index c226500631..8d67538105 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 7016affa99..596d785f2b 100644 --- a/contracts/examples/proxy-pause/meta/Cargo.toml +++ b/contracts/examples/proxy-pause/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = [ "you",] path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/proxy-pause/wasm/Cargo.toml b/contracts/examples/proxy-pause/wasm/Cargo.toml index fd17464600..902e25899a 100644 --- a/contracts/examples/proxy-pause/wasm/Cargo.toml +++ b/contracts/examples/proxy-pause/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/rewards-distribution/Cargo.toml b/contracts/examples/rewards-distribution/Cargo.toml index e1f67893d3..471247d8c3 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.6" +version = "0.47.7" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" diff --git a/contracts/examples/rewards-distribution/meta/Cargo.toml b/contracts/examples/rewards-distribution/meta/Cargo.toml index 6319b2bb00..420e9282e2 100644 --- a/contracts/examples/rewards-distribution/meta/Cargo.toml +++ b/contracts/examples/rewards-distribution/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = ["Claudiu-Marcel Bruda "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/rewards-distribution/wasm/Cargo.toml b/contracts/examples/rewards-distribution/wasm/Cargo.toml index 0248259c78..39e2d3068a 100644 --- a/contracts/examples/rewards-distribution/wasm/Cargo.toml +++ b/contracts/examples/rewards-distribution/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/seed-nft-minter/Cargo.toml b/contracts/examples/seed-nft-minter/Cargo.toml index f55298cb22..c55ff0c92f 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.6" +version = "0.47.7" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" diff --git a/contracts/examples/seed-nft-minter/meta/Cargo.toml b/contracts/examples/seed-nft-minter/meta/Cargo.toml index 13fb20029a..bb0ce16461 100644 --- a/contracts/examples/seed-nft-minter/meta/Cargo.toml +++ b/contracts/examples/seed-nft-minter/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = ["Claudiu-Marcel Bruda "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/seed-nft-minter/wasm/Cargo.toml b/contracts/examples/seed-nft-minter/wasm/Cargo.toml index bf62e69388..4d2c71fefa 100644 --- a/contracts/examples/seed-nft-minter/wasm/Cargo.toml +++ b/contracts/examples/seed-nft-minter/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/token-release/Cargo.toml b/contracts/examples/token-release/Cargo.toml index 57eeb7e92a..1ce57e5743 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" diff --git a/contracts/examples/token-release/meta/Cargo.toml b/contracts/examples/token-release/meta/Cargo.toml index 08378ca6d0..df8d03f85c 100644 --- a/contracts/examples/token-release/meta/Cargo.toml +++ b/contracts/examples/token-release/meta/Cargo.toml @@ -10,7 +10,7 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/token-release/wasm/Cargo.toml b/contracts/examples/token-release/wasm/Cargo.toml index 6383a6ed3b..868e19d6cc 100644 --- a/contracts/examples/token-release/wasm/Cargo.toml +++ b/contracts/examples/token-release/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/abi-tester/Cargo.toml b/contracts/feature-tests/abi-tester/Cargo.toml index c01817136a..120c36ddb9 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.47.6" +version = "0.47.7" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" [dev-dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" 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 a654d33b25..b054e907f9 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.47.6" + "version": "0.47.7" } }, "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 61dc7d29ca..f8a30cb9a5 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.47.6" + "version": "0.47.7" } }, "docs": [ diff --git a/contracts/feature-tests/abi-tester/meta/Cargo.toml b/contracts/feature-tests/abi-tester/meta/Cargo.toml index 22e005167f..01f35f065f 100644 --- a/contracts/feature-tests/abi-tester/meta/Cargo.toml +++ b/contracts/feature-tests/abi-tester/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false 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 66dc257026..c351e491ea 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 42cd160365..f17dd3c623 100644 --- a/contracts/feature-tests/abi-tester/wasm/Cargo.toml +++ b/contracts/feature-tests/abi-tester/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/Cargo.toml b/contracts/feature-tests/alloc-features/Cargo.toml index 0af3de93d1..d11683c5e4 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.47.6" +version = "0.47.7" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 9f7d0a9c26..79afc0549d 100644 --- a/contracts/feature-tests/alloc-features/meta/Cargo.toml +++ b/contracts/feature-tests/alloc-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml index 2d85bd1f91..ca1f942e8d 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml index 1f0a7140d0..e80853eaec 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/wasm/Cargo.toml b/contracts/feature-tests/alloc-features/wasm/Cargo.toml index bd900991eb..538e891924 100644 --- a/contracts/feature-tests/alloc-features/wasm/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/basic-features/Cargo.toml b/contracts/feature-tests/basic-features/Cargo.toml index b8d4b8b236..69bcc353b4 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" [dependencies.multiversx-sc-modules] -version = "0.47.6" +version = "0.47.7" 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 a7cf4aecd8..fa1a68e091 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.8.6" path = ".." [dependencies.multiversx-sc-snippets] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/snippets" diff --git a/contracts/feature-tests/basic-features/meta/Cargo.toml b/contracts/feature-tests/basic-features/meta/Cargo.toml index 7f2421ad5a..137affe099 100644 --- a/contracts/feature-tests/basic-features/meta/Cargo.toml +++ b/contracts/feature-tests/basic-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false 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 01a88e074e..eac8322b00 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 f08c381dc3..93678ef55e 100644 --- a/contracts/feature-tests/basic-features/wasm/Cargo.toml +++ b/contracts/feature-tests/basic-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = true path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 925bdefbdd..8b78db9d6d 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 bcfabc08e8..4bd7003cb8 100644 --- a/contracts/feature-tests/big-float-features/meta/Cargo.toml +++ b/contracts/feature-tests/big-float-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/big-float-features/wasm/Cargo.toml b/contracts/feature-tests/big-float-features/wasm/Cargo.toml index 3009fb8622..ca9aacf92c 100644 --- a/contracts/feature-tests/big-float-features/wasm/Cargo.toml +++ b/contracts/feature-tests/big-float-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/Cargo.toml b/contracts/feature-tests/composability/Cargo.toml index e3f6ef1289..012b7c9b0f 100644 --- a/contracts/feature-tests/composability/Cargo.toml +++ b/contracts/feature-tests/composability/Cargo.toml @@ -33,9 +33,9 @@ path = "recursive-caller" path = "vault" [dependencies.multiversx-sc] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 e44e39bb90..6e63eed118 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.47.6" +version = "0.47.7" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 bd93bf1e24..7d9dd69080 100644 --- a/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false 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 dc3866cc80..29cae7410a 100644 --- a/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 dec107ce74..f524274292 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.47.6" +version = "0.47.7" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 922076491c..b90c693b83 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.47.6" +version = "0.47.7" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 373381ce93..d1beb99c55 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.6" +version = "0.47.7" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../../framework/meta" default-features = false 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 1ebb400b16..780b8b5976 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 e85e4b699b..d63d17ba7c 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.47.6" +version = "0.47.7" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 12d36d6033..1b2b4c9ae8 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.6" +version = "0.47.7" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../../framework/meta" default-features = false 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 a20aa71942..7fe7faba53 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 93e83468e9..523d016be9 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 3ebbe8338d..ba2043bb9c 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.47.6" +version = "0.47.7" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 770e8e77da..c64d09ad9f 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.6" +version = "0.47.7" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../../framework/meta" default-features = false 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 e84938d004..1c90664162 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 455e5b0b03..c0b513daf9 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.47.6" +version = "0.47.7" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 761bbe612b..bd6370a5d6 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.6" +version = "0.47.7" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../../framework/meta" default-features = false 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 23fee292e2..bf013293a4 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 d15beaace1..b74dab6fa0 100644 --- a/contracts/feature-tests/composability/forwarder-queue/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/Cargo.toml @@ -12,14 +12,14 @@ path = "src/forwarder_queue.rs" path = "../vault" [dependencies.multiversx-sc] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/base" [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" optional = true [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 d286d863b4..f1bd598825 100644 --- a/contracts/feature-tests/composability/forwarder-queue/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false 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 762dedbde1..3b1cb00d61 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 4ffc557a76..8d2783428d 100644 --- a/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 ad123d8008..aaee506a33 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.47.6" +version = "0.47.7" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 651ea4dee6..dfbe580e61 100644 --- a/contracts/feature-tests/composability/forwarder-raw/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-raw/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false 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 f4f8cdcdc3..741fcf25a4 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 51bccab90a..6397512ee5 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 eaeb7026a2..0bfd54569f 100644 --- a/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/forwarder/Cargo.toml b/contracts/feature-tests/composability/forwarder/Cargo.toml index 5b6914d7ac..d67b930314 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.47.6" +version = "0.47.7" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/forwarder/meta/Cargo.toml b/contracts/feature-tests/composability/forwarder/meta/Cargo.toml index 3983d9fa4e..8664eb1263 100644 --- a/contracts/feature-tests/composability/forwarder/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml b/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml index 9504e2f48b..3f16868f4f 100644 --- a/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/interact/Cargo.toml b/contracts/feature-tests/composability/interact/Cargo.toml index 1f8dfafece..ad60ab2555 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.47.6" +version = "0.47.7" path = "../../../../contracts/modules" [dependencies.multiversx-sc-snippets] -version = "0.47.6" +version = "0.47.7" 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 379f930e0d..400f2b8326 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.47.6" +version = "0.47.7" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 67141d7e4f..11dcbc0172 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,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false 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 cc52f9652f..57d59b04c8 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 0c54e9ca6c..d20bd48551 100644 --- a/contracts/feature-tests/composability/promises-features/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/Cargo.toml @@ -12,6 +12,6 @@ path = "src/promises_main.rs" path = "../vault" [dependencies.multiversx-sc] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/base" diff --git a/contracts/feature-tests/composability/promises-features/meta/Cargo.toml b/contracts/feature-tests/composability/promises-features/meta/Cargo.toml index 4f15b8e5eb..f87047401b 100644 --- a/contracts/feature-tests/composability/promises-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml b/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml index ba2aa8961a..a34280c6e3 100644 --- a/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 c45cea4950..6575490586 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.4.1" [dependencies.multiversx-sc] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 a9a2ecb49d..d028bd24b7 100644 --- a/contracts/feature-tests/composability/proxy-test-first/meta/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-first/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false 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 8adc41ac0d..2c1676b837 100644 --- a/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 ad95170147..730c7b533a 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.47.6" +version = "0.47.7" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 cc0dce54fe..0dd5487e95 100644 --- a/contracts/feature-tests/composability/proxy-test-second/meta/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-second/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false 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 b1bc1ef21f..07753ca55d 100644 --- a/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 f2b77ca992..e7b04ffa7c 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.47.6" +version = "0.47.7" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 0c8ccb0372..c9793ace43 100644 --- a/contracts/feature-tests/composability/recursive-caller/meta/Cargo.toml +++ b/contracts/feature-tests/composability/recursive-caller/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml index d874f6e8b4..91ed65a2d3 100644 --- a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 f7562b838f..95f9b7f49e 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.47.6" +version = "0.47.7" path = "../../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.6" +version = "0.47.7" path = "../../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 8e379bf43e..a8181a9132 100644 --- a/contracts/feature-tests/composability/transfer-role-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/transfer-role-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false 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 8c91eb8859..d30c662adc 100644 --- a/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/vault/Cargo.toml b/contracts/feature-tests/composability/vault/Cargo.toml index 97f5b97371..e8dac88354 100644 --- a/contracts/feature-tests/composability/vault/Cargo.toml +++ b/contracts/feature-tests/composability/vault/Cargo.toml @@ -10,9 +10,9 @@ path = "src/vault.rs" [dependencies.multiversx-sc] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/vault/meta/Cargo.toml b/contracts/feature-tests/composability/vault/meta/Cargo.toml index 4ab77c4b1a..e66d236430 100644 --- a/contracts/feature-tests/composability/vault/meta/Cargo.toml +++ b/contracts/feature-tests/composability/vault/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false 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 3c865c7080..eea431599a 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml index faacfa4958..df2708b28c 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 1812fd9940..91ba6c8eb0 100644 --- a/contracts/feature-tests/composability/vault/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 aff54f13b1..eee5a8c938 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.47.6" +version = "0.47.7" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 3cc15aabe4..860cb4cc26 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false 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 51248463d6..395ebd54ca 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 72f9a18cab..0cec9ec90c 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.47.6" +version = "0.47.7" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 b003c9b982..58a5a24afb 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false 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 bb53084b5c..ddfa355f91 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 b746b973e2..018b1389f9 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.47.6" +version = "0.47.7" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 a33bb345af..eb1c12b642 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false 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 da3b74318e..d97ea42d66 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 83c8dd14a8..472a2221c3 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.47.6" +version = "0.47.7" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 49f3be1eb5..ed69ca1b1d 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false 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 4974a81405..e87fed7bfb 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 f096425dd6..13dec6eb99 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.47.6" +version = "0.47.7" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 03a604c31c..1df6d352e5 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc20/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false 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 68bd125939..5ffc4b6634 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 c082fc26c0..d4416664b3 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.47.6" +version = "0.47.7" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 4e65b4a70b..14f9790c4e 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc721/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false 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 28677d89a4..2adcd02752 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/wasm-adapter" [workspace] 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 8325377c72..c64d30a727 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.47.6" +version = "0.47.7" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 bcb736b2c5..6bc05488c3 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/meta" default-features = false 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 51bf87cd2b..6ac958ed88 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/esdt-system-sc-mock/Cargo.toml b/contracts/feature-tests/esdt-system-sc-mock/Cargo.toml index fe18ccf688..77f5c847b6 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 f0be9537fd..b969dbdfd2 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/meta/Cargo.toml +++ b/contracts/feature-tests/esdt-system-sc-mock/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false 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 72dfa8d22d..1643028e3e 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.toml +++ b/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 214e59652c..e4ad7a76f4 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 1af90b4ab0..8edf568f01 100644 --- a/contracts/feature-tests/formatted-message-features/meta/Cargo.toml +++ b/contracts/feature-tests/formatted-message-features/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = [ "you",] path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml b/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml index 7191a15963..6df7609817 100644 --- a/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml +++ b/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/managed-map-features/Cargo.toml b/contracts/feature-tests/managed-map-features/Cargo.toml index ed703f3075..60361712ca 100644 --- a/contracts/feature-tests/managed-map-features/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/Cargo.toml @@ -9,11 +9,11 @@ publish = false path = "src/mmap_features.rs" [dependencies.multiversx-sc] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 329543ba08..bf307044ec 100644 --- a/contracts/feature-tests/managed-map-features/meta/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/managed-map-features/wasm/Cargo.toml b/contracts/feature-tests/managed-map-features/wasm/Cargo.toml index 03b93b10dd..7539e5e8b4 100644 --- a/contracts/feature-tests/managed-map-features/wasm/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 f41cc01ce4..ce4c8336e1 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 e7a6d60187..880326335d 100644 --- a/contracts/feature-tests/multi-contract-features/meta/Cargo.toml +++ b/contracts/feature-tests/multi-contract-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false 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 32d0b6f060..1f3aed535e 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 572367ec21..c23dbbe7b5 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 @@ -26,7 +26,7 @@ path = ".." features = ["example_feature"] [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 17ee4e7f75..43e4ee7e81 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 2dcc933328..04ad42d688 100644 --- a/contracts/feature-tests/multi-contract-features/wasm/Cargo.toml +++ b/contracts/feature-tests/multi-contract-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 664ed96cdd..eee25be7cb 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 b50def053b..eb9cc0fabd 100644 --- a/contracts/feature-tests/panic-message-features/meta/Cargo.toml +++ b/contracts/feature-tests/panic-message-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/panic-message-features/wasm/Cargo.toml b/contracts/feature-tests/panic-message-features/wasm/Cargo.toml index ca41ca4bd8..ea09b86ffb 100644 --- a/contracts/feature-tests/panic-message-features/wasm/Cargo.toml +++ b/contracts/feature-tests/panic-message-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/payable-features/Cargo.toml b/contracts/feature-tests/payable-features/Cargo.toml index 4275d0c50e..74caadb1ce 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/payable-features/meta/Cargo.toml b/contracts/feature-tests/payable-features/meta/Cargo.toml index 15aef444c1..3b13a7b499 100644 --- a/contracts/feature-tests/payable-features/meta/Cargo.toml +++ b/contracts/feature-tests/payable-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/payable-features/wasm/Cargo.toml b/contracts/feature-tests/payable-features/wasm/Cargo.toml index f4c9524fef..4f1db6cd5b 100644 --- a/contracts/feature-tests/payable-features/wasm/Cargo.toml +++ b/contracts/feature-tests/payable-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 aeb8806dc0..7b71012dee 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.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 f529a43554..b8216cfd0e 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.47.6" +version = "0.47.7" 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 ecc108c9ac..47c5484bb8 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/meta/Cargo.toml +++ b/contracts/feature-tests/rust-snippets-generator-test/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false 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 d3de295f52..857244627f 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.47.6" +// version = "0.47.7" // 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 1bcd9911ee..dcebf91da8 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.toml +++ b/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 7f56f74850..317fb42fab 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.47.6" +version = "0.47.7" path = "../../../framework/base" features = [ "alloc" ] @@ -17,7 +17,7 @@ path = "../../examples/adder" path = "../../feature-tests/basic-features" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" 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 c66e556d33..c8e6c1ce0c 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/meta/Cargo.toml +++ b/contracts/feature-tests/rust-testing-framework-tester/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false 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 122854100f..0580ef4b3d 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.toml +++ b/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/use-module/Cargo.toml b/contracts/feature-tests/use-module/Cargo.toml index 4909bcc5b6..7c7d7cec76 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.47.6" +version = "0.47.7" path = "../../../contracts/modules" [dependencies.multiversx-sc] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/scenario" [dev-dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../framework/meta" diff --git a/contracts/feature-tests/use-module/meta/Cargo.toml b/contracts/feature-tests/use-module/meta/Cargo.toml index d67ab6febf..6cc313e34b 100644 --- a/contracts/feature-tests/use-module/meta/Cargo.toml +++ b/contracts/feature-tests/use-module/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/use-module/meta/abi/Cargo.toml b/contracts/feature-tests/use-module/meta/abi/Cargo.toml index fe4ec859bf..635ff546a0 100644 --- a/contracts/feature-tests/use-module/meta/abi/Cargo.toml +++ b/contracts/feature-tests/use-module/meta/abi/Cargo.toml @@ -9,10 +9,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/meta" default-features = false 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 37974a3659..2e4694e6fb 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.47.6" + "version": "0.47.7" } }, "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 948e9d09f4..c84a7deac4 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.47.6" + "version": "0.47.7" } }, "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 746abe441f..a7dcfe74cf 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" 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 1a0e69499a..a08ec3fe72 100644 --- a/contracts/feature-tests/use-module/wasm/Cargo.toml +++ b/contracts/feature-tests/use-module/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.6" +version = "0.47.7" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/modules/Cargo.toml b/contracts/modules/Cargo.toml index 5f0c2f43ed..f6a506632d 100644 --- a/contracts/modules/Cargo.toml +++ b/contracts/modules/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-modules" -version = "0.47.6" +version = "0.47.7" edition = "2021" authors = ["MultiversX "] @@ -17,5 +17,5 @@ categories = ["no-std", "wasm", "cryptography::cryptocurrencies"] alloc = ["multiversx-sc/alloc"] [dependencies.multiversx-sc] -version = "0.47.6" +version = "0.47.7" path = "../../framework/base" diff --git a/framework/base/Cargo.toml b/framework/base/Cargo.toml index f85aa5896e..b3beb82b33 100644 --- a/framework/base/Cargo.toml +++ b/framework/base/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" edition = "2021" authors = ["Andrei Marinica ", "MultiversX "] @@ -27,7 +27,7 @@ bitflags = "=2.4.2" num-traits = { version = "=0.2.17", default-features = false } [dependencies.multiversx-sc-derive] -version = "=0.47.6" +version = "=0.47.7" path = "../derive" [dependencies.multiversx-sc-codec] diff --git a/framework/derive/Cargo.toml b/framework/derive/Cargo.toml index 3f745d768a..b31ebfcfd1 100644 --- a/framework/derive/Cargo.toml +++ b/framework/derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" edition = "2021" authors = ["Andrei Marinica ", "MultiversX "] diff --git a/framework/meta/Cargo.toml b/framework/meta/Cargo.toml index 4825f960a9..5e7d2ea2ae 100644 --- a/framework/meta/Cargo.toml +++ b/framework/meta/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-meta" -version = "0.47.6" +version = "0.47.7" edition = "2021" authors = [ @@ -52,7 +52,7 @@ pathdiff = { version = "0.2.1", optional = true } common-path = { version = "1.0.0", optional = true } [dependencies.multiversx-sc] -version = "=0.47.6" +version = "=0.47.7" path = "../base" features = ["alloc", "num-bigint"] 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 73bb69786f..8239f5c5e0 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.47.6" +version = "0.47.7" # [workspace] diff --git a/framework/meta/src/cmd/contract/meta_config.rs b/framework/meta/src/cmd/contract/meta_config.rs index ff9ed2f2f5..d1ba6a66ec 100644 --- a/framework/meta/src/cmd/contract/meta_config.rs +++ b/framework/meta/src/cmd/contract/meta_config.rs @@ -205,7 +205,7 @@ overflow-checks = false path = \"..\" [dependencies.multiversx-sc-wasm-adapter] -version = \"0.47.6\" +version = \"0.47.7\" path = \"../../../../framework/wasm-adapter\" [workspace] @@ -218,7 +218,7 @@ members = [\".\"] name: "test".to_string(), edition: "2021".to_string(), profile: ContractVariantProfile::default(), - framework_version: "0.47.6".to_string(), + framework_version: "0.47.7".to_string(), framework_path: Option::Some("../../../framework/base".to_string()), contract_features: Vec::::new(), }; diff --git a/framework/meta/src/version_history.rs b/framework/meta/src/version_history.rs index 28e3deb2fa..531047fd6c 100644 --- a/framework/meta/src/version_history.rs +++ b/framework/meta/src/version_history.rs @@ -3,7 +3,7 @@ use crate::{framework_version, framework_versions, version::FrameworkVersion}; /// 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: FrameworkVersion = framework_version!(0.47.6); +pub const LAST_VERSION: FrameworkVersion = framework_version!(0.47.7); /// Indicates where to stop with the upgrades. pub const LAST_UPGRADE_VERSION: FrameworkVersion = LAST_VERSION; @@ -64,6 +64,7 @@ pub const VERSIONS: &[FrameworkVersion] = framework_versions![ 0.47.4, 0.47.5, 0.47.6, + 0.47.7, ]; #[rustfmt::skip] diff --git a/framework/scenario/Cargo.toml b/framework/scenario/Cargo.toml index cff475ee2f..a8846449bc 100644 --- a/framework/scenario/Cargo.toml +++ b/framework/scenario/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-scenario" -version = "0.47.6" +version = "0.47.7" edition = "2021" authors = [ @@ -40,12 +40,12 @@ path = "src/main.rs" run-go-tests = [] [dependencies.multiversx-sc] -version = "=0.47.6" +version = "=0.47.7" features = ["alloc", "num-bigint"] path = "../base" [dependencies.multiversx-sc-meta] -version = "=0.47.6" +version = "=0.47.7" path = "../meta" [dependencies.multiversx-chain-scenario-format] diff --git a/framework/snippets/Cargo.toml b/framework/snippets/Cargo.toml index 700053f340..9413f07e9f 100644 --- a/framework/snippets/Cargo.toml +++ b/framework/snippets/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-snippets" -version = "0.47.6" +version = "0.47.7" edition = "2021" authors = ["MultiversX "] @@ -22,7 +22,7 @@ env_logger = "0.11" futures = "0.3" [dependencies.multiversx-sc-scenario] -version = "=0.47.6" +version = "=0.47.7" path = "../scenario" [dependencies.multiversx-sdk] diff --git a/framework/wasm-adapter/Cargo.toml b/framework/wasm-adapter/Cargo.toml index a4efa2c1eb..217b5c98a8 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.47.6" +version = "0.47.7" edition = "2021" authors = [ @@ -22,5 +22,5 @@ categories = [ ] [dependencies.multiversx-sc] -version = "=0.47.6" +version = "=0.47.7" path = "../base" diff --git a/tools/mxpy-snippet-generator/Cargo.toml b/tools/mxpy-snippet-generator/Cargo.toml index 0de044383f..2d84fe4e2d 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.47.6" +version = "0.47.7" path = "../../framework/base" [dependencies] diff --git a/tools/rust-debugger/format-tests/Cargo.toml b/tools/rust-debugger/format-tests/Cargo.toml index c7109ff434..ce3cab8d55 100644 --- a/tools/rust-debugger/format-tests/Cargo.toml +++ b/tools/rust-debugger/format-tests/Cargo.toml @@ -9,11 +9,11 @@ name = "format-tests" path = "src/format_tests.rs" [dependencies.multiversx-sc] -version = "=0.47.6" +version = "=0.47.7" path = "../../../framework/base" [dependencies.multiversx-sc-scenario] -version = "=0.47.6" +version = "=0.47.7" path = "../../../framework/scenario" [dependencies.multiversx-chain-vm] From b2bf499e82821ad1f2c5d8f0d0d56d4c71312ba1 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 15 Mar 2024 07:52:49 +0100 Subject: [PATCH 096/461] Cargo.lock update --- 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/nft-subscription/wasm/Cargo.lock | 8 ++++---- 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 +++--- .../alloc-features/wasm-alloc-mem-fail/Cargo.lock | 6 +++--- .../alloc-features/wasm-alloc-mem-leaking/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 +++--- .../composability/vault/wasm-vault-upgrade/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 ++++---- 86 files changed, 274 insertions(+), 274 deletions(-) diff --git a/contracts/benchmarks/large-storage/wasm/Cargo.lock b/contracts/benchmarks/large-storage/wasm/Cargo.lock index 7be1d06796..31750ec068 100755 --- a/contracts/benchmarks/large-storage/wasm/Cargo.lock +++ b/contracts/benchmarks/large-storage/wasm/Cargo.lock @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 c53d36c9e6..1c822ccffb 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.lock @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock index 8e9ecb0aff..93d5f89c99 100644 --- a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock index a05e0cbf9c..42082bb424 100644 --- a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock index 82ecbafa98..7e38065884 100644 --- a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 aeda5a7bc8..6b1f5c27ba 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.lock @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock index 12e9bf5ce5..ac3a58591d 100644 --- a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock index 5ae88675b5..ce4e08b913 100755 --- a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/str-repeat/wasm/Cargo.lock b/contracts/benchmarks/str-repeat/wasm/Cargo.lock index 5a33cbf8ea..cffabbafb4 100755 --- a/contracts/benchmarks/str-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/str-repeat/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/core/price-aggregator/wasm/Cargo.lock b/contracts/core/price-aggregator/wasm/Cargo.lock index 7e1f74ef3b..0a413621c5 100644 --- a/contracts/core/price-aggregator/wasm/Cargo.lock +++ b/contracts/core/price-aggregator/wasm/Cargo.lock @@ -86,7 +86,7 @@ checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "multiversx-price-aggregator-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "arrayvec", "getrandom", @@ -105,7 +105,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -134,7 +134,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -145,14 +145,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/adder/wasm/Cargo.lock b/contracts/examples/adder/wasm/Cargo.lock index f1e406be0b..2a5ed06f4c 100755 --- a/contracts/examples/adder/wasm/Cargo.lock +++ b/contracts/examples/adder/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/bonding-curve-contract/wasm/Cargo.lock b/contracts/examples/bonding-curve-contract/wasm/Cargo.lock index b95f064ec9..562a9b2da4 100644 --- a/contracts/examples/bonding-curve-contract/wasm/Cargo.lock +++ b/contracts/examples/bonding-curve-contract/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/check-pause/wasm/Cargo.lock b/contracts/examples/check-pause/wasm/Cargo.lock index 381a32895d..1b0dee59f8 100644 --- a/contracts/examples/check-pause/wasm/Cargo.lock +++ b/contracts/examples/check-pause/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock b/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock index 188e8e70e9..b132742fa0 100644 --- a/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock +++ b/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/crypto-bubbles/wasm/Cargo.lock b/contracts/examples/crypto-bubbles/wasm/Cargo.lock index 56782e48f4..5f554cec2b 100755 --- a/contracts/examples/crypto-bubbles/wasm/Cargo.lock +++ b/contracts/examples/crypto-bubbles/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 5ccd000fa0..535a51de38 100755 --- a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.lock +++ b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.lock @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -113,7 +113,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -124,7 +124,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 e2d7648bec..d61753e258 100755 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.lock +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.lock @@ -65,7 +65,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -94,7 +94,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -105,7 +105,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 95e227f126..45a01439c5 100755 --- a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.lock +++ b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.lock @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -104,7 +104,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -115,7 +115,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/crypto-zombies/wasm/Cargo.lock b/contracts/examples/crypto-zombies/wasm/Cargo.lock index 4375fdad74..a9f01a6180 100755 --- a/contracts/examples/crypto-zombies/wasm/Cargo.lock +++ b/contracts/examples/crypto-zombies/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/digital-cash/wasm/Cargo.lock b/contracts/examples/digital-cash/wasm/Cargo.lock index 80451862a4..79bb5c8cba 100644 --- a/contracts/examples/digital-cash/wasm/Cargo.lock +++ b/contracts/examples/digital-cash/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/empty/wasm/Cargo.lock b/contracts/examples/empty/wasm/Cargo.lock index 77c2d35593..ac143852e3 100755 --- a/contracts/examples/empty/wasm/Cargo.lock +++ b/contracts/examples/empty/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 0b1120c4bb..33e5926915 100644 --- a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.lock +++ b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/factorial/wasm/Cargo.lock b/contracts/examples/factorial/wasm/Cargo.lock index 61020c7136..e8423983d5 100755 --- a/contracts/examples/factorial/wasm/Cargo.lock +++ b/contracts/examples/factorial/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/fractional-nfts/wasm/Cargo.lock b/contracts/examples/fractional-nfts/wasm/Cargo.lock index fcf3281a66..64a57b293d 100644 --- a/contracts/examples/fractional-nfts/wasm/Cargo.lock +++ b/contracts/examples/fractional-nfts/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/lottery-esdt/wasm/Cargo.lock b/contracts/examples/lottery-esdt/wasm/Cargo.lock index 4fb2a0da1a..d63b3dead5 100755 --- a/contracts/examples/lottery-esdt/wasm/Cargo.lock +++ b/contracts/examples/lottery-esdt/wasm/Cargo.lock @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/multisig/wasm-multisig-full/Cargo.lock b/contracts/examples/multisig/wasm-multisig-full/Cargo.lock index 91527cb329..606b39381c 100644 --- a/contracts/examples/multisig/wasm-multisig-full/Cargo.lock +++ b/contracts/examples/multisig/wasm-multisig-full/Cargo.lock @@ -56,7 +56,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/multisig/wasm-multisig-view/Cargo.lock b/contracts/examples/multisig/wasm-multisig-view/Cargo.lock index f7651215a2..020a882847 100644 --- a/contracts/examples/multisig/wasm-multisig-view/Cargo.lock +++ b/contracts/examples/multisig/wasm-multisig-view/Cargo.lock @@ -56,7 +56,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/multisig/wasm/Cargo.lock b/contracts/examples/multisig/wasm/Cargo.lock index 703a789b67..06d5316f69 100755 --- a/contracts/examples/multisig/wasm/Cargo.lock +++ b/contracts/examples/multisig/wasm/Cargo.lock @@ -56,7 +56,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/nft-minter/wasm/Cargo.lock b/contracts/examples/nft-minter/wasm/Cargo.lock index 4e52a3e4ce..4555b16aba 100644 --- a/contracts/examples/nft-minter/wasm/Cargo.lock +++ b/contracts/examples/nft-minter/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/nft-storage-prepay/wasm/Cargo.lock b/contracts/examples/nft-storage-prepay/wasm/Cargo.lock index e86af50f12..f92cbb26e0 100755 --- a/contracts/examples/nft-storage-prepay/wasm/Cargo.lock +++ b/contracts/examples/nft-storage-prepay/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/nft-subscription/wasm/Cargo.lock b/contracts/examples/nft-subscription/wasm/Cargo.lock index 9b4c96f380..34a24cf679 100644 --- a/contracts/examples/nft-subscription/wasm/Cargo.lock +++ b/contracts/examples/nft-subscription/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/order-book/factory/wasm/Cargo.lock b/contracts/examples/order-book/factory/wasm/Cargo.lock index 8a0892b4f0..5472eac6f3 100644 --- a/contracts/examples/order-book/factory/wasm/Cargo.lock +++ b/contracts/examples/order-book/factory/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/order-book/pair/wasm/Cargo.lock b/contracts/examples/order-book/pair/wasm/Cargo.lock index 7b781cacc5..76a5a75e99 100644 --- a/contracts/examples/order-book/pair/wasm/Cargo.lock +++ b/contracts/examples/order-book/pair/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/ping-pong-egld/wasm/Cargo.lock b/contracts/examples/ping-pong-egld/wasm/Cargo.lock index ea650d9183..0bc1b1c801 100755 --- a/contracts/examples/ping-pong-egld/wasm/Cargo.lock +++ b/contracts/examples/ping-pong-egld/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/proxy-pause/wasm/Cargo.lock b/contracts/examples/proxy-pause/wasm/Cargo.lock index 0255476045..49f181a970 100644 --- a/contracts/examples/proxy-pause/wasm/Cargo.lock +++ b/contracts/examples/proxy-pause/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/rewards-distribution/wasm/Cargo.lock b/contracts/examples/rewards-distribution/wasm/Cargo.lock index 7a48d77b79..2daa481ff3 100644 --- a/contracts/examples/rewards-distribution/wasm/Cargo.lock +++ b/contracts/examples/rewards-distribution/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/seed-nft-minter/wasm/Cargo.lock b/contracts/examples/seed-nft-minter/wasm/Cargo.lock index fb7221c3d2..9ac9f584f9 100644 --- a/contracts/examples/seed-nft-minter/wasm/Cargo.lock +++ b/contracts/examples/seed-nft-minter/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/token-release/wasm/Cargo.lock b/contracts/examples/token-release/wasm/Cargo.lock index 8c8f3dc478..da72b4a6d4 100644 --- a/contracts/examples/token-release/wasm/Cargo.lock +++ b/contracts/examples/token-release/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 10c6773f26..4b4fbd01f6 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/abi-tester/wasm/Cargo.lock b/contracts/feature-tests/abi-tester/wasm/Cargo.lock index a5aff97dd6..3c219d33c9 100755 --- a/contracts/feature-tests/abi-tester/wasm/Cargo.lock +++ b/contracts/feature-tests/abi-tester/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock index 487a94fe63..e5d2af2ccd 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock index 0ad48515fe..4455b345f9 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/alloc-features/wasm/Cargo.lock b/contracts/feature-tests/alloc-features/wasm/Cargo.lock index 6c98001362..f2bdfc23e9 100644 --- a/contracts/feature-tests/alloc-features/wasm/Cargo.lock +++ b/contracts/feature-tests/alloc-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 3a6b9aafb9..c9265a486f 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 @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/basic-features/wasm/Cargo.lock b/contracts/feature-tests/basic-features/wasm/Cargo.lock index 1ce9fe2626..c62ed6e208 100755 --- a/contracts/feature-tests/basic-features/wasm/Cargo.lock +++ b/contracts/feature-tests/basic-features/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 b51f2b38fc..7d9f21fbd5 100644 --- a/contracts/feature-tests/big-float-features/wasm/Cargo.lock +++ b/contracts/feature-tests/big-float-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 86dcd9f808..d7c01b1316 100644 --- a/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 eecef5998f..e2f6d2e32a 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 7c177a1cb4..71a3d6506f 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 @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 05ce10fcdf..8c397ab34f 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 1203771393..87ffcd81cd 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 @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 6cd0f8bf6f..1789144ba6 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 @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 204fd42b2c..b9c77bd876 100644 --- a/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 114dcac248..25b1bd5be1 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 c3a50248c5..24bb5c2c3c 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 938e700dd1..3bd5720470 100755 --- a/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock b/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock index f261a8a95a..3d741a724c 100755 --- a/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 54764c0e5f..9df77263a4 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 @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 8be785965b..d99b0c86ad 100644 --- a/contracts/feature-tests/composability/promises-features/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/promises-features/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 4c616d091a..131e1f98e0 100755 --- a/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 2fd411835f..07096a0c87 100755 --- a/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 ac7deaf7a0..ace05f291b 100755 --- a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 d2e6b98b35..2426bbafc9 100644 --- a/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 a8fb67560e..817d599fc8 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.lock +++ b/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock index 91342201d7..b86fda7779 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock +++ b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/vault/wasm/Cargo.lock b/contracts/feature-tests/composability/vault/wasm/Cargo.lock index 7f7b448ea1..63b59e6432 100755 --- a/contracts/feature-tests/composability/vault/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/vault/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 e9da526720..48d839370c 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 @@ -63,7 +63,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 f7da662233..e824be164e 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 @@ -63,7 +63,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 02a77c911f..cafbaaa044 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 f068f66024..b06fbb5915 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 31f5c7a5b3..fadd4d7d06 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 921baab25d..1b86e0f930 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 49b706b912..69246ef0e7 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 @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 7d3eb7e294..45dee647b9 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.lock +++ b/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 80f9af5533..7b03d2eed4 100644 --- a/contracts/feature-tests/formatted-message-features/wasm/Cargo.lock +++ b/contracts/feature-tests/formatted-message-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 491ef2f890..551ac72ffa 100644 --- a/contracts/feature-tests/managed-map-features/wasm/Cargo.lock +++ b/contracts/feature-tests/managed-map-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 f08ba00acd..d2952ba4f2 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 @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 aef8e2e065..952172f4a5 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 @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 0fb553246f..f078c5b4cb 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 @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 2be74ea6d2..d849f259dd 100755 --- a/contracts/feature-tests/multi-contract-features/wasm/Cargo.lock +++ b/contracts/feature-tests/multi-contract-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 d7a615f03b..19c41a8939 100755 --- a/contracts/feature-tests/panic-message-features/wasm/Cargo.lock +++ b/contracts/feature-tests/panic-message-features/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/payable-features/wasm/Cargo.lock b/contracts/feature-tests/payable-features/wasm/Cargo.lock index 5fd8334ff0..312b0558e5 100755 --- a/contracts/feature-tests/payable-features/wasm/Cargo.lock +++ b/contracts/feature-tests/payable-features/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 11de3fca41..016e4d921d 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.lock +++ b/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 0fa9a620bc..be5589bcee 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.lock +++ b/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" 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 d5e7c069db..3d059e28f6 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 @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/use-module/wasm/Cargo.lock b/contracts/feature-tests/use-module/wasm/Cargo.lock index 7c11441a64..3478705566 100644 --- a/contracts/feature-tests/use-module/wasm/Cargo.lock +++ b/contracts/feature-tests/use-module/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.6" +version = "0.47.7" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.6" +version = "0.47.7" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.6" +version = "0.47.7" dependencies = [ "multiversx-sc", ] From d9114fc3091166c4e3c91a2f598f313696ad9cd6 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Tue, 19 Mar 2024 00:35:29 +0200 Subject: [PATCH 097/461] add enum in proxy --- .../src/crowdfunding_esdt.rs | 1 + .../crowdfunding-esdt/src/temp_proxy.rs | 157 ++++++++++++++++++ framework/base/src/abi/type_description.rs | 24 +++ .../wrapped/egld_or_esdt_token_identifier.rs | 4 + .../contract/generate_proxy/proxy_gen_main.rs | 4 +- .../generate_proxy/proxy_template_gen.rs | 21 +++ 6 files changed, 210 insertions(+), 1 deletion(-) create mode 100644 contracts/examples/crowdfunding-esdt/src/temp_proxy.rs diff --git a/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt.rs b/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt.rs index 8fa04d2e46..5b4af4b037 100644 --- a/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt.rs +++ b/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt.rs @@ -1,6 +1,7 @@ #![no_std] use multiversx_sc::{derive_imports::*, imports::*}; +pub mod temp_proxy; #[derive(TopEncode, TopDecode, TypeAbi, PartialEq, Eq, Clone, Copy, Debug)] pub enum Status { diff --git a/contracts/examples/crowdfunding-esdt/src/temp_proxy.rs b/contracts/examples/crowdfunding-esdt/src/temp_proxy.rs new file mode 100644 index 0000000000..1e197ae2f1 --- /dev/null +++ b/contracts/examples/crowdfunding-esdt/src/temp_proxy.rs @@ -0,0 +1,157 @@ +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(clippy::all)] + +use multiversx_sc::imports::*; + +pub enum Status { + FundingPeriod, + Successful, + Failed, +} +pub struct CrowdfundingProxy; + +impl TxProxyTrait for CrowdfundingProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = CrowdfundingProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + CrowdfundingProxyMethods { wrapped_tx: tx } + } +} + +pub struct CrowdfundingProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +impl CrowdfundingProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init< + Arg0: CodecInto>, + Arg1: CodecInto, + Arg2: CodecInto>, + >( + self, + target: Arg0, + deadline: Arg1, + token_identifier: Arg2, + ) -> Tx, OriginalResultMarker<()>> { + self.wrapped_tx + .raw_deploy() + .argument(&target) + .argument(&deadline) + .argument(&token_identifier) + .original_result() + } +} +impl CrowdfundingProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn fund( + self, + ) -> Tx, OriginalResultMarker<()>> { + self.wrapped_tx + .raw_call() + .function_name("fund") + .original_result() + } + + pub fn status( + self, + ) -> Tx, OriginalResultMarker> { + self.wrapped_tx + .raw_call() + .function_name("status") + .original_result() + } + + pub fn get_current_funds( + self, + ) -> Tx, OriginalResultMarker>> + { + self.wrapped_tx + .raw_call() + .function_name("getCurrentFunds") + .original_result() + } + + pub fn claim( + self, + ) -> Tx, OriginalResultMarker<()>> { + self.wrapped_tx + .raw_call() + .function_name("claim") + .original_result() + } + + pub fn target( + self, + ) -> Tx, OriginalResultMarker>> + { + self.wrapped_tx + .raw_call() + .function_name("getTarget") + .original_result() + } + + pub fn deadline( + self, + ) -> Tx, OriginalResultMarker> { + self.wrapped_tx + .raw_call() + .function_name("getDeadline") + .original_result() + } + + pub fn deposit>>( + self, + donor: Arg0, + ) -> Tx, OriginalResultMarker>> + { + self.wrapped_tx + .raw_call() + .function_name("getDeposit") + .argument(&donor) + .original_result() + } + + pub fn cf_token_identifier( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>, + > { + self.wrapped_tx + .raw_call() + .function_name("getCrowdfundingTokenIdentifier") + .original_result() + } +} diff --git a/framework/base/src/abi/type_description.rs b/framework/base/src/abi/type_description.rs index b9755fcaae..4084ffd85a 100644 --- a/framework/base/src/abi/type_description.rs +++ b/framework/base/src/abi/type_description.rs @@ -50,6 +50,30 @@ impl TypeContents { pub fn is_specified(&self) -> bool { !matches!(*self, TypeContents::NotSpecified) } + + pub fn extract_names(&self) -> Vec { + let mut names = Vec::new(); + match &self { + TypeContents::Enum(enum_variants) => { + for enum_variant in enum_variants.into_iter() { + names.push(enum_variant.name.clone()); + } + }, + TypeContents::Struct(struct_fields) => { + for struct_field in struct_fields { + todo!() + } + }, + TypeContents::ExplicitEnum(explicit_enum_variants) => { + for explicit_enum_variant in explicit_enum_variants { + todo!() + } + }, + TypeContents::NotSpecified => {}, + } + + names + } } #[derive(Clone, Debug, PartialEq, Eq)] diff --git a/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs b/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs index ed2c7083a7..3635ddaba2 100644 --- a/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs +++ b/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs @@ -214,6 +214,10 @@ impl TypeAbi for EgldOrEsdtTokenIdentifier { fn type_name() -> TypeName { "EgldOrEsdtTokenIdentifier".into() } + + fn type_name_rust() -> TypeName { + "EgldOrEsdtTokenIdentifier<$API>".into() + } } impl SCDisplay for EgldOrEsdtTokenIdentifier { diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs index 3510eb640a..93cdb7a8e6 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs @@ -9,7 +9,8 @@ use super::{ proxy_crate_gen::create_file, proxy_sc_functions_gen::write_content, proxy_template_gen::{ - write_header, write_impl_for_tx_proxy, write_struct_template, write_struct_tx_proxy_methods, + write_header, write_impl_for_tx_proxy, write_struct_template, + write_struct_tx_proxy_methods, write_types, }, }; @@ -24,6 +25,7 @@ impl MetaConfig { fn write_proxies_to_file(mut file: File, abi: ContractAbi) { write_header(&mut file); + write_types(&mut file, &abi.type_descriptions); write_struct_template(&mut file, &abi.name); write_impl_for_tx_proxy(&mut file, &abi.name); write_struct_tx_proxy_methods(&mut file, &abi.name); diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs index 71dc2e2287..7dfdd56c1a 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs @@ -1,5 +1,7 @@ use std::{fs::File, io::Write}; +use multiversx_sc::abi::{TypeContents, TypeDescription, TypeDescriptionContainerImpl}; + use crate::cmd::contract::generate_snippets::snippet_gen_common::write_newline; use super::proxy_naming::{proxy_methods_type_name, proxy_type_name}; @@ -20,6 +22,14 @@ pub(crate) fn write_header(file: &mut File) { write_newline(file); } +pub(crate) fn write_types(file: &mut File, types: &TypeDescriptionContainerImpl) { + for t in types.0.iter() { + if matches!(t.1.contents, TypeContents::Enum(_)) { + write_enum(file, &t.1); + } + } +} + pub(crate) fn write_struct_template(file: &mut File, name: &str) { let proxy_type_name = proxy_type_name(name); writeln!(file, "pub struct {proxy_type_name};").unwrap(); @@ -68,3 +78,14 @@ where write_newline(file); } + +fn write_enum(file: &mut File, type_description: &TypeDescription) { + writeln!(file, r#"pub enum {} {{"#, type_description.names.abi).unwrap(); + + for content in type_description.contents.extract_names() { + writeln!(file, " {content},").unwrap(); + } + + writeln!(file, "}}").unwrap(); + write_newline(file); +} From 16020977c7c053230c518569c0f242dd4626e123 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 19 Mar 2024 09:35:38 +0200 Subject: [PATCH 098/461] removed deprecation from old testing framework --- framework/scenario/src/lib.rs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/framework/scenario/src/lib.rs b/framework/scenario/src/lib.rs index 0110147ed3..8e31b5bb6e 100644 --- a/framework/scenario/src/lib.rs +++ b/framework/scenario/src/lib.rs @@ -13,15 +13,10 @@ pub mod standalone; pub mod test_wallets; mod vm_go_tool; -#[deprecated( - since = "0.42.0", - note = "Use the blackbox testing framework instead. If needed, it also supports whitebox calls." -)] pub mod whitebox_legacy; /// Keeping this for backwards compatibility. /// Unfortunately, the `deprecated` annotation doesn't function for reexports. -#[allow(deprecated)] pub use whitebox_legacy as testing_framework; pub use api::DebugApi; From 0d8124425bedd720c67af4770cedbdf2275b2c8f Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 19 Mar 2024 10:52:02 +0200 Subject: [PATCH 099/461] tx proxy gen - TypeAbi derive rust name fix --- framework/derive/src/type_abi_derive.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/framework/derive/src/type_abi_derive.rs b/framework/derive/src/type_abi_derive.rs index 2d5848cc2d..bdbe24208f 100644 --- a/framework/derive/src/type_abi_derive.rs +++ b/framework/derive/src/type_abi_derive.rs @@ -122,6 +122,10 @@ pub fn type_abi_derive(ast: &syn::DeriveInput) -> TokenStream { #name_str.into() } + fn type_name_rust() -> multiversx_sc::abi::TypeName { + #name_str.into() + } + #type_description_impl } }; From 9f233b441052bc8488702dd7713956a122e3817a Mon Sep 17 00:00:00 2001 From: Alin Cruceat Date: Tue, 19 Mar 2024 13:39:59 +0200 Subject: [PATCH 100/461] vec_mapper set has mut ref --- framework/base/src/storage/mappers/vec_mapper.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/base/src/storage/mappers/vec_mapper.rs b/framework/base/src/storage/mappers/vec_mapper.rs index 49c9c159cc..cc4db40e29 100644 --- a/framework/base/src/storage/mappers/vec_mapper.rs +++ b/framework/base/src/storage/mappers/vec_mapper.rs @@ -202,7 +202,7 @@ where /// Set item at index in storage. /// Index must be valid (1 <= index <= count). - pub fn set(&self, index: usize, item: &T) { + pub fn set(&mut self, index: usize, item: &T) { if index == 0 || index > self.len() { SA::error_api_impl().signal_error(&b"index out of range"[..]); } From 1c0fc9ded24a42f2e8c662e511247d1d71d9daa9 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Tue, 19 Mar 2024 15:45:59 +0200 Subject: [PATCH 101/461] tx proxy gen - extract attributes macro --- .../crowdfunding-esdt/src/crowdfunding_esdt.rs | 3 ++- framework/base/src/abi/type_description.rs | 16 ++++++++-------- framework/derive/src/lib.rs | 13 ++++++++++++- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt.rs b/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt.rs index 5b4af4b037..e82411c0e1 100644 --- a/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt.rs +++ b/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt.rs @@ -3,7 +3,8 @@ use multiversx_sc::{derive_imports::*, imports::*}; pub mod temp_proxy; -#[derive(TopEncode, TopDecode, TypeAbi, PartialEq, Eq, Clone, Copy, Debug)] +#[derive(TypeAbi)] +#[derive(TopEncode, TopDecode, PartialEq, Eq, Clone, Copy, Debug)] pub enum Status { FundingPeriod, Successful, diff --git a/framework/base/src/abi/type_description.rs b/framework/base/src/abi/type_description.rs index 4084ffd85a..b127e1844e 100644 --- a/framework/base/src/abi/type_description.rs +++ b/framework/base/src/abi/type_description.rs @@ -59,15 +59,15 @@ impl TypeContents { names.push(enum_variant.name.clone()); } }, - TypeContents::Struct(struct_fields) => { - for struct_field in struct_fields { - todo!() - } + TypeContents::Struct(_struct_fields) => { + // for struct_field in struct_fields { + // todo!() + // } }, - TypeContents::ExplicitEnum(explicit_enum_variants) => { - for explicit_enum_variant in explicit_enum_variants { - todo!() - } + TypeContents::ExplicitEnum(_explicit_enum_variants) => { + // for explicit_enum_variant in explicit_enum_variants { + // todo!() + // } }, TypeContents::NotSpecified => {}, } diff --git a/framework/derive/src/lib.rs b/framework/derive/src/lib.rs index a68d493c97..66531e3205 100644 --- a/framework/derive/src/lib.rs +++ b/framework/derive/src/lib.rs @@ -48,7 +48,18 @@ pub fn proxy( #[proc_macro_derive(TypeAbi)] pub fn type_abi_derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream { - let ast = syn::parse(input).unwrap(); + let ast: syn::DeriveInput = syn::parse(input).unwrap(); + for a in ast.clone().attrs { + match &a.meta { + syn::Meta::Path(_path) => {}, + syn::Meta::List(list) => { + for token in ::clone(&list.tokens).into_iter() { + println!(">>>{}", token.to_string()); + } + }, + syn::Meta::NameValue(_name_value) => {}, + } + } type_abi_derive::type_abi_derive(&ast) } From 37de8ba950a60c1114fad8e410b2d656d248efa3 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Wed, 20 Mar 2024 00:31:22 +0200 Subject: [PATCH 102/461] tx proxy gen - add macro_attibutes in proxy for enum --- .../crowdfunding-esdt/src/temp_proxy.rs | 92 ++++++++++++++++--- framework/base/src/abi/type_abi.rs | 1 + framework/base/src/abi/type_description.rs | 12 ++- .../types/io/operation_completion_status.rs | 1 + framework/derive/src/lib.rs | 11 --- .../derive/src/parse/attributes/doc_attr.rs | 14 +++ framework/derive/src/parse/attributes/mod.rs | 2 +- framework/derive/src/type_abi_derive.rs | 6 ++ framework/meta/src/abi_json/type_abi_json.rs | 1 + .../generate_proxy/proxy_template_gen.rs | 15 +++ 10 files changed, 129 insertions(+), 26 deletions(-) diff --git a/contracts/examples/crowdfunding-esdt/src/temp_proxy.rs b/contracts/examples/crowdfunding-esdt/src/temp_proxy.rs index 1e197ae2f1..1c4d10dbb9 100644 --- a/contracts/examples/crowdfunding-esdt/src/temp_proxy.rs +++ b/contracts/examples/crowdfunding-esdt/src/temp_proxy.rs @@ -6,11 +6,14 @@ use multiversx_sc::imports::*; +#[derive(TypeAbi)] +#[derive(TopEncode, TopDecode, PartialEq, Eq, Clone, Copy, Debug)] pub enum Status { FundingPeriod, Successful, Failed, } + pub struct CrowdfundingProxy; impl TxProxyTrait for CrowdfundingProxy @@ -53,7 +56,15 @@ where target: Arg0, deadline: Arg1, token_identifier: Arg2, - ) -> Tx, OriginalResultMarker<()>> { + ) -> Tx< + Env, + From, + (), + (), + Gas, + DeployCall, + OriginalResultMarker<()>, + > { self.wrapped_tx .raw_deploy() .argument(&target) @@ -61,6 +72,7 @@ where .argument(&token_identifier) .original_result() } + } impl CrowdfundingProxyMethods where @@ -72,7 +84,15 @@ where { pub fn fund( self, - ) -> Tx, OriginalResultMarker<()>> { + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { self.wrapped_tx .raw_call() .function_name("fund") @@ -81,7 +101,15 @@ where pub fn status( self, - ) -> Tx, OriginalResultMarker> { + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { self.wrapped_tx .raw_call() .function_name("status") @@ -90,8 +118,15 @@ where pub fn get_current_funds( self, - ) -> Tx, OriginalResultMarker>> - { + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>, + > { self.wrapped_tx .raw_call() .function_name("getCurrentFunds") @@ -100,7 +135,15 @@ where pub fn claim( self, - ) -> Tx, OriginalResultMarker<()>> { + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { self.wrapped_tx .raw_call() .function_name("claim") @@ -109,8 +152,15 @@ where pub fn target( self, - ) -> Tx, OriginalResultMarker>> - { + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>, + > { self.wrapped_tx .raw_call() .function_name("getTarget") @@ -119,18 +169,35 @@ where pub fn deadline( self, - ) -> Tx, OriginalResultMarker> { + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { self.wrapped_tx .raw_call() .function_name("getDeadline") .original_result() } - pub fn deposit>>( + pub fn deposit< + Arg0: CodecInto>, + >( self, donor: Arg0, - ) -> Tx, OriginalResultMarker>> - { + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>, + > { self.wrapped_tx .raw_call() .function_name("getDeposit") @@ -154,4 +221,5 @@ where .function_name("getCrowdfundingTokenIdentifier") .original_result() } + } diff --git a/framework/base/src/abi/type_abi.rs b/framework/base/src/abi/type_abi.rs index 62633e2a70..215cb36464 100644 --- a/framework/base/src/abi/type_abi.rs +++ b/framework/base/src/abi/type_abi.rs @@ -29,6 +29,7 @@ pub trait TypeAbi { docs: Vec::new(), names: Self::type_names(), contents: TypeContents::NotSpecified, + macro_attributes: Vec::new() }, ); } diff --git a/framework/base/src/abi/type_description.rs b/framework/base/src/abi/type_description.rs index b127e1844e..cee01bfa58 100644 --- a/framework/base/src/abi/type_description.rs +++ b/framework/base/src/abi/type_description.rs @@ -10,6 +10,7 @@ pub struct TypeDescription { pub docs: Vec, pub names: TypeNames, pub contents: TypeContents, + pub macro_attributes: Vec, } impl TypeDescription { @@ -24,16 +25,23 @@ impl TypeDescription { rust: String::new(), }, contents: TypeContents::NotSpecified, + macro_attributes: Vec::new(), }; } impl TypeDescription { /// Used in code generation. - pub fn new(docs: &[&str], names: TypeNames, contents: TypeContents) -> Self { + pub fn new( + docs: &[&str], + names: TypeNames, + contents: TypeContents, + macro_attributes: &[&str], + ) -> Self { TypeDescription { docs: docs.iter().map(|s| s.to_string()).collect(), names, contents, + macro_attributes: macro_attributes.iter().map(|s| s.to_string()).collect(), } } } @@ -55,7 +63,7 @@ impl TypeContents { let mut names = Vec::new(); match &self { TypeContents::Enum(enum_variants) => { - for enum_variant in enum_variants.into_iter() { + for enum_variant in enum_variants { names.push(enum_variant.name.clone()); } }, diff --git a/framework/base/src/types/io/operation_completion_status.rs b/framework/base/src/types/io/operation_completion_status.rs index 207b9d760f..b69af9624a 100644 --- a/framework/base/src/types/io/operation_completion_status.rs +++ b/framework/base/src/types/io/operation_completion_status.rs @@ -98,6 +98,7 @@ impl TypeAbi for OperationCompletionStatus { INTERRUPTED_STR, ) ].to_vec()), + macro_attributes: Vec::new() }, ); } diff --git a/framework/derive/src/lib.rs b/framework/derive/src/lib.rs index 66531e3205..bdc33883fe 100644 --- a/framework/derive/src/lib.rs +++ b/framework/derive/src/lib.rs @@ -49,17 +49,6 @@ pub fn proxy( #[proc_macro_derive(TypeAbi)] pub fn type_abi_derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream { let ast: syn::DeriveInput = syn::parse(input).unwrap(); - for a in ast.clone().attrs { - match &a.meta { - syn::Meta::Path(_path) => {}, - syn::Meta::List(list) => { - for token in ::clone(&list.tokens).into_iter() { - println!(">>>{}", token.to_string()); - } - }, - syn::Meta::NameValue(_name_value) => {}, - } - } type_abi_derive::type_abi_derive(&ast) } diff --git a/framework/derive/src/parse/attributes/doc_attr.rs b/framework/derive/src/parse/attributes/doc_attr.rs index c2a670abb5..d9d3b22658 100644 --- a/framework/derive/src/parse/attributes/doc_attr.rs +++ b/framework/derive/src/parse/attributes/doc_attr.rs @@ -45,6 +45,20 @@ pub fn extract_doc(attrs: &[syn::Attribute]) -> Vec { .collect() } +pub fn extract_macro_attributes(attrs: &[syn::Attribute]) -> Vec { + let mut macro_attributes = Vec::new(); + + for a in attrs { + if let syn::Meta::List(list) = &a.meta { + for token in list.tokens.clone().into_iter() { + macro_attributes.push(token.to_string()); + } + } + } + + macro_attributes +} + fn remove_backslashes(input: &str) -> String { input .trim_matches('\"') diff --git a/framework/derive/src/parse/attributes/mod.rs b/framework/derive/src/parse/attributes/mod.rs index e355c78e61..e58c1a912e 100644 --- a/framework/derive/src/parse/attributes/mod.rs +++ b/framework/derive/src/parse/attributes/mod.rs @@ -11,7 +11,7 @@ mod trait_prop_names; mod util; pub use argument_attr::*; -pub use doc_attr::{extract_doc, OutputNameAttribute}; +pub use doc_attr::{extract_doc, extract_macro_attributes, OutputNameAttribute}; pub use endpoint_attr::*; pub use event_attr::*; pub use label_attr::*; diff --git a/framework/derive/src/type_abi_derive.rs b/framework/derive/src/type_abi_derive.rs index bdbe24208f..13fab6baa3 100644 --- a/framework/derive/src/type_abi_derive.rs +++ b/framework/derive/src/type_abi_derive.rs @@ -1,3 +1,5 @@ +use crate::parse::attributes::extract_macro_attributes; + use super::parse::attributes::extract_doc; use proc_macro::TokenStream; use quote::quote; @@ -45,6 +47,8 @@ fn fields_snippets(fields: &syn::Fields) -> Vec { pub fn type_abi_derive(ast: &syn::DeriveInput) -> TokenStream { let type_docs = extract_doc(ast.attrs.as_slice()); + let macro_attributes = extract_macro_attributes(ast.attrs.as_slice()); + let type_description_impl = match &ast.data { syn::Data::Struct(data_struct) => { let struct_field_snippets = fields_snippets(&data_struct.fields); @@ -61,6 +65,7 @@ pub fn type_abi_derive(ast: &syn::DeriveInput) -> TokenStream { &[ #(#type_docs),* ], type_names, multiversx_sc::abi::TypeContents::Struct(field_descriptions), + &[ #(#macro_attributes),* ], ), ); } @@ -104,6 +109,7 @@ pub fn type_abi_derive(ast: &syn::DeriveInput) -> TokenStream { &[ #(#type_docs),* ], type_names, multiversx_sc::abi::TypeContents::Enum(variant_descriptions), + &[ #(#macro_attributes),* ], ), ); } diff --git a/framework/meta/src/abi_json/type_abi_json.rs b/framework/meta/src/abi_json/type_abi_json.rs index c7735f04d6..dac3f7c029 100644 --- a/framework/meta/src/abi_json/type_abi_json.rs +++ b/framework/meta/src/abi_json/type_abi_json.rs @@ -87,6 +87,7 @@ impl TypeDescriptionJson { ), _ => TypeContents::NotSpecified, }, + macro_attributes: Vec::new() } } } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs index 7dfdd56c1a..1267cb839c 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs @@ -80,6 +80,7 @@ where } fn write_enum(file: &mut File, type_description: &TypeDescription) { + write_macro_attributes(file, &type_description.macro_attributes); writeln!(file, r#"pub enum {} {{"#, type_description.names.abi).unwrap(); for content in type_description.contents.extract_names() { @@ -89,3 +90,17 @@ fn write_enum(file: &mut File, type_description: &TypeDescription) { writeln!(file, "}}").unwrap(); write_newline(file); } + +fn write_macro_attributes(file: &mut File, macro_attributes: &[String]) { + writeln!(file, "#[derive(TypeAbi)]").unwrap(); + if !macro_attributes.is_empty() { + write!(file, "#[derive(").unwrap(); + } + + let attributes = macro_attributes.join("").replace(',', ", "); + write!(file, "{attributes}").unwrap(); + + if !macro_attributes.is_empty() { + writeln!(file, ")]").unwrap(); + } +} From 775f0e8208a1f15ff10d3097b10d1bb3f4e654a7 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Wed, 20 Mar 2024 10:15:59 +0200 Subject: [PATCH 103/461] tx proxy gen - add derive imports --- contracts/examples/crowdfunding-esdt/src/temp_proxy.rs | 2 ++ .../src/cmd/contract/generate_proxy/proxy_template_gen.rs | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/contracts/examples/crowdfunding-esdt/src/temp_proxy.rs b/contracts/examples/crowdfunding-esdt/src/temp_proxy.rs index 1c4d10dbb9..98ab96c104 100644 --- a/contracts/examples/crowdfunding-esdt/src/temp_proxy.rs +++ b/contracts/examples/crowdfunding-esdt/src/temp_proxy.rs @@ -6,6 +6,8 @@ use multiversx_sc::imports::*; +use multiversx_sc::derive_imports::*; + #[derive(TypeAbi)] #[derive(TopEncode, TopDecode, PartialEq, Eq, Clone, Copy, Debug)] pub enum Status { diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs index 1267cb839c..25dd7a150d 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs @@ -15,6 +15,8 @@ const IMPORTS: &str = "#![allow(clippy::all)] use multiversx_sc::imports::*;"; +const DERIVE_IMPORTS: &str = "use multiversx_sc::derive_imports::*;"; + pub(crate) fn write_header(file: &mut File) { writeln!(file, "{PREFIX_AUTO_GENERATED}").unwrap(); writeln!(file, r#"{IMPORTS}"#).unwrap(); @@ -80,6 +82,7 @@ where } fn write_enum(file: &mut File, type_description: &TypeDescription) { + write_derive_imports(file); write_macro_attributes(file, &type_description.macro_attributes); writeln!(file, r#"pub enum {} {{"#, type_description.names.abi).unwrap(); @@ -104,3 +107,8 @@ fn write_macro_attributes(file: &mut File, macro_attributes: &[String]) { writeln!(file, ")]").unwrap(); } } + +fn write_derive_imports(file: &mut File) { + writeln!(file, "{DERIVE_IMPORTS}").unwrap(); + write_newline(file); +} From cf30349c4d7a053e2a3c57d7ec4f8119bff77ecc Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 20 Mar 2024 10:42:51 +0200 Subject: [PATCH 104/461] unified syntax - interactors --- .../adder/interact/src/basic_interact.rs | 104 +++++++------- .../base/src/types/interaction/annotated.rs | 28 +++- .../base/src/types/interaction/tx_from.rs | 24 +++- .../base/src/types/interaction/tx_payment.rs | 92 ++++++++++++ framework/base/src/types/interaction/tx_to.rs | 24 +++- framework/scenario/src/facade/world_tx.rs | 2 +- .../src/facade/world_tx/scenario_env.rs | 10 -- .../facade/world_tx/scenario_env_deploy.rs | 2 +- .../src/facade/world_tx/scenario_env_exec.rs | 2 +- .../src/facade/world_tx/scenario_env_query.rs | 2 +- .../src/facade/world_tx/scenario_env_util.rs | 61 ++++++-- .../facade/world_tx/scenario_rh_list_item.rs | 16 ++- .../model/value/value_set_big_uint.rs | 13 +- .../scenario/model/value/value_set_bytes.rs | 32 +++++ framework/snippets/src/interactor.rs | 9 +- framework/snippets/src/itx.rs | 17 +++ framework/snippets/src/itx/interactor_env.rs | 24 ++++ .../snippets/src/itx/interactor_env_deploy.rs | 136 ++++++++++++++++++ .../snippets/src/itx/interactor_env_exec.rs | 122 ++++++++++++++++ .../snippets/src/itx/interactor_env_query.rs | 106 ++++++++++++++ .../snippets/src/itx/interactor_env_transf.rs | 51 +++++++ .../snippets/src/itx/interactor_rh_list.rs | 51 +++++++ .../src/itx/interactor_rh_list_item.rs | 76 ++++++++++ framework/snippets/src/lib.rs | 2 + 24 files changed, 924 insertions(+), 82 deletions(-) create mode 100644 framework/snippets/src/itx.rs create mode 100644 framework/snippets/src/itx/interactor_env.rs create mode 100644 framework/snippets/src/itx/interactor_env_deploy.rs create mode 100644 framework/snippets/src/itx/interactor_env_exec.rs create mode 100644 framework/snippets/src/itx/interactor_env_query.rs create mode 100644 framework/snippets/src/itx/interactor_env_transf.rs create mode 100644 framework/snippets/src/itx/interactor_rh_list.rs create mode 100644 framework/snippets/src/itx/interactor_rh_list_item.rs diff --git a/contracts/examples/adder/interact/src/basic_interact.rs b/contracts/examples/adder/interact/src/basic_interact.rs index 3dd78d048a..a5687aaede 100644 --- a/contracts/examples/adder/interact/src/basic_interact.rs +++ b/contracts/examples/adder/interact/src/basic_interact.rs @@ -2,26 +2,24 @@ mod basic_interact_cli; mod basic_interact_config; mod basic_interact_state; -use adder::ProxyTrait; +use adder::{temp_proxy, ProxyTrait}; use basic_interact_config::Config; use basic_interact_state::State; use clap::Parser; use multiversx_sc_snippets::{ env_logger, - multiversx_sc::{storage::mappers::SingleValue, types::Address}, + multiversx_sc::types::{Address, ReturnsNewAddress, ReturnsSimilar}, multiversx_sc_scenario::{ api::StaticApi, bech32, mandos_system::ScenarioRunner, num_bigint::BigUint, scenario_format::interpret_trait::{InterpretableFrom, InterpreterContext}, - scenario_model::{ - BytesValue, ScCallStep, ScDeployStep, ScQueryStep, Scenario, TransferStep, TxExpect, - }, + scenario_model::{BytesValue, ScDeployStep, Scenario}, standalone::retrieve_account_as_scenario_set_state, - test_wallets, ContractInfo, + test_wallets, ContractInfo, WithRawTxResponse, }, - tokio, Interactor, StepBuffer, + tokio, Interactor, InteractorPrepareAsync, StepBuffer, }; const INTERACTOR_SCENARIO_TRACE_PATH: &str = "interactor_trace.scen.json"; @@ -100,28 +98,32 @@ impl AdderInteract { async fn deploy(&mut self) { self.set_state().await; - self.interactor - .sc_deploy_use_result( - ScDeployStep::new() - .call(self.state.default_adder().init(BigUint::from(0u64))) - .from(&self.wallet_address) - .code(&self.adder_code), - |new_address, tr| { - tr.result.unwrap_or_else(|err| { - panic!( - "deploy failed: status: {}, message: {}", - err.status, err.message - ) - }); - - let new_address_bech32 = bech32::encode(&new_address); - println!("new address: {new_address_bech32}"); - - let new_address_expr = format!("bech32:{new_address_bech32}"); - self.state.set_adder_address(&new_address_expr); - }, - ) + let new_address = self + .interactor + .tx() + .from(&self.wallet_address) + .typed(temp_proxy::AdderProxy) + .init(0u32) + .code(&self.adder_code) + .with_result(WithRawTxResponse(|response| { + let err = &response.tx_error; + assert!( + err.is_success(), + "deploy failed: status: {}, message: {}", + err.status, + err.message + ); + })) + .returns(ReturnsNewAddress) + .prepare_async() + .run() .await; + + let new_address_bech32 = bech32::encode(&new_address.to_address()); + println!("new address: {new_address_bech32}"); + + let new_address_expr = format!("bech32:{new_address_bech32}"); + self.state.set_adder_address(&new_address_expr); } async fn multi_deploy(&mut self, count: &u8) { @@ -164,38 +166,42 @@ impl AdderInteract { } async fn feed_contract_egld(&mut self) { - let _ = self - .interactor - .transfer( - TransferStep::new() - .from(&self.wallet_address) - .to(self.state.adder()) - .egld_value("0,050000000000000000"), - ) + self.interactor + .tx() + .from(&self.wallet_address) + .to(self.state.adder().to_address()) + .egld(50000000000000000u64.into()) // TODO: annotate "0,050000000000000000" + .prepare_async() + .run() .await; } async fn add(&mut self, value: u64) { self.interactor - .sc_call( - ScCallStep::new() - .call(self.state.adder().add(value)) - .from(&self.wallet_address) - .expect( - TxExpect::ok().additional_error_message("performing add failed with: "), - ), - ) + .tx() + .from(&self.wallet_address) + .to(self.state.adder().to_address()) + .typed(temp_proxy::AdderProxy) + .add(value) + .prepare_async() + .run() .await; println!("successfully performed add"); } async fn print_sum(&mut self) { - self.interactor - .sc_query_use_result(ScQueryStep::new().call(self.state.adder().sum()), |tr| { - let sum: SingleValue = tr.result.unwrap(); - println!("sum: {}", sum.into()); - }) + let sum = self + .interactor + .query() + .to(self.state.adder().to_address()) + .typed(temp_proxy::AdderProxy) + .sum() + .returns(ReturnsSimilar::::new()) + .prepare_async() + .run() .await; + + println!("sum: {sum}"); } } diff --git a/framework/base/src/types/interaction/annotated.rs b/framework/base/src/types/interaction/annotated.rs index 878cdb5e1f..247b47b206 100644 --- a/framework/base/src/types/interaction/annotated.rs +++ b/framework/base/src/types/interaction/annotated.rs @@ -1,4 +1,4 @@ -use crate::types::{ManagedAddress, ManagedBuffer}; +use crate::types::{Address, ManagedAddress, ManagedBuffer}; use super::TxEnv; @@ -37,6 +37,32 @@ where } } +impl AnnotatedValue> for Address +where + Env: TxEnv, +{ + fn annotation(&self, _env: &Env) -> ManagedBuffer { + ManagedAddress::from(self).hex_expr() + } + + fn into_value(self, _env: &Env) -> ManagedAddress { + self.into() + } +} + +impl AnnotatedValue> for &Address +where + Env: TxEnv, +{ + fn annotation(&self, _env: &Env) -> ManagedBuffer { + ManagedAddress::from(*self).hex_expr() + } + + fn into_value(self, _env: &Env) -> ManagedAddress { + self.into() + } +} + impl AnnotatedValue> for ManagedBuffer where Env: TxEnv, diff --git a/framework/base/src/types/interaction/tx_from.rs b/framework/base/src/types/interaction/tx_from.rs index ef6cbb1462..0ced9e75c8 100644 --- a/framework/base/src/types/interaction/tx_from.rs +++ b/framework/base/src/types/interaction/tx_from.rs @@ -1,4 +1,4 @@ -use crate::types::ManagedAddress; +use crate::types::{Address, ManagedAddress}; use super::{AnnotatedValue, TxEnv}; @@ -44,3 +44,25 @@ where } } impl TxFromSpecified for &ManagedAddress where Env: TxEnv {} + +impl TxFrom for Address +where + Env: TxEnv, +{ + fn resolve_address(&self, _env: &Env) -> ManagedAddress { + self.into() + } +} + +impl TxFromSpecified for Address where Env: TxEnv {} + +impl TxFrom for &Address +where + Env: TxEnv, +{ + fn resolve_address(&self, _env: &Env) -> ManagedAddress { + ManagedAddress::from_address(self) + } +} + +impl TxFromSpecified for &Address where Env: TxEnv {} diff --git a/framework/base/src/types/interaction/tx_payment.rs b/framework/base/src/types/interaction/tx_payment.rs index 0f50f50e53..d7f7fd90f5 100644 --- a/framework/base/src/types/interaction/tx_payment.rs +++ b/framework/base/src/types/interaction/tx_payment.rs @@ -1,6 +1,8 @@ use crate::{ api::ManagedTypeApi, contract_base::SendRawWrapper, + formatter::FormatBuffer, + imports::{BigUint, ManagedBuffer, ManagedBufferCachedBuilder, ManagedVec}, types::{ EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EgldPayment, EsdtTokenPayment, ManagedAddress, MultiEsdtPayment, @@ -19,6 +21,50 @@ where pub fc: FunctionCall, } +#[derive(Clone)] +pub struct AnnotatedEgldPayment +where + Api: ManagedTypeApi, +{ + pub value: BigUint, + pub annotation: ManagedBuffer, +} + +impl AnnotatedEgldPayment +where + Api: ManagedTypeApi, +{ + pub fn new_egld(value: BigUint) -> Self { + let mut annotation = ManagedBufferCachedBuilder::default(); + annotation.append_display(&value); + AnnotatedEgldPayment { + value, + annotation: annotation.into_managed_buffer(), + } + } +} + +#[derive(Clone)] +pub struct FullPaymentData +where + Api: ManagedTypeApi, +{ + pub egld: Option>, + pub multi_esdt: MultiEsdtPayment, +} + +impl Default for FullPaymentData +where + Api: ManagedTypeApi, +{ + fn default() -> Self { + Self { + egld: None, + multi_esdt: Default::default(), + } + } +} + /// Describes a payment that is part of a transaction. pub trait TxPayment where @@ -44,6 +90,8 @@ where gas_limit: u64, fc: FunctionCall, ); + + fn into_full_payment_data(self) -> FullPaymentData; } /// Marks a payment object that only contains EGLD or nothing at all. @@ -88,6 +136,10 @@ where ) { EgldPayment::no_payment().perform_transfer_execute(env, to, gas_limit, fc); } + + fn into_full_payment_data(self) -> FullPaymentData { + FullPaymentData::default() + } } impl TxPaymentEgldOnly for () @@ -139,6 +191,13 @@ where &fc.arg_buffer, ); } + + fn into_full_payment_data(self) -> FullPaymentData<::Api> { + FullPaymentData { + egld: Some(AnnotatedEgldPayment::new_egld(self.value)), + multi_esdt: ManagedVec::new(), + } + } } impl TxPaymentEgldOnly for EgldPayment @@ -184,6 +243,13 @@ where ) { MultiEsdtPayment::from_single_item(self).perform_transfer_execute(env, to, gas_limit, fc); } + + fn into_full_payment_data(self) -> FullPaymentData<::Api> { + FullPaymentData { + egld: None, + multi_esdt: MultiEsdtPayment::from_single_item(self), + } + } } impl TxPayment for MultiEsdtPayment @@ -226,6 +292,13 @@ where &fc.arg_buffer, ); } + + fn into_full_payment_data(self) -> FullPaymentData<::Api> { + FullPaymentData { + egld: None, + multi_esdt: self, + } + } } impl TxPayment for EgldOrEsdtTokenPayment @@ -268,6 +341,14 @@ where |(to, fc), esdt_payment| esdt_payment.perform_transfer_execute(env, to, gas_limit, fc), ) } + + fn into_full_payment_data(self) -> FullPaymentData { + self.map_egld_or_esdt( + (), + |(), amount| TxPayment::::into_full_payment_data(EgldPayment::from(amount)), + |(), esdt_payment| TxPayment::::into_full_payment_data(esdt_payment), + ) + } } impl TxPayment for EgldOrMultiEsdtPayment @@ -314,6 +395,17 @@ where }, } } + + fn into_full_payment_data(self) -> FullPaymentData { + match self { + EgldOrMultiEsdtPayment::Egld(egld_amount) => { + TxPayment::::into_full_payment_data(EgldPayment::from(egld_amount)) + }, + EgldOrMultiEsdtPayment::MultiEsdt(multi_esdt_payment) => { + TxPayment::::into_full_payment_data(multi_esdt_payment) + }, + } + } } fn convert_tx_data_fungible( diff --git a/framework/base/src/types/interaction/tx_to.rs b/framework/base/src/types/interaction/tx_to.rs index ecba5ad1f6..2a32ac576f 100644 --- a/framework/base/src/types/interaction/tx_to.rs +++ b/framework/base/src/types/interaction/tx_to.rs @@ -1,4 +1,4 @@ -use crate::types::ManagedAddress; +use crate::types::{Address, ManagedAddress}; use super::{AnnotatedValue, TxEnv}; @@ -39,3 +39,25 @@ where f(self) } } + +impl TxTo for Address where Env: TxEnv {} +impl TxToSpecified for Address +where + Env: TxEnv, +{ + fn with_address_ref)>(&self, _env: &Env, f: F) { + let managed_address = ManagedAddress::from(self); + f(&managed_address) + } +} + +impl TxTo for &Address where Env: TxEnv {} +impl TxToSpecified for &Address +where + Env: TxEnv, +{ + fn with_address_ref)>(&self, _env: &Env, f: F) { + let managed_address = ManagedAddress::from(*self); + f(&managed_address) + } +} diff --git a/framework/scenario/src/facade/world_tx.rs b/framework/scenario/src/facade/world_tx.rs index 8c2314767e..92f842cf55 100644 --- a/framework/scenario/src/facade/world_tx.rs +++ b/framework/scenario/src/facade/world_tx.rs @@ -5,7 +5,7 @@ mod scenario_env; mod scenario_env_deploy; mod scenario_env_exec; mod scenario_env_query; -mod scenario_env_util; +pub mod scenario_env_util; mod scenario_rh_list; mod scenario_rh_list_item; mod with_tx_raw_response; diff --git a/framework/scenario/src/facade/world_tx/scenario_env.rs b/framework/scenario/src/facade/world_tx/scenario_env.rs index 0392fa2bb6..758cff63f1 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env.rs @@ -48,13 +48,3 @@ pub trait ScenarioTxRun { fn run(self) -> Self::Returns; } - -/// Provides a method to run scenario steps and txs, which also takes a `ScenarioWorld` argument. -/// -/// It is used for chaining methods that can't include the reference to the ScenarioWorld in the environment -/// for reasons imposed by lifetimes/the borrow checker. -pub trait ScenarioTxRunOnWorld { - type Returns; - - fn run_on_world(self, world: &mut ScenarioWorld) -> Self::Returns; -} diff --git a/framework/scenario/src/facade/world_tx/scenario_env_deploy.rs b/framework/scenario/src/facade/world_tx/scenario_env_deploy.rs index 103228c3e2..d9317a094c 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_deploy.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_deploy.rs @@ -13,7 +13,7 @@ use multiversx_sc::{ use crate::{ api::StaticApi, scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep, TxResponse}, - ScenarioEnvExec, ScenarioTxEnv, ScenarioTxRun, ScenarioTxRunOnWorld, ScenarioWorld, + ScenarioEnvExec, ScenarioTxEnv, ScenarioTxRun, ScenarioWorld, }; use super::{scenario_env_util::*, RHListScenario, ScenarioTxEnvData}; diff --git a/framework/scenario/src/facade/world_tx/scenario_env_exec.rs b/framework/scenario/src/facade/world_tx/scenario_env_exec.rs index 844bbf9c97..3758673006 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_exec.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_exec.rs @@ -13,7 +13,7 @@ use multiversx_sc::{ use crate::{ api::StaticApi, scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep, TxResponse}, - ScenarioTxEnv, ScenarioTxRun, ScenarioTxRunOnWorld, ScenarioWorld, + ScenarioTxEnv, ScenarioTxRun, ScenarioWorld, }; use super::{scenario_env_util::*, RHListScenario, ScenarioTxEnvData}; diff --git a/framework/scenario/src/facade/world_tx/scenario_env_query.rs b/framework/scenario/src/facade/world_tx/scenario_env_query.rs index f95f3cce33..e7d73ec729 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_query.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_query.rs @@ -10,7 +10,7 @@ use multiversx_sc::{ use crate::{ api::StaticApi, scenario_model::TxResponse, RHListScenario, ScenarioTxEnv, ScenarioTxEnvData, - ScenarioTxRun, ScenarioTxRunOnWorld, ScenarioWorld, + ScenarioTxRun, ScenarioWorld, }; use super::scenario_env_util::*; diff --git a/framework/scenario/src/facade/world_tx/scenario_env_util.rs b/framework/scenario/src/facade/world_tx/scenario_env_util.rs index e05a4de177..19776e9a0d 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_util.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_util.rs @@ -10,11 +10,14 @@ use multiversx_sc::{ use crate::{ api::StaticApi, - scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep, ScQueryStep, TxResponse}, + scenario_model::{ + AddressValue, BigUintValue, BytesValue, ScCallStep, ScDeployStep, ScQueryStep, + TransferStep, TxResponse, + }, RHListScenario, ScenarioEnvExec, ScenarioWorld, }; -pub(super) fn address_annotated(env: &Env, from: Addr) -> AddressValue +pub fn address_annotated(env: &Env, from: Addr) -> AddressValue where Env: TxEnv, Addr: AnnotatedValue>, @@ -26,7 +29,7 @@ where } } -pub(super) fn code_annotated(env: &Env, code: Code) -> BytesValue +pub fn code_annotated(env: &Env, code: Code) -> BytesValue where Env: TxEnv, CodeValue: TxCodeValue, @@ -38,11 +41,11 @@ where } } -pub(super) fn tx_to_sc_call_step( +pub fn tx_to_sc_call_step( env: &Env, from: From, to: To, - _payment: Payment, + payment: Payment, _gas: Gas, data: FunctionCall, ) -> ScCallStep @@ -61,13 +64,18 @@ where step.tx.arguments.push(arg.to_vec().into()); } + let full_payment_data = payment.into_full_payment_data(); + if let Some(annotated_egld_payment) = full_payment_data.egld { + step.tx.egld_value = annotated_egld_payment.into(); + } + step } -pub(super) fn tx_to_sc_deploy_step( +pub fn tx_to_sc_deploy_step( env: &Env, from: From, - _payment: Payment, + payment: Payment, _gas: Gas, data: DeployCall>, ) -> ScDeployStep @@ -85,14 +93,15 @@ where step.tx.arguments.push(arg.to_vec().into()); } + let full_payment_data = payment.into_full_payment_data(); + if let Some(annotated_egld_payment) = full_payment_data.egld { + step.tx.egld_value = annotated_egld_payment.into(); + } + step } -pub(super) fn tx_to_sc_query_step( - env: &Env, - to: To, - data: FunctionCall, -) -> ScQueryStep +pub fn tx_to_sc_query_step(env: &Env, to: To, data: FunctionCall) -> ScQueryStep where Env: TxEnv, To: TxToSpecified, @@ -107,7 +116,33 @@ where step } -pub(super) fn process_result( +pub fn tx_to_transfer_step( + env: &Env, + from: From, + to: To, + payment: Payment, + _gas: Gas, +) -> TransferStep +where + Env: TxEnv, + From: TxFromSpecified, + To: TxToSpecified, + Payment: TxPayment, + Gas: TxGas, +{ + let mut step = TransferStep::new() + .from(address_annotated(env, from)) + .to(address_annotated(env, to)); + + let full_payment_data = payment.into_full_payment_data(); + if let Some(annotated_egld_payment) = full_payment_data.egld { + step.tx.egld_value = annotated_egld_payment.into(); + } + + step +} + +pub fn process_result( response: Option, result_handler: RH, ) -> ::Unpacked diff --git a/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs b/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs index 4de678b586..36440e0313 100644 --- a/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs +++ b/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs @@ -1,7 +1,7 @@ use multiversx_sc::{ codec::{CodecFrom, TopDecodeMulti, TopEncodeMulti}, types::{ - ManagedAddress, RHList, RHListItem, ReturnsExact, ReturnsSimilar, TxEnv, + ManagedAddress, RHList, RHListItem, ReturnsExact, ReturnsNewAddress, ReturnsSimilar, TxEnv, WithResultNewAddress, WithResultSimilar, }, }; @@ -63,6 +63,20 @@ where } } +impl RHListItemScenario for ReturnsNewAddress +where + Env: TxEnv, +{ + fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns { + let new_address = tx_response + .new_deployed_address + .clone() + .expect("missing returned address"); + + new_address.into() + } +} + impl RHListItemScenario for WithResultNewAddress where Env: TxEnv, diff --git a/framework/scenario/src/scenario/model/value/value_set_big_uint.rs b/framework/scenario/src/scenario/model/value/value_set_big_uint.rs index c21c913851..003370509d 100644 --- a/framework/scenario/src/scenario/model/value/value_set_big_uint.rs +++ b/framework/scenario/src/scenario/model/value/value_set_big_uint.rs @@ -95,7 +95,7 @@ impl From<&BigUint> for BigUintValue { impl From> for BigUintValue { fn from(from: crate::multiversx_sc::types::BigUint) -> Self { - let value = BigUint::from_bytes_be(from.to_bytes_be().as_slice()); + let value = from.to_alloc(); BigUintValue { original: ValueSubTree::Str(value.to_string()), value, @@ -103,6 +103,17 @@ impl From> for BigUin } } +impl From> + for BigUintValue +{ + fn from(from: crate::multiversx_sc::types::AnnotatedEgldPayment) -> Self { + BigUintValue { + value: from.value.to_alloc(), + original: ValueSubTree::Str(from.annotation.to_string()), + } + } +} + impl From<&str> for BigUintValue { fn from(from: &str) -> Self { BigUintValue::interpret_from(from, &InterpreterContext::default()) diff --git a/framework/scenario/src/scenario/model/value/value_set_bytes.rs b/framework/scenario/src/scenario/model/value/value_set_bytes.rs index 33fb896d01..eaed19cea0 100644 --- a/framework/scenario/src/scenario/model/value/value_set_bytes.rs +++ b/framework/scenario/src/scenario/model/value/value_set_bytes.rs @@ -1,3 +1,5 @@ +use multiversx_sc::types::{AnnotatedValue, ManagedBuffer, TxCodeValue, TxEnv}; + use crate::scenario_format::{ interpret_trait::{InterpretableFrom, InterpreterContext, IntoRaw}, serde_raw::ValueSubTree, @@ -134,3 +136,33 @@ impl fmt::Display for BytesValue { self.original.fmt(f) } } + +impl AnnotatedValue> for BytesValue +where + Env: TxEnv, +{ + fn annotation(&self, _env: &Env) -> ManagedBuffer<::Api> { + self.original.to_concatenated_string().into() + } + + fn into_value(self, _env: &Env) -> ManagedBuffer { + self.value.into() + } +} + +impl TxCodeValue for BytesValue where Env: TxEnv {} + +impl AnnotatedValue> for &BytesValue +where + Env: TxEnv, +{ + fn annotation(&self, _env: &Env) -> ManagedBuffer<::Api> { + self.original.to_concatenated_string().into() + } + + fn into_value(self, _env: &Env) -> ManagedBuffer { + self.value.clone().into() + } +} + +impl TxCodeValue for &BytesValue where Env: TxEnv {} diff --git a/framework/snippets/src/interactor.rs b/framework/snippets/src/interactor.rs index 7034932d91..346d117f80 100644 --- a/framework/snippets/src/interactor.rs +++ b/framework/snippets/src/interactor.rs @@ -8,7 +8,11 @@ use multiversx_sdk::{ data::{address::Address as ErdrsAddress, network_config::NetworkConfig}, wallet::Wallet, }; -use std::{collections::HashMap, path::Path, time::Duration}; +use std::{ + collections::HashMap, + path::{Path, PathBuf}, + time::Duration, +}; use crate::Sender; @@ -22,6 +26,8 @@ pub struct Interactor { pub(crate) waiting_time_ms: u64, pub pre_runners: ScenarioRunnerList, pub post_runners: ScenarioRunnerList, + + pub current_dir: PathBuf, } impl Interactor { @@ -35,6 +41,7 @@ impl Interactor { waiting_time_ms: 0, pre_runners: ScenarioRunnerList::empty(), post_runners: ScenarioRunnerList::empty(), + current_dir: PathBuf::default(), } } diff --git a/framework/snippets/src/itx.rs b/framework/snippets/src/itx.rs new file mode 100644 index 0000000000..dd34244999 --- /dev/null +++ b/framework/snippets/src/itx.rs @@ -0,0 +1,17 @@ +#![allow(unused)] // TEMP + +mod interactor_env; +mod interactor_env_deploy; +mod interactor_env_exec; +mod interactor_env_query; +mod interactor_env_transf; +mod interactor_rh_list; +mod interactor_rh_list_item; + +pub use interactor_env::*; +pub use interactor_env_deploy::*; +pub use interactor_env_exec::InteractorEnvExec; +pub use interactor_env_query::InteractorEnvQuery; +pub use interactor_env_transf::*; +pub use interactor_rh_list::*; +pub use interactor_rh_list_item::*; diff --git a/framework/snippets/src/itx/interactor_env.rs b/framework/snippets/src/itx/interactor_env.rs new file mode 100644 index 0000000000..521389a713 --- /dev/null +++ b/framework/snippets/src/itx/interactor_env.rs @@ -0,0 +1,24 @@ +use std::path::PathBuf; + +use multiversx_sc_scenario::{ + api::StaticApi, + multiversx_sc::types::{AnnotatedValue, ManagedAddress, TxBaseWithEnv, TxEnv}, + scenario_model::TxResponse, + ScenarioTxEnvData, ScenarioWorld, +}; + +use crate::Interactor; + +impl Interactor { + pub(crate) fn new_env_data(&self) -> ScenarioTxEnvData { + ScenarioTxEnvData { + context_path: self.current_dir.clone(), + } + } +} + +pub trait InteractorPrepareAsync { + type Exec; + + fn prepare_async(self) -> Self::Exec; +} diff --git a/framework/snippets/src/itx/interactor_env_deploy.rs b/framework/snippets/src/itx/interactor_env_deploy.rs new file mode 100644 index 0000000000..48f679dd31 --- /dev/null +++ b/framework/snippets/src/itx/interactor_env_deploy.rs @@ -0,0 +1,136 @@ +use std::path::PathBuf; + +use multiversx_sc_scenario::{ + api::StaticApi, + multiversx_sc::{ + tuple_util::NestedTupleFlatten, + types::{ + AnnotatedValue, Code, DeployCall, FunctionCall, ManagedAddress, ManagedBuffer, + RHListSync, Tx, TxBaseWithEnv, TxCodeSource, TxCodeSourceSpecified, TxCodeValue, TxEnv, + TxFromSpecified, TxGas, TxPayment, TxToSpecified, + }, + }, + scenario_env_util::*, + scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep, TxResponse}, + RHListScenario, ScenarioEnvExec, ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, + ScenarioWorld, +}; + +use crate::{Interactor, InteractorPrepareAsync}; + +use super::InteractorEnvExec; + +pub struct InteractorDeployStep<'w, RH> +where + RH: RHListScenario>, + RH::ListReturns: NestedTupleFlatten, +{ + world: &'w mut Interactor, + sc_deploy_step: ScDeployStep, + result_handler: RH, +} + +impl<'w, From, Payment, Gas, CodeValue, RH> InteractorPrepareAsync + for Tx< + InteractorEnvExec<'w>, + From, + (), + Payment, + Gas, + DeployCall, Code>, + RH, + > +where + From: TxFromSpecified>, + Payment: TxPayment>, + Gas: TxGas>, + CodeValue: TxCodeValue>, + RH: RHListScenario>, + RH::ListReturns: NestedTupleFlatten, + ::Unpacked: Send, +{ + type Exec = InteractorDeployStep<'w, RH>; + + fn prepare_async(self) -> Self::Exec { + let mut sc_deploy_step = + tx_to_sc_deploy_step(&self.env, self.from, self.payment, self.gas, self.data); + InteractorDeployStep { + world: self.env.world, + sc_deploy_step: sc_deploy_step, + result_handler: self.result_handler, + } + } +} + +impl<'w, RH> InteractorDeployStep<'w, RH> +where + RH: RHListScenario>, + RH::ListReturns: NestedTupleFlatten, +{ + pub async fn run(self) -> ::Unpacked { + let mut sc_deploy_step = self.sc_deploy_step; + self.world.sc_deploy(&mut sc_deploy_step).await; + process_result(sc_deploy_step.response, self.result_handler) + } +} + +impl Interactor { + pub async fn chain_deploy(&mut self, f: F) -> &mut Self + where + From: TxFromSpecified, + Payment: TxPayment, + Gas: TxGas, + CodeValue: TxCodeValue, + RH: RHListScenario, + F: FnOnce( + TxBaseWithEnv, + ) -> Tx< + ScenarioTxEnvData, + From, + (), + Payment, + Gas, + DeployCall>, + RH, + >, + { + let env = self.new_env_data(); + let tx_base = TxBaseWithEnv::new_with_env(env); + let tx = f(tx_base); + let mut step = tx_to_sc_deploy_step(&tx.env, tx.from, tx.payment, tx.gas, tx.data); + self.sc_deploy(&mut step).await; + process_result(step.response, tx.result_handler); + self + } + + pub async fn run_deploy( + &mut self, + f: F, + ) -> ::Unpacked + where + From: TxFromSpecified, + Payment: TxPayment, + Gas: TxGas, + CodeValue: TxCodeValue, + RH: RHListScenario, + RH::ListReturns: NestedTupleFlatten, + F: FnOnce( + TxBaseWithEnv, + ) -> Tx< + ScenarioTxEnvData, + From, + (), + Payment, + Gas, + DeployCall>, + RH, + >, + { + let env = self.new_env_data(); + let tx_base = TxBaseWithEnv::new_with_env(env); + let tx = f(tx_base); + let mut step = tx_to_sc_deploy_step(&tx.env, tx.from, tx.payment, tx.gas, tx.data); + self.sc_deploy(&mut step).await; + process_result(step.response, tx.result_handler) + } +} diff --git a/framework/snippets/src/itx/interactor_env_exec.rs b/framework/snippets/src/itx/interactor_env_exec.rs new file mode 100644 index 0000000000..dc5269e6e9 --- /dev/null +++ b/framework/snippets/src/itx/interactor_env_exec.rs @@ -0,0 +1,122 @@ +use std::path::PathBuf; + +use multiversx_sc_scenario::{ + api::StaticApi, + multiversx_sc::{ + tuple_util::NestedTupleFlatten, + types::{ + AnnotatedValue, Code, DeployCall, FunctionCall, ManagedAddress, ManagedBuffer, + RHListSync, Tx, TxBaseWithEnv, TxCodeSource, TxCodeSourceSpecified, TxCodeValue, TxEnv, + TxFromSpecified, TxGas, TxPayment, TxToSpecified, + }, + }, + scenario_env_util::*, + scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep, TxResponse}, + RHListScenario, ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, ScenarioWorld, +}; + +use crate::{Interactor, InteractorPrepareAsync}; + +/// Environment for executing transactions. +pub struct InteractorEnvExec<'w> { + pub world: &'w mut Interactor, + pub data: ScenarioTxEnvData, +} + +impl<'w> TxEnv for InteractorEnvExec<'w> { + type Api = StaticApi; + + fn resolve_sender_address(&self) -> ManagedAddress { + panic!("Explicit sender address expected") + } + + fn default_gas(&self) -> u64 { + self.data.default_gas() + } +} + +impl<'w> ScenarioTxEnv for InteractorEnvExec<'w> { + fn env_data(&self) -> &ScenarioTxEnvData { + &self.data + } +} + +pub struct InteractorCallStep<'w, RH> +where + RH: RHListScenario>, + RH::ListReturns: NestedTupleFlatten, +{ + world: &'w mut Interactor, + sc_call_step: ScCallStep, + result_handler: RH, +} + +impl<'w, From, To, Payment, Gas, RH> InteractorPrepareAsync + for Tx, From, To, Payment, Gas, FunctionCall, RH> +where + From: TxFromSpecified>, + To: TxToSpecified>, + Payment: TxPayment>, + Gas: TxGas>, + RH: RHListScenario>, + RH::ListReturns: NestedTupleFlatten, +{ + type Exec = InteractorCallStep<'w, RH>; + + fn prepare_async(self) -> Self::Exec { + let mut sc_call_step = tx_to_sc_call_step( + &self.env, + self.from, + self.to, + self.payment, + self.gas, + self.data, + ); + InteractorCallStep { + world: self.env.world, + sc_call_step, + result_handler: self.result_handler, + } + } +} + +impl<'w, RH> InteractorCallStep<'w, RH> +where + RH: RHListScenario>, + RH::ListReturns: NestedTupleFlatten, +{ + pub async fn run(self) -> ::Unpacked { + let mut sc_call_step = self.sc_call_step; + self.world.sc_call(&mut sc_call_step).await; + process_result(sc_call_step.response, self.result_handler) + } +} + +impl Interactor { + pub fn tx(&mut self) -> TxBaseWithEnv> { + let data = self.new_env_data(); + let env = InteractorEnvExec { world: self, data }; + Tx::new_with_env(env) + } + + pub async fn chain_call(&mut self, f: F) -> &mut Self + where + From: TxFromSpecified, + To: TxToSpecified, + Payment: TxPayment, + Gas: TxGas, + RH: RHListScenario, + F: FnOnce( + TxBaseWithEnv, + ) + -> Tx, RH>, + { + let env = self.new_env_data(); + let tx_base = TxBaseWithEnv::new_with_env(env); + let tx = f(tx_base); + let mut step = tx_to_sc_call_step(&tx.env, tx.from, tx.to, tx.payment, tx.gas, tx.data); + self.sc_call(&mut step).await; + process_result(step.response, tx.result_handler); + self + } +} diff --git a/framework/snippets/src/itx/interactor_env_query.rs b/framework/snippets/src/itx/interactor_env_query.rs new file mode 100644 index 0000000000..20e61e571f --- /dev/null +++ b/framework/snippets/src/itx/interactor_env_query.rs @@ -0,0 +1,106 @@ +use std::path::PathBuf; + +use multiversx_sc_scenario::{ + api::StaticApi, + multiversx_sc::{ + tuple_util::NestedTupleFlatten, + types::{ + AnnotatedValue, FunctionCall, ManagedAddress, Tx, TxBaseWithEnv, TxEnv, + TxFromSpecified, TxGas, TxPayment, TxToSpecified, + }, + }, + scenario_env_util::*, + scenario_model::{ScQueryStep, TxResponse}, + RHListScenario, ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, ScenarioWorld, +}; + +use crate::{Interactor, InteractorPrepareAsync}; + +pub struct InteractorEnvQuery<'w> { + pub world: &'w mut Interactor, + pub data: ScenarioTxEnvData, +} + +impl<'w> TxEnv for InteractorEnvQuery<'w> { + type Api = StaticApi; + + fn resolve_sender_address(&self) -> ManagedAddress { + panic!("Explicit sender address expected") + } + + fn default_gas(&self) -> u64 { + self.data.default_gas() + } +} + +impl<'w> ScenarioTxEnv for InteractorEnvQuery<'w> { + fn env_data(&self) -> &ScenarioTxEnvData { + &self.data + } +} + +pub struct InteractorQueryStep<'w, RH> +where + RH: RHListScenario>, + RH::ListReturns: NestedTupleFlatten, +{ + world: &'w mut Interactor, + sc_query_step: ScQueryStep, + result_handler: RH, +} + +impl<'w, To, RH> InteractorPrepareAsync + for Tx, (), To, (), (), FunctionCall, RH> +where + To: TxToSpecified>, + RH: RHListScenario>, + RH::ListReturns: NestedTupleFlatten, +{ + type Exec = InteractorQueryStep<'w, RH>; + + fn prepare_async(self) -> Self::Exec { + let mut sc_query_step = tx_to_sc_query_step(&self.env, self.to, self.data); + InteractorQueryStep { + world: self.env.world, + sc_query_step, + result_handler: self.result_handler, + } + } +} + +impl<'w, RH> InteractorQueryStep<'w, RH> +where + RH: RHListScenario>, + RH::ListReturns: NestedTupleFlatten, +{ + pub async fn run(self) -> ::Unpacked { + let mut sc_call_step = self.sc_query_step; + self.world.sc_query(&mut sc_call_step).await; + process_result(sc_call_step.response, self.result_handler) + } +} + +impl Interactor { + pub fn query(&mut self) -> TxBaseWithEnv> { + let data = self.new_env_data(); + let env = InteractorEnvQuery { world: self, data }; + Tx::new_with_env(env) + } + + pub async fn chain_query(&mut self, f: F) -> &mut Self + where + To: TxToSpecified, + RH: RHListScenario, + F: FnOnce( + TxBaseWithEnv, + ) -> Tx, RH>, + { + let env = self.new_env_data(); + let tx_base = TxBaseWithEnv::new_with_env(env); + let tx = f(tx_base); + let mut step = tx_to_sc_query_step(&tx.env, tx.to, tx.data); + self.sc_query(&mut step).await; + process_result(step.response, tx.result_handler); + self + } +} diff --git a/framework/snippets/src/itx/interactor_env_transf.rs b/framework/snippets/src/itx/interactor_env_transf.rs new file mode 100644 index 0000000000..993b2b04d6 --- /dev/null +++ b/framework/snippets/src/itx/interactor_env_transf.rs @@ -0,0 +1,51 @@ +use std::path::PathBuf; + +use multiversx_sc_scenario::{ + api::StaticApi, + multiversx_sc::{ + tuple_util::NestedTupleFlatten, + types::{ + AnnotatedValue, Code, DeployCall, FunctionCall, ManagedAddress, ManagedBuffer, + RHListSync, Tx, TxBaseWithEnv, TxCodeSource, TxCodeSourceSpecified, TxCodeValue, TxEnv, + TxFromSpecified, TxGas, TxPayment, TxToSpecified, + }, + }, + scenario_env_util::*, + scenario_model::{ + AddressValue, BytesValue, ScCallStep, ScDeployStep, TransferStep, TxResponse, + }, + RHListScenario, ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, ScenarioWorld, +}; + +use crate::{Interactor, InteractorEnvExec, InteractorPrepareAsync}; + +pub struct InteractorTransferStep<'w> { + world: &'w mut Interactor, + step: TransferStep, +} + +impl<'w, From, To, Payment, Gas> InteractorPrepareAsync + for Tx, From, To, Payment, Gas, (), ()> +where + From: TxFromSpecified>, + To: TxToSpecified>, + Payment: TxPayment>, + Gas: TxGas>, +{ + type Exec = InteractorTransferStep<'w>; + + fn prepare_async(self) -> Self::Exec { + let mut sc_call_step = + tx_to_transfer_step(&self.env, self.from, self.to, self.payment, self.gas); + InteractorTransferStep { + world: self.env.world, + step: sc_call_step, + } + } +} + +impl<'w> InteractorTransferStep<'w> { + pub async fn run(self) { + self.world.transfer(self.step).await; + } +} diff --git a/framework/snippets/src/itx/interactor_rh_list.rs b/framework/snippets/src/itx/interactor_rh_list.rs new file mode 100644 index 0000000000..e48c94dc5f --- /dev/null +++ b/framework/snippets/src/itx/interactor_rh_list.rs @@ -0,0 +1,51 @@ +use multiversx_sc_scenario::{ + multiversx_sc::types::{ConsNoRet, ConsRet, OriginalResultMarker, RHList, RHListItem, TxEnv}, + scenario_model::TxResponse, + RHListItemScenario, +}; + +pub trait RHListScenario: RHList +where + Env: TxEnv, +{ + fn item_scenario_result(self, tx_response: &TxResponse) -> Self::ListReturns; +} + +impl RHListScenario for () +where + Env: TxEnv, +{ + fn item_scenario_result(self, tx_response: &TxResponse) -> Self::ListReturns {} +} + +impl RHListScenario for OriginalResultMarker +where + Env: TxEnv, +{ + fn item_scenario_result(self, tx_response: &TxResponse) -> Self::ListReturns {} +} + +impl RHListScenario for ConsRet +where + Env: TxEnv, + Head: RHListItemScenario, + Tail: RHListScenario, +{ + fn item_scenario_result(self, tx_response: &TxResponse) -> Self::ListReturns { + let head_result = self.head.item_scenario_result(tx_response); + let tail_result = self.tail.item_scenario_result(tx_response); + (head_result, tail_result) + } +} + +impl RHListScenario for ConsNoRet +where + Env: TxEnv, + Head: RHListItemScenario, + Tail: RHListScenario, +{ + fn item_scenario_result(self, tx_response: &TxResponse) -> Self::ListReturns { + self.head.item_scenario_result(tx_response); + self.tail.item_scenario_result(tx_response) + } +} diff --git a/framework/snippets/src/itx/interactor_rh_list_item.rs b/framework/snippets/src/itx/interactor_rh_list_item.rs new file mode 100644 index 0000000000..7a6063fbc6 --- /dev/null +++ b/framework/snippets/src/itx/interactor_rh_list_item.rs @@ -0,0 +1,76 @@ +use multiversx_sc_scenario::{ + api::StaticApi, + multiversx_sc::{ + codec::{CodecFrom, TopDecodeMulti, TopEncodeMulti}, + types::{ + ManagedAddress, RHList, RHListItem, ReturnsExact, ReturnsSimilar, TxEnv, + WithResultNewAddress, WithResultSimilar, + }, + }, + scenario_model::{TxResponse, TypedResponse}, +}; + +pub trait RHListItemScenario: RHListItem +where + Env: TxEnv, +{ + fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns; +} + +impl RHListItemScenario for ReturnsExact +where + Env: TxEnv, + Original: TopDecodeMulti, +{ + fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns { + let response = TypedResponse::::from_raw(tx_response); + response + .result + .expect("ReturnsExact expects that transaction is successful") + } +} + +impl RHListItemScenario for ReturnsSimilar +where + Env: TxEnv, + Original: TopEncodeMulti, + T: CodecFrom, +{ + fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns { + let response = TypedResponse::::from_raw(tx_response); + response + .result + .expect("ReturnsSimilar expects that transaction is successful") + } +} + +impl RHListItemScenario for WithResultSimilar +where + Env: TxEnv, + Original: TopEncodeMulti, + T: CodecFrom, + F: FnOnce(T), +{ + fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns { + let response = TypedResponse::::from_raw(tx_response); + let value = response + .result + .expect("ReturnsExact expects that transaction is successful"); + (self.f)(value); + } +} + +impl RHListItemScenario for WithResultNewAddress +where + Env: TxEnv, + F: FnOnce(&ManagedAddress), +{ + fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns { + let new_address = tx_response + .new_deployed_address + .clone() + .expect("missing returned address"); + + (self.f)(&ManagedAddress::from_address(&new_address)); + } +} diff --git a/framework/snippets/src/lib.rs b/framework/snippets/src/lib.rs index 2081c11a58..9bf2c07e33 100644 --- a/framework/snippets/src/lib.rs +++ b/framework/snippets/src/lib.rs @@ -10,6 +10,7 @@ mod interactor_sc_transfer; mod interactor_sender; mod interactor_tx_spec; mod interactor_vm_query; +mod itx; mod step_buffer; pub use env_logger; @@ -18,6 +19,7 @@ pub use interactor::*; pub use interactor_dns::*; pub use interactor_sender::*; pub use interactor_tx_spec::*; +pub use itx::*; pub use log; pub use multiversx_sc_scenario::{self, multiversx_sc}; pub use multiversx_sdk as erdrs; // TODO: remove From fe57e7c40d948092faab832e42788d0a73ca1163 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 20 Mar 2024 16:04:32 +0200 Subject: [PATCH 105/461] cleanup --- framework/base/src/types/interaction/annotated.rs | 2 +- framework/base/src/types/interaction/tx_from.rs | 2 +- framework/base/src/types/interaction/tx_to.rs | 2 +- framework/snippets/src/itx/interactor_env_deploy.rs | 3 +-- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/framework/base/src/types/interaction/annotated.rs b/framework/base/src/types/interaction/annotated.rs index 247b47b206..d190f65631 100644 --- a/framework/base/src/types/interaction/annotated.rs +++ b/framework/base/src/types/interaction/annotated.rs @@ -1,4 +1,4 @@ -use crate::types::{Address, ManagedAddress, ManagedBuffer}; +use crate::types::{heap::Address, ManagedAddress, ManagedBuffer}; use super::TxEnv; diff --git a/framework/base/src/types/interaction/tx_from.rs b/framework/base/src/types/interaction/tx_from.rs index 0ced9e75c8..039cb2c34c 100644 --- a/framework/base/src/types/interaction/tx_from.rs +++ b/framework/base/src/types/interaction/tx_from.rs @@ -1,4 +1,4 @@ -use crate::types::{Address, ManagedAddress}; +use crate::types::{heap::Address, ManagedAddress}; use super::{AnnotatedValue, TxEnv}; diff --git a/framework/base/src/types/interaction/tx_to.rs b/framework/base/src/types/interaction/tx_to.rs index 2a32ac576f..984587a6ed 100644 --- a/framework/base/src/types/interaction/tx_to.rs +++ b/framework/base/src/types/interaction/tx_to.rs @@ -1,4 +1,4 @@ -use crate::types::{Address, ManagedAddress}; +use crate::types::{heap::Address, ManagedAddress}; use super::{AnnotatedValue, TxEnv}; diff --git a/framework/snippets/src/itx/interactor_env_deploy.rs b/framework/snippets/src/itx/interactor_env_deploy.rs index 48f679dd31..ea11ecc338 100644 --- a/framework/snippets/src/itx/interactor_env_deploy.rs +++ b/framework/snippets/src/itx/interactor_env_deploy.rs @@ -47,7 +47,6 @@ where CodeValue: TxCodeValue>, RH: RHListScenario>, RH::ListReturns: NestedTupleFlatten, - ::Unpacked: Send, { type Exec = InteractorDeployStep<'w, RH>; @@ -56,7 +55,7 @@ where tx_to_sc_deploy_step(&self.env, self.from, self.payment, self.gas, self.data); InteractorDeployStep { world: self.env.world, - sc_deploy_step: sc_deploy_step, + sc_deploy_step, result_handler: self.result_handler, } } From 5ea579ab4ab72f88e0c709062023f040990a16a1 Mon Sep 17 00:00:00 2001 From: Laurentiu Ciobanu Date: Wed, 20 Mar 2024 18:04:45 +0200 Subject: [PATCH 106/461] use sc-meta test-coverage --- .github/workflows/actions.yml | 33 +---- .../scenarios/stress_submit_test.scen.json | 100 +++++++------- .../meta/src/cli_args/cli_args_standalone.rs | 34 +++-- framework/meta/src/cmd/standalone.rs | 8 +- .../meta/src/cmd/standalone/test_coverage.rs | 27 ++++ .../src/cmd/standalone/test_coverage/cargo.rs | 103 ++++++++++++++ .../src/cmd/standalone/test_coverage/error.rs | 34 +++++ .../cmd/standalone/test_coverage/llvm_cov.rs | 128 ++++++++++++++++++ .../render.rs | 0 .../src/cmd/standalone/test_coverage/run.rs | 61 +++++++++ .../src/cmd/standalone/test_coverage/util.rs | 56 ++++++++ .../cmd/standalone/test_coverage_render.rs | 46 ------- .../standalone/test_coverage_render/cargo.rs | 20 --- .../standalone/test_coverage_render/error.rs | 28 ---- .../test_coverage_render/llvm_cov.rs | 45 ------ 15 files changed, 487 insertions(+), 236 deletions(-) create mode 100644 framework/meta/src/cmd/standalone/test_coverage.rs create mode 100644 framework/meta/src/cmd/standalone/test_coverage/cargo.rs create mode 100644 framework/meta/src/cmd/standalone/test_coverage/error.rs create mode 100644 framework/meta/src/cmd/standalone/test_coverage/llvm_cov.rs rename framework/meta/src/cmd/standalone/{test_coverage_render => test_coverage}/render.rs (100%) create mode 100644 framework/meta/src/cmd/standalone/test_coverage/run.rs create mode 100644 framework/meta/src/cmd/standalone/test_coverage/util.rs delete mode 100644 framework/meta/src/cmd/standalone/test_coverage_render.rs delete mode 100644 framework/meta/src/cmd/standalone/test_coverage_render/cargo.rs delete mode 100644 framework/meta/src/cmd/standalone/test_coverage_render/error.rs delete mode 100644 framework/meta/src/cmd/standalone/test_coverage_render/llvm_cov.rs diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index 024e737f08..d126600160 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -137,45 +137,16 @@ jobs: echo $(dirname $(find ~/.rustup -name llvm-cov)) - # which llvm-cov - # which llvm-profdata - - name: Run tests and generate report env: RUSTFLAGS: "" run: | - RUSTFLAGS="-C instrument-coverage" \ - cargo test --tests - - PROFRAW_FILES=$(find . -name "default_*.profraw") - llvm-profdata merge -sparse $PROFRAW_FILES -o tests.profdata - find . -name "default_*.profraw" -delete - - llvm-cov export \ - $( \ - for file in \ - $( \ - RUSTFLAGS="-C instrument-coverage" \ - cargo test --tests --no-run --message-format=json \ - | jq -r "select(.profile.test == true) | .filenames[]" \ - | grep -v dSYM - \ - ); \ - do \ - printf "%s %s " -object $file; \ - done \ - ) \ - --ignore-filename-regex='/.cargo/registry' \ - --ignore-filename-regex='rustc/' \ + cargo run --bin sc-meta test-coverage \ --ignore-filename-regex='meta/src' \ --ignore-filename-regex='wasm-adapter' \ --ignore-filename-regex='benchmarks/' \ --ignore-filename-regex='tests/' \ - --instr-profile=tests.profdata --summary-only --format=text > tests.coverage - - rm ./tests.profdata - - cargo run --bin sc-meta test-coverage-render --input ./tests.coverage --output ./coverage.md - rm ./tests.coverage + --output ./coverage.md - name: Upload the report uses: actions/upload-artifact@v3 diff --git a/contracts/core/price-aggregator/scenarios/stress_submit_test.scen.json b/contracts/core/price-aggregator/scenarios/stress_submit_test.scen.json index 6542b59c39..3bfa543ab0 100644 --- a/contracts/core/price-aggregator/scenarios/stress_submit_test.scen.json +++ b/contracts/core/price-aggregator/scenarios/stress_submit_test.scen.json @@ -1133,7 +1133,7 @@ "0x45474c44", "0x55534443", "0x5f", - "0x3beec6f9cf5130ed", + "0xe799ca60351b896c", "0x" ], "gasLimit": "7,000,000" @@ -1154,7 +1154,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x50d924566a98aec8", + "0x716cd8945fc70b18", "0x" ], "gasLimit": "7,000,000" @@ -1175,7 +1175,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x097b928bb2d85516", + "0xe1a2287391e5624b", "0x" ], "gasLimit": "7,000,000" @@ -1196,7 +1196,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x765c960a5c3c6b95", + "0xba073d189ad09a2c", "0x" ], "gasLimit": "7,000,000" @@ -1217,7 +1217,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xf7426f44c20f404c", + "0xff00ce8c0444abdd", "0x" ], "gasLimit": "7,000,000" @@ -1238,7 +1238,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xa5c69769ba606c2b", + "0xde7637de9f0f868c", "0x" ], "gasLimit": "7,000,000" @@ -1259,7 +1259,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xe8f77e933d1f2517", + "0xac01126106b01960", "0x" ], "gasLimit": "7,000,000" @@ -1280,7 +1280,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x94fba404681c1183", + "0xa5ab55cf028f836d", "0x" ], "gasLimit": "7,000,000" @@ -1301,7 +1301,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xdc506f08b25d3b71", + "0x953c8fd0d4474074", "0x" ], "gasLimit": "7,000,000" @@ -1322,7 +1322,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xf5b0acb8ddff3752", + "0xa65e64a9aa0802a6", "0x" ], "gasLimit": "7,000,000" @@ -1343,7 +1343,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x39a7d356f768ea5e", + "0xa6bb40b782efcd03", "0x" ], "gasLimit": "7,000,000" @@ -1364,7 +1364,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xaf145a7f797a48a1", + "0x97484e0f98100c9a", "0x" ], "gasLimit": "7,000,000" @@ -1385,7 +1385,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xb18143fe76eef718", + "0x65ba697509c0a86f", "0x" ], "gasLimit": "7,000,000" @@ -1406,7 +1406,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x6f64a1ddec18e577", + "0x111061b1a3ea38b8", "0x" ], "gasLimit": "7,000,000" @@ -1427,7 +1427,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x87ffce2a932db3d4", + "0xec876fe889ad08ff", "0x" ], "gasLimit": "7,000,000" @@ -1448,7 +1448,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xe6642c7265c738c1", + "0xb605dd34611b3dc0", "0x" ], "gasLimit": "7,000,000" @@ -1469,7 +1469,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xd6079c55087a67d5", + "0x7602960448fff2ac", "0x" ], "gasLimit": "7,000,000" @@ -1490,7 +1490,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x90f7bb0d816fb87d", + "0x140f137aa7a87a94", "0x" ], "gasLimit": "7,000,000" @@ -1511,7 +1511,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xa0ccc6f5f8c73ff2", + "0xd557396414be3f15", "0x" ], "gasLimit": "7,000,000" @@ -1532,7 +1532,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x258d38a35ccfd93d", + "0x325769f53bfb87a2", "0x" ], "gasLimit": "7,000,000" @@ -1553,7 +1553,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x903f62b19408019d", + "0x4deee148cfa1854f", "0x" ], "gasLimit": "7,000,000" @@ -1574,7 +1574,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xc319aab79b2f512e", + "0x40bb80f3ae334d7e", "0x" ], "gasLimit": "7,000,000" @@ -1595,7 +1595,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x4b41176cd679e194", + "0xfc1a57c0b4f030e8", "0x" ], "gasLimit": "7,000,000" @@ -1616,7 +1616,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xaf3c4ad7cdcac230", + "0xcd1034fe7c1feae5", "0x" ], "gasLimit": "7,000,000" @@ -1637,7 +1637,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x2a8c4a82dfb68f13", + "0x7b6560eadfaf3cca", "0x" ], "gasLimit": "7,000,000" @@ -1658,7 +1658,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x358e92c93a69a2f9", + "0xed0bece4a403eae3", "0x" ], "gasLimit": "7,000,000" @@ -1679,7 +1679,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xb4bd55d9eebad664", + "0xae251605c03d8082", "0x" ], "gasLimit": "7,000,000" @@ -1700,7 +1700,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x9061fc2440f4db51", + "0x66e42ed8550f773b", "0x" ], "gasLimit": "7,000,000" @@ -1721,7 +1721,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xc8fde2d627d1b95a", + "0xccb3836eb7cae53c", "0x" ], "gasLimit": "7,000,000" @@ -1742,7 +1742,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xacede2c42f9bc928", + "0xad95fe9b4bbf2d4d", "0x" ], "gasLimit": "7,000,000" @@ -1763,7 +1763,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xb0a4ecb8d46cfe86", + "0x2efcb72f7ca0545f", "0x" ], "gasLimit": "7,000,000" @@ -1784,7 +1784,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xa8d8ee43a5c4ade8", + "0x7089de0311ceaa83", "0x" ], "gasLimit": "7,000,000" @@ -1805,7 +1805,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xe20bb0819b83cbb6", + "0x7112fc625005421b", "0x" ], "gasLimit": "7,000,000" @@ -1826,7 +1826,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xb5566ca4a8a6da5b", + "0x77c398c91e818621", "0x" ], "gasLimit": "7,000,000" @@ -1847,7 +1847,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x30b4e318dbf9c0a1", + "0x260a0fc02a2d124b", "0x" ], "gasLimit": "7,000,000" @@ -1868,7 +1868,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x34cd5592ee7ab5f0", + "0x3aa99face36d47d0", "0x" ], "gasLimit": "7,000,000" @@ -1889,7 +1889,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x4908da8f754f9e29", + "0xbe3b8f275886e44f", "0x" ], "gasLimit": "7,000,000" @@ -1910,7 +1910,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x460da40079bef875", + "0xb86991c34a794564", "0x" ], "gasLimit": "7,000,000" @@ -1931,7 +1931,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x6eb6dd52e24341b6", + "0xe3aad9f5ef417ac7", "0x" ], "gasLimit": "7,000,000" @@ -1952,7 +1952,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xa06bb000b0901e98", + "0x68d9d244742a63ea", "0x" ], "gasLimit": "7,000,000" @@ -1973,7 +1973,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x4f83b3dd7f1dd80e", + "0x6f99d232bca2e67d", "0x" ], "gasLimit": "7,000,000" @@ -1994,7 +1994,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x169e4556e8cd5271", + "0x268183cfacad3372", "0x" ], "gasLimit": "7,000,000" @@ -2015,7 +2015,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xa45b9cfe7527301b", + "0x217fe27c5b1f3a59", "0x" ], "gasLimit": "7,000,000" @@ -2036,7 +2036,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xe3a28965ea6a3ae4", + "0xde4949fcb07b230a", "0x" ], "gasLimit": "7,000,000" @@ -2057,7 +2057,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x4efa7be66acf5ded", + "0x755b157b4fa653ba", "0x" ], "gasLimit": "7,000,000" @@ -2078,7 +2078,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x5f75311f8cd29ea9", + "0xedef13da2591c4c2", "0x" ], "gasLimit": "7,000,000" @@ -2099,7 +2099,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xfc7c1268abc1d8e3", + "0x6e872c7160cfa5e1", "0x" ], "gasLimit": "7,000,000" @@ -2120,7 +2120,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xd24cc52d844c6a40", + "0xe97d0cbb0d5016a4", "0x" ], "gasLimit": "7,000,000" @@ -2141,7 +2141,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x804fc08cd1c73c42", + "0x4d2d2ed6700c8419", "0x" ], "gasLimit": "7,000,000" @@ -2162,7 +2162,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x093077783f01d496", + "0xd4a84da6b88e4737", "0x" ], "gasLimit": "7,000,000" diff --git a/framework/meta/src/cli_args/cli_args_standalone.rs b/framework/meta/src/cli_args/cli_args_standalone.rs index a16f12ecdc..2f6c435e9c 100644 --- a/framework/meta/src/cli_args/cli_args_standalone.rs +++ b/framework/meta/src/cli_args/cli_args_standalone.rs @@ -1,6 +1,6 @@ use std::path::PathBuf; -use clap::{ArgAction, Args, Parser, Subcommand}; +use clap::{ArgAction, Args, Parser, Subcommand, ValueEnum}; use super::{CliArgsToRaw, ContractCliAction}; @@ -66,11 +66,8 @@ pub enum StandaloneCliAction { #[command(name = "test", about = "Runs cargo test")] Test(TestArgs), - #[command( - name = "test-coverage-render", - about = "Render pretty output from test coverage result" - )] - TestCoverageRender(TestCoverageRenderArgs), + #[command(name = "test-coverage", about = "Run test coverage and output report")] + TestCoverage(TestCoverageArgs), #[command(name = "install", about = "Installs framework dependencies")] Install(InstallArgs), @@ -113,16 +110,29 @@ pub struct TestArgs { pub nocapture: bool, } -#[derive(Default, Clone, PartialEq, Eq, Debug, Args)] -pub struct TestCoverageRenderArgs { - /// Input file path (llvm-cov json5 format) - /// Generated by the llvm-cov export tool - #[arg(short, long, verbatim_doc_comment)] - pub input: String, +#[derive(Default, Clone, PartialEq, Eq, Debug, ValueEnum)] +pub enum TestCoverageOutputFormat { + /// Markdown pretty-print summary + #[default] + Markdown, + + /// JSON summary + Json, +} +#[derive(Default, Clone, PartialEq, Eq, Debug, Args)] +pub struct TestCoverageArgs { /// Output file path #[arg(short, long, verbatim_doc_comment)] pub output: String, + + /// Output format + #[arg(short, long, verbatim_doc_comment)] + pub format: Option, + + /// Ignore files by path patterns + #[arg(short = 'i', long = "ignore-filename-regex", verbatim_doc_comment)] + pub ignore_filename_regex: Vec, } #[derive(Default, Clone, PartialEq, Eq, Debug, Args)] diff --git a/framework/meta/src/cmd/standalone.rs b/framework/meta/src/cmd/standalone.rs index 58f8c9b6b7..62dd910836 100644 --- a/framework/meta/src/cmd/standalone.rs +++ b/framework/meta/src/cmd/standalone.rs @@ -6,12 +6,12 @@ mod print_util; pub mod scen_test_gen; pub mod template; pub mod test; -mod test_coverage_render; +mod test_coverage; pub(crate) mod upgrade; use crate::{ cli_args::{StandaloneCliAction, StandaloneCliArgs}, - cmd::standalone::test_coverage_render::test_coverage_render, + cmd::standalone::test_coverage::test_coverage, }; use all::call_all_meta; use clap::Parser; @@ -45,8 +45,8 @@ pub fn cli_main_standalone() { test_gen_tool(args); }, Some(StandaloneCliAction::Test(args)) => test(args), - Some(StandaloneCliAction::TestCoverageRender(args)) => { - test_coverage_render(args); + Some(StandaloneCliAction::TestCoverage(args)) => { + test_coverage(args); }, Some(StandaloneCliAction::Install(args)) => install(args), None => {}, diff --git a/framework/meta/src/cmd/standalone/test_coverage.rs b/framework/meta/src/cmd/standalone/test_coverage.rs new file mode 100644 index 0000000000..029f7b551a --- /dev/null +++ b/framework/meta/src/cmd/standalone/test_coverage.rs @@ -0,0 +1,27 @@ +mod cargo; +mod error; +mod llvm_cov; +mod render; +mod run; +mod util; + +use crate::{ + cli_args::{TestCoverageArgs, TestCoverageOutputFormat}, + cmd::standalone::test_coverage::{cargo::get_workspace_root, run::run_test_coverage}, +}; +use std::process; + +pub fn test_coverage(args: &TestCoverageArgs) { + let root_path = get_workspace_root().unwrap(); + if let Err(err) = run_test_coverage( + &root_path, + &args.output, + args.format + .as_ref() + .unwrap_or(&TestCoverageOutputFormat::default()), + &args.ignore_filename_regex, + ) { + eprintln!("{}", err); + process::exit(1); + } +} diff --git a/framework/meta/src/cmd/standalone/test_coverage/cargo.rs b/framework/meta/src/cmd/standalone/test_coverage/cargo.rs new file mode 100644 index 0000000000..5f5660d103 --- /dev/null +++ b/framework/meta/src/cmd/standalone/test_coverage/cargo.rs @@ -0,0 +1,103 @@ +use crate::cmd::standalone::test_coverage::{ + error::TestCoverageError, util::deep_find_files_with_ext, +}; +use serde::Deserialize; +use std::process::Command; + +pub fn get_workspace_root() -> Result { + let output = Command::new("cargo") + .args(["metadata", "--no-deps", "--format-version=1"]) + .output() + .map_err(|e| TestCoverageError::Cargo(format!("{}", e)))?; + + let metadata: serde_json::Value = serde_json::from_slice(&output.stdout) + .map_err(|_| TestCoverageError::Cargo("invalid manifest data".into()))?; + + let Some(workspace_root) = metadata["workspace_root"].as_str() else { + return Err(TestCoverageError::Cargo("invalid manifest data".into())); + }; + + Ok(workspace_root.to_owned()) +} + +#[derive(Debug, Clone, Deserialize)] +struct PartialCompilerArtifactMessage { + filenames: Vec, + profile: PartialCompilerArtifactProfile, +} + +#[derive(Debug, Clone, Deserialize)] +struct PartialCompilerArtifactProfile { + test: Option, +} + +pub fn run_instrumented_tests(path: &str) -> Result<(), TestCoverageError> { + let Ok(status) = Command::new("cargo") + .current_dir(path) + .env("RUSTFLAGS", "-C instrument-coverage") + .args(vec!["test", "--tests"]) + .status() + else { + return Err(TestCoverageError::Cargo( + "can't run instrumented tests".into(), + )); + }; + + if !status.success() { + return Err(TestCoverageError::Cargo( + "can't run instrumented tests".into(), + )); + } + + Ok(()) +} + +pub fn get_instrumented_test_binaries_paths(path: &str) -> Result, TestCoverageError> { + let Ok(output) = Command::new("cargo") + .current_dir(path) + .env("RUSTFLAGS", "-C instrument-coverage") + .args(vec!["test", "--tests", "--no-run", "--message-format=json"]) + .output() + else { + return Err(TestCoverageError::Cargo( + "can't get test binaries paths".into(), + )); + }; + + if !output.status.success() { + return Err(TestCoverageError::Cargo( + "can't get test binaries paths".into(), + )); + } + + let output = String::from_utf8_lossy(&output.stdout); + let messages = output.split('\n').collect::>(); + + let mut result = vec![]; + for message in messages { + let Ok(message) = serde_json::from_str::(message) else { + continue; + }; + + if !matches!( + message.get("reason").map(|val| val.as_str()), + Some(Some("compiler-artifact")) + ) { + continue; + } + + let Ok(mut message) = serde_json::from_value::(message) + else { + continue; + }; + + let is_test = message.profile.test.unwrap_or_default(); + if !is_test { + continue; + } + + result.append(&mut message.filenames); + } + + Ok(result) +} diff --git a/framework/meta/src/cmd/standalone/test_coverage/error.rs b/framework/meta/src/cmd/standalone/test_coverage/error.rs new file mode 100644 index 0000000000..16334d203b --- /dev/null +++ b/framework/meta/src/cmd/standalone/test_coverage/error.rs @@ -0,0 +1,34 @@ +use std::{ + error::Error, + fmt::{Display, Formatter}, +}; + +#[derive(Debug)] +pub enum TestCoverageError { + MissingDependency(String), + FsError(String), + Cargo(String), + LlvmProfdata(String), + LlvmCov(String), +} + +impl Error for TestCoverageError {} + +impl Display for TestCoverageError { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + let message = match self { + TestCoverageError::MissingDependency(dep) => + format!("Missing dependency {dep}. Make sure you have {dep} installed on your system and it's available in PATH."), + + TestCoverageError::FsError(msg) => + format!("FS operation failed: {msg}"), + TestCoverageError::Cargo(msg) => + format!("Failed to run cargo: {msg}"), + TestCoverageError::LlvmProfdata(msg) => + format!("llvm-profdata error: {msg}"), + TestCoverageError::LlvmCov(msg) => + format!("llvm-cov error: {msg}"), + }; + write!(f, "TestCoverageRenderError: {}", message) + } +} diff --git a/framework/meta/src/cmd/standalone/test_coverage/llvm_cov.rs b/framework/meta/src/cmd/standalone/test_coverage/llvm_cov.rs new file mode 100644 index 0000000000..07413d0b50 --- /dev/null +++ b/framework/meta/src/cmd/standalone/test_coverage/llvm_cov.rs @@ -0,0 +1,128 @@ +use serde::{Deserialize, Serialize}; +use serde_json::Value; +use std::{path::PathBuf, process::Command}; + +use super::error::TestCoverageError; + +const DEFAULT_IGNORE_FILENAME_REGEX: [&str; 2] = ["/.cargo/registry", "rustc/"]; + +#[derive(Serialize, Deserialize)] +pub struct Coverage { + pub files: Vec, + pub totals: Summary, +} + +#[derive(Serialize, Deserialize)] +pub struct SummaryItem { + pub count: u64, + pub covered: u64, + pub percent: f64, +} + +#[derive(Serialize, Deserialize)] +pub struct Summary { + pub functions: SummaryItem, + pub lines: SummaryItem, + pub instantiations: SummaryItem, + pub regions: SummaryItem, +} + +#[derive(Serialize, Deserialize)] +pub struct FileSummary { + pub filename: String, + pub summary: Summary, +} + +fn parse_llvm_cov_output(output: &str) -> Result { + let llvm_cov_output: Value = serde_json::from_str(output) + .map_err(|_| TestCoverageError::LlvmCov("invalid output data".into()))?; + + let Some(coverage) = llvm_cov_output.get("data").and_then(|data| data.get(0)) else { + return Err(TestCoverageError::LlvmCov("invalid output data".into())); + }; + + let coverage = serde_json::from_value(coverage.to_owned()) + .map_err(|_| TestCoverageError::LlvmCov("invalid output data".into()))?; + + Ok(coverage) +} + +pub fn combine_instrumentation_results( + root_dir: &str, + profraw_files: &Vec, +) -> Result { + let Ok(output) = Command::new("llvm-profdata") + .current_dir(root_dir) + .args(vec!["merge", "-o", "merged.profdata", "-sparse"]) + .args(profraw_files) + .status() + else { + return Err(TestCoverageError::LlvmProfdata( + "can't merge profraw files".into(), + )); + }; + + if !output.success() { + return Err(TestCoverageError::LlvmProfdata( + "can't merge profraw files".into(), + )); + } + + let output_path = PathBuf::from(root_dir) + .join("merged.profdata") + .canonicalize() + .map_err(|_| { + TestCoverageError::FsError("can't get canonical path for merged.profdata".into()) + })?; + + Ok(output_path.to_string_lossy().to_string()) +} + +pub fn export_coverage_summary( + root_dir: &str, + profdata_file: &str, + binary_files: &Vec, + ignore_filename_regex: &Vec, +) -> Result { + let objects = binary_files + .iter() + .flat_map(|path| vec!["-object", path.as_str()]) + .collect::>(); + + let mut ignore_filename_regex = ignore_filename_regex + .iter() + .map(|s| format!("--ignore-filename-regex={}", s)) + .collect::>(); + + for ignore in DEFAULT_IGNORE_FILENAME_REGEX { + ignore_filename_regex.push(format!("--ignore-filename-regex={}", ignore)); + } + + let Ok(output) = Command::new("llvm-cov") + .current_dir(root_dir) + .arg("export") + .args(&objects) + .args(&ignore_filename_regex) + .args(&[ + &format!("--instr-profile={}", profdata_file), + "--summary-only", + "--format=text", + ]) + .output() + else { + return Err(TestCoverageError::LlvmCov( + "can't export coverage summary.".into(), + )); + }; + + if !output.status.success() { + return Err(TestCoverageError::LlvmCov( + "can't export coverage summary".into(), + )); + } + + let coverage = String::from_utf8_lossy(&output.stdout).to_string(); + let coverage = parse_llvm_cov_output(&coverage)?; + + Ok(coverage) +} diff --git a/framework/meta/src/cmd/standalone/test_coverage_render/render.rs b/framework/meta/src/cmd/standalone/test_coverage/render.rs similarity index 100% rename from framework/meta/src/cmd/standalone/test_coverage_render/render.rs rename to framework/meta/src/cmd/standalone/test_coverage/render.rs diff --git a/framework/meta/src/cmd/standalone/test_coverage/run.rs b/framework/meta/src/cmd/standalone/test_coverage/run.rs new file mode 100644 index 0000000000..f15ecdb8d4 --- /dev/null +++ b/framework/meta/src/cmd/standalone/test_coverage/run.rs @@ -0,0 +1,61 @@ +use std::fs; + +use crate::{ + cli_args::TestCoverageOutputFormat, + cmd::standalone::test_coverage::{ + cargo::{get_instrumented_test_binaries_paths, run_instrumented_tests}, + error::TestCoverageError, + llvm_cov::{combine_instrumentation_results, export_coverage_summary}, + render::render_coverage, + util::{ + cleanup_file, cleanup_many_files, deep_find_files_with_ext, ensure_dependencies_in_path, + }, + }, +}; + +pub fn run_test_coverage( + root_path: &str, + output_path: &str, + output_format: &TestCoverageOutputFormat, + ignore_filename_regex: &Vec, +) -> Result<(), TestCoverageError> { + ensure_dependencies_in_path()?; + + run_instrumented_tests(root_path)?; + let test_binaries = get_instrumented_test_binaries_paths(root_path)?; + + let instrumentation_output_files = deep_find_files_with_ext(root_path, "profraw")?; + + let combined_instrumentation_output = + combine_instrumentation_results(root_path, &instrumentation_output_files)?; + + cleanup_many_files(&instrumentation_output_files)?; + + let coverage = export_coverage_summary( + root_path, + &combined_instrumentation_output, + &test_binaries, + ignore_filename_regex, + )?; + + cleanup_file(&combined_instrumentation_output)?; + + let mut output = String::new(); + + match output_format { + TestCoverageOutputFormat::Markdown => { + render_coverage(&mut output, &coverage, &root_path); + }, + TestCoverageOutputFormat::Json => { + output = serde_json::to_string_pretty(&coverage).unwrap(); + }, + }; + + let Ok(_) = fs::write(output_path, output) else { + return Err(TestCoverageError::FsError(format!( + "failed to write to {output_path}" + ))); + }; + + Ok(()) +} diff --git a/framework/meta/src/cmd/standalone/test_coverage/util.rs b/framework/meta/src/cmd/standalone/test_coverage/util.rs new file mode 100644 index 0000000000..94cbe42352 --- /dev/null +++ b/framework/meta/src/cmd/standalone/test_coverage/util.rs @@ -0,0 +1,56 @@ +use crate::cmd::standalone::test_coverage::error::TestCoverageError; +use std::{fs, process::Command}; + +const DEPENDENCIES: [&str; 2] = ["llvm-cov", "llvm-profdata"]; + +pub fn ensure_dependencies_in_path() -> Result<(), TestCoverageError> { + for dependency in DEPENDENCIES.iter() { + let Ok(_) = Command::new(dependency).arg("--version").output() else { + return Err(TestCoverageError::MissingDependency(dependency.to_string())); + }; + } + + Ok(()) +} + +pub fn deep_find_files_with_ext(dir: &str, ext: &str) -> Result, TestCoverageError> { + let mut result = vec![]; + + let dir_contents = fs::read_dir(dir) + .map_err(|_| TestCoverageError::FsError(format!("failed to read dir at path {dir}")))?; + + for entry in dir_contents { + let entry = entry.map_err(|_| { + TestCoverageError::FsError(format!("failed to read entry in dir at path {dir}")) + })?; + let path = entry.path(); + if path.is_dir() { + result.append(&mut deep_find_files_with_ext(path.to_str().unwrap(), ext)?); + } else if path.is_file() { + if let Some(file_ext) = path.extension() { + if file_ext == ext { + result.push(path.to_str().unwrap().to_string()); + } + } + } + } + + Ok(result) +} + +pub fn cleanup_many_files(files: &Vec) -> Result<(), TestCoverageError> { + for file in files { + fs::remove_file(file).map_err(|_| { + TestCoverageError::FsError(format!("failed to remove file at path {file}")) + })?; + } + + Ok(()) +} + +pub fn cleanup_file(file: &str) -> Result<(), TestCoverageError> { + fs::remove_file(file) + .map_err(|_| TestCoverageError::FsError(format!("failed to remove file at path {file}")))?; + + Ok(()) +} diff --git a/framework/meta/src/cmd/standalone/test_coverage_render.rs b/framework/meta/src/cmd/standalone/test_coverage_render.rs deleted file mode 100644 index 2789fd3d43..0000000000 --- a/framework/meta/src/cmd/standalone/test_coverage_render.rs +++ /dev/null @@ -1,46 +0,0 @@ -mod cargo; -mod error; -mod llvm_cov; -mod render; - -use crate::{ - cli_args::TestCoverageRenderArgs, - cmd::standalone::test_coverage_render::{ - cargo::get_workspace_root, error::TestCoverageRenderError, llvm_cov::parse_llvm_cov_output, - render::render_coverage, - }, -}; -use std::{fs, process}; - -fn run_test_coverage_renderer( - args: &TestCoverageRenderArgs, -) -> Result<(), TestCoverageRenderError> { - let Ok(input) = fs::read_to_string(&args.input) else { - return Err(TestCoverageRenderError::InvalidInputPath( - "failed to read".into(), - )); - }; - - let root = get_workspace_root()?; - - let coverage = parse_llvm_cov_output(&input)?; - - let mut output = String::new(); - - render_coverage(&mut output, &coverage, &root); - - let Ok(_) = fs::write(&args.output, output) else { - return Err(TestCoverageRenderError::InvalidOutputPath( - "failed to write".into(), - )); - }; - - Ok(()) -} - -pub fn test_coverage_render(args: &TestCoverageRenderArgs) { - if let Err(err) = run_test_coverage_renderer(args) { - eprintln!("{}", err); - process::exit(1); - } -} diff --git a/framework/meta/src/cmd/standalone/test_coverage_render/cargo.rs b/framework/meta/src/cmd/standalone/test_coverage_render/cargo.rs deleted file mode 100644 index ca5167ea4b..0000000000 --- a/framework/meta/src/cmd/standalone/test_coverage_render/cargo.rs +++ /dev/null @@ -1,20 +0,0 @@ -use crate::cmd::standalone::test_coverage_render::error::TestCoverageRenderError; -use std::process::Command; - -pub fn get_workspace_root() -> Result { - let output = Command::new("cargo") - .args(["metadata", "--no-deps", "--format-version=1"]) - .output() - .map_err(|e| TestCoverageRenderError::Cargo(format!("{}", e)))?; - - let metadata: serde_json::Value = serde_json::from_slice(&output.stdout) - .map_err(|_| TestCoverageRenderError::Cargo("invalid manifest data".into()))?; - - let Some(workspace_root) = metadata["workspace_root"].as_str() else { - return Err(TestCoverageRenderError::Cargo( - "invalid manifest data".into(), - )); - }; - - Ok(workspace_root.to_owned()) -} diff --git a/framework/meta/src/cmd/standalone/test_coverage_render/error.rs b/framework/meta/src/cmd/standalone/test_coverage_render/error.rs deleted file mode 100644 index 36b2f1849a..0000000000 --- a/framework/meta/src/cmd/standalone/test_coverage_render/error.rs +++ /dev/null @@ -1,28 +0,0 @@ -use std::{ - error::Error, - fmt::{Display, Formatter}, -}; - -#[derive(Debug)] -pub enum TestCoverageRenderError { - InvalidInputPath(String), - InvalidOutputPath(String), - Cargo(String), - InvalidLlvmCovInput, -} - -impl Error for TestCoverageRenderError {} - -impl Display for TestCoverageRenderError { - fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - let message = match self { - TestCoverageRenderError::InvalidInputPath(msg) => format!("Invalid input path: {msg}"), - TestCoverageRenderError::InvalidOutputPath(msg) => { - format!("Invalid output path: {msg}") - }, - TestCoverageRenderError::Cargo(msg) => format!("Failed to run cargo: {msg}"), - TestCoverageRenderError::InvalidLlvmCovInput => "Invalid llvm-cov input".into(), - }; - write!(f, "TestCoverageRenderError: {}", message) - } -} diff --git a/framework/meta/src/cmd/standalone/test_coverage_render/llvm_cov.rs b/framework/meta/src/cmd/standalone/test_coverage_render/llvm_cov.rs deleted file mode 100644 index ed499ec387..0000000000 --- a/framework/meta/src/cmd/standalone/test_coverage_render/llvm_cov.rs +++ /dev/null @@ -1,45 +0,0 @@ -use serde::Deserialize; -use serde_json::Value; - -use super::error::TestCoverageRenderError; - -#[derive(Deserialize)] -pub struct Coverage { - pub files: Vec, - pub totals: Summary, -} - -#[derive(Deserialize)] -pub struct SummaryItem { - pub count: u64, - pub covered: u64, - pub percent: f64, -} - -#[derive(Deserialize)] -pub struct Summary { - pub functions: SummaryItem, - pub lines: SummaryItem, - pub instantiations: SummaryItem, - pub regions: SummaryItem, -} - -#[derive(Deserialize)] -pub struct FileSummary { - pub filename: String, - pub summary: Summary, -} - -pub fn parse_llvm_cov_output(output: &str) -> Result { - let llvm_cov_output: Value = - serde_json::from_str(output).map_err(|_| TestCoverageRenderError::InvalidLlvmCovInput)?; - - let Some(coverage) = llvm_cov_output.get("data").and_then(|data| data.get(0)) else { - return Err(TestCoverageRenderError::InvalidLlvmCovInput); - }; - - let coverage = serde_json::from_value(coverage.to_owned()) - .map_err(|_| TestCoverageRenderError::InvalidLlvmCovInput)?; - - Ok(coverage) -} From 3beb7595c1b0cd27158f02464969e31a0a87a6d9 Mon Sep 17 00:00:00 2001 From: Laurentiu Ciobanu Date: Wed, 20 Mar 2024 18:07:13 +0200 Subject: [PATCH 107/461] restore stree_submit_test.scen.json --- .../scenarios/stress_submit_test.scen.json | 4294 ++++++++--------- 1 file changed, 2147 insertions(+), 2147 deletions(-) diff --git a/contracts/core/price-aggregator/scenarios/stress_submit_test.scen.json b/contracts/core/price-aggregator/scenarios/stress_submit_test.scen.json index 3bfa543ab0..4fe66c794d 100644 --- a/contracts/core/price-aggregator/scenarios/stress_submit_test.scen.json +++ b/contracts/core/price-aggregator/scenarios/stress_submit_test.scen.json @@ -1,2176 +1,2176 @@ { - "steps": [ - { - "step": "setState", - "accounts": { - "address:oracle1": { - "nonce": "1", - "balance": "20" - }, - "address:oracle10": { - "nonce": "1", - "balance": "20" - }, - "address:oracle11": { - "nonce": "1", - "balance": "20" - }, - "address:oracle12": { - "nonce": "1", - "balance": "20" - }, - "address:oracle13": { - "nonce": "1", - "balance": "20" - }, - "address:oracle14": { - "nonce": "1", - "balance": "20" - }, - "address:oracle15": { - "nonce": "1", - "balance": "20" - }, - "address:oracle16": { - "nonce": "1", - "balance": "20" - }, - "address:oracle17": { - "nonce": "1", - "balance": "20" - }, - "address:oracle18": { - "nonce": "1", - "balance": "20" - }, - "address:oracle19": { - "nonce": "1", - "balance": "20" - }, - "address:oracle2": { - "nonce": "1", - "balance": "20" - }, - "address:oracle20": { - "nonce": "1", - "balance": "20" - }, - "address:oracle21": { - "nonce": "1", - "balance": "20" - }, - "address:oracle22": { - "nonce": "1", - "balance": "20" - }, - "address:oracle23": { - "nonce": "1", - "balance": "20" - }, - "address:oracle24": { - "nonce": "1", - "balance": "20" - }, - "address:oracle25": { - "nonce": "1", - "balance": "20" - }, - "address:oracle26": { - "nonce": "1", - "balance": "20" - }, - "address:oracle27": { - "nonce": "1", - "balance": "20" - }, - "address:oracle28": { - "nonce": "1", - "balance": "20" - }, - "address:oracle29": { - "nonce": "1", - "balance": "20" - }, - "address:oracle3": { - "nonce": "1", - "balance": "20" - }, - "address:oracle30": { - "nonce": "1", - "balance": "20" - }, - "address:oracle31": { - "nonce": "1", - "balance": "20" - }, - "address:oracle32": { - "nonce": "1", - "balance": "20" - }, - "address:oracle33": { - "nonce": "1", - "balance": "20" - }, - "address:oracle34": { - "nonce": "1", - "balance": "20" - }, - "address:oracle35": { - "nonce": "1", - "balance": "20" - }, - "address:oracle36": { - "nonce": "1", - "balance": "20" - }, - "address:oracle37": { - "nonce": "1", - "balance": "20" - }, - "address:oracle38": { - "nonce": "1", - "balance": "20" - }, - "address:oracle39": { - "nonce": "1", - "balance": "20" - }, - "address:oracle4": { - "nonce": "1", - "balance": "20" - }, - "address:oracle40": { - "nonce": "1", - "balance": "20" - }, - "address:oracle41": { - "nonce": "1", - "balance": "20" - }, - "address:oracle42": { - "nonce": "1", - "balance": "20" - }, - "address:oracle43": { - "nonce": "1", - "balance": "20" - }, - "address:oracle44": { - "nonce": "1", - "balance": "20" - }, - "address:oracle45": { - "nonce": "1", - "balance": "20" - }, - "address:oracle46": { - "nonce": "1", - "balance": "20" - }, - "address:oracle47": { - "nonce": "1", - "balance": "20" - }, - "address:oracle48": { - "nonce": "1", - "balance": "20" - }, - "address:oracle49": { - "nonce": "1", - "balance": "20" - }, - "address:oracle5": { - "nonce": "1", - "balance": "20" - }, - "address:oracle50": { - "nonce": "1", - "balance": "20" - }, - "address:oracle6": { - "nonce": "1", - "balance": "20" - }, - "address:oracle7": { - "nonce": "1", - "balance": "20" - }, - "address:oracle8": { - "nonce": "1", - "balance": "20" - }, - "address:oracle9": { - "nonce": "1", - "balance": "20" - }, - "address:owner": { - "nonce": "1" - } - }, - "newAddresses": [ - { - "creatorAddress": "address:owner", - "creatorNonce": "1", - "newAddress": "sc:price-aggregator" - } - ], - "currentBlockInfo": { - "blockTimestamp": "100" - } - }, - { - "step": "scDeploy", - "id": "", - "tx": { - "from": "address:owner", - "contractCode": "mxsc:../output/multiversx-price-aggregator-sc.mxsc.json", - "arguments": [ - "0x45474c44", - "0x14", - "0x0a", - "0x03", - "0x32", - "0x6f7261636c65315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c65325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c65335f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c65345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c65355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c65365f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c65375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c65385f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c65395f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6531305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6531315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6531325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6531335f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6531345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6531355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6531365f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6531375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6531385f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6531395f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6532305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6532315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6532325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6532335f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6532345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6532355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6532365f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6532375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6532385f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6532395f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6533305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6533315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6533325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6533335f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6533345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6533355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6533365f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6533375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6533385f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6533395f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6534305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6534315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6534325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6534335f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6534345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6534355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6534365f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6534375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6534385f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6534395f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", - "0x6f7261636c6535305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f" - ], - "gasLimit": "120,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle1", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle2", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle3", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "steps": [ + { + "step": "setState", + "accounts": { + "address:oracle1": { + "nonce": "1", + "balance": "20" + }, + "address:oracle10": { + "nonce": "1", + "balance": "20" + }, + "address:oracle11": { + "nonce": "1", + "balance": "20" + }, + "address:oracle12": { + "nonce": "1", + "balance": "20" + }, + "address:oracle13": { + "nonce": "1", + "balance": "20" + }, + "address:oracle14": { + "nonce": "1", + "balance": "20" + }, + "address:oracle15": { + "nonce": "1", + "balance": "20" + }, + "address:oracle16": { + "nonce": "1", + "balance": "20" + }, + "address:oracle17": { + "nonce": "1", + "balance": "20" + }, + "address:oracle18": { + "nonce": "1", + "balance": "20" + }, + "address:oracle19": { + "nonce": "1", + "balance": "20" + }, + "address:oracle2": { + "nonce": "1", + "balance": "20" + }, + "address:oracle20": { + "nonce": "1", + "balance": "20" + }, + "address:oracle21": { + "nonce": "1", + "balance": "20" + }, + "address:oracle22": { + "nonce": "1", + "balance": "20" + }, + "address:oracle23": { + "nonce": "1", + "balance": "20" + }, + "address:oracle24": { + "nonce": "1", + "balance": "20" + }, + "address:oracle25": { + "nonce": "1", + "balance": "20" + }, + "address:oracle26": { + "nonce": "1", + "balance": "20" + }, + "address:oracle27": { + "nonce": "1", + "balance": "20" + }, + "address:oracle28": { + "nonce": "1", + "balance": "20" + }, + "address:oracle29": { + "nonce": "1", + "balance": "20" + }, + "address:oracle3": { + "nonce": "1", + "balance": "20" + }, + "address:oracle30": { + "nonce": "1", + "balance": "20" + }, + "address:oracle31": { + "nonce": "1", + "balance": "20" }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle4", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle5", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "address:oracle32": { + "nonce": "1", + "balance": "20" }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle6", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle7", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle8", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle9", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle10", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle11", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "address:oracle33": { + "nonce": "1", + "balance": "20" }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle12", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "address:oracle34": { + "nonce": "1", + "balance": "20" }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle13", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "address:oracle35": { + "nonce": "1", + "balance": "20" }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle14", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "address:oracle36": { + "nonce": "1", + "balance": "20" }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle15", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "address:oracle37": { + "nonce": "1", + "balance": "20" }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle16", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "address:oracle38": { + "nonce": "1", + "balance": "20" }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle17", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "address:oracle39": { + "nonce": "1", + "balance": "20" }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle18", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "address:oracle4": { + "nonce": "1", + "balance": "20" }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle19", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "address:oracle40": { + "nonce": "1", + "balance": "20" }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle20", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "address:oracle41": { + "nonce": "1", + "balance": "20" }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle21", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "address:oracle42": { + "nonce": "1", + "balance": "20" }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle22", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "address:oracle43": { + "nonce": "1", + "balance": "20" }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle23", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "address:oracle44": { + "nonce": "1", + "balance": "20" }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle24", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "address:oracle45": { + "nonce": "1", + "balance": "20" }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle25", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "address:oracle46": { + "nonce": "1", + "balance": "20" }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle26", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "address:oracle47": { + "nonce": "1", + "balance": "20" }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle27", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "address:oracle48": { + "nonce": "1", + "balance": "20" }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle28", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "address:oracle49": { + "nonce": "1", + "balance": "20" }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle29", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "address:oracle5": { + "nonce": "1", + "balance": "20" }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle30", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "address:oracle50": { + "nonce": "1", + "balance": "20" }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle31", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "address:oracle6": { + "nonce": "1", + "balance": "20" }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle32", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "address:oracle7": { + "nonce": "1", + "balance": "20" }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle33", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "address:oracle8": { + "nonce": "1", + "balance": "20" }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle34", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle35", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle36", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle37", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle38", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle39", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle40", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle41", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle42", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle43", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle44", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle45", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle46", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle47", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle48", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle49", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle50", - "to": "sc:price-aggregator", - "egldValue": "20", - "function": "stake", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:owner", - "to": "sc:price-aggregator", - "function": "setPairDecimals", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x" - ], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:owner", - "to": "sc:price-aggregator", - "function": "unpause", - "arguments": [], - "gasLimit": "5,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle1", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x5f", - "0xe799ca60351b896c", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle2", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0x716cd8945fc70b18", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle3", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0xe1a2287391e5624b", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle4", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0xba073d189ad09a2c", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle5", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0xff00ce8c0444abdd", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle6", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0xde7637de9f0f868c", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle7", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0xac01126106b01960", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle8", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0xa5ab55cf028f836d", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle9", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0x953c8fd0d4474074", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle10", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0xa65e64a9aa0802a6", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle11", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0xa6bb40b782efcd03", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle12", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0x97484e0f98100c9a", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle13", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0x65ba697509c0a86f", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle14", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0x111061b1a3ea38b8", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle15", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0xec876fe889ad08ff", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle16", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0xb605dd34611b3dc0", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle17", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0x7602960448fff2ac", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle18", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0x140f137aa7a87a94", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle19", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0xd557396414be3f15", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle20", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0x325769f53bfb87a2", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle21", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0x4deee148cfa1854f", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle22", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0x40bb80f3ae334d7e", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle23", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0xfc1a57c0b4f030e8", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle24", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0xcd1034fe7c1feae5", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle25", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0x7b6560eadfaf3cca", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle26", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0xed0bece4a403eae3", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle27", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0xae251605c03d8082", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle28", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0x66e42ed8550f773b", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle29", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0xccb3836eb7cae53c", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle30", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0xad95fe9b4bbf2d4d", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle31", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0x2efcb72f7ca0545f", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle32", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0x7089de0311ceaa83", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle33", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0x7112fc625005421b", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle34", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0x77c398c91e818621", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle35", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0x260a0fc02a2d124b", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle36", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0x3aa99face36d47d0", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle37", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0xbe3b8f275886e44f", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle38", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0xb86991c34a794564", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle39", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0xe3aad9f5ef417ac7", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle40", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0x68d9d244742a63ea", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle41", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0x6f99d232bca2e67d", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle42", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0x268183cfacad3372", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle43", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0x217fe27c5b1f3a59", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle44", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0xde4949fcb07b230a", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle45", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0x755b157b4fa653ba", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle46", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0xedef13da2591c4c2", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle47", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0x6e872c7160cfa5e1", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle48", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0xe97d0cbb0d5016a4", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } - }, - { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle49", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0x4d2d2ed6700c8419", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "address:oracle9": { + "nonce": "1", + "balance": "20" }, + "address:owner": { + "nonce": "1" + } + }, + "newAddresses": [ { - "step": "scCall", - "id": "", - "tx": { - "from": "address:oracle50", - "to": "sc:price-aggregator", - "function": "submit", - "arguments": [ - "0x45474c44", - "0x55534443", - "0x64", - "0xd4a84da6b88e4737", - "0x" - ], - "gasLimit": "7,000,000" - }, - "expect": { - "out": [], - "status": "0" - } + "creatorAddress": "address:owner", + "creatorNonce": "1", + "newAddress": "sc:price-aggregator" } - ] -} + ], + "currentBlockInfo": { + "blockTimestamp": "100" + } + }, + { + "step": "scDeploy", + "id": "", + "tx": { + "from": "address:owner", + "contractCode": "mxsc:../output/multiversx-price-aggregator-sc.mxsc.json", + "arguments": [ + "0x45474c44", + "0x14", + "0x0a", + "0x03", + "0x32", + "0x6f7261636c65315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c65325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c65335f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c65345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c65355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c65365f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c65375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c65385f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c65395f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6531305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6531315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6531325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6531335f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6531345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6531355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6531365f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6531375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6531385f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6531395f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6532305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6532315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6532325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6532335f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6532345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6532355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6532365f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6532375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6532385f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6532395f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6533305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6533315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6533325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6533335f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6533345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6533355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6533365f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6533375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6533385f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6533395f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6534305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6534315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6534325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6534335f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6534345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6534355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6534365f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6534375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6534385f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6534395f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f", + "0x6f7261636c6535305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f" + ], + "gasLimit": "120,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle1", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle2", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle3", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle4", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle5", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle6", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle7", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle8", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle9", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle10", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle11", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle12", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle13", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle14", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle15", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle16", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle17", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle18", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle19", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle20", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle21", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle22", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle23", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle24", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle25", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle26", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle27", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle28", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle29", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle30", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle31", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle32", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle33", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle34", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle35", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle36", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle37", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle38", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle39", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle40", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle41", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle42", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle43", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle44", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle45", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle46", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle47", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle48", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle49", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle50", + "to": "sc:price-aggregator", + "egldValue": "20", + "function": "stake", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:owner", + "to": "sc:price-aggregator", + "function": "setPairDecimals", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x" + ], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:owner", + "to": "sc:price-aggregator", + "function": "unpause", + "arguments": [], + "gasLimit": "5,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle1", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x5f", + "0xe4431c9cfb505fea", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle2", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0xcca317a0b6489409", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle3", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0xd5da94d218e8b3e3", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle4", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x9b9f24755509abe6", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle5", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x596faa56dc4d9d4e", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle6", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x69ccc76678e2499e", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle7", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x0176a6a333f061", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle8", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0xee2ede42941ffb6f", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle9", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0xfe5a2ca21500c94a", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle10", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x98c16991e599ae6b", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle11", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0xec0197ac7c0da4a2", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle12", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x4758692d635dde95", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle13", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0xfa99ca83e839c136", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle14", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x2542eed0ad760b6f", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle15", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0xcaa56ad357bf558a", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle16", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x4104ad72636fdc35", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle17", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x08b6adc46d6dccf0", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle18", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0xb5c8708954d584e4", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle19", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x6136e999fb83ab09", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle20", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x214d92d0a7450389", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle21", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0xea21e03952d07af9", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle22", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0xdd822b3e1a5bb8a3", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle23", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x80e2a3c4b931c4bc", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle24", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x279c3fa2eeaf0fb0", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle25", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x768021226eba1043", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle26", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x026089384f007444", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle27", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x49f7ab393052bb", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle28", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x049afbf40fa88fb8", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle29", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x6d9edf2f943d0c48", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle30", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x9fa99de813defc0c", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle31", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0xd1d93e3611904d25", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle32", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x8696ff1edc27700e", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle33", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0xb20b2290aaa5a45e", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle34", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x46f399722142c7dc", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle35", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x812c7b08e5ef93bb", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle36", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x9f42bd04602aabfa", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle37", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x3313bced09c1b91f", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle38", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0xcc71d4a051c86da1", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle39", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x020dcbfee96f9111", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle40", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x66803b9e9fb6ae87", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle41", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x5e784067e72d6000", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle42", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x1990e5a459100514", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle43", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x643b36cf7c98aed2", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle44", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x19b768a5982e5d17", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle45", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0xe8396bc4dade2e38", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle46", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0xbd1b166e888f23b8", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle47", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x4541ecf9e1bcd219", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle48", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0xac32e3eac4733d3e", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle49", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0x7d7dde2542dfa2d9", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "id": "", + "tx": { + "from": "address:oracle50", + "to": "sc:price-aggregator", + "function": "submit", + "arguments": [ + "0x45474c44", + "0x55534443", + "0x64", + "0xd2c63e8cf9db301a", + "0x" + ], + "gasLimit": "7,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + } + ] +} \ No newline at end of file From 17855b0dc1eead02af34b55ab5d940a53d3d9d21 Mon Sep 17 00:00:00 2001 From: Alexandru Popenta Date: Wed, 20 Mar 2024 18:17:14 +0200 Subject: [PATCH 108/461] update actions workflow file --- .github/workflows/actions.yml | 145 +++------------------------------- 1 file changed, 9 insertions(+), 136 deletions(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index b6d06db260..c1826f2efe 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -12,112 +12,15 @@ permissions: pull-requests: write jobs: - wasm_test: - name: Wasm tests - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Install rust - uses: actions-rust-lang/setup-rust-toolchain@v1 - with: - toolchain: nightly-2023-12-11 - target: wasm32-unknown-unknown - - - name: Install prerequisites - run: | - pipx install multiversx-sdk-cli==v9.3.1 - - cargo install wasm-opt - cargo install twiggy - - cargo install --path framework/meta - sc-meta install mx-scenario-go --tag v2.1.0-alpha - - which mxpy - which wasm-opt - which mx-scenario-go - - - name: Build the wasm contracts - env: - RUSTFLAGS: "" - run: sc-meta all build --no-imports --target-dir $(pwd)/target --path . - - - name: Run the wasm tests - env: - RUSTFLAGS: "" - run: cargo test --features multiversx-sc-scenario/run-go-tests - - - name: Generate the contract report - env: - RUSTFLAGS: "" - run: | - sc-meta all build-dbg --twiggy-paths --target-dir $(pwd)/target --path . - mxpy contract report --skip-build --skip-twiggy --output-format json --output-file report.json - - - name: Upload the report json - uses: actions/upload-artifact@v3 - with: - name: report - path: report.json - - - name: Download the base report - uses: dawidd6/action-download-artifact@v2 - if: github.event_name == 'pull_request' - continue-on-error: true - with: - workflow: actions.yml - name: report - commit: ${{ github.event.pull_request.base.sha }} - path: base-report - - - name: Generate the report template - if: github.event_name == 'pull_request' - run: | - echo "Contract comparison - from {{ .base }} to {{ .head }}" > report.md - if [ ! -f base-report/report.json ] - then - echo ":warning: Warning: Could not download the report for the base branch. Displaying only the report for the current branch. :warning:" >> report.md - mxpy contract report --compare report.json --output-format github-markdown --output-file report-table.md - else - mxpy contract report --compare base-report/report.json report.json --output-format github-markdown --output-file report-table.md - fi - cat report-table.md >> report.md - - - name: Render the report from the template - id: template - uses: chuhlomin/render-template@v1 - if: github.event_name == 'pull_request' - with: - template: report.md - vars: | - base: ${{ github.event.pull_request.base.sha }} - head: ${{ github.event.pull_request.head.sha }} - - - name: Upload the report markdown - uses: actions/upload-artifact@v3 - if: github.event_name == 'pull_request' - with: - name: report-markdown - path: report.md - - - name: Find the comment containing the report - id: fc - uses: peter-evans/find-comment@v2 - if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository - with: - issue-number: ${{ github.event.pull_request.number }} - comment-author: "github-actions[bot]" - body-includes: "Contract comparison" - - - name: Create or update the report comment - uses: peter-evans/create-or-update-comment@v2 - if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository - with: - comment-id: ${{ steps.fc.outputs.comment-id }} - issue-number: ${{ github.event.pull_request.number }} - body: ${{ steps.template.outputs.result }} - edit-mode: replace + contracts: + name: Contracts + uses: multiversx/mx-sc-actions/.github/workflows/contracts.yml@654552f55d4bfbbbc78cc7c362e4127ca04c4173 + with: + rust-toolchain: nightly-2023-12-11 + vmtools-version: v1.5.24 + path-to-sc-meta: framework/meta + secrets: + token: ${{ secrets.GITHUB_TOKEN }} test_coverage: name: Test Coverage @@ -169,33 +72,3 @@ jobs: issue-number: ${{ github.event.pull_request.number }} body-file: ./coverage.md edit-mode: replace - - rust_test: - name: Rust tests - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions-rust-lang/setup-rust-toolchain@v1 - with: - toolchain: nightly-2023-12-11 - - - name: Run the rust tests - env: - RUSTFLAGS: "" - run: cargo test - - clippy_check: - name: Clippy linter check - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions-rust-lang/setup-rust-toolchain@v1 - with: - toolchain: nightly-2023-12-11 - components: clippy - - uses: giraffate/clippy-action@v1 - env: - RUSTFLAGS: "" - with: - github_token: ${{ github.token }} - clippy_flags: --all-targets --all-features From 058a62b4c27586d7aa07335945632205c645fe67 Mon Sep 17 00:00:00 2001 From: Laurentiu Ciobanu Date: Wed, 20 Mar 2024 18:26:08 +0200 Subject: [PATCH 109/461] remove unused import --- framework/meta/src/cmd/standalone/test_coverage/cargo.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/framework/meta/src/cmd/standalone/test_coverage/cargo.rs b/framework/meta/src/cmd/standalone/test_coverage/cargo.rs index 5f5660d103..6fb70e13b9 100644 --- a/framework/meta/src/cmd/standalone/test_coverage/cargo.rs +++ b/framework/meta/src/cmd/standalone/test_coverage/cargo.rs @@ -1,6 +1,4 @@ -use crate::cmd::standalone::test_coverage::{ - error::TestCoverageError, util::deep_find_files_with_ext, -}; +use crate::cmd::standalone::test_coverage::error::TestCoverageError; use serde::Deserialize; use std::process::Command; From bcad1743e9ad64059c67dd11a6dbb6f4bfead70d Mon Sep 17 00:00:00 2001 From: Alexandru Popenta Date: Wed, 20 Mar 2024 18:27:31 +0200 Subject: [PATCH 110/461] remove vm-tools arg --- .github/workflows/actions.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index c1826f2efe..37aec0ae8b 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -17,7 +17,6 @@ jobs: uses: multiversx/mx-sc-actions/.github/workflows/contracts.yml@654552f55d4bfbbbc78cc7c362e4127ca04c4173 with: rust-toolchain: nightly-2023-12-11 - vmtools-version: v1.5.24 path-to-sc-meta: framework/meta secrets: token: ${{ secrets.GITHUB_TOKEN }} From 1c2efbb15940a1de1f11e326fc9d8d65d02ebebd Mon Sep 17 00:00:00 2001 From: Laurentiu Ciobanu Date: Wed, 20 Mar 2024 18:38:43 +0200 Subject: [PATCH 111/461] fix clippy warnings --- framework/meta/src/cmd/standalone/test_coverage/llvm_cov.rs | 6 +++--- framework/meta/src/cmd/standalone/test_coverage/run.rs | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/framework/meta/src/cmd/standalone/test_coverage/llvm_cov.rs b/framework/meta/src/cmd/standalone/test_coverage/llvm_cov.rs index 07413d0b50..5cb139e6de 100644 --- a/framework/meta/src/cmd/standalone/test_coverage/llvm_cov.rs +++ b/framework/meta/src/cmd/standalone/test_coverage/llvm_cov.rs @@ -81,8 +81,8 @@ pub fn combine_instrumentation_results( pub fn export_coverage_summary( root_dir: &str, profdata_file: &str, - binary_files: &Vec, - ignore_filename_regex: &Vec, + binary_files: &[String], + ignore_filename_regex: &[String], ) -> Result { let objects = binary_files .iter() @@ -103,7 +103,7 @@ pub fn export_coverage_summary( .arg("export") .args(&objects) .args(&ignore_filename_regex) - .args(&[ + .args([ &format!("--instr-profile={}", profdata_file), "--summary-only", "--format=text", diff --git a/framework/meta/src/cmd/standalone/test_coverage/run.rs b/framework/meta/src/cmd/standalone/test_coverage/run.rs index f15ecdb8d4..bdb810700b 100644 --- a/framework/meta/src/cmd/standalone/test_coverage/run.rs +++ b/framework/meta/src/cmd/standalone/test_coverage/run.rs @@ -17,7 +17,7 @@ pub fn run_test_coverage( root_path: &str, output_path: &str, output_format: &TestCoverageOutputFormat, - ignore_filename_regex: &Vec, + ignore_filename_regex: &[String], ) -> Result<(), TestCoverageError> { ensure_dependencies_in_path()?; @@ -44,7 +44,7 @@ pub fn run_test_coverage( match output_format { TestCoverageOutputFormat::Markdown => { - render_coverage(&mut output, &coverage, &root_path); + render_coverage(&mut output, &coverage, root_path); }, TestCoverageOutputFormat::Json => { output = serde_json::to_string_pretty(&coverage).unwrap(); From 4a06a1ec96297fc449093c3867feed671ffb82e6 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Wed, 20 Mar 2024 20:26:26 +0200 Subject: [PATCH 112/461] tx proxy gen - generate code for struct --- contracts/examples/crypto-zombies/src/lib.rs | 1 + .../examples/crypto-zombies/src/temp_proxy.rs | 428 ++++++++++++++++++ .../examples/crypto-zombies/src/zombie.rs | 3 +- .../examples/digital-cash/src/deposit_info.rs | 3 +- framework/base/src/abi/type_description.rs | 15 +- framework/derive/src/type_abi_derive.rs | 19 +- .../generate_proxy/proxy_template_gen.rs | 38 +- 7 files changed, 490 insertions(+), 17 deletions(-) create mode 100644 contracts/examples/crypto-zombies/src/temp_proxy.rs diff --git a/contracts/examples/crypto-zombies/src/lib.rs b/contracts/examples/crypto-zombies/src/lib.rs index f2f47688ad..ed6b9befba 100644 --- a/contracts/examples/crypto-zombies/src/lib.rs +++ b/contracts/examples/crypto-zombies/src/lib.rs @@ -9,6 +9,7 @@ mod zombie_attack; mod zombie_factory; mod zombie_feeding; mod zombie_helper; +pub mod temp_proxy; #[multiversx_sc::contract] pub trait CryptoZombies: diff --git a/contracts/examples/crypto-zombies/src/temp_proxy.rs b/contracts/examples/crypto-zombies/src/temp_proxy.rs new file mode 100644 index 0000000000..163be5ffa1 --- /dev/null +++ b/contracts/examples/crypto-zombies/src/temp_proxy.rs @@ -0,0 +1,428 @@ +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(clippy::all)] + +use multiversx_sc::imports::*; + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] +pub struct Zombie +where + Api: ManagedTypeApi, +{ + pub name: ManagedBuffer, + pub dna: u64, + pub level: u16, + pub ready_time: u64, + pub win_count: usize, + pub loss_count: usize, +} + +pub struct CryptoZombiesProxy; + +impl TxProxyTrait for CryptoZombiesProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = CryptoZombiesProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + CryptoZombiesProxyMethods { wrapped_tx: tx } + } +} + +pub struct CryptoZombiesProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +impl CryptoZombiesProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init( + self, + ) -> Tx< + Env, + From, + (), + (), + Gas, + DeployCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_deploy() + .original_result() + } + +} +impl CryptoZombiesProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn set_crypto_kitties_sc_address< + Arg0: CodecInto>, + >( + self, + address: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("set_crypto_kitties_sc_address") + .argument(&address) + .original_result() + } + + pub fn generate_random_dna( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("generate_random_dna") + .original_result() + } + + pub fn create_random_zombie< + Arg0: CodecInto>, + >( + self, + name: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("create_random_zombie") + .argument(&name) + .original_result() + } + + pub fn is_ready< + Arg0: CodecInto, + >( + self, + zombie_id: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("is_ready") + .argument(&zombie_id) + .original_result() + } + + pub fn feed_on_kitty< + Arg0: CodecInto, + Arg1: CodecInto, + >( + self, + zombie_id: Arg0, + kitty_id: Arg1, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("feed_on_kitty") + .argument(&zombie_id) + .argument(&kitty_id) + .original_result() + } + + pub fn dna_digits( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("dna_digits") + .original_result() + } + + pub fn zombies_count( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("zombies_count") + .original_result() + } + + pub fn zombies< + Arg0: CodecInto, + >( + self, + id: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>, + > { + self.wrapped_tx + .raw_call() + .function_name("zombies") + .argument(&id) + .original_result() + } + + pub fn zombie_owner< + Arg0: CodecInto, + >( + self, + id: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>, + > { + self.wrapped_tx + .raw_call() + .function_name("zombie_owner") + .argument(&id) + .original_result() + } + + pub fn crypto_kitties_sc_address( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>, + > { + self.wrapped_tx + .raw_call() + .function_name("crypto_kitties_sc_address") + .original_result() + } + + pub fn cooldown_time( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("cooldown_time") + .original_result() + } + + pub fn owned_zombies< + Arg0: CodecInto>, + >( + self, + owner: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>, + > { + self.wrapped_tx + .raw_call() + .function_name("owned_zombies") + .argument(&owner) + .original_result() + } + + pub fn level_up< + Arg0: CodecInto, + >( + self, + zombie_id: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("level_up") + .argument(&zombie_id) + .original_result() + } + + pub fn withdraw( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("withdraw") + .original_result() + } + + pub fn change_name< + Arg0: CodecInto, + Arg1: CodecInto>, + >( + self, + zombie_id: Arg0, + name: Arg1, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("change_name") + .argument(&zombie_id) + .argument(&name) + .original_result() + } + + pub fn change_dna< + Arg0: CodecInto, + Arg1: CodecInto, + >( + self, + zombie_id: Arg0, + dna: Arg1, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("change_dna") + .argument(&zombie_id) + .argument(&dna) + .original_result() + } + + pub fn attack< + Arg0: CodecInto, + Arg1: CodecInto, + >( + self, + zombie_id: Arg0, + target_id: Arg1, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("attack") + .argument(&zombie_id) + .argument(&target_id) + .original_result() + } + +} diff --git a/contracts/examples/crypto-zombies/src/zombie.rs b/contracts/examples/crypto-zombies/src/zombie.rs index 414c343f28..858d1b791c 100644 --- a/contracts/examples/crypto-zombies/src/zombie.rs +++ b/contracts/examples/crypto-zombies/src/zombie.rs @@ -1,6 +1,7 @@ use multiversx_sc::{derive_imports::*, imports::*}; -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct Zombie { pub name: ManagedBuffer, pub dna: u64, diff --git a/contracts/examples/digital-cash/src/deposit_info.rs b/contracts/examples/digital-cash/src/deposit_info.rs index 9fb14661ea..0164db2090 100644 --- a/contracts/examples/digital-cash/src/deposit_info.rs +++ b/contracts/examples/digital-cash/src/deposit_info.rs @@ -1,6 +1,7 @@ use multiversx_sc::{derive_imports::*, imports::*}; -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct DepositInfo { pub depositor_address: ManagedAddress, pub esdt_funds: ManagedVec>, diff --git a/framework/base/src/abi/type_description.rs b/framework/base/src/abi/type_description.rs index cee01bfa58..011b07d00c 100644 --- a/framework/base/src/abi/type_description.rs +++ b/framework/base/src/abi/type_description.rs @@ -67,16 +67,13 @@ impl TypeContents { names.push(enum_variant.name.clone()); } }, - TypeContents::Struct(_struct_fields) => { - // for struct_field in struct_fields { - // todo!() - // } - }, - TypeContents::ExplicitEnum(_explicit_enum_variants) => { - // for explicit_enum_variant in explicit_enum_variants { - // todo!() - // } + TypeContents::Struct(struct_fields) => { + for struct_field in struct_fields { + names.push(struct_field.name.clone()); + names.push(struct_field.field_type.clone()); + } }, + TypeContents::ExplicitEnum(_explicit_enum_variants) => {}, TypeContents::NotSpecified => {}, } diff --git a/framework/derive/src/type_abi_derive.rs b/framework/derive/src/type_abi_derive.rs index 13fab6baa3..aad347ba31 100644 --- a/framework/derive/src/type_abi_derive.rs +++ b/framework/derive/src/type_abi_derive.rs @@ -2,7 +2,7 @@ use crate::parse::attributes::extract_macro_attributes; use super::parse::attributes::extract_doc; use proc_macro::TokenStream; -use quote::quote; +use quote::{quote, ToTokens}; pub struct ExplicitDiscriminant { pub variant_index: usize, @@ -21,7 +21,7 @@ fn field_snippet(index: usize, field: &syn::Field) -> proc_macro2::TokenStream { field_descriptions.push(multiversx_sc::abi::StructFieldDescription::new( &[ #(#field_docs),* ], #field_name_str, - <#field_ty>::type_name(), + <#field_ty>::type_name_rust(), )); <#field_ty>::provide_type_descriptions(accumulator); } @@ -122,6 +122,7 @@ pub fn type_abi_derive(ast: &syn::DeriveInput) -> TokenStream { let name = &ast.ident; let name_str = name.to_string(); let (impl_generics, ty_generics, where_clause) = &ast.generics.split_for_impl(); + let name_rust = extract_rust_type(ty_generics, name_str.clone()); let type_abi_impl = quote! { impl #impl_generics multiversx_sc::abi::TypeAbi for #name #ty_generics #where_clause { fn type_name() -> multiversx_sc::abi::TypeName { @@ -129,7 +130,7 @@ pub fn type_abi_derive(ast: &syn::DeriveInput) -> TokenStream { } fn type_name_rust() -> multiversx_sc::abi::TypeName { - #name_str.into() + #name_rust.into() } #type_description_impl @@ -180,3 +181,15 @@ pub fn get_discriminant( quote! { #next_value} } + +fn extract_rust_type(ty_generics: &syn::TypeGenerics<'_>, mut output_name: String) -> String { + let mut ty_generics_tokens = proc_macro2::TokenStream::new(); + ty_generics.to_tokens(&mut ty_generics_tokens); + + if ty_generics_tokens.to_string().is_empty() { + return output_name; + } + + output_name.push_str("<$API>"); + return output_name; +} diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs index 25dd7a150d..5ae0202317 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs @@ -25,9 +25,12 @@ pub(crate) fn write_header(file: &mut File) { } pub(crate) fn write_types(file: &mut File, types: &TypeDescriptionContainerImpl) { - for t in types.0.iter() { - if matches!(t.1.contents, TypeContents::Enum(_)) { - write_enum(file, &t.1); + for (_, type_description) in &types.0 { + match &type_description.contents { + TypeContents::Enum(_) => write_enum(file, type_description), + TypeContents::Struct(_) => write_struct(file, type_description), + TypeContents::NotSpecified => {}, + TypeContents::ExplicitEnum(_) => {}, } } } @@ -94,6 +97,35 @@ fn write_enum(file: &mut File, type_description: &TypeDescription) { write_newline(file); } +fn write_struct(file: &mut File, type_description: &TypeDescription) { + let struct_name = type_description.names.rust.replace("$API", "Api"); + + write_derive_imports(file); + write_macro_attributes(file, &type_description.macro_attributes); + writeln!(file, r#"pub struct {}"#, struct_name).unwrap(); + + if struct_name.contains("") { + writeln!( + file, + r#"where + Api: ManagedTypeApi,"# + ) + .unwrap(); + } + + writeln!(file, r#"{{"#).unwrap(); + + for content in type_description.contents.extract_names().chunks_exact(2) { + let variable_name = &content[0]; + let variable_type = &content[1].replace("$API", "Api"); + + writeln!(file, " pub {variable_name}: {variable_type},").unwrap(); + } + + writeln!(file, "}}").unwrap(); + write_newline(file); +} + fn write_macro_attributes(file: &mut File, macro_attributes: &[String]) { writeln!(file, "#[derive(TypeAbi)]").unwrap(); if !macro_attributes.is_empty() { From 1ca8287df4cc9a39e1097c78418f8748b9df8d2a Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Wed, 20 Mar 2024 20:34:26 +0200 Subject: [PATCH 113/461] tx proxy gen - cleanup --- .../examples/crypto-zombies/src/temp_proxy.rs | 32 +++++++++---------- framework/derive/src/type_abi_derive.rs | 2 +- .../contract/generate_proxy/proxy_gen_main.rs | 4 +-- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/contracts/examples/crypto-zombies/src/temp_proxy.rs b/contracts/examples/crypto-zombies/src/temp_proxy.rs index 163be5ffa1..32f130dfdc 100644 --- a/contracts/examples/crypto-zombies/src/temp_proxy.rs +++ b/contracts/examples/crypto-zombies/src/temp_proxy.rs @@ -6,22 +6,6 @@ use multiversx_sc::imports::*; -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct Zombie -where - Api: ManagedTypeApi, -{ - pub name: ManagedBuffer, - pub dna: u64, - pub level: u16, - pub ready_time: u64, - pub win_count: usize, - pub loss_count: usize, -} - pub struct CryptoZombiesProxy; impl TxProxyTrait for CryptoZombiesProxy @@ -426,3 +410,19 @@ where } } +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] +pub struct Zombie +where + Api: ManagedTypeApi, +{ + pub name: ManagedBuffer, + pub dna: u64, + pub level: u16, + pub ready_time: u64, + pub win_count: usize, + pub loss_count: usize, +} + diff --git a/framework/derive/src/type_abi_derive.rs b/framework/derive/src/type_abi_derive.rs index aad347ba31..cd93bdf33a 100644 --- a/framework/derive/src/type_abi_derive.rs +++ b/framework/derive/src/type_abi_derive.rs @@ -191,5 +191,5 @@ fn extract_rust_type(ty_generics: &syn::TypeGenerics<'_>, mut output_name: Strin } output_name.push_str("<$API>"); - return output_name; + output_name } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs index 93cdb7a8e6..de78b53162 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs @@ -25,9 +25,9 @@ impl MetaConfig { fn write_proxies_to_file(mut file: File, abi: ContractAbi) { write_header(&mut file); - write_types(&mut file, &abi.type_descriptions); write_struct_template(&mut file, &abi.name); write_impl_for_tx_proxy(&mut file, &abi.name); write_struct_tx_proxy_methods(&mut file, &abi.name); - write_content(&mut file, abi); + write_content(&mut file, abi.clone()); + write_types(&mut file, &abi.type_descriptions); } From 82f20ac69793728bd87b29e0a7ca4890e2292b6a Mon Sep 17 00:00:00 2001 From: Alexandru Popenta Date: Wed, 20 Mar 2024 20:57:44 +0200 Subject: [PATCH 114/461] reference newer commit --- .github/workflows/actions.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index 37aec0ae8b..4e8efeed0a 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -14,7 +14,7 @@ permissions: jobs: contracts: name: Contracts - uses: multiversx/mx-sc-actions/.github/workflows/contracts.yml@654552f55d4bfbbbc78cc7c362e4127ca04c4173 + uses: multiversx/mx-sc-actions/.github/workflows/contracts.yml@447422c7affe6670871444793f20cbaafbe9d71e with: rust-toolchain: nightly-2023-12-11 path-to-sc-meta: framework/meta From 2d720bf148e6b9e8e0d89362b68dcdfc7eb2d7d3 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 20 Mar 2024 22:12:35 +0200 Subject: [PATCH 115/461] proxy-paths in sc-config.toml --- .../adder/interact/src/basic_interact.rs | 8 ++--- contracts/examples/adder/mxsc-template.toml | 1 + contracts/examples/adder/sc-config.toml | 2 ++ contracts/examples/adder/src/adder.rs | 2 +- .../src/{temp_proxy.rs => adder_proxy.rs} | 0 .../tests/adder_blackbox_chained_test.rs | 6 ++-- .../tests/adder_blackbox_legacy_proxy_test.rs | 2 +- .../adder/tests/adder_blackbox_test.rs | 6 ++-- framework/base/src/abi/type_abi_impl_basic.rs | 1 - .../meta/src/cli_args/cli_args_contract.rs | 21 ++--------- framework/meta/src/cmd/contract.rs | 4 +-- .../generate_proxy/proxy_crate_gen.rs | 13 ++----- .../contract/generate_proxy/proxy_gen_main.rs | 21 ++++++----- .../contract/sc_config/contract_variant.rs | 15 +++++++- .../sc_config/contract_variant_builder.rs | 35 +++++++++++++++---- .../cmd/contract/sc_config/sc_config_model.rs | 1 + .../cmd/contract/sc_config/sc_config_serde.rs | 4 +++ .../standalone/template/template_adjuster.rs | 9 +++++ 18 files changed, 90 insertions(+), 61 deletions(-) create mode 100644 contracts/examples/adder/sc-config.toml rename contracts/examples/adder/src/{temp_proxy.rs => adder_proxy.rs} (100%) diff --git a/contracts/examples/adder/interact/src/basic_interact.rs b/contracts/examples/adder/interact/src/basic_interact.rs index a5687aaede..57ab414d53 100644 --- a/contracts/examples/adder/interact/src/basic_interact.rs +++ b/contracts/examples/adder/interact/src/basic_interact.rs @@ -2,7 +2,7 @@ mod basic_interact_cli; mod basic_interact_config; mod basic_interact_state; -use adder::{temp_proxy, ProxyTrait}; +use adder::{adder_proxy, ProxyTrait}; use basic_interact_config::Config; use basic_interact_state::State; use clap::Parser; @@ -102,7 +102,7 @@ impl AdderInteract { .interactor .tx() .from(&self.wallet_address) - .typed(temp_proxy::AdderProxy) + .typed(adder_proxy::AdderProxy) .init(0u32) .code(&self.adder_code) .with_result(WithRawTxResponse(|response| { @@ -181,7 +181,7 @@ impl AdderInteract { .tx() .from(&self.wallet_address) .to(self.state.adder().to_address()) - .typed(temp_proxy::AdderProxy) + .typed(adder_proxy::AdderProxy) .add(value) .prepare_async() .run() @@ -195,7 +195,7 @@ impl AdderInteract { .interactor .query() .to(self.state.adder().to_address()) - .typed(temp_proxy::AdderProxy) + .typed(adder_proxy::AdderProxy) .sum() .returns(ReturnsSimilar::::new()) .prepare_async() diff --git a/contracts/examples/adder/mxsc-template.toml b/contracts/examples/adder/mxsc-template.toml index 341c2d6cf5..490557cc50 100644 --- a/contracts/examples/adder/mxsc-template.toml +++ b/contracts/examples/adder/mxsc-template.toml @@ -14,6 +14,7 @@ files_include = [ "tests", "Cargo.toml", "README.md", + "sc-config.toml", "multiversx.json", "interact/Cargo.toml", "interact/config.toml", diff --git a/contracts/examples/adder/sc-config.toml b/contracts/examples/adder/sc-config.toml new file mode 100644 index 0000000000..702f7844e9 --- /dev/null +++ b/contracts/examples/adder/sc-config.toml @@ -0,0 +1,2 @@ +[settings] +proxy-paths = ["src/adder_proxy.rs"] diff --git a/contracts/examples/adder/src/adder.rs b/contracts/examples/adder/src/adder.rs index b9f5fe86fe..307f4112f5 100644 --- a/contracts/examples/adder/src/adder.rs +++ b/contracts/examples/adder/src/adder.rs @@ -2,7 +2,7 @@ use multiversx_sc::imports::*; -pub mod temp_proxy; +pub mod adder_proxy; /// One of the simplest smart contracts possible, /// it holds a single variable in storage, which anyone can increment. diff --git a/contracts/examples/adder/src/temp_proxy.rs b/contracts/examples/adder/src/adder_proxy.rs similarity index 100% rename from contracts/examples/adder/src/temp_proxy.rs rename to contracts/examples/adder/src/adder_proxy.rs diff --git a/contracts/examples/adder/tests/adder_blackbox_chained_test.rs b/contracts/examples/adder/tests/adder_blackbox_chained_test.rs index 8d3c51c11c..6060ad3859 100644 --- a/contracts/examples/adder/tests/adder_blackbox_chained_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_chained_test.rs @@ -27,7 +27,7 @@ fn adder_blackbox_chained() { ) .chain_deploy(|tx| { tx.from(AddressExpr("owner")) - .typed(temp_proxy::AdderProxy) + .typed(adder_proxy::AdderProxy) .init(5u32) .code(MxscExpr("output/adder.mxsc.json")) .with_result(WithResultNewAddress::new(|new_address| { @@ -36,7 +36,7 @@ fn adder_blackbox_chained() { }) .chain_query(|tx| { tx.to(ScExpr("adder")) - .typed(temp_proxy::AdderProxy) + .typed(adder_proxy::AdderProxy) .sum() .with_result(WithResultSimilar::new(|value: BigUint| { assert_eq!(value, BigUint::from(5u32)); @@ -45,7 +45,7 @@ fn adder_blackbox_chained() { .chain_call(|tx| { tx.from(AddressExpr("owner")) .to(ScExpr("adder")) - .typed(temp_proxy::AdderProxy) + .typed(adder_proxy::AdderProxy) .add(3u32) .with_result(WithRawTxResponse(|response| { assert!(response.tx_error.is_success()); diff --git a/contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs b/contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs index ddd131905e..3e7030a3c0 100644 --- a/contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs @@ -35,7 +35,7 @@ fn adder_blackbox_legacy_proxy() { world .tx() .from(OWNER) - .typed(temp_proxy::AdderProxy) + .typed(adder_proxy::AdderProxy) .init(5u32) .code(CODE_EXPR) .with_result(WithResultNewAddress::new(|new_address| { diff --git a/contracts/examples/adder/tests/adder_blackbox_test.rs b/contracts/examples/adder/tests/adder_blackbox_test.rs index ffcf7fb81f..4a09e4117d 100644 --- a/contracts/examples/adder/tests/adder_blackbox_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_test.rs @@ -33,7 +33,7 @@ fn adder_blackbox() { world .tx() .from(OWNER) - .typed(temp_proxy::AdderProxy) + .typed(adder_proxy::AdderProxy) .init(5u32) .code(CODE_EXPR) .with_result(WithResultNewAddress::new(|new_address| { @@ -44,7 +44,7 @@ fn adder_blackbox() { let value = world .query() .to(SC_ADDER) - .typed(temp_proxy::AdderProxy) + .typed(adder_proxy::AdderProxy) .sum() .returns(ReturnsSimilar::::new()) .run(); @@ -54,7 +54,7 @@ fn adder_blackbox() { .tx() .from(OWNER) .to(SC_ADDER) - .typed(temp_proxy::AdderProxy) + .typed(adder_proxy::AdderProxy) .add(1u32) .with_result(WithRawTxResponse(|response| { assert!(response.tx_error.is_success()); diff --git a/framework/base/src/abi/type_abi_impl_basic.rs b/framework/base/src/abi/type_abi_impl_basic.rs index 8a2bb41c94..f2e6586e2f 100644 --- a/framework/base/src/abi/type_abi_impl_basic.rs +++ b/framework/base/src/abi/type_abi_impl_basic.rs @@ -164,7 +164,6 @@ impl TypeAbi for Option { format!("Option<{}>", T::type_name()) } - fn type_name_rust() -> TypeName { format!("Option<{}>", T::type_name_rust()) } diff --git a/framework/meta/src/cli_args/cli_args_contract.rs b/framework/meta/src/cli_args/cli_args_contract.rs index 37cda6afdc..e05146a9bc 100644 --- a/framework/meta/src/cli_args/cli_args_contract.rs +++ b/framework/meta/src/cli_args/cli_args_contract.rs @@ -71,7 +71,7 @@ pub enum ContractCliAction { name = "proxy", about = "Generates a proxy, based on the contract ABI." )] - GenerateProxies(GenerateProxyArgs), + GenerateProxies, } impl CliArgsToRaw for ContractCliAction { @@ -103,9 +103,8 @@ impl CliArgsToRaw for ContractCliAction { raw.push("snippets".to_string()); raw.append(&mut args.to_raw()); }, - ContractCliAction::GenerateProxies(args) => { + ContractCliAction::GenerateProxies => { raw.push("proxy".to_string()); - raw.append(&mut args.to_raw()); }, } raw @@ -128,19 +127,3 @@ impl CliArgsToRaw for GenerateSnippetsArgs { raw } } -#[derive(Default, Clone, PartialEq, Eq, Debug, Args)] -pub struct GenerateProxyArgs { - /// Override TxProxy project if it already exists. - #[arg(long, verbatim_doc_comment)] - pub overwrite: bool, -} - -impl CliArgsToRaw for GenerateProxyArgs { - fn to_raw(&self) -> Vec { - let mut raw = Vec::new(); - if self.overwrite { - raw.push("--overwrite".to_string()); - } - raw - } -} diff --git a/framework/meta/src/cmd/contract.rs b/framework/meta/src/cmd/contract.rs index 2f7e4b7bb7..8011d3f2e3 100644 --- a/framework/meta/src/cmd/contract.rs +++ b/framework/meta/src/cmd/contract.rs @@ -32,9 +32,7 @@ pub fn cli_main() { ContractCliAction::GenerateSnippets(gs_arg) => { meta_config_opt.generate_rust_snippets(&gs_arg) }, - ContractCliAction::GenerateProxies(arg) => { - meta_config_opt.generate_rust_proxies_struct(&arg) - }, + ContractCliAction::GenerateProxies => meta_config_opt.generate_proxy(), } } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_crate_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_crate_gen.rs index b5e8c40013..8b5960577d 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_crate_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_crate_gen.rs @@ -1,15 +1,8 @@ use std::fs::File; #[must_use] -pub(crate) fn create_file(proxies_file_name: &str, overwrite: bool) -> File { - let file = format!("../{proxies_file_name}"); +pub(crate) fn create_file(proxy_file_name: &str) -> File { + let file = format!("../{proxy_file_name}"); - if overwrite { - File::create(&file).expect("could not write proxy file") - } else { - match File::options().create_new(true).write(true).open(&file) { - Ok(f) => f, - Err(_) => panic!("{file} file already exists, --overwrite option was not provided"), - } - } + File::create(file).expect("could not write proxy file") } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs index 3510eb640a..de47b3bc2d 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs @@ -2,8 +2,6 @@ use std::fs::File; use multiversx_sc::abi::ContractAbi; -use crate::cli_args::GenerateProxyArgs; - use super::{ super::meta_config::MetaConfig, proxy_crate_gen::create_file, @@ -13,19 +11,26 @@ use super::{ }, }; -const PROXIES_SOURCE_FILE_NAME: &str = "/output/proxy.rs"; +const OUTPUT_PROXY_PATH: &str = "/output/proxy.rs"; impl MetaConfig { - pub fn generate_rust_proxies_struct(&self, args: &GenerateProxyArgs) { - let file = create_file(PROXIES_SOURCE_FILE_NAME, args.overwrite); - write_proxies_to_file(file, self.original_contract_abi.clone()); + pub fn generate_proxy(&self) { + write_proxy_with_explicit_path(OUTPUT_PROXY_PATH, &self.original_contract_abi); + for path in &self.sc_config.proxy_paths { + write_proxy_with_explicit_path(path, &self.original_contract_abi); + } } } -fn write_proxies_to_file(mut file: File, abi: ContractAbi) { +fn write_proxy_with_explicit_path(path: &str, abi: &ContractAbi) { + let file = create_file(path); + write_proxy_to_file(file, abi); +} + +fn write_proxy_to_file(mut file: File, abi: &ContractAbi) { write_header(&mut file); write_struct_template(&mut file, &abi.name); write_impl_for_tx_proxy(&mut file, &abi.name); write_struct_tx_proxy_methods(&mut file, &abi.name); - write_content(&mut file, abi); + write_content(&mut file, abi.clone()); } diff --git a/framework/meta/src/cmd/contract/sc_config/contract_variant.rs b/framework/meta/src/cmd/contract/sc_config/contract_variant.rs index 4467705eef..feab3976cf 100644 --- a/framework/meta/src/cmd/contract/sc_config/contract_variant.rs +++ b/framework/meta/src/cmd/contract/sc_config/contract_variant.rs @@ -1,6 +1,6 @@ use std::path::PathBuf; -use super::ContractVariantSettings; +use super::{contract_variant_builder::default_wasm_crate_name, ContractVariantSettings}; use crate::cli_args::BuildArgs; use multiversx_sc::abi::ContractAbi; @@ -35,6 +35,19 @@ pub struct ContractVariant { } impl ContractVariant { + pub fn default_from_abi(abi: &ContractAbi) -> Self { + let default_contract_config_name = abi.build_info.contract_crate.name.to_string(); + let wasm_crate_name = default_wasm_crate_name(&default_contract_config_name); + ContractVariant { + main: true, + settings: ContractVariantSettings::default(), + contract_id: default_contract_config_name.clone(), + contract_name: default_contract_config_name, + wasm_crate_name, + abi: abi.clone(), + } + } + pub fn public_name_snake_case(&self) -> String { self.contract_name.replace('-', "_") } diff --git a/framework/meta/src/cmd/contract/sc_config/contract_variant_builder.rs b/framework/meta/src/cmd/contract/sc_config/contract_variant_builder.rs index 2d8b9dd54e..c2dc1058f5 100644 --- a/framework/meta/src/cmd/contract/sc_config/contract_variant_builder.rs +++ b/framework/meta/src/cmd/contract/sc_config/contract_variant_builder.rs @@ -200,7 +200,7 @@ fn build_contract_abi(builder: ContractVariantBuilder, original_abi: &ContractAb } } -fn default_wasm_crate_name(contract_name: &str) -> String { +pub(crate) fn default_wasm_crate_name(contract_name: &str) -> String { format!("{contract_name}-wasm") } @@ -236,7 +236,7 @@ fn set_main_contract_flag( ) } else { let first_contract = contracts.get_mut(0).unwrap_or_else(|| { - panic!("Cannot set default contract because no optput contract was specified.") + panic!("Cannot set default contract because no output contract was specified.") }); first_contract.main = true; } @@ -263,22 +263,42 @@ impl ScConfig { .iter() .map(ContractVariantBuilder::map_from_config) .collect(); - collect_unlabelled_endpoints(&mut contract_builders, original_abi); - collect_labelled_endpoints(&mut contract_builders, original_abi); - collect_add_endpoints(&mut contract_builders, original_abi); - process_labels_for_contracts(&mut contract_builders, &config.labels_for_contracts); + collect_and_process_endpoints( + &mut contract_builders, + original_abi, + &config.labels_for_contracts, + ); + let mut contracts: Vec = contract_builders .into_values() .map(|builder| build_contract(builder, original_abi)) .collect(); + if contracts.is_empty() { + contracts.push(ContractVariant::default_from_abi(original_abi)); + } set_main_contract_flag(&mut contracts, &config.settings.main); validate_contract_variants(&contracts); + let default_contract_config_name = config.settings.main.clone().unwrap_or_default(); ScConfig { - default_contract_config_name: config.settings.main.clone().unwrap_or_default(), + default_contract_config_name, contracts, + proxy_paths: config.settings.proxy_paths.clone(), } } +} + +fn collect_and_process_endpoints( + contract_builders: &mut HashMap, + original_abi: &ContractAbi, + labels_for_contracts: &HashMap>, +) { + collect_unlabelled_endpoints(contract_builders, original_abi); + collect_labelled_endpoints(contract_builders, original_abi); + collect_add_endpoints(contract_builders, original_abi); + process_labels_for_contracts(contract_builders, labels_for_contracts); +} +impl ScConfig { /// Provides the config for the cases where no `multicontract.toml` file is available. /// /// The default configuration contains a single main contract, with all endpoints. @@ -295,6 +315,7 @@ impl ScConfig { wasm_crate_name, abi: original_abi.clone(), }], + proxy_paths: Vec::new(), } } diff --git a/framework/meta/src/cmd/contract/sc_config/sc_config_model.rs b/framework/meta/src/cmd/contract/sc_config/sc_config_model.rs index 7f9ddbf5a9..f1d579a1a9 100644 --- a/framework/meta/src/cmd/contract/sc_config/sc_config_model.rs +++ b/framework/meta/src/cmd/contract/sc_config/sc_config_model.rs @@ -15,6 +15,7 @@ pub const SC_CONFIG_FILE_NAMES: &[&str] = &["sc-config.toml", "multicontract.tom pub struct ScConfig { pub default_contract_config_name: String, pub contracts: Vec, + pub proxy_paths: Vec, } impl ScConfig { diff --git a/framework/meta/src/cmd/contract/sc_config/sc_config_serde.rs b/framework/meta/src/cmd/contract/sc_config/sc_config_serde.rs index 4813fcfb09..4dd51a1a23 100644 --- a/framework/meta/src/cmd/contract/sc_config/sc_config_serde.rs +++ b/framework/meta/src/cmd/contract/sc_config/sc_config_serde.rs @@ -62,6 +62,10 @@ pub struct ContractVariantSerde { #[serde(deny_unknown_fields)] pub struct MultiContractGeneralSettingsSerde { pub main: Option, + + #[serde(default)] + #[serde(rename = "proxy-paths")] + pub proxy_paths: Vec, } #[derive(Deserialize, Default, Debug, Clone, PartialEq, Eq)] diff --git a/framework/meta/src/cmd/standalone/template/template_adjuster.rs b/framework/meta/src/cmd/standalone/template/template_adjuster.rs index 1182463c8f..c841c5d1f7 100644 --- a/framework/meta/src/cmd/standalone/template/template_adjuster.rs +++ b/framework/meta/src/cmd/standalone/template/template_adjuster.rs @@ -104,6 +104,8 @@ impl TemplateAdjuster { let old_name = self.metadata.name.to_case(Case::Snake); let new_package = format!("{new_name}::"); let old_package = format!("{old_name}::"); + let new_proxy_mod = format!("{new_name}_proxy"); + let old_proxy_mod = format!("{old_name}_proxy"); replace_in_files( &self.target.contract_dir(), @@ -111,8 +113,15 @@ impl TemplateAdjuster { &[ Query::substring(old_trait, &new_trait), Query::substring(&old_package, &new_package), + Query::substring(&old_proxy_mod, &new_proxy_mod), ][..], ); + + replace_in_files( + &self.target.contract_dir(), + "*sc-config.toml", + &[Query::substring(&old_proxy_mod, &new_proxy_mod)][..], + ); } fn rename_in_cargo_toml_root(&self) { From 88eb1a4d09bb2155f1fad23bc60fff7ae83ae78b Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 21 Mar 2024 01:33:09 +0200 Subject: [PATCH 116/461] proxy gen - multiple outputs --- .../generate_proxy/proxy_sc_functions_gen.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs index d1909b25c6..8198bbe325 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs @@ -210,6 +210,16 @@ fn parse_and_write_outputs(file: &mut File, outputs: Vec) { let adjusted = adjust_type_name(&outputs[0].type_names.rust); write!(file, "{adjusted}").unwrap(); }, - _ => panic!("multiple outputs not yet supported"), + _ => { + write!(file, "MultiValue{}<", outputs.len()).unwrap(); + for (i, output) in outputs.iter().enumerate() { + if i > 0 { + write!(file, ", ").unwrap(); + } + let adjusted = adjust_type_name(&output.type_names.rust); + write!(file, "{adjusted}").unwrap(); + } + write!(file, ">").unwrap(); + }, } } From 2488db86bd4bf36f1e9941a016704f7d65ffc552 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 21 Mar 2024 01:57:59 +0200 Subject: [PATCH 117/461] proxy gen - type fixes --- framework/base/src/abi/type_abi_impl_basic.rs | 24 +++++++++++++++++-- .../base/src/abi/type_abi_impl_codec_multi.rs | 15 +++++++++++- framework/base/src/types/heap/boxed_bytes.rs | 4 ++++ framework/base/src/types/heap/h256.rs | 4 ++++ framework/base/src/types/heap/h256_address.rs | 4 ++++ .../types/managed/wrapped/token_identifier.rs | 4 ++++ 6 files changed, 52 insertions(+), 3 deletions(-) diff --git a/framework/base/src/abi/type_abi_impl_basic.rs b/framework/base/src/abi/type_abi_impl_basic.rs index f2e6586e2f..00452263cd 100644 --- a/framework/base/src/abi/type_abi_impl_basic.rs +++ b/framework/base/src/abi/type_abi_impl_basic.rs @@ -204,8 +204,7 @@ macro_rules! tuple_impls { $($name: TypeAbi,)+ { fn type_name() -> TypeName { - let mut repr = TypeName::from("tuple"); - repr.push_str("<"); + let mut repr = TypeName::from("tuple<"); $( if $n > 0 { repr.push(','); @@ -216,6 +215,18 @@ macro_rules! tuple_impls { repr } + fn type_name_rust() -> TypeName { + let mut repr = TypeName::from("("); + $( + if $n > 0 { + repr.push_str(", "); + } + repr.push_str($name::type_name_rust().as_str()); + )+ + repr.push(')'); + repr + } + fn provide_type_descriptions(accumulator: &mut TDC) { $( $name::provide_type_descriptions(accumulator); @@ -255,6 +266,15 @@ impl TypeAbi for [T; N] { repr } + fn type_name_rust() -> TypeName { + let mut repr = TypeName::from("["); + repr.push_str(T::type_name_rust().as_str()); + repr.push_str("; "); + repr.push_str(N.to_string().as_str()); + repr.push(']'); + repr + } + fn provide_type_descriptions(accumulator: &mut TDC) { T::provide_type_descriptions(accumulator); } diff --git a/framework/base/src/abi/type_abi_impl_codec_multi.rs b/framework/base/src/abi/type_abi_impl_codec_multi.rs index 9d34d8b5f9..9d3cce98db 100644 --- a/framework/base/src/abi/type_abi_impl_codec_multi.rs +++ b/framework/base/src/abi/type_abi_impl_codec_multi.rs @@ -12,7 +12,7 @@ impl TypeAbi for crate::codec::multi_types::MultiValueVec { } fn type_name_rust() -> TypeName { - format!("MultiValueVec<$API, {}>", T::type_name_rust()) + format!("MultiValueVec<{}>", T::type_name_rust()) } fn provide_type_descriptions(accumulator: &mut TDC) { @@ -76,6 +76,19 @@ macro_rules! multi_arg_impls { repr } + fn type_name_rust() -> TypeName { + let mut repr = TypeName::from(stringify!($mval_struct)); + repr.push('<'); + $( + if $n > 0 { + repr.push_str(", "); + } + repr.push_str($name::type_name_rust().as_str()); + )+ + repr.push('>'); + repr + } + fn provide_type_descriptions(accumulator: &mut TDC) { $( $name::provide_type_descriptions(accumulator); diff --git a/framework/base/src/types/heap/boxed_bytes.rs b/framework/base/src/types/heap/boxed_bytes.rs index 24c08d1199..1b7c2b35e7 100644 --- a/framework/base/src/types/heap/boxed_bytes.rs +++ b/framework/base/src/types/heap/boxed_bytes.rs @@ -244,6 +244,10 @@ impl TypeAbi for BoxedBytes { fn type_name() -> TypeName { "bytes".into() } + + fn type_name_rust() -> TypeName { + "BoxedBytes".into() + } } //////////////////////////////////////////////////////////////////////////////// diff --git a/framework/base/src/types/heap/h256.rs b/framework/base/src/types/heap/h256.rs index 5dd0a2786b..a097b0d08d 100644 --- a/framework/base/src/types/heap/h256.rs +++ b/framework/base/src/types/heap/h256.rs @@ -228,6 +228,10 @@ impl TypeAbi for H256 { fn type_name() -> TypeName { "H256".into() } + + fn type_name_rust() -> TypeName { + "H256".into() + } } #[cfg(test)] diff --git a/framework/base/src/types/heap/h256_address.rs b/framework/base/src/types/heap/h256_address.rs index e4c9b055d2..5e4712df7a 100644 --- a/framework/base/src/types/heap/h256_address.rs +++ b/framework/base/src/types/heap/h256_address.rs @@ -206,6 +206,10 @@ impl TypeAbi for Address { fn type_name() -> TypeName { "Address".into() } + + fn type_name_rust() -> TypeName { + "Address".into() + } } #[cfg(test)] diff --git a/framework/base/src/types/managed/wrapped/token_identifier.rs b/framework/base/src/types/managed/wrapped/token_identifier.rs index 329b3f2b3d..2c8423b3a6 100644 --- a/framework/base/src/types/managed/wrapped/token_identifier.rs +++ b/framework/base/src/types/managed/wrapped/token_identifier.rs @@ -171,6 +171,10 @@ impl TypeAbi for TokenIdentifier { fn type_name() -> TypeName { "TokenIdentifier".into() } + + fn type_name_rust() -> TypeName { + "TokenIdentifier".into() + } } impl SCDisplay for TokenIdentifier { From f86de72ee50bb2072d10fb39b1404889b18fdffc Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 21 Mar 2024 01:58:23 +0200 Subject: [PATCH 118/461] abi tester proxy - initial commit --- .../feature-tests/abi-tester/sc-config.toml | 1 + .../feature-tests/abi-tester/src/abi_proxy.rs | 908 ++++++++++++++++++ .../abi-tester/src/abi_tester.rs | 1 + 3 files changed, 910 insertions(+) create mode 100644 contracts/feature-tests/abi-tester/src/abi_proxy.rs diff --git a/contracts/feature-tests/abi-tester/sc-config.toml b/contracts/feature-tests/abi-tester/sc-config.toml index 5a61f68d47..20d63c86b8 100644 --- a/contracts/feature-tests/abi-tester/sc-config.toml +++ b/contracts/feature-tests/abi-tester/sc-config.toml @@ -1,6 +1,7 @@ # Abi-tester multi-contract config, used for testing. [settings] +proxy-paths = ["src/abi_proxy.rs"] main = "main" [contracts.main] diff --git a/contracts/feature-tests/abi-tester/src/abi_proxy.rs b/contracts/feature-tests/abi-tester/src/abi_proxy.rs new file mode 100644 index 0000000000..968e8fd345 --- /dev/null +++ b/contracts/feature-tests/abi-tester/src/abi_proxy.rs @@ -0,0 +1,908 @@ +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(clippy::all)] + +use multiversx_sc::imports::*; + +pub struct AbiTesterProxy; + +impl TxProxyTrait for AbiTesterProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = AbiTesterProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + AbiTesterProxyMethods { wrapped_tx: tx } + } +} + +pub struct AbiTesterProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +impl AbiTesterProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + /// Contract constructor. + pub fn init< + Arg0: CodecInto, + Arg1: CodecInto, + >( + self, + _constructor_arg_1: Arg0, + _constructor_arg_2: Arg1, + ) -> Tx< + Env, + From, + (), + (), + Gas, + DeployCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_deploy() + .argument(&_constructor_arg_1) + .argument(&_constructor_arg_2) + .original_result() + } + +} +impl AbiTesterProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + /// Example endpoint docs. + pub fn echo_abi_test_type< + Arg0: CodecInto, + >( + self, + att: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("echo_abi_test_type") + .argument(&att) + .original_result() + } + + pub fn echo_enum< + Arg0: CodecInto, + >( + self, + e: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("echo_enum") + .argument(&e) + .original_result() + } + + pub fn take_managed_type< + Arg0: CodecInto>, + >( + self, + _arg: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("take_managed_type") + .argument(&_arg) + .original_result() + } + + pub fn multi_result_3( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>, + > { + self.wrapped_tx + .raw_call() + .function_name("multi_result_3") + .original_result() + } + + pub fn multi_result_4( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>, + > { + self.wrapped_tx + .raw_call() + .function_name("multi_result_4") + .original_result() + } + + pub fn var_args< + Arg0: CodecInto, + Arg1: CodecInto>>, + >( + self, + _simple_arg: Arg0, + _var_args: Arg1, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("var_args") + .argument(&_simple_arg) + .argument(&_var_args) + .original_result() + } + + pub fn multi_result_vec( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>>, + > { + self.wrapped_tx + .raw_call() + .function_name("multi_result_vec") + .original_result() + } + + pub fn optional_arg< + Arg0: CodecInto, + Arg1: CodecInto>, + >( + self, + _simple_arg: Arg0, + _opt_args: Arg1, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("optional_arg") + .argument(&_simple_arg) + .argument(&_opt_args) + .original_result() + } + + pub fn optional_result( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>, + > { + self.wrapped_tx + .raw_call() + .function_name("optional_result") + .original_result() + } + + pub fn address_vs_h256< + Arg0: CodecInto
, + Arg1: CodecInto, + >( + self, + address: Arg0, + h256: Arg1, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>, + > { + self.wrapped_tx + .raw_call() + .function_name("address_vs_h256") + .argument(&address) + .argument(&h256) + .original_result() + } + + pub fn managed_address_vs_byte_array< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + address: Arg0, + byte_array: Arg1, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, ManagedByteArray>>, + > { + self.wrapped_tx + .raw_call() + .function_name("managed_address_vs_byte_array") + .argument(&address) + .argument(&byte_array) + .original_result() + } + + pub fn esdt_local_role( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("esdt_local_role") + .original_result() + } + + pub fn esdt_token_payment( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>, + > { + self.wrapped_tx + .raw_call() + .function_name("esdt_token_payment") + .original_result() + } + + pub fn esdt_token_data( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>, + > { + self.wrapped_tx + .raw_call() + .function_name("esdt_token_data") + .original_result() + } + + pub fn sample_storage_mapper( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("sample_storage_mapper") + .original_result() + } + + pub fn item_for_vec( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>, + > { + self.wrapped_tx + .raw_call() + .function_name("item_for_vec") + .original_result() + } + + pub fn item_for_array_vec( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>, + > { + self.wrapped_tx + .raw_call() + .function_name("item_for_array_vec") + .original_result() + } + + pub fn item_for_managed_vec( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>, + > { + self.wrapped_tx + .raw_call() + .function_name("item_for_managed_vec") + .original_result() + } + + pub fn item_for_array< + Arg0: CodecInto<[OnlyShowsUpAsNestedInArray; 5]>, + >( + self, + _array: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("item_for_array") + .argument(&_array) + .original_result() + } + + pub fn item_for_box( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker, + > { + self.wrapped_tx + .raw_call() + .function_name("item_for_box") + .original_result() + } + + pub fn item_for_boxed_slice( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<&[OnlyShowsUpAsNestedInBoxedSlice]>, + > { + self.wrapped_tx + .raw_call() + .function_name("item_for_boxed_slice") + .original_result() + } + + pub fn item_for_ref< + Arg0: CodecInto, + >( + self, + _ref: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("item_for_ref") + .argument(&_ref) + .original_result() + } + + pub fn item_for_slice< + Arg0: CodecInto<&[OnlyShowsUpAsNestedInSlice]>, + >( + self, + _ref: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("item_for_slice") + .argument(&_ref) + .original_result() + } + + pub fn item_for_option( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>, + > { + self.wrapped_tx + .raw_call() + .function_name("item_for_option") + .original_result() + } + + pub fn payable_egld( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("payable_egld") + .original_result() + } + + pub fn payable_some_token( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("payable_some_token") + .original_result() + } + + pub fn payable_any_token( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("payable_any_token") + .original_result() + } + + pub fn external_view( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("external_view") + .original_result() + } + + pub fn label_a( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("label_a") + .original_result() + } + + pub fn label_b( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("label_b") + .original_result() + } + +} +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub struct OnlyShowsUpInConstructor +{ + pub something: (), +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub struct AbiTestType +{ + pub nested: OnlyShowsUpAsNested01, + pub next: Option, + pub tuple_madness: (OnlyShowsUpAsNested02, Option), +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub struct OnlyShowsUpAsNested01 +{ +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub struct OnlyShowsUpAsNested02 +{ + pub something: [u8; 0], +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub enum AbiEnum { + Nothing, + Something, + SomethingMore, + SomeStruct, +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub struct OnlyShowsUpAsNested08 +{ +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub struct OnlyShowsUpAsNested09 +{ +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub struct AbiManagedType +where + Api: ManagedTypeApi, +{ + pub big_uint: BigUint, + pub integer: i32, + pub managed_buffer: ManagedBuffer, +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub struct OnlyShowsUpAsNested03 +{ +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub struct OnlyShowsUpAsNested04 +{ +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub struct OnlyShowsUpAsNested05 +{ +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub struct OnlyShowsUpAsNested06 +{ +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub struct OnlyShowsUpAsNested07 +{ +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub enum EsdtLocalRole { + None, + Mint, + Burn, + NftCreate, + NftAddQuantity, + NftBurn, + NftAddUri, + NftUpdateAttributes, + Transfer, +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub struct EsdtTokenPayment +where + Api: ManagedTypeApi, +{ + pub token_identifier: multiversx_sc::types::managed::wrapped::token_identifier::TokenIdentifier, + pub token_nonce: u64, + pub amount: BigUint, +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub struct EsdtTokenData +where + Api: ManagedTypeApi, +{ + pub token_type: EsdtTokenType, + pub amount: BigUint, + pub frozen: bool, + pub hash: ManagedBuffer, + pub name: ManagedBuffer, + pub attributes: ManagedBuffer, + pub creator: ManagedAddress, + pub royalties: BigUint, + pub uris: ManagedVec>, +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub enum EsdtTokenType { + Fungible, + NonFungible, + SemiFungible, + Meta, + Invalid, +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub struct OnlyShowsUpAsNestedInSingleValueMapper +{ +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub struct OnlyShowsUpAsNestedInVec +{ +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub struct OnlyShowsUpAsNestedInArrayVec +{ +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub struct AbiManagedVecItem +{ + pub value1: u32, + pub value2: u32, +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub struct OnlyShowsUpAsNestedInArray +{ +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub struct OnlyShowsUpAsNestedInBox +{ +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub struct OnlyShowsUpAsNestedInBoxedSlice +{ +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub struct OnlyShowsUpAsNestedInRef +{ +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub struct OnlyShowsUpAsNestedInSlice +{ +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub struct OnlyShowsUpAsNestedInOption +{ +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub struct OnlyShowsUpInEsdtAttr +{ + pub field: OnlyShowsUpAsNested10, +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub struct OnlyShowsUpAsNested10 +{ +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +pub enum ExplicitDiscriminant { + Zero, + Thirty, + Twelve, + Fifty, + FiftyOne, +} + +use multiversx_sc::derive_imports::*; + +#[derive(TypeAbi)] +#[derive(u8)] +pub enum ExplicitDiscriminantMixed { + Zero, + Unit, + Tuple, + Five, + Struct, +} + diff --git a/contracts/feature-tests/abi-tester/src/abi_tester.rs b/contracts/feature-tests/abi-tester/src/abi_tester.rs index 15fe5f3c4a..48976f5980 100644 --- a/contracts/feature-tests/abi-tester/src/abi_tester.rs +++ b/contracts/feature-tests/abi-tester/src/abi_tester.rs @@ -3,6 +3,7 @@ multiversx_sc::imports!(); mod abi_enum; +// pub mod abi_proxy; mod abi_test_type; mod only_nested; From b682d58d076f9821d3fbc5575893746f9df856a3 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 21 Mar 2024 02:22:44 +0200 Subject: [PATCH 119/461] proxy gen - clean up imports --- framework/base/src/lib.rs | 5 +++++ .../src/types/managed/wrapped/token_identifier.rs | 2 +- .../contract/generate_proxy/proxy_template_gen.rs | 14 +++----------- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/framework/base/src/lib.rs b/framework/base/src/lib.rs index 7f2a8b1c2b..7910499169 100644 --- a/framework/base/src/lib.rs +++ b/framework/base/src/lib.rs @@ -76,3 +76,8 @@ pub mod derive_imports { derive::{ManagedVecItem, TypeAbi}, }; } + +/// Conveniently groups all imports required for generated proxies. +pub mod proxy_imports { + pub use crate::{derive_imports::*, imports::*}; +} diff --git a/framework/base/src/types/managed/wrapped/token_identifier.rs b/framework/base/src/types/managed/wrapped/token_identifier.rs index 2c8423b3a6..af113dbc4e 100644 --- a/framework/base/src/types/managed/wrapped/token_identifier.rs +++ b/framework/base/src/types/managed/wrapped/token_identifier.rs @@ -173,7 +173,7 @@ impl TypeAbi for TokenIdentifier { } fn type_name_rust() -> TypeName { - "TokenIdentifier".into() + "TokenIdentifier<$API>".into() } } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs index 5ae0202317..054f977b84 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs @@ -11,15 +11,13 @@ const PREFIX_AUTO_GENERATED: &str = "/////////////////////////////////////////// //////////////////////////////////////////////////// "; -const IMPORTS: &str = "#![allow(clippy::all)] +const PRELUDE: &str = "#![allow(clippy::all)] -use multiversx_sc::imports::*;"; - -const DERIVE_IMPORTS: &str = "use multiversx_sc::derive_imports::*;"; +use multiversx_sc::proxy_imports::*;"; pub(crate) fn write_header(file: &mut File) { writeln!(file, "{PREFIX_AUTO_GENERATED}").unwrap(); - writeln!(file, r#"{IMPORTS}"#).unwrap(); + writeln!(file, r#"{PRELUDE}"#).unwrap(); write_newline(file); } @@ -85,7 +83,6 @@ where } fn write_enum(file: &mut File, type_description: &TypeDescription) { - write_derive_imports(file); write_macro_attributes(file, &type_description.macro_attributes); writeln!(file, r#"pub enum {} {{"#, type_description.names.abi).unwrap(); @@ -100,7 +97,6 @@ fn write_enum(file: &mut File, type_description: &TypeDescription) { fn write_struct(file: &mut File, type_description: &TypeDescription) { let struct_name = type_description.names.rust.replace("$API", "Api"); - write_derive_imports(file); write_macro_attributes(file, &type_description.macro_attributes); writeln!(file, r#"pub struct {}"#, struct_name).unwrap(); @@ -140,7 +136,3 @@ fn write_macro_attributes(file: &mut File, macro_attributes: &[String]) { } } -fn write_derive_imports(file: &mut File) { - writeln!(file, "{DERIVE_IMPORTS}").unwrap(); - write_newline(file); -} From 8ee46b9903d56ccf714d958c2d6c4dcdba99b083 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 21 Mar 2024 03:20:06 +0200 Subject: [PATCH 120/461] proxy gen - derive fix --- .../feature-tests/abi-tester/src/abi_proxy.rs | 141 +++++------------- .../abi-tester/src/abi_test_type.rs | 9 +- .../abi-tester/src/only_nested.rs | 60 +++++--- framework/base/src/abi/type_abi_impl_basic.rs | 10 +- .../derive/src/parse/attributes/doc_attr.rs | 8 +- .../generate_proxy/proxy_template_gen.rs | 16 +- 6 files changed, 101 insertions(+), 143 deletions(-) diff --git a/contracts/feature-tests/abi-tester/src/abi_proxy.rs b/contracts/feature-tests/abi-tester/src/abi_proxy.rs index 968e8fd345..cbc0520f5a 100644 --- a/contracts/feature-tests/abi-tester/src/abi_proxy.rs +++ b/contracts/feature-tests/abi-tester/src/abi_proxy.rs @@ -4,7 +4,7 @@ #![allow(clippy::all)] -use multiversx_sc::imports::*; +use multiversx_sc::proxy_imports::*; pub struct AbiTesterProxy; @@ -449,7 +449,7 @@ where (), Gas, FunctionCall, - OriginalResultMarker, + OriginalResultMarker>, > { self.wrapped_tx .raw_call() @@ -466,7 +466,7 @@ where (), Gas, FunctionCall, - OriginalResultMarker<&[OnlyShowsUpAsNestedInBoxedSlice]>, + OriginalResultMarker>, > { self.wrapped_tx .raw_call() @@ -496,7 +496,7 @@ where } pub fn item_for_slice< - Arg0: CodecInto<&[OnlyShowsUpAsNestedInSlice]>, + Arg0: CodecInto>, >( self, _ref: Arg0, @@ -636,42 +636,32 @@ where } } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpInConstructor { pub something: (), } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct AbiTestType { pub nested: OnlyShowsUpAsNested01, - pub next: Option, - pub tuple_madness: (OnlyShowsUpAsNested02, Option), + pub next: Option>, + pub tuple_madness: (OnlyShowsUpAsNested02, Option>), } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested01 { } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested02 { pub something: [u8; 0], } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(TopEncode, TopDecode)] pub enum AbiEnum { Nothing, Something, @@ -679,23 +669,17 @@ pub enum AbiEnum { SomeStruct, } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested08 { } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested09 { } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct AbiManagedType where Api: ManagedTypeApi, @@ -705,44 +689,32 @@ where pub managed_buffer: ManagedBuffer, } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested03 { } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested04 { } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested05 { } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested06 { } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested07 { } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(TopEncode, TopDecode)] pub enum EsdtLocalRole { None, Mint, @@ -755,26 +727,22 @@ pub enum EsdtLocalRole { Transfer, } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(TopEncode, TopDecode)] pub struct EsdtTokenPayment where Api: ManagedTypeApi, { - pub token_identifier: multiversx_sc::types::managed::wrapped::token_identifier::TokenIdentifier, + pub token_identifier: TokenIdentifier, pub token_nonce: u64, pub amount: BigUint, } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(TopEncode, TopDecode)] pub struct EsdtTokenData where Api: ManagedTypeApi, { - pub token_type: EsdtTokenType, + pub token_type: self::EsdtTokenType, pub amount: BigUint, pub frozen: bool, pub hash: ManagedBuffer, @@ -785,9 +753,7 @@ where pub uris: ManagedVec>, } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(TopEncode, TopDecode)] pub enum EsdtTokenType { Fungible, NonFungible, @@ -796,96 +762,70 @@ pub enum EsdtTokenType { Invalid, } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInSingleValueMapper { } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInVec { } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInArrayVec { } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, ManagedVecItem)] pub struct AbiManagedVecItem { pub value1: u32, pub value2: u32, } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInArray { } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInBox { } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInBoxedSlice { } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInRef { } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInSlice { } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInOption { } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(TopEncode, TopDecode)] pub struct OnlyShowsUpInEsdtAttr { pub field: OnlyShowsUpAsNested10, } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested10 { } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] +#[derive(TopEncode, TopDecode)] pub enum ExplicitDiscriminant { Zero, Thirty, @@ -894,10 +834,7 @@ pub enum ExplicitDiscriminant { FiftyOne, } -use multiversx_sc::derive_imports::*; - -#[derive(TypeAbi)] -#[derive(u8)] +#[derive(TopEncode, TopDecode)] pub enum ExplicitDiscriminantMixed { Zero, Unit, diff --git a/contracts/feature-tests/abi-tester/src/abi_test_type.rs b/contracts/feature-tests/abi-tester/src/abi_test_type.rs index 2cc1fc4db4..b952146aa3 100644 --- a/contracts/feature-tests/abi-tester/src/abi_test_type.rs +++ b/contracts/feature-tests/abi-tester/src/abi_test_type.rs @@ -6,7 +6,8 @@ use multiversx_sc::{ multiversx_sc::derive_imports!(); /// Its only purpose is to test that the ABI generator works fine. -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct AbiTestType { /// This type should only appear here. pub nested: OnlyShowsUpAsNested01, @@ -20,7 +21,8 @@ pub struct AbiTestType { } /// Its only purpose is to test that the ABI generator works fine. -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct AbiManagedType { pub big_uint: BigUint, pub integer: i32, @@ -28,7 +30,8 @@ pub struct AbiManagedType { } /// Its only purpose is to test that the ABI generator works fine. -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi, ManagedVecItem)] +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, ManagedVecItem)] pub struct AbiManagedVecItem { pub value1: u32, pub value2: u32, diff --git a/contracts/feature-tests/abi-tester/src/only_nested.rs b/contracts/feature-tests/abi-tester/src/only_nested.rs index d1e19441d0..fe17c7e55e 100644 --- a/contracts/feature-tests/abi-tester/src/only_nested.rs +++ b/contracts/feature-tests/abi-tester/src/only_nested.rs @@ -1,85 +1,105 @@ multiversx_sc::derive_imports!(); /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpInConstructor { pub something: (), } /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested01; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested02 { pub something: [u8; 0], } /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested03(); /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested04; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested05; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested06; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested07; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested08; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested09; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested10; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInSingleValueMapper; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInVec; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInArrayVec; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInArray; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInBox; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInBoxedSlice; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInRef; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInSlice; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[derive(TypeAbi)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInOption; diff --git a/framework/base/src/abi/type_abi_impl_basic.rs b/framework/base/src/abi/type_abi_impl_basic.rs index 00452263cd..c14447b2ba 100644 --- a/framework/base/src/abi/type_abi_impl_basic.rs +++ b/framework/base/src/abi/type_abi_impl_basic.rs @@ -35,7 +35,7 @@ impl TypeAbi for Box { } fn type_name_rust() -> TypeName { - T::type_name_rust() + format!("Box<{}>", T::type_name_rust()) } fn provide_type_descriptions(accumulator: &mut TDC) { @@ -56,7 +56,8 @@ impl TypeAbi for &[T] { } fn type_name_rust() -> TypeName { - format!("&[{}]", T::type_name_rust()) + // we need to convert to an owned type + format!("Box<[{}]>", T::type_name_rust()) } fn provide_type_descriptions(accumulator: &mut TDC) { @@ -98,7 +99,7 @@ impl TypeAbi for Box<[T]> { } fn type_name_rust() -> TypeName { - <&[T]>::type_name_rust() + format!("Box<[{}]>", T::type_name_rust()) } fn provide_type_descriptions(accumulator: &mut TDC) { @@ -118,7 +119,8 @@ impl TypeAbi for &str { } fn type_name_rust() -> TypeName { - "&str".into() + // we need to convert to an owned type + "Box".into() } } diff --git a/framework/derive/src/parse/attributes/doc_attr.rs b/framework/derive/src/parse/attributes/doc_attr.rs index d9d3b22658..5c5ed4d41b 100644 --- a/framework/derive/src/parse/attributes/doc_attr.rs +++ b/framework/derive/src/parse/attributes/doc_attr.rs @@ -50,8 +50,12 @@ pub fn extract_macro_attributes(attrs: &[syn::Attribute]) -> Vec { for a in attrs { if let syn::Meta::List(list) = &a.meta { - for token in list.tokens.clone().into_iter() { - macro_attributes.push(token.to_string()); + if list.path.is_ident("derive") { + for token in list.tokens.clone().into_iter() { + if let proc_macro2::TokenTree::Ident(ident) = token { + macro_attributes.push(ident.to_string()); + } + } } } } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs index 054f977b84..699ecf433b 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs @@ -96,7 +96,6 @@ fn write_enum(file: &mut File, type_description: &TypeDescription) { fn write_struct(file: &mut File, type_description: &TypeDescription) { let struct_name = type_description.names.rust.replace("$API", "Api"); - write_macro_attributes(file, &type_description.macro_attributes); writeln!(file, r#"pub struct {}"#, struct_name).unwrap(); @@ -123,16 +122,9 @@ fn write_struct(file: &mut File, type_description: &TypeDescription) { } fn write_macro_attributes(file: &mut File, macro_attributes: &[String]) { - writeln!(file, "#[derive(TypeAbi)]").unwrap(); - if !macro_attributes.is_empty() { - write!(file, "#[derive(").unwrap(); - } - - let attributes = macro_attributes.join("").replace(',', ", "); - write!(file, "{attributes}").unwrap(); - - if !macro_attributes.is_empty() { - writeln!(file, ")]").unwrap(); + if macro_attributes.is_empty() { + writeln!(file, "#[derive(TopEncode, TopDecode)]").unwrap(); + } else { + writeln!(file, "#[derive({})]", macro_attributes.join(", ")).unwrap(); } } - From d7a541f0dc6f2189e3c8fad73d2dc70c0c7b9140 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 21 Mar 2024 09:04:44 +0200 Subject: [PATCH 121/461] tx proxy gen - fixed tests --- .../abi_tester_expected_main.abi.json | 28 +++++++++---------- .../abi_tester_expected_view.abi.json | 28 +++++++++---------- 2 files changed, 28 insertions(+), 28 deletions(-) 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 b94afe2670..999feb222f 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 @@ -532,7 +532,7 @@ "fields": [ { "name": "big_uint", - "type": "BigUint" + "type": "BigUint<$API>" }, { "name": "integer", @@ -540,7 +540,7 @@ }, { "name": "managed_buffer", - "type": "bytes" + "type": "ManagedBuffer<$API>" } ] }, @@ -578,7 +578,7 @@ "Tests that recursive types will not send the ABI generator into an infinite loop." ], "name": "next", - "type": "Option" + "type": "Option>" }, { "docs": [ @@ -586,7 +586,7 @@ "Also, just like above, recursive types need to work even when nested into a tuple." ], "name": "tuple_madness", - "type": "tuple>" + "type": "(OnlyShowsUpAsNested02, Option>)" } ] }, @@ -640,7 +640,7 @@ }, { "name": "amount", - "type": "BigUint" + "type": "BigUint<$API>" }, { "name": "frozen", @@ -648,27 +648,27 @@ }, { "name": "hash", - "type": "bytes" + "type": "ManagedBuffer<$API>" }, { "name": "name", - "type": "bytes" + "type": "ManagedBuffer<$API>" }, { "name": "attributes", - "type": "bytes" + "type": "ManagedBuffer<$API>" }, { "name": "creator", - "type": "Address" + "type": "ManagedAddress<$API>" }, { "name": "royalties", - "type": "BigUint" + "type": "BigUint<$API>" }, { "name": "uris", - "type": "List" + "type": "ManagedVec<$API, ManagedBuffer<$API>>" } ] }, @@ -677,7 +677,7 @@ "fields": [ { "name": "token_identifier", - "type": "TokenIdentifier" + "type": "TokenIdentifier<$API>" }, { "name": "token_nonce", @@ -685,7 +685,7 @@ }, { "name": "amount", - "type": "BigUint" + "type": "BigUint<$API>" } ] }, @@ -800,7 +800,7 @@ "fields": [ { "name": "something", - "type": "array0" + "type": "[u8; 0]" } ] }, 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 f8a30cb9a5..4a31f9ea3d 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 @@ -193,7 +193,7 @@ "fields": [ { "name": "big_uint", - "type": "BigUint" + "type": "BigUint<$API>" }, { "name": "integer", @@ -201,7 +201,7 @@ }, { "name": "managed_buffer", - "type": "bytes" + "type": "ManagedBuffer<$API>" } ] }, @@ -239,7 +239,7 @@ "Tests that recursive types will not send the ABI generator into an infinite loop." ], "name": "next", - "type": "Option" + "type": "Option>" }, { "docs": [ @@ -247,7 +247,7 @@ "Also, just like above, recursive types need to work even when nested into a tuple." ], "name": "tuple_madness", - "type": "tuple>" + "type": "(OnlyShowsUpAsNested02, Option>)" } ] }, @@ -301,7 +301,7 @@ }, { "name": "amount", - "type": "BigUint" + "type": "BigUint<$API>" }, { "name": "frozen", @@ -309,27 +309,27 @@ }, { "name": "hash", - "type": "bytes" + "type": "ManagedBuffer<$API>" }, { "name": "name", - "type": "bytes" + "type": "ManagedBuffer<$API>" }, { "name": "attributes", - "type": "bytes" + "type": "ManagedBuffer<$API>" }, { "name": "creator", - "type": "Address" + "type": "ManagedAddress<$API>" }, { "name": "royalties", - "type": "BigUint" + "type": "BigUint<$API>" }, { "name": "uris", - "type": "List" + "type": "ManagedVec<$API, ManagedBuffer<$API>>" } ] }, @@ -338,7 +338,7 @@ "fields": [ { "name": "token_identifier", - "type": "TokenIdentifier" + "type": "TokenIdentifier<$API>" }, { "name": "token_nonce", @@ -346,7 +346,7 @@ }, { "name": "amount", - "type": "BigUint" + "type": "BigUint<$API>" } ] }, @@ -461,7 +461,7 @@ "fields": [ { "name": "something", - "type": "array0" + "type": "[u8; 0]" } ] }, From 81c38a2efba4086f8d1d7086c422aa25c75f93be Mon Sep 17 00:00:00 2001 From: Alexandru Popenta Date: Thu, 21 Mar 2024 09:17:56 +0200 Subject: [PATCH 122/461] reference newer commit --- .github/workflows/actions.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index 4e8efeed0a..586abce63e 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -14,7 +14,7 @@ permissions: jobs: contracts: name: Contracts - uses: multiversx/mx-sc-actions/.github/workflows/contracts.yml@447422c7affe6670871444793f20cbaafbe9d71e + uses: multiversx/mx-sc-actions/.github/workflows/contracts.yml@4eb6d05e48bb36241ce3183f1e223cf3a9e78ab5 with: rust-toolchain: nightly-2023-12-11 path-to-sc-meta: framework/meta From 8f9fffeedde5ece6b0d4c4ebbfacba60c3f10d2c Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 21 Mar 2024 10:02:49 +0200 Subject: [PATCH 123/461] tx proxy gen - fixed tests --- .../use_module_expected_main.abi.json | 34 +++++++++---------- .../use_module_expected_view.abi.json | 34 +++++++++---------- 2 files changed, 34 insertions(+), 34 deletions(-) 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 2e4694e6fb..8ce1878d1a 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 @@ -1023,7 +1023,7 @@ "fields": [ { "name": "token_identifier", - "type": "TokenIdentifier" + "type": "TokenIdentifier<$API>" }, { "name": "token_nonce", @@ -1031,7 +1031,7 @@ }, { "name": "amount", - "type": "BigUint" + "type": "BigUint<$API>" } ] }, @@ -1065,11 +1065,11 @@ "fields": [ { "name": "depositor_addr", - "type": "Address" + "type": "ManagedAddress<$API>" }, { "name": "tokens", - "type": "EsdtTokenPayment" + "type": "EsdtTokenPayment<$API>" } ] }, @@ -1082,15 +1082,15 @@ }, { "name": "dest_address", - "type": "Address" + "type": "ManagedAddress<$API>" }, { "name": "function_name", - "type": "bytes" + "type": "ManagedBuffer<$API>" }, { "name": "arguments", - "type": "List" + "type": "ManagedVec<$API, ManagedBuffer<$API>>" } ] }, @@ -1099,19 +1099,19 @@ "fields": [ { "name": "proposer", - "type": "Address" + "type": "ManagedAddress<$API>" }, { "name": "actions", - "type": "List" + "type": "ArrayVec, 4usize>" }, { "name": "description", - "type": "bytes" + "type": "ManagedBuffer<$API>" }, { "name": "fees", - "type": "ProposalFees" + "type": "ProposalFees<$API>" } ] }, @@ -1170,11 +1170,11 @@ "fields": [ { "name": "total_amount", - "type": "BigUint" + "type": "BigUint<$API>" }, { "name": "entries", - "type": "List" + "type": "ManagedVec<$API, FeeEntry<$API>>" } ] }, @@ -1183,19 +1183,19 @@ "fields": [ { "name": "up_votes", - "type": "BigUint" + "type": "BigUint<$API>" }, { "name": "down_votes", - "type": "BigUint" + "type": "BigUint<$API>" }, { "name": "down_veto_votes", - "type": "BigUint" + "type": "BigUint<$API>" }, { "name": "abstain_votes", - "type": "BigUint" + "type": "BigUint<$API>" } ] }, 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 c84a7deac4..9fd87c32f8 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 @@ -267,7 +267,7 @@ "fields": [ { "name": "token_identifier", - "type": "TokenIdentifier" + "type": "TokenIdentifier<$API>" }, { "name": "token_nonce", @@ -275,7 +275,7 @@ }, { "name": "amount", - "type": "BigUint" + "type": "BigUint<$API>" } ] }, @@ -309,11 +309,11 @@ "fields": [ { "name": "depositor_addr", - "type": "Address" + "type": "ManagedAddress<$API>" }, { "name": "tokens", - "type": "EsdtTokenPayment" + "type": "EsdtTokenPayment<$API>" } ] }, @@ -326,15 +326,15 @@ }, { "name": "dest_address", - "type": "Address" + "type": "ManagedAddress<$API>" }, { "name": "function_name", - "type": "bytes" + "type": "ManagedBuffer<$API>" }, { "name": "arguments", - "type": "List" + "type": "ManagedVec<$API, ManagedBuffer<$API>>" } ] }, @@ -343,19 +343,19 @@ "fields": [ { "name": "proposer", - "type": "Address" + "type": "ManagedAddress<$API>" }, { "name": "actions", - "type": "List" + "type": "ArrayVec, 4usize>" }, { "name": "description", - "type": "bytes" + "type": "ManagedBuffer<$API>" }, { "name": "fees", - "type": "ProposalFees" + "type": "ProposalFees<$API>" } ] }, @@ -414,11 +414,11 @@ "fields": [ { "name": "total_amount", - "type": "BigUint" + "type": "BigUint<$API>" }, { "name": "entries", - "type": "List" + "type": "ManagedVec<$API, FeeEntry<$API>>" } ] }, @@ -427,19 +427,19 @@ "fields": [ { "name": "up_votes", - "type": "BigUint" + "type": "BigUint<$API>" }, { "name": "down_votes", - "type": "BigUint" + "type": "BigUint<$API>" }, { "name": "down_veto_votes", - "type": "BigUint" + "type": "BigUint<$API>" }, { "name": "abstain_votes", - "type": "BigUint" + "type": "BigUint<$API>" } ] }, From 3120a9686b3b136d2ee76f2a990684375e10d7b7 Mon Sep 17 00:00:00 2001 From: Alexandru Popenta Date: Thu, 21 Mar 2024 10:07:13 +0200 Subject: [PATCH 124/461] reference newer commit --- .github/workflows/actions.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index 586abce63e..94a41b3dbe 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -14,7 +14,7 @@ permissions: jobs: contracts: name: Contracts - uses: multiversx/mx-sc-actions/.github/workflows/contracts.yml@4eb6d05e48bb36241ce3183f1e223cf3a9e78ab5 + uses: multiversx/mx-sc-actions/.github/workflows/contracts.yml@53103051467f2ae63ebfbf3ea71328bf215a2828 with: rust-toolchain: nightly-2023-12-11 path-to-sc-meta: framework/meta From e06e1d13f661649736a7d991a306cd6baa411861 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 21 Mar 2024 11:04:34 +0200 Subject: [PATCH 125/461] type_abi proc attribute instead of derive(TypeAbi) --- .../src/crowdfunding_esdt.rs | 2 +- .../crowdfunding-esdt/src/temp_proxy.rs | 2 +- contracts/examples/crypto-zombies/src/lib.rs | 2 +- .../examples/crypto-zombies/src/temp_proxy.rs | 2 +- .../examples/crypto-zombies/src/zombie.rs | 2 +- .../examples/digital-cash/src/deposit_info.rs | 2 +- .../feature-tests/abi-tester/src/abi_proxy.rs | 10 ++-- .../abi-tester/src/abi_test_type.rs | 8 +-- .../abi-tester/src/abi_tester.rs | 2 +- .../abi-tester/src/only_nested.rs | 40 +++++++------- .../src/types/codec_err_test_type.rs | 4 +- framework/base/src/abi/type_abi.rs | 2 +- framework/base/src/lib.rs | 2 +- .../base/src/types/flags/esdt_local_role.rs | 7 +-- .../base/src/types/flags/esdt_token_type.rs | 55 ++++--------------- .../types/managed/wrapped/esdt_token_data.rs | 7 +-- .../managed/wrapped/esdt_token_payment.rs | 5 +- framework/derive/src/lib.rs | 12 +++- framework/derive/src/type_abi_derive.rs | 18 ++++-- framework/meta/src/abi_json/type_abi_json.rs | 2 +- 20 files changed, 83 insertions(+), 103 deletions(-) diff --git a/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt.rs b/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt.rs index e82411c0e1..f38da41061 100644 --- a/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt.rs +++ b/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt.rs @@ -3,7 +3,7 @@ use multiversx_sc::{derive_imports::*, imports::*}; pub mod temp_proxy; -#[derive(TypeAbi)] +#[type_abi] #[derive(TopEncode, TopDecode, PartialEq, Eq, Clone, Copy, Debug)] pub enum Status { FundingPeriod, diff --git a/contracts/examples/crowdfunding-esdt/src/temp_proxy.rs b/contracts/examples/crowdfunding-esdt/src/temp_proxy.rs index 98ab96c104..b82e54eb8c 100644 --- a/contracts/examples/crowdfunding-esdt/src/temp_proxy.rs +++ b/contracts/examples/crowdfunding-esdt/src/temp_proxy.rs @@ -8,7 +8,7 @@ use multiversx_sc::imports::*; use multiversx_sc::derive_imports::*; -#[derive(TypeAbi)] +#[type_abi] #[derive(TopEncode, TopDecode, PartialEq, Eq, Clone, Copy, Debug)] pub enum Status { FundingPeriod, diff --git a/contracts/examples/crypto-zombies/src/lib.rs b/contracts/examples/crypto-zombies/src/lib.rs index ed6b9befba..bed761384f 100644 --- a/contracts/examples/crypto-zombies/src/lib.rs +++ b/contracts/examples/crypto-zombies/src/lib.rs @@ -4,12 +4,12 @@ use multiversx_sc::imports::*; mod crypto_kitties_proxy; mod storage; +pub mod temp_proxy; mod zombie; mod zombie_attack; mod zombie_factory; mod zombie_feeding; mod zombie_helper; -pub mod temp_proxy; #[multiversx_sc::contract] pub trait CryptoZombies: diff --git a/contracts/examples/crypto-zombies/src/temp_proxy.rs b/contracts/examples/crypto-zombies/src/temp_proxy.rs index 32f130dfdc..09ae9979d1 100644 --- a/contracts/examples/crypto-zombies/src/temp_proxy.rs +++ b/contracts/examples/crypto-zombies/src/temp_proxy.rs @@ -412,7 +412,7 @@ where } use multiversx_sc::derive_imports::*; -#[derive(TypeAbi)] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct Zombie where diff --git a/contracts/examples/crypto-zombies/src/zombie.rs b/contracts/examples/crypto-zombies/src/zombie.rs index 858d1b791c..bfe3fd22ad 100644 --- a/contracts/examples/crypto-zombies/src/zombie.rs +++ b/contracts/examples/crypto-zombies/src/zombie.rs @@ -1,6 +1,6 @@ use multiversx_sc::{derive_imports::*, imports::*}; -#[derive(TypeAbi)] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct Zombie { pub name: ManagedBuffer, diff --git a/contracts/examples/digital-cash/src/deposit_info.rs b/contracts/examples/digital-cash/src/deposit_info.rs index 0164db2090..ce2c279409 100644 --- a/contracts/examples/digital-cash/src/deposit_info.rs +++ b/contracts/examples/digital-cash/src/deposit_info.rs @@ -1,6 +1,6 @@ use multiversx_sc::{derive_imports::*, imports::*}; -#[derive(TypeAbi)] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct DepositInfo { pub depositor_address: ManagedAddress, diff --git a/contracts/feature-tests/abi-tester/src/abi_proxy.rs b/contracts/feature-tests/abi-tester/src/abi_proxy.rs index cbc0520f5a..c7c7f8650a 100644 --- a/contracts/feature-tests/abi-tester/src/abi_proxy.rs +++ b/contracts/feature-tests/abi-tester/src/abi_proxy.rs @@ -714,7 +714,7 @@ pub struct OnlyShowsUpAsNested07 { } -#[derive(TopEncode, TopDecode)] +#[derive(TopDecode, TopEncode, NestedDecode, NestedEncode, Clone, PartialEq, Eq, Debug, Copy)] pub enum EsdtLocalRole { None, Mint, @@ -727,7 +727,7 @@ pub enum EsdtLocalRole { Transfer, } -#[derive(TopEncode, TopDecode)] +#[derive(TopEncode, NestedEncode, Clone, PartialEq, Eq, Debug)] pub struct EsdtTokenPayment where Api: ManagedTypeApi, @@ -737,12 +737,12 @@ where pub amount: BigUint, } -#[derive(TopEncode, TopDecode)] +#[derive(Clone, TopDecode, TopEncode, NestedDecode, NestedEncode, Debug, ManagedVecItem)] pub struct EsdtTokenData where Api: ManagedTypeApi, { - pub token_type: self::EsdtTokenType, + pub token_type: EsdtTokenType, pub amount: BigUint, pub frozen: bool, pub hash: ManagedBuffer, @@ -753,7 +753,7 @@ where pub uris: ManagedVec>, } -#[derive(TopEncode, TopDecode)] +#[derive(TopDecode, TopEncode, NestedDecode, NestedEncode, Clone, PartialEq, Eq, Debug, ManagedVecItem)] pub enum EsdtTokenType { Fungible, NonFungible, diff --git a/contracts/feature-tests/abi-tester/src/abi_test_type.rs b/contracts/feature-tests/abi-tester/src/abi_test_type.rs index b952146aa3..ff4f76b744 100644 --- a/contracts/feature-tests/abi-tester/src/abi_test_type.rs +++ b/contracts/feature-tests/abi-tester/src/abi_test_type.rs @@ -6,7 +6,7 @@ use multiversx_sc::{ multiversx_sc::derive_imports!(); /// Its only purpose is to test that the ABI generator works fine. -#[derive(TypeAbi)] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct AbiTestType { /// This type should only appear here. @@ -21,7 +21,7 @@ pub struct AbiTestType { } /// Its only purpose is to test that the ABI generator works fine. -#[derive(TypeAbi)] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct AbiManagedType { pub big_uint: BigUint, @@ -30,14 +30,14 @@ pub struct AbiManagedType { } /// Its only purpose is to test that the ABI generator works fine. -#[derive(TypeAbi)] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, ManagedVecItem)] pub struct AbiManagedVecItem { pub value1: u32, pub value2: u32, } -#[derive(TypeAbi)] +#[type_abi] pub struct OnlyShowsUpInEsdtAttr { pub field: OnlyShowsUpAsNested10, } diff --git a/contracts/feature-tests/abi-tester/src/abi_tester.rs b/contracts/feature-tests/abi-tester/src/abi_tester.rs index 48976f5980..1d7226c0f9 100644 --- a/contracts/feature-tests/abi-tester/src/abi_tester.rs +++ b/contracts/feature-tests/abi-tester/src/abi_tester.rs @@ -3,7 +3,7 @@ multiversx_sc::imports!(); mod abi_enum; -// pub mod abi_proxy; +pub mod abi_proxy; mod abi_test_type; mod only_nested; diff --git a/contracts/feature-tests/abi-tester/src/only_nested.rs b/contracts/feature-tests/abi-tester/src/only_nested.rs index fe17c7e55e..5c960cc95a 100644 --- a/contracts/feature-tests/abi-tester/src/only_nested.rs +++ b/contracts/feature-tests/abi-tester/src/only_nested.rs @@ -1,105 +1,105 @@ multiversx_sc::derive_imports!(); /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(TypeAbi)] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpInConstructor { pub something: (), } /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(TypeAbi)] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested01; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(TypeAbi)] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested02 { pub something: [u8; 0], } /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(TypeAbi)] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested03(); /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(TypeAbi)] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested04; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(TypeAbi)] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested05; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(TypeAbi)] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested06; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(TypeAbi)] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested07; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(TypeAbi)] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested08; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(TypeAbi)] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested09; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(TypeAbi)] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested10; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(TypeAbi)] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInSingleValueMapper; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(TypeAbi)] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInVec; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(TypeAbi)] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInArrayVec; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(TypeAbi)] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInArray; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(TypeAbi)] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInBox; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(TypeAbi)] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInBoxedSlice; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(TypeAbi)] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInRef; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(TypeAbi)] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInSlice; /// Tests that the ABI generator also fetches types that only appear as fields. -#[derive(TypeAbi)] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInOption; diff --git a/contracts/feature-tests/basic-features/src/types/codec_err_test_type.rs b/contracts/feature-tests/basic-features/src/types/codec_err_test_type.rs index 16350f3a5a..41c1524c41 100644 --- a/contracts/feature-tests/basic-features/src/types/codec_err_test_type.rs +++ b/contracts/feature-tests/basic-features/src/types/codec_err_test_type.rs @@ -4,11 +4,11 @@ use multiversx_sc::{ NestedDecodeInput, NestedEncode, NestedEncodeOutput, TopDecode, TopDecodeInput, TopEncode, TopEncodeOutput, }, - derive::TypeAbi, + derive::type_abi, }; /// Helper type to explore encode/decode errors. -#[derive(TypeAbi)] +#[type_abi] pub struct CodecErrorTestType; impl TopEncode for CodecErrorTestType { diff --git a/framework/base/src/abi/type_abi.rs b/framework/base/src/abi/type_abi.rs index 215cb36464..94213e7705 100644 --- a/framework/base/src/abi/type_abi.rs +++ b/framework/base/src/abi/type_abi.rs @@ -29,7 +29,7 @@ pub trait TypeAbi { docs: Vec::new(), names: Self::type_names(), contents: TypeContents::NotSpecified, - macro_attributes: Vec::new() + macro_attributes: Vec::new(), }, ); } diff --git a/framework/base/src/lib.rs b/framework/base/src/lib.rs index 7910499169..aa1d477897 100644 --- a/framework/base/src/lib.rs +++ b/framework/base/src/lib.rs @@ -73,7 +73,7 @@ pub mod derive_imports { NestedDecode, NestedEncode, TopDecode, TopDecodeOrDefault, TopEncode, TopEncodeOrDefault, }, - derive::{ManagedVecItem, TypeAbi}, + derive::{type_abi, ManagedVecItem, TypeAbi}, }; } diff --git a/framework/base/src/types/flags/esdt_local_role.rs b/framework/base/src/types/flags/esdt_local_role.rs index f0f241d931..9bc5edfc68 100644 --- a/framework/base/src/types/flags/esdt_local_role.rs +++ b/framework/base/src/types/flags/esdt_local_role.rs @@ -5,7 +5,7 @@ use crate::{ use super::EsdtLocalRoleFlags; use crate as multiversx_sc; -use crate::{derive::TypeAbi, types::ManagedVecItem}; +use crate::{derive::type_abi, types::ManagedVecItem}; static ESDT_ROLE_NONE: &[u8] = &[]; static ESDT_ROLE_LOCAL_MINT: &[u8] = b"ESDTRoleLocalMint"; @@ -17,9 +17,8 @@ static ESDT_ROLE_NFT_ADD_URI: &[u8] = b"ESDTRoleNFTAddURI"; static ESDT_ROLE_NFT_UPDATE_ATTRIBUTES: &[u8] = b"ESDTRoleNFTUpdateAttributes"; static ESDT_ROLE_TRANSFER: &[u8] = b"ESDTTransferRole"; -#[derive( - TopDecode, TopEncode, NestedDecode, NestedEncode, TypeAbi, Clone, PartialEq, Eq, Debug, Copy, -)] +#[type_abi] +#[derive(TopDecode, TopEncode, NestedDecode, NestedEncode, Clone, PartialEq, Eq, Debug, Copy)] pub enum EsdtLocalRole { None, Mint, diff --git a/framework/base/src/types/flags/esdt_token_type.rs b/framework/base/src/types/flags/esdt_token_type.rs index 2348254455..1993fd1cfa 100644 --- a/framework/base/src/types/flags/esdt_token_type.rs +++ b/framework/base/src/types/flags/esdt_token_type.rs @@ -1,6 +1,9 @@ use multiversx_sc_derive::ManagedVecItem; -use crate::codec::*; +use crate::{ + codec, + codec::derive::{NestedDecode, NestedEncode, TopDecode, TopEncode}, +}; const ESDT_TYPE_FUNGIBLE: &[u8] = b"FungibleESDT"; const ESDT_TYPE_NON_FUNGIBLE: &[u8] = b"NonFungibleESDT"; @@ -9,10 +12,14 @@ const ESDT_TYPE_META: &[u8] = b"MetaESDT"; const ESDT_TYPE_INVALID: &[u8] = &[]; use crate as multiversx_sc; // needed by the TypeAbi generated code -use crate::derive::TypeAbi; +use crate::derive::type_abi; // Note: In the current implementation, SemiFungible is never returned -#[derive(Clone, PartialEq, Eq, Debug, TypeAbi, ManagedVecItem)] + +#[type_abi] +#[derive( + TopDecode, TopEncode, NestedDecode, NestedEncode, Clone, PartialEq, Eq, Debug, ManagedVecItem, +)] pub enum EsdtTokenType { Fungible, NonFungible, @@ -80,45 +87,3 @@ impl<'a> From<&'a [u8]> for EsdtTokenType { } } } - -impl NestedEncode for EsdtTokenType { - #[inline] - fn dep_encode_or_handle_err(&self, dest: &mut O, h: H) -> Result<(), H::HandledErr> - where - O: NestedEncodeOutput, - H: EncodeErrorHandler, - { - self.as_u8().dep_encode_or_handle_err(dest, h) - } -} - -impl TopEncode for EsdtTokenType { - #[inline] - fn top_encode_or_handle_err(&self, output: O, h: H) -> Result<(), H::HandledErr> - where - O: TopEncodeOutput, - H: EncodeErrorHandler, - { - self.as_u8().top_encode_or_handle_err(output, h) - } -} - -impl NestedDecode for EsdtTokenType { - fn dep_decode_or_handle_err(input: &mut I, h: H) -> Result - where - I: NestedDecodeInput, - H: DecodeErrorHandler, - { - Ok(Self::from(u8::dep_decode_or_handle_err(input, h)?)) - } -} - -impl TopDecode for EsdtTokenType { - fn top_decode_or_handle_err(input: I, h: H) -> Result - where - I: TopDecodeInput, - H: DecodeErrorHandler, - { - Ok(Self::from(u8::top_decode_or_handle_err(input, h)?)) - } -} diff --git a/framework/base/src/types/managed/wrapped/esdt_token_data.rs b/framework/base/src/types/managed/wrapped/esdt_token_data.rs index d4b13afdbe..5bbd550299 100644 --- a/framework/base/src/types/managed/wrapped/esdt_token_data.rs +++ b/framework/base/src/types/managed/wrapped/esdt_token_data.rs @@ -12,13 +12,12 @@ use crate::{ }; use crate as multiversx_sc; // needed by the TypeAbi generated code -use crate::derive::TypeAbi; +use crate::derive::type_abi; const DECODE_ATTRIBUTE_ERROR_PREFIX: &[u8] = b"error decoding ESDT attributes: "; -#[derive( - Clone, TopDecode, TopEncode, NestedDecode, NestedEncode, TypeAbi, Debug, ManagedVecItem, -)] +#[type_abi] +#[derive(Clone, TopDecode, TopEncode, NestedDecode, NestedEncode, Debug, ManagedVecItem)] pub struct EsdtTokenData { pub token_type: EsdtTokenType, pub amount: BigUint, diff --git a/framework/base/src/types/managed/wrapped/esdt_token_payment.rs b/framework/base/src/types/managed/wrapped/esdt_token_payment.rs index 29391f5381..246b28de1d 100644 --- a/framework/base/src/types/managed/wrapped/esdt_token_payment.rs +++ b/framework/base/src/types/managed/wrapped/esdt_token_payment.rs @@ -10,12 +10,13 @@ use crate::{ derive::{NestedEncode, TopEncode}, IntoMultiValue, NestedDecode, TopDecode, }, - derive::TypeAbi, + derive::type_abi, }; use super::ManagedVec; -#[derive(TopEncode, NestedEncode, TypeAbi, Clone, PartialEq, Eq, Debug)] +#[type_abi] +#[derive(TopEncode, NestedEncode, Clone, PartialEq, Eq, Debug)] pub struct EsdtTokenPayment { pub token_identifier: TokenIdentifier, pub token_nonce: u64, diff --git a/framework/derive/src/lib.rs b/framework/derive/src/lib.rs index bdc33883fe..917ecb2159 100644 --- a/framework/derive/src/lib.rs +++ b/framework/derive/src/lib.rs @@ -48,8 +48,16 @@ pub fn proxy( #[proc_macro_derive(TypeAbi)] pub fn type_abi_derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream { - let ast: syn::DeriveInput = syn::parse(input).unwrap(); - type_abi_derive::type_abi_derive(&ast) + type_abi_derive::type_abi_derive(input).into() +} + +#[proc_macro_attribute] +pub fn type_abi( + args: proc_macro::TokenStream, + input: proc_macro::TokenStream, +) -> proc_macro::TokenStream { + assert!(args.is_empty(), "#[type_abi] attribute takes no args"); + type_abi_derive::type_abi_full(input).into() } #[proc_macro_derive(ManagedVecItem)] diff --git a/framework/derive/src/type_abi_derive.rs b/framework/derive/src/type_abi_derive.rs index cd93bdf33a..aec0b73a18 100644 --- a/framework/derive/src/type_abi_derive.rs +++ b/framework/derive/src/type_abi_derive.rs @@ -1,7 +1,6 @@ use crate::parse::attributes::extract_macro_attributes; use super::parse::attributes::extract_doc; -use proc_macro::TokenStream; use quote::{quote, ToTokens}; pub struct ExplicitDiscriminant { @@ -45,7 +44,8 @@ fn fields_snippets(fields: &syn::Fields) -> Vec { } } -pub fn type_abi_derive(ast: &syn::DeriveInput) -> TokenStream { +pub fn type_abi_derive(input: proc_macro::TokenStream) -> proc_macro2::TokenStream { + let ast: syn::DeriveInput = syn::parse(input).unwrap(); let type_docs = extract_doc(ast.attrs.as_slice()); let macro_attributes = extract_macro_attributes(ast.attrs.as_slice()); @@ -123,7 +123,7 @@ pub fn type_abi_derive(ast: &syn::DeriveInput) -> TokenStream { let name_str = name.to_string(); let (impl_generics, ty_generics, where_clause) = &ast.generics.split_for_impl(); let name_rust = extract_rust_type(ty_generics, name_str.clone()); - let type_abi_impl = quote! { + quote! { impl #impl_generics multiversx_sc::abi::TypeAbi for #name #ty_generics #where_clause { fn type_name() -> multiversx_sc::abi::TypeName { #name_str.into() @@ -135,8 +135,16 @@ pub fn type_abi_derive(ast: &syn::DeriveInput) -> TokenStream { #type_description_impl } - }; - type_abi_impl.into() + } +} + +pub fn type_abi_full(input: proc_macro::TokenStream) -> proc_macro2::TokenStream { + let input_conv = proc_macro2::TokenStream::from(input.clone()); + let derive_code = type_abi_derive(input); + quote! { + #input_conv + #derive_code + } } pub fn get_discriminant( diff --git a/framework/meta/src/abi_json/type_abi_json.rs b/framework/meta/src/abi_json/type_abi_json.rs index dac3f7c029..4f6bbb8fbe 100644 --- a/framework/meta/src/abi_json/type_abi_json.rs +++ b/framework/meta/src/abi_json/type_abi_json.rs @@ -87,7 +87,7 @@ impl TypeDescriptionJson { ), _ => TypeContents::NotSpecified, }, - macro_attributes: Vec::new() + macro_attributes: Vec::new(), } } } From 25912266cb030536fea6895e8282266c5d7a7d62 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 21 Mar 2024 11:04:53 +0200 Subject: [PATCH 126/461] multisig - re-generated proxy --- contracts/examples/multisig/sc-config.toml | 1 + contracts/examples/multisig/src/multisig.rs | 2 +- .../src/{proxy.rs => multisig_proxy.rs} | 50 +++++++++++++++++-- 3 files changed, 47 insertions(+), 6 deletions(-) rename contracts/examples/multisig/src/{proxy.rs => multisig_proxy.rs} (94%) diff --git a/contracts/examples/multisig/sc-config.toml b/contracts/examples/multisig/sc-config.toml index ca6a294c4f..00417afac7 100644 --- a/contracts/examples/multisig/sc-config.toml +++ b/contracts/examples/multisig/sc-config.toml @@ -1,4 +1,5 @@ [settings] +proxy-paths = ["src/multisig_proxy.rs"] main = "main" [contracts.main] diff --git a/contracts/examples/multisig/src/multisig.rs b/contracts/examples/multisig/src/multisig.rs index da8c81d21f..75c13cb5dd 100644 --- a/contracts/examples/multisig/src/multisig.rs +++ b/contracts/examples/multisig/src/multisig.rs @@ -4,8 +4,8 @@ pub mod action; pub mod multisig_events; pub mod multisig_perform; pub mod multisig_propose; +// pub mod multisig_proxy; pub mod multisig_state; -pub mod proxy; pub mod user_role; use action::ActionFullInfo; diff --git a/contracts/examples/multisig/src/proxy.rs b/contracts/examples/multisig/src/multisig_proxy.rs similarity index 94% rename from contracts/examples/multisig/src/proxy.rs rename to contracts/examples/multisig/src/multisig_proxy.rs index 73b99ea08c..b0d42e16ef 100644 --- a/contracts/examples/multisig/src/proxy.rs +++ b/contracts/examples/multisig/src/multisig_proxy.rs @@ -4,8 +4,7 @@ #![allow(clippy::all)] -use multiversx_sc::imports::*; -use crate as multisig; +use multiversx_sc::proxy_imports::*; pub struct MultisigProxy; @@ -104,7 +103,7 @@ where (), Gas, FunctionCall, - OriginalResultMarker>>, + OriginalResultMarker>>, > { self.wrapped_tx .raw_call() @@ -154,7 +153,7 @@ where (), Gas, FunctionCall, - OriginalResultMarker, + OriginalResultMarker, > { self.wrapped_tx .raw_call() @@ -356,7 +355,7 @@ where (), Gas, FunctionCall, - OriginalResultMarker>, + OriginalResultMarker>, > { self.wrapped_tx .raw_call() @@ -722,3 +721,44 @@ where } } +#[derive(TopEncode, TopDecode)] +pub struct ActionFullInfo +where + Api: ManagedTypeApi, +{ + pub action_id: usize, + pub action_data: Action, + pub signers: ManagedVec>, +} + +#[derive(TopEncode, TopDecode)] +pub enum Action { + Nothing, + AddBoardMember, + AddProposer, + RemoveUser, + ChangeQuorum, + SendTransferExecute, + SendAsyncCall, + SCDeployFromSource, + SCUpgradeFromSource, +} + +#[derive(TopEncode, TopDecode)] +pub struct CallActionData +where + Api: ManagedTypeApi, +{ + pub to: ManagedAddress, + pub egld_amount: BigUint, + pub endpoint_name: ManagedBuffer, + pub arguments: ManagedVec>, +} + +#[derive(TopEncode, TopDecode)] +pub enum UserRole { + None, + Proposer, + BoardMember, +} + From e3f937f95ca01b56a2e3e9197dae68dfef968151 Mon Sep 17 00:00:00 2001 From: Laurentiu Ciobanu Date: Thu, 21 Mar 2024 11:09:01 +0200 Subject: [PATCH 127/461] cleanup compiler-artifact check --- framework/meta/src/cmd/standalone/test_coverage/cargo.rs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/framework/meta/src/cmd/standalone/test_coverage/cargo.rs b/framework/meta/src/cmd/standalone/test_coverage/cargo.rs index 6fb70e13b9..2a4f3b45c0 100644 --- a/framework/meta/src/cmd/standalone/test_coverage/cargo.rs +++ b/framework/meta/src/cmd/standalone/test_coverage/cargo.rs @@ -77,12 +77,9 @@ pub fn get_instrumented_test_binaries_paths(path: &str) -> Result, T continue; }; - if !matches!( - message.get("reason").map(|val| val.as_str()), - Some(Some("compiler-artifact")) - ) { + let Some("compiler-artifact") = message.get("reason").and_then(|val| val.as_str()) else { continue; - } + }; let Ok(mut message) = serde_json::from_value::(message) else { From 5058b386c297f63ac4bc3ef4c7c0f90668b43fc0 Mon Sep 17 00:00:00 2001 From: Alexandru Popenta Date: Thu, 21 Mar 2024 12:16:13 +0200 Subject: [PATCH 128/461] reference latest commit --- .github/workflows/actions.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index 94a41b3dbe..698412f9ac 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -14,10 +14,11 @@ permissions: jobs: contracts: name: Contracts - uses: multiversx/mx-sc-actions/.github/workflows/contracts.yml@53103051467f2ae63ebfbf3ea71328bf215a2828 + uses: multiversx/mx-sc-actions/.github/workflows/contracts.yml@fa11ef52c0fa2f9d993fe8d06239ffd871301c89 with: rust-toolchain: nightly-2023-12-11 path-to-sc-meta: framework/meta + mx-scenario-go-version: v2.1.0-alpha2 secrets: token: ${{ secrets.GITHUB_TOKEN }} From 83f5658921f1080febd83925e8ff519f5f376473 Mon Sep 17 00:00:00 2001 From: Alexandru Popenta Date: Thu, 21 Mar 2024 12:45:34 +0200 Subject: [PATCH 129/461] reference latest commit --- .github/workflows/actions.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index 698412f9ac..f121a28ac8 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -14,7 +14,7 @@ permissions: jobs: contracts: name: Contracts - uses: multiversx/mx-sc-actions/.github/workflows/contracts.yml@fa11ef52c0fa2f9d993fe8d06239ffd871301c89 + uses: multiversx/mx-sc-actions/.github/workflows/contracts.yml@a94a5ee2982c5db0972a5ad81ebbc798b7cd6014 with: rust-toolchain: nightly-2023-12-11 path-to-sc-meta: framework/meta From 0734745696c31019703e15b1f8d25bc95cb319c9 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 21 Mar 2024 14:09:33 +0200 Subject: [PATCH 130/461] type abi - type name rust in struct field description --- framework/base/src/abi/type_description.rs | 6 +++--- framework/derive/src/type_abi_derive.rs | 2 +- framework/meta/src/abi_json/type_abi_json.rs | 7 +++++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/framework/base/src/abi/type_description.rs b/framework/base/src/abi/type_description.rs index 011b07d00c..0d2aead60b 100644 --- a/framework/base/src/abi/type_description.rs +++ b/framework/base/src/abi/type_description.rs @@ -70,7 +70,7 @@ impl TypeContents { TypeContents::Struct(struct_fields) => { for struct_field in struct_fields { names.push(struct_field.name.clone()); - names.push(struct_field.field_type.clone()); + // names.push(struct_field.field_type.clone()); } }, TypeContents::ExplicitEnum(_explicit_enum_variants) => {}, @@ -112,12 +112,12 @@ impl EnumVariantDescription { pub struct StructFieldDescription { pub docs: Vec, pub name: String, - pub field_type: String, + pub field_type: TypeNames, } impl StructFieldDescription { /// Used in code generation. - pub fn new(docs: &[&str], name: &str, field_type: String) -> Self { + pub fn new(docs: &[&str], name: &str, field_type: TypeNames) -> Self { Self { docs: docs.iter().map(|s| s.to_string()).collect(), name: name.to_string(), diff --git a/framework/derive/src/type_abi_derive.rs b/framework/derive/src/type_abi_derive.rs index aec0b73a18..56bd71d600 100644 --- a/framework/derive/src/type_abi_derive.rs +++ b/framework/derive/src/type_abi_derive.rs @@ -20,7 +20,7 @@ fn field_snippet(index: usize, field: &syn::Field) -> proc_macro2::TokenStream { field_descriptions.push(multiversx_sc::abi::StructFieldDescription::new( &[ #(#field_docs),* ], #field_name_str, - <#field_ty>::type_name_rust(), + <#field_ty>::type_names(), )); <#field_ty>::provide_type_descriptions(accumulator); } diff --git a/framework/meta/src/abi_json/type_abi_json.rs b/framework/meta/src/abi_json/type_abi_json.rs index 4f6bbb8fbe..f26cc7086d 100644 --- a/framework/meta/src/abi_json/type_abi_json.rs +++ b/framework/meta/src/abi_json/type_abi_json.rs @@ -109,7 +109,7 @@ impl From<&StructFieldDescription> for StructFieldDescriptionJson { StructFieldDescriptionJson { docs: abi.docs.iter().map(|d| d.to_string()).collect(), name: abi.name.to_string(), - field_type: abi.field_type.clone(), + field_type: abi.field_type.abi.clone(), } } } @@ -119,7 +119,10 @@ impl StructFieldDescriptionJson { StructFieldDescription { docs: self.docs.clone(), name: self.name.clone(), - field_type: self.field_type.clone(), + field_type: TypeNames { + abi: self.field_type.clone(), + rust: "".into(), + }, } } } From 6e234c4ad111cec0d3b330db8ee725b8511e869f Mon Sep 17 00:00:00 2001 From: Alexandru Popenta Date: Thu, 21 Mar 2024 14:29:40 +0200 Subject: [PATCH 131/461] reference latest commit --- .github/workflows/actions.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index f121a28ac8..d51d92caaa 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -14,7 +14,7 @@ permissions: jobs: contracts: name: Contracts - uses: multiversx/mx-sc-actions/.github/workflows/contracts.yml@a94a5ee2982c5db0972a5ad81ebbc798b7cd6014 + uses: multiversx/mx-sc-actions/.github/workflows/contracts.yml@88f0203200a120a0a9e05cb8b0b3bdf083fe4389 with: rust-toolchain: nightly-2023-12-11 path-to-sc-meta: framework/meta From 0b4cbc09eba26b3a7cbc75d8939ed7efb80e2dd3 Mon Sep 17 00:00:00 2001 From: Alexandru Popenta Date: Thu, 21 Mar 2024 14:40:47 +0200 Subject: [PATCH 132/461] use previous mx-scenario-go release --- .github/workflows/actions.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index d51d92caaa..a65df63c8a 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -18,7 +18,7 @@ jobs: with: rust-toolchain: nightly-2023-12-11 path-to-sc-meta: framework/meta - mx-scenario-go-version: v2.1.0-alpha2 + mx-scenario-go-version: v2.1.0-alpha secrets: token: ${{ secrets.GITHUB_TOKEN }} From 1d5b5d6fb6513be2e8d636b4209628eab1a5e6a8 Mon Sep 17 00:00:00 2001 From: Alexandru Popenta Date: Thu, 21 Mar 2024 15:43:40 +0200 Subject: [PATCH 133/461] reference latest release --- .github/workflows/actions.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index a65df63c8a..2d0dcc041b 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -14,7 +14,7 @@ permissions: jobs: contracts: name: Contracts - uses: multiversx/mx-sc-actions/.github/workflows/contracts.yml@88f0203200a120a0a9e05cb8b0b3bdf083fe4389 + uses: multiversx/mx-sc-actions/.github/workflows/contracts.yml@v3.0.0 with: rust-toolchain: nightly-2023-12-11 path-to-sc-meta: framework/meta From ba291bfdc24769f91de38ac6579caeb4438f9c85 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 21 Mar 2024 18:09:22 +0200 Subject: [PATCH 134/461] tx proxy gen - handle enum with tuple and struct variants --- .../abi_tester_expected_main.abi.json | 28 ++-- .../abi_tester_expected_view.abi.json | 28 ++-- .../feature-tests/abi-tester/src/abi_proxy.rs | 16 ++- .../use_module_expected_main.abi.json | 34 ++--- .../use_module_expected_view.abi.json | 34 ++--- framework/base/src/abi/type_description.rs | 21 --- .../meta/src/cmd/contract/generate_proxy.rs | 1 + .../contract/generate_proxy/proxy_gen_main.rs | 4 +- .../generate_proxy/proxy_gen_struct_enum.rs | 122 ++++++++++++++++++ .../generate_proxy/proxy_template_gen.rs | 60 --------- 10 files changed, 198 insertions(+), 150 deletions(-) create mode 100644 framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs 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 999feb222f..b94afe2670 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 @@ -532,7 +532,7 @@ "fields": [ { "name": "big_uint", - "type": "BigUint<$API>" + "type": "BigUint" }, { "name": "integer", @@ -540,7 +540,7 @@ }, { "name": "managed_buffer", - "type": "ManagedBuffer<$API>" + "type": "bytes" } ] }, @@ -578,7 +578,7 @@ "Tests that recursive types will not send the ABI generator into an infinite loop." ], "name": "next", - "type": "Option>" + "type": "Option" }, { "docs": [ @@ -586,7 +586,7 @@ "Also, just like above, recursive types need to work even when nested into a tuple." ], "name": "tuple_madness", - "type": "(OnlyShowsUpAsNested02, Option>)" + "type": "tuple>" } ] }, @@ -640,7 +640,7 @@ }, { "name": "amount", - "type": "BigUint<$API>" + "type": "BigUint" }, { "name": "frozen", @@ -648,27 +648,27 @@ }, { "name": "hash", - "type": "ManagedBuffer<$API>" + "type": "bytes" }, { "name": "name", - "type": "ManagedBuffer<$API>" + "type": "bytes" }, { "name": "attributes", - "type": "ManagedBuffer<$API>" + "type": "bytes" }, { "name": "creator", - "type": "ManagedAddress<$API>" + "type": "Address" }, { "name": "royalties", - "type": "BigUint<$API>" + "type": "BigUint" }, { "name": "uris", - "type": "ManagedVec<$API, ManagedBuffer<$API>>" + "type": "List" } ] }, @@ -677,7 +677,7 @@ "fields": [ { "name": "token_identifier", - "type": "TokenIdentifier<$API>" + "type": "TokenIdentifier" }, { "name": "token_nonce", @@ -685,7 +685,7 @@ }, { "name": "amount", - "type": "BigUint<$API>" + "type": "BigUint" } ] }, @@ -800,7 +800,7 @@ "fields": [ { "name": "something", - "type": "[u8; 0]" + "type": "array0" } ] }, 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 4a31f9ea3d..f8a30cb9a5 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 @@ -193,7 +193,7 @@ "fields": [ { "name": "big_uint", - "type": "BigUint<$API>" + "type": "BigUint" }, { "name": "integer", @@ -201,7 +201,7 @@ }, { "name": "managed_buffer", - "type": "ManagedBuffer<$API>" + "type": "bytes" } ] }, @@ -239,7 +239,7 @@ "Tests that recursive types will not send the ABI generator into an infinite loop." ], "name": "next", - "type": "Option>" + "type": "Option" }, { "docs": [ @@ -247,7 +247,7 @@ "Also, just like above, recursive types need to work even when nested into a tuple." ], "name": "tuple_madness", - "type": "(OnlyShowsUpAsNested02, Option>)" + "type": "tuple>" } ] }, @@ -301,7 +301,7 @@ }, { "name": "amount", - "type": "BigUint<$API>" + "type": "BigUint" }, { "name": "frozen", @@ -309,27 +309,27 @@ }, { "name": "hash", - "type": "ManagedBuffer<$API>" + "type": "bytes" }, { "name": "name", - "type": "ManagedBuffer<$API>" + "type": "bytes" }, { "name": "attributes", - "type": "ManagedBuffer<$API>" + "type": "bytes" }, { "name": "creator", - "type": "ManagedAddress<$API>" + "type": "Address" }, { "name": "royalties", - "type": "BigUint<$API>" + "type": "BigUint" }, { "name": "uris", - "type": "ManagedVec<$API, ManagedBuffer<$API>>" + "type": "List" } ] }, @@ -338,7 +338,7 @@ "fields": [ { "name": "token_identifier", - "type": "TokenIdentifier<$API>" + "type": "TokenIdentifier" }, { "name": "token_nonce", @@ -346,7 +346,7 @@ }, { "name": "amount", - "type": "BigUint<$API>" + "type": "BigUint" } ] }, @@ -461,7 +461,7 @@ "fields": [ { "name": "something", - "type": "[u8; 0]" + "type": "array0" } ] }, diff --git a/contracts/feature-tests/abi-tester/src/abi_proxy.rs b/contracts/feature-tests/abi-tester/src/abi_proxy.rs index c7c7f8650a..5fdab1395f 100644 --- a/contracts/feature-tests/abi-tester/src/abi_proxy.rs +++ b/contracts/feature-tests/abi-tester/src/abi_proxy.rs @@ -664,9 +664,12 @@ pub struct OnlyShowsUpAsNested02 #[derive(TopEncode, TopDecode)] pub enum AbiEnum { Nothing, - Something, - SomethingMore, - SomeStruct, + Something(i32), + SomethingMore(u8, OnlyShowsUpAsNested08), + SomeStruct { + a: u16, + b: OnlyShowsUpAsNested09, + }, } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] @@ -838,8 +841,11 @@ pub enum ExplicitDiscriminant { pub enum ExplicitDiscriminantMixed { Zero, Unit, - Tuple, + Tuple(u16), Five, - Struct, + Struct { + a: u8, + b: u16, + }, } 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 8ce1878d1a..2e4694e6fb 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 @@ -1023,7 +1023,7 @@ "fields": [ { "name": "token_identifier", - "type": "TokenIdentifier<$API>" + "type": "TokenIdentifier" }, { "name": "token_nonce", @@ -1031,7 +1031,7 @@ }, { "name": "amount", - "type": "BigUint<$API>" + "type": "BigUint" } ] }, @@ -1065,11 +1065,11 @@ "fields": [ { "name": "depositor_addr", - "type": "ManagedAddress<$API>" + "type": "Address" }, { "name": "tokens", - "type": "EsdtTokenPayment<$API>" + "type": "EsdtTokenPayment" } ] }, @@ -1082,15 +1082,15 @@ }, { "name": "dest_address", - "type": "ManagedAddress<$API>" + "type": "Address" }, { "name": "function_name", - "type": "ManagedBuffer<$API>" + "type": "bytes" }, { "name": "arguments", - "type": "ManagedVec<$API, ManagedBuffer<$API>>" + "type": "List" } ] }, @@ -1099,19 +1099,19 @@ "fields": [ { "name": "proposer", - "type": "ManagedAddress<$API>" + "type": "Address" }, { "name": "actions", - "type": "ArrayVec, 4usize>" + "type": "List" }, { "name": "description", - "type": "ManagedBuffer<$API>" + "type": "bytes" }, { "name": "fees", - "type": "ProposalFees<$API>" + "type": "ProposalFees" } ] }, @@ -1170,11 +1170,11 @@ "fields": [ { "name": "total_amount", - "type": "BigUint<$API>" + "type": "BigUint" }, { "name": "entries", - "type": "ManagedVec<$API, FeeEntry<$API>>" + "type": "List" } ] }, @@ -1183,19 +1183,19 @@ "fields": [ { "name": "up_votes", - "type": "BigUint<$API>" + "type": "BigUint" }, { "name": "down_votes", - "type": "BigUint<$API>" + "type": "BigUint" }, { "name": "down_veto_votes", - "type": "BigUint<$API>" + "type": "BigUint" }, { "name": "abstain_votes", - "type": "BigUint<$API>" + "type": "BigUint" } ] }, 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 9fd87c32f8..c84a7deac4 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 @@ -267,7 +267,7 @@ "fields": [ { "name": "token_identifier", - "type": "TokenIdentifier<$API>" + "type": "TokenIdentifier" }, { "name": "token_nonce", @@ -275,7 +275,7 @@ }, { "name": "amount", - "type": "BigUint<$API>" + "type": "BigUint" } ] }, @@ -309,11 +309,11 @@ "fields": [ { "name": "depositor_addr", - "type": "ManagedAddress<$API>" + "type": "Address" }, { "name": "tokens", - "type": "EsdtTokenPayment<$API>" + "type": "EsdtTokenPayment" } ] }, @@ -326,15 +326,15 @@ }, { "name": "dest_address", - "type": "ManagedAddress<$API>" + "type": "Address" }, { "name": "function_name", - "type": "ManagedBuffer<$API>" + "type": "bytes" }, { "name": "arguments", - "type": "ManagedVec<$API, ManagedBuffer<$API>>" + "type": "List" } ] }, @@ -343,19 +343,19 @@ "fields": [ { "name": "proposer", - "type": "ManagedAddress<$API>" + "type": "Address" }, { "name": "actions", - "type": "ArrayVec, 4usize>" + "type": "List" }, { "name": "description", - "type": "ManagedBuffer<$API>" + "type": "bytes" }, { "name": "fees", - "type": "ProposalFees<$API>" + "type": "ProposalFees" } ] }, @@ -414,11 +414,11 @@ "fields": [ { "name": "total_amount", - "type": "BigUint<$API>" + "type": "BigUint" }, { "name": "entries", - "type": "ManagedVec<$API, FeeEntry<$API>>" + "type": "List" } ] }, @@ -427,19 +427,19 @@ "fields": [ { "name": "up_votes", - "type": "BigUint<$API>" + "type": "BigUint" }, { "name": "down_votes", - "type": "BigUint<$API>" + "type": "BigUint" }, { "name": "down_veto_votes", - "type": "BigUint<$API>" + "type": "BigUint" }, { "name": "abstain_votes", - "type": "BigUint<$API>" + "type": "BigUint" } ] }, diff --git a/framework/base/src/abi/type_description.rs b/framework/base/src/abi/type_description.rs index 0d2aead60b..f7e78ccef7 100644 --- a/framework/base/src/abi/type_description.rs +++ b/framework/base/src/abi/type_description.rs @@ -58,27 +58,6 @@ impl TypeContents { pub fn is_specified(&self) -> bool { !matches!(*self, TypeContents::NotSpecified) } - - pub fn extract_names(&self) -> Vec { - let mut names = Vec::new(); - match &self { - TypeContents::Enum(enum_variants) => { - for enum_variant in enum_variants { - names.push(enum_variant.name.clone()); - } - }, - TypeContents::Struct(struct_fields) => { - for struct_field in struct_fields { - names.push(struct_field.name.clone()); - // names.push(struct_field.field_type.clone()); - } - }, - TypeContents::ExplicitEnum(_explicit_enum_variants) => {}, - TypeContents::NotSpecified => {}, - } - - names - } } #[derive(Clone, Debug, PartialEq, Eq)] diff --git a/framework/meta/src/cmd/contract/generate_proxy.rs b/framework/meta/src/cmd/contract/generate_proxy.rs index d8f689c428..4538ae77d4 100644 --- a/framework/meta/src/cmd/contract/generate_proxy.rs +++ b/framework/meta/src/cmd/contract/generate_proxy.rs @@ -3,3 +3,4 @@ pub mod proxy_gen_main; mod proxy_naming; pub mod proxy_sc_functions_gen; pub mod proxy_template_gen; +pub mod proxy_gen_struct_enum; diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs index 6362738c52..a55fa334f5 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs @@ -5,10 +5,10 @@ use multiversx_sc::abi::ContractAbi; use super::{ super::meta_config::MetaConfig, proxy_crate_gen::create_file, + proxy_gen_struct_enum::write_types, proxy_sc_functions_gen::write_content, proxy_template_gen::{ - write_header, write_impl_for_tx_proxy, write_struct_template, - write_struct_tx_proxy_methods, write_types, + write_header, write_impl_for_tx_proxy, write_struct_template, write_struct_tx_proxy_methods, }, }; diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs new file mode 100644 index 0000000000..b20a5cced2 --- /dev/null +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs @@ -0,0 +1,122 @@ +use std::{fs::File, io::Write}; + +use multiversx_sc::abi::{ + EnumVariantDescription, StructFieldDescription, TypeContents, TypeDescription, + TypeDescriptionContainerImpl, +}; + +use crate::cmd::contract::generate_snippets::snippet_gen_common::write_newline; + +const ZERO: &str = "0"; + +pub(crate) fn write_types(file: &mut File, types: &TypeDescriptionContainerImpl) { + for (_, type_description) in &types.0 { + match &type_description.contents { + TypeContents::Enum(enum_variants) => write_enum(file, enum_variants, type_description), + TypeContents::Struct(struct_fields) => { + write_struct(file, struct_fields, type_description) + }, + TypeContents::NotSpecified => {}, + TypeContents::ExplicitEnum(_) => {}, + } + } +} + +fn write_struct( + file: &mut File, + struct_fields: &Vec, + type_description: &TypeDescription, +) { + let struct_name = type_description.names.rust.replace("$API", "Api"); + write_macro_attributes(file, &type_description.macro_attributes); + writeln!(file, r#"pub struct {struct_name}"#).unwrap(); + + if struct_name.contains("") { + writeln!( + file, + r#"where + Api: ManagedTypeApi,"# + ) + .unwrap(); + } + + writeln!(file, r#"{{"#).unwrap(); + + for field in struct_fields { + writeln!( + file, + " pub {}: {},", + field.name, + field.field_type.rust.replace("$API", "Api") + ) + .unwrap(); + } + + writeln!(file, "}}").unwrap(); + write_newline(file); +} + +fn write_enum( + file: &mut File, + enum_variants: &Vec, + type_description: &TypeDescription, +) { + write_macro_attributes(file, &type_description.macro_attributes); + writeln!( + file, + r#"pub enum {} {{"#, + type_description.names.rust.replace("$API", "Api") + ) + .unwrap(); + + for variant in enum_variants { + write!(file, " {}", variant.name).unwrap(); + if variant.fields.is_empty() { + writeln!(file, ",").unwrap(); + continue; + } + + if variant.fields[0].name == ZERO { + write_tuple_in_variant(file, &variant.fields); + } else { + write_struct_in_variant(file, &variant.fields); + } + } + writeln!(file, "}}").unwrap(); + write_newline(file); +} + +fn write_macro_attributes(file: &mut File, macro_attributes: &[String]) { + if macro_attributes.is_empty() { + writeln!(file, "#[derive(TopEncode, TopDecode)]").unwrap(); + } else { + writeln!(file, "#[derive({})]", macro_attributes.join(", ")).unwrap(); + } +} + +fn write_struct_in_variant(file: &mut File, fields: &Vec) { + writeln!(file, " {{").unwrap(); + + for field in fields { + writeln!( + file, + " {}: {},", + field.name, + field.field_type.rust.replace("$API", "Api") + ) + .unwrap(); + } + + writeln!(file, " }},").unwrap(); +} + +fn write_tuple_in_variant(file: &mut File, fields: &Vec) { + write!(file, "(").unwrap(); + write!(file, "{}", fields[0].field_type.rust.replace("$API", "Api")).unwrap(); + + for field in &fields[1..] { + write!(file, ", {}", field.field_type.rust.replace("$API", "Api")).unwrap(); + } + + writeln!(file, "),").unwrap(); +} diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs index 699ecf433b..71b673e3a5 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs @@ -1,7 +1,5 @@ use std::{fs::File, io::Write}; -use multiversx_sc::abi::{TypeContents, TypeDescription, TypeDescriptionContainerImpl}; - use crate::cmd::contract::generate_snippets::snippet_gen_common::write_newline; use super::proxy_naming::{proxy_methods_type_name, proxy_type_name}; @@ -22,17 +20,6 @@ pub(crate) fn write_header(file: &mut File) { write_newline(file); } -pub(crate) fn write_types(file: &mut File, types: &TypeDescriptionContainerImpl) { - for (_, type_description) in &types.0 { - match &type_description.contents { - TypeContents::Enum(_) => write_enum(file, type_description), - TypeContents::Struct(_) => write_struct(file, type_description), - TypeContents::NotSpecified => {}, - TypeContents::ExplicitEnum(_) => {}, - } - } -} - pub(crate) fn write_struct_template(file: &mut File, name: &str) { let proxy_type_name = proxy_type_name(name); writeln!(file, "pub struct {proxy_type_name};").unwrap(); @@ -81,50 +68,3 @@ where write_newline(file); } - -fn write_enum(file: &mut File, type_description: &TypeDescription) { - write_macro_attributes(file, &type_description.macro_attributes); - writeln!(file, r#"pub enum {} {{"#, type_description.names.abi).unwrap(); - - for content in type_description.contents.extract_names() { - writeln!(file, " {content},").unwrap(); - } - - writeln!(file, "}}").unwrap(); - write_newline(file); -} - -fn write_struct(file: &mut File, type_description: &TypeDescription) { - let struct_name = type_description.names.rust.replace("$API", "Api"); - write_macro_attributes(file, &type_description.macro_attributes); - writeln!(file, r#"pub struct {}"#, struct_name).unwrap(); - - if struct_name.contains("") { - writeln!( - file, - r#"where - Api: ManagedTypeApi,"# - ) - .unwrap(); - } - - writeln!(file, r#"{{"#).unwrap(); - - for content in type_description.contents.extract_names().chunks_exact(2) { - let variable_name = &content[0]; - let variable_type = &content[1].replace("$API", "Api"); - - writeln!(file, " pub {variable_name}: {variable_type},").unwrap(); - } - - writeln!(file, "}}").unwrap(); - write_newline(file); -} - -fn write_macro_attributes(file: &mut File, macro_attributes: &[String]) { - if macro_attributes.is_empty() { - writeln!(file, "#[derive(TopEncode, TopDecode)]").unwrap(); - } else { - writeln!(file, "#[derive({})]", macro_attributes.join(", ")).unwrap(); - } -} From 82133dff989ec081559a299ffa846e0919f89193 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 21 Mar 2024 18:21:45 +0200 Subject: [PATCH 135/461] fix clippy --- .../src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs index b20a5cced2..2932437a5b 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs @@ -94,7 +94,7 @@ fn write_macro_attributes(file: &mut File, macro_attributes: &[String]) { } } -fn write_struct_in_variant(file: &mut File, fields: &Vec) { +fn write_struct_in_variant(file: &mut File, fields: &[StructFieldDescription]) { writeln!(file, " {{").unwrap(); for field in fields { @@ -110,7 +110,7 @@ fn write_struct_in_variant(file: &mut File, fields: &Vec writeln!(file, " }},").unwrap(); } -fn write_tuple_in_variant(file: &mut File, fields: &Vec) { +fn write_tuple_in_variant(file: &mut File, fields: &[StructFieldDescription]) { write!(file, "(").unwrap(); write!(file, "{}", fields[0].field_type.rust.replace("$API", "Api")).unwrap(); From 4b64a37b7e3dd102b6cd537e5a2d105b5aeee50b Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 21 Mar 2024 21:39:40 +0200 Subject: [PATCH 136/461] tx proxy gen - setup and call sc-meta proxy --- contracts/examples/adder/src/adder_proxy.rs | 36 +- .../examples/crowdfunding-esdt/sc-config.toml | 2 + .../src/crowdfunding_esdt.rs | 2 +- ...mp_proxy.rs => crowdfunding_esdt_proxy.rs} | 19 +- .../examples/crypto-zombies/sc-config.toml | 2 + ...{temp_proxy.rs => crypto_zombies_proxy.rs} | 5 +- contracts/examples/crypto-zombies/src/lib.rs | 2 +- .../examples/crypto-zombies/wasm/src/lib.rs | 5 +- .../examples/digital-cash/sc-config.toml | 2 + .../examples/digital-cash/src/deposit_info.rs | 3 +- .../examples/digital-cash/src/digital_cash.rs | 1 + .../digital-cash/src/digital_cash_proxy.rs | 391 ++++++++++++++++++ 12 files changed, 443 insertions(+), 27 deletions(-) create mode 100644 contracts/examples/crowdfunding-esdt/sc-config.toml rename contracts/examples/crowdfunding-esdt/src/{temp_proxy.rs => crowdfunding_esdt_proxy.rs} (98%) create mode 100644 contracts/examples/crypto-zombies/sc-config.toml rename contracts/examples/crypto-zombies/src/{temp_proxy.rs => crypto_zombies_proxy.rs} (99%) create mode 100644 contracts/examples/digital-cash/sc-config.toml create mode 100644 contracts/examples/digital-cash/src/digital_cash_proxy.rs diff --git a/contracts/examples/adder/src/adder_proxy.rs b/contracts/examples/adder/src/adder_proxy.rs index c1b5195101..72e85655f8 100644 --- a/contracts/examples/adder/src/adder_proxy.rs +++ b/contracts/examples/adder/src/adder_proxy.rs @@ -4,7 +4,7 @@ #![allow(clippy::all)] -use multiversx_sc::imports::*; +use multiversx_sc::proxy_imports::*; pub struct AdderProxy; @@ -39,15 +39,26 @@ where From: TxFrom, Gas: TxGas, { - pub fn init>>( + pub fn init< + Arg0: CodecInto>, + >( self, initial_value: Arg0, - ) -> Tx, OriginalResultMarker<()>> { + ) -> Tx< + Env, + From, + (), + (), + Gas, + DeployCall, + OriginalResultMarker<()>, + > { self.wrapped_tx .raw_deploy() .argument(&initial_value) .original_result() } + } impl AdderProxyMethods where @@ -66,7 +77,7 @@ where (), Gas, FunctionCall, - OriginalResultMarker>, + OriginalResultMarker>, > { self.wrapped_tx .raw_call() @@ -74,15 +85,26 @@ where .original_result() } - /// Add desired amount to the storage variable. - pub fn add>>( + /// Add desired amount to the storage variable. + pub fn add< + Arg0: CodecInto>, + >( self, value: Arg0, - ) -> Tx, OriginalResultMarker<()>> { + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { self.wrapped_tx .raw_call() .function_name("add") .argument(&value) .original_result() } + } diff --git a/contracts/examples/crowdfunding-esdt/sc-config.toml b/contracts/examples/crowdfunding-esdt/sc-config.toml new file mode 100644 index 0000000000..6539909c96 --- /dev/null +++ b/contracts/examples/crowdfunding-esdt/sc-config.toml @@ -0,0 +1,2 @@ +[settings] +proxy-paths = ["src/crowdfunding_esdt_proxy.rs"] diff --git a/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt.rs b/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt.rs index f38da41061..abe8420d82 100644 --- a/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt.rs +++ b/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt.rs @@ -1,7 +1,7 @@ #![no_std] use multiversx_sc::{derive_imports::*, imports::*}; -pub mod temp_proxy; +pub mod crowdfunding_esdt_proxy; #[type_abi] #[derive(TopEncode, TopDecode, PartialEq, Eq, Clone, Copy, Debug)] diff --git a/contracts/examples/crowdfunding-esdt/src/temp_proxy.rs b/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt_proxy.rs similarity index 98% rename from contracts/examples/crowdfunding-esdt/src/temp_proxy.rs rename to contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt_proxy.rs index b82e54eb8c..fbbcec61d4 100644 --- a/contracts/examples/crowdfunding-esdt/src/temp_proxy.rs +++ b/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt_proxy.rs @@ -4,17 +4,7 @@ #![allow(clippy::all)] -use multiversx_sc::imports::*; - -use multiversx_sc::derive_imports::*; - -#[type_abi] -#[derive(TopEncode, TopDecode, PartialEq, Eq, Clone, Copy, Debug)] -pub enum Status { - FundingPeriod, - Successful, - Failed, -} +use multiversx_sc::proxy_imports::*; pub struct CrowdfundingProxy; @@ -225,3 +215,10 @@ where } } +#[derive(TopEncode, TopDecode, PartialEq, Eq, Clone, Copy, Debug)] +pub enum Status { + FundingPeriod, + Successful, + Failed, +} + diff --git a/contracts/examples/crypto-zombies/sc-config.toml b/contracts/examples/crypto-zombies/sc-config.toml new file mode 100644 index 0000000000..2a3130ea0d --- /dev/null +++ b/contracts/examples/crypto-zombies/sc-config.toml @@ -0,0 +1,2 @@ +[settings] +proxy-paths = ["src/crypto_zombies_proxy.rs"] \ No newline at end of file diff --git a/contracts/examples/crypto-zombies/src/temp_proxy.rs b/contracts/examples/crypto-zombies/src/crypto_zombies_proxy.rs similarity index 99% rename from contracts/examples/crypto-zombies/src/temp_proxy.rs rename to contracts/examples/crypto-zombies/src/crypto_zombies_proxy.rs index 09ae9979d1..ea1a1ef4a6 100644 --- a/contracts/examples/crypto-zombies/src/temp_proxy.rs +++ b/contracts/examples/crypto-zombies/src/crypto_zombies_proxy.rs @@ -4,7 +4,7 @@ #![allow(clippy::all)] -use multiversx_sc::imports::*; +use multiversx_sc::proxy_imports::*; pub struct CryptoZombiesProxy; @@ -410,9 +410,6 @@ where } } -use multiversx_sc::derive_imports::*; - -#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct Zombie where diff --git a/contracts/examples/crypto-zombies/src/lib.rs b/contracts/examples/crypto-zombies/src/lib.rs index bed761384f..d767bd61ff 100644 --- a/contracts/examples/crypto-zombies/src/lib.rs +++ b/contracts/examples/crypto-zombies/src/lib.rs @@ -3,8 +3,8 @@ use multiversx_sc::imports::*; mod crypto_kitties_proxy; +pub mod crypto_zombies_proxy; mod storage; -pub mod temp_proxy; mod zombie; mod zombie_attack; mod zombie_factory; diff --git a/contracts/examples/crypto-zombies/wasm/src/lib.rs b/contracts/examples/crypto-zombies/wasm/src/lib.rs index 44f5f426c8..ffc350bc7d 100644 --- a/contracts/examples/crypto-zombies/wasm/src/lib.rs +++ b/contracts/examples/crypto-zombies/wasm/src/lib.rs @@ -5,9 +5,10 @@ //////////////////////////////////////////////////// // Init: 1 -// Endpoints: 18 +// Upgrade: 1 +// Endpoints: 17 // Async Callback: 1 -// Total number of exported functions: 20 +// Total number of exported functions: 19 #![no_std] #![allow(internal_features)] diff --git a/contracts/examples/digital-cash/sc-config.toml b/contracts/examples/digital-cash/sc-config.toml new file mode 100644 index 0000000000..e33ce56689 --- /dev/null +++ b/contracts/examples/digital-cash/sc-config.toml @@ -0,0 +1,2 @@ +[settings] +proxy-paths = ["src/digital_cash_proxy.rs"] \ No newline at end of file diff --git a/contracts/examples/digital-cash/src/deposit_info.rs b/contracts/examples/digital-cash/src/deposit_info.rs index ce2c279409..daef136feb 100644 --- a/contracts/examples/digital-cash/src/deposit_info.rs +++ b/contracts/examples/digital-cash/src/deposit_info.rs @@ -25,7 +25,8 @@ where } } -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[type_abi] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct Fee { pub num_token_to_transfer: usize, pub value: EgldOrEsdtTokenPayment, diff --git a/contracts/examples/digital-cash/src/digital_cash.rs b/contracts/examples/digital-cash/src/digital_cash.rs index b46c2b7331..052faca2ef 100644 --- a/contracts/examples/digital-cash/src/digital_cash.rs +++ b/contracts/examples/digital-cash/src/digital_cash.rs @@ -5,6 +5,7 @@ use multiversx_sc::imports::*; mod constants; mod deposit_info; +pub mod digital_cash_proxy; mod helpers; mod pay_fee_and_fund; mod signature_operations; diff --git a/contracts/examples/digital-cash/src/digital_cash_proxy.rs b/contracts/examples/digital-cash/src/digital_cash_proxy.rs new file mode 100644 index 0000000000..41459dea9f --- /dev/null +++ b/contracts/examples/digital-cash/src/digital_cash_proxy.rs @@ -0,0 +1,391 @@ +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +pub struct DigitalCashProxy; + +impl TxProxyTrait for DigitalCashProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = DigitalCashProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + DigitalCashProxyMethods { wrapped_tx: tx } + } +} + +pub struct DigitalCashProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +impl DigitalCashProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + fee: Arg0, + token: Arg1, + ) -> Tx< + Env, + From, + (), + (), + Gas, + DeployCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_deploy() + .argument(&fee) + .argument(&token) + .original_result() + } + +} +impl DigitalCashProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn whitelist_fee_token< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + fee: Arg0, + token: Arg1, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("whitelistFeeToken") + .argument(&fee) + .argument(&token) + .original_result() + } + + pub fn blacklist_fee_token< + Arg0: CodecInto>, + >( + self, + token: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("blacklistFeeToken") + .argument(&token) + .original_result() + } + + pub fn claim_fees( + self, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("claimFees") + .original_result() + } + + pub fn get_amount< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto, + >( + self, + address: Arg0, + token: Arg1, + nonce: Arg2, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>, + > { + self.wrapped_tx + .raw_call() + .function_name("getAmount") + .argument(&address) + .argument(&token) + .argument(&nonce) + .original_result() + } + + pub fn pay_fee_and_fund_esdt< + Arg0: CodecInto>, + Arg1: CodecInto, + >( + self, + address: Arg0, + valability: Arg1, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("payFeeAndFundESDT") + .argument(&address) + .argument(&valability) + .original_result() + } + + pub fn pay_fee_and_fund_egld< + Arg0: CodecInto>, + Arg1: CodecInto, + >( + self, + address: Arg0, + valability: Arg1, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("payFeeAndFundEGLD") + .argument(&address) + .argument(&valability) + .original_result() + } + + pub fn fund< + Arg0: CodecInto>, + Arg1: CodecInto, + >( + self, + address: Arg0, + valability: Arg1, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("fund") + .argument(&address) + .argument(&valability) + .original_result() + } + + pub fn deposit_fees< + Arg0: CodecInto>, + >( + self, + address: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("depositFees") + .argument(&address) + .original_result() + } + + pub fn withdraw< + Arg0: CodecInto>, + >( + self, + address: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("withdraw") + .argument(&address) + .original_result() + } + + pub fn claim< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + address: Arg0, + signature: Arg1, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("claim") + .argument(&address) + .argument(&signature) + .original_result() + } + + pub fn forward< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>, + >( + self, + address: Arg0, + forward_address: Arg1, + signature: Arg2, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker<()>, + > { + self.wrapped_tx + .raw_call() + .function_name("forward") + .argument(&address) + .argument(&forward_address) + .argument(&signature) + .original_result() + } + + pub fn deposit< + Arg0: CodecInto>, + >( + self, + donor: Arg0, + ) -> Tx< + Env, + From, + To, + (), + Gas, + FunctionCall, + OriginalResultMarker>, + > { + self.wrapped_tx + .raw_call() + .function_name("deposit") + .argument(&donor) + .original_result() + } + +} +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] +pub struct DepositInfo +where + Api: ManagedTypeApi, +{ + pub depositor_address: ManagedAddress, + pub esdt_funds: ManagedVec>, + pub egld_funds: BigUint, + pub valability: u64, + pub expiration_round: u64, + pub fees: Fee, +} + +#[derive(TopEncode, NestedEncode, Clone, PartialEq, Eq, Debug)] +pub struct EsdtTokenPayment +where + Api: ManagedTypeApi, +{ + pub token_identifier: TokenIdentifier, + pub token_nonce: u64, + pub amount: BigUint, +} + +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] +pub struct Fee +where + Api: ManagedTypeApi, +{ + pub num_token_to_transfer: usize, + pub value: EgldOrEsdtTokenPayment, +} + +#[derive(TopEncode, TopDecode)] +pub struct EgldOrEsdtTokenPayment +where + Api: ManagedTypeApi, +{ + pub token_identifier: EgldOrEsdtTokenIdentifier, + pub token_nonce: u64, + pub amount: BigUint, +} + From 8e1e6684c1a21c620d096e66b783797806d3a956 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 21 Mar 2024 22:47:41 +0200 Subject: [PATCH 137/461] tx proxy gen - fixed multisig --- contracts/examples/multisig/src/action.rs | 9 +++-- contracts/examples/multisig/src/multisig.rs | 2 +- .../examples/multisig/src/multisig_proxy.rs | 38 +++++++++++++------ .../generate_proxy/proxy_gen_struct_enum.rs | 29 +++++++------- 4 files changed, 48 insertions(+), 30 deletions(-) diff --git a/contracts/examples/multisig/src/action.rs b/contracts/examples/multisig/src/action.rs index d36af70f90..c26c83259a 100644 --- a/contracts/examples/multisig/src/action.rs +++ b/contracts/examples/multisig/src/action.rs @@ -5,7 +5,8 @@ use multiversx_sc::{ use multiversx_sc::derive_imports::*; -#[derive(NestedEncode, NestedDecode, TypeAbi, Clone)] +#[type_abi] +#[derive(NestedEncode, NestedDecode, Clone)] pub struct CallActionData { pub to: ManagedAddress, pub egld_amount: BigUint, @@ -13,7 +14,8 @@ pub struct CallActionData { pub arguments: ManagedVec>, } -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi, Clone)] +#[type_abi] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, Clone)] pub enum Action { Nothing, AddBoardMember(ManagedAddress), @@ -47,7 +49,8 @@ impl Action { } /// Not used internally, just to retrieve results via endpoint. -#[derive(TopEncode, TypeAbi)] +#[type_abi] +#[derive(TopEncode)] pub struct ActionFullInfo { pub action_id: usize, pub action_data: Action, diff --git a/contracts/examples/multisig/src/multisig.rs b/contracts/examples/multisig/src/multisig.rs index 75c13cb5dd..96d3d5cdfa 100644 --- a/contracts/examples/multisig/src/multisig.rs +++ b/contracts/examples/multisig/src/multisig.rs @@ -4,7 +4,7 @@ pub mod action; pub mod multisig_events; pub mod multisig_perform; pub mod multisig_propose; -// pub mod multisig_proxy; +pub mod multisig_proxy; pub mod multisig_state; pub mod user_role; diff --git a/contracts/examples/multisig/src/multisig_proxy.rs b/contracts/examples/multisig/src/multisig_proxy.rs index b0d42e16ef..330637de69 100644 --- a/contracts/examples/multisig/src/multisig_proxy.rs +++ b/contracts/examples/multisig/src/multisig_proxy.rs @@ -721,7 +721,7 @@ where } } -#[derive(TopEncode, TopDecode)] +#[derive(TopEncode)] pub struct ActionFullInfo where Api: ManagedTypeApi, @@ -731,20 +731,34 @@ where pub signers: ManagedVec>, } -#[derive(TopEncode, TopDecode)] -pub enum Action { +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, Clone)] +pub enum Action +where + Api: ManagedTypeApi, +{ Nothing, - AddBoardMember, - AddProposer, - RemoveUser, - ChangeQuorum, - SendTransferExecute, - SendAsyncCall, - SCDeployFromSource, - SCUpgradeFromSource, + AddBoardMember(ManagedAddress), + AddProposer(ManagedAddress), + RemoveUser(ManagedAddress), + ChangeQuorum(usize), + SendTransferExecute(CallActionData), + SendAsyncCall(CallActionData), + SCDeployFromSource { + amount: BigUint, + source: ManagedAddress, + code_metadata: CodeMetadata, + arguments: ManagedVec>, + }, + SCUpgradeFromSource { + sc_address: ManagedAddress, + amount: BigUint, + source: ManagedAddress, + code_metadata: CodeMetadata, + arguments: ManagedVec>, + }, } -#[derive(TopEncode, TopDecode)] +#[derive(NestedEncode, NestedDecode, Clone)] pub struct CallActionData where Api: ManagedTypeApi, diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs index 2932437a5b..dabf9744c1 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs @@ -22,25 +22,32 @@ pub(crate) fn write_types(file: &mut File, types: &TypeDescriptionContainerImpl) } } -fn write_struct( - file: &mut File, - struct_fields: &Vec, - type_description: &TypeDescription, -) { +fn start_write_type(file: &mut File, type_type: &str, type_description: &TypeDescription,) { let struct_name = type_description.names.rust.replace("$API", "Api"); write_macro_attributes(file, &type_description.macro_attributes); - writeln!(file, r#"pub struct {struct_name}"#).unwrap(); + write!(file, r#"pub {type_type} {struct_name}"#).unwrap(); if struct_name.contains("") { writeln!( file, - r#"where + r#" +where Api: ManagedTypeApi,"# ) .unwrap(); + } else { + write!(file, " ").unwrap(); } writeln!(file, r#"{{"#).unwrap(); +} + +fn write_struct( + file: &mut File, + struct_fields: &Vec, + type_description: &TypeDescription, +) { + start_write_type(file, "struct", type_description); for field in struct_fields { writeln!( @@ -61,13 +68,7 @@ fn write_enum( enum_variants: &Vec, type_description: &TypeDescription, ) { - write_macro_attributes(file, &type_description.macro_attributes); - writeln!( - file, - r#"pub enum {} {{"#, - type_description.names.rust.replace("$API", "Api") - ) - .unwrap(); + start_write_type(file, "enum", type_description); for variant in enum_variants { write!(file, " {}", variant.name).unwrap(); From a101ad3b0b100dbae46c2191eec131c2641f1669 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 21 Mar 2024 23:03:25 +0200 Subject: [PATCH 138/461] tx proxy gen - blacklist of types from framework --- .../digital-cash/src/digital_cash_proxy.rs | 20 ------------------- .../generate_proxy/proxy_gen_struct_enum.rs | 17 +++++++++++++++- 2 files changed, 16 insertions(+), 21 deletions(-) diff --git a/contracts/examples/digital-cash/src/digital_cash_proxy.rs b/contracts/examples/digital-cash/src/digital_cash_proxy.rs index 41459dea9f..75dc624b92 100644 --- a/contracts/examples/digital-cash/src/digital_cash_proxy.rs +++ b/contracts/examples/digital-cash/src/digital_cash_proxy.rs @@ -360,16 +360,6 @@ where pub fees: Fee, } -#[derive(TopEncode, NestedEncode, Clone, PartialEq, Eq, Debug)] -pub struct EsdtTokenPayment -where - Api: ManagedTypeApi, -{ - pub token_identifier: TokenIdentifier, - pub token_nonce: u64, - pub amount: BigUint, -} - #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct Fee where @@ -379,13 +369,3 @@ where pub value: EgldOrEsdtTokenPayment, } -#[derive(TopEncode, TopDecode)] -pub struct EgldOrEsdtTokenPayment -where - Api: ManagedTypeApi, -{ - pub token_identifier: EgldOrEsdtTokenIdentifier, - pub token_nonce: u64, - pub amount: BigUint, -} - diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs index dabf9744c1..2179ce4a42 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs @@ -9,8 +9,23 @@ use crate::cmd::contract::generate_snippets::snippet_gen_common::write_newline; const ZERO: &str = "0"; +/// Types defined in the framework don't need to be generated again in the proxy. +const TYPES_FROM_FRAMEWORK: &[&str] = &[ + "EsdtTokenPayment<$API>", + "EgldOrEsdtTokenPayment<$API>", + "EsdtTokenData<$API>", + "EgldOrEsdtTokenIdentifier<$API>", + "EgldOrEsdtTokenPayment<$API>", + "EgldOrMultiEsdtPayment<$API>", + "EsdtTokenData<$API>", +]; + pub(crate) fn write_types(file: &mut File, types: &TypeDescriptionContainerImpl) { for (_, type_description) in &types.0 { + if TYPES_FROM_FRAMEWORK.contains(&type_description.names.rust.as_str()) { + continue; + } + match &type_description.contents { TypeContents::Enum(enum_variants) => write_enum(file, enum_variants, type_description), TypeContents::Struct(struct_fields) => { @@ -22,7 +37,7 @@ pub(crate) fn write_types(file: &mut File, types: &TypeDescriptionContainerImpl) } } -fn start_write_type(file: &mut File, type_type: &str, type_description: &TypeDescription,) { +fn start_write_type(file: &mut File, type_type: &str, type_description: &TypeDescription) { let struct_name = type_description.names.rust.replace("$API", "Api"); write_macro_attributes(file, &type_description.macro_attributes); write!(file, r#"pub {type_type} {struct_name}"#).unwrap(); From 318070e868f65952de4e60ba1bd81574844879f6 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 21 Mar 2024 23:07:56 +0200 Subject: [PATCH 139/461] tx proxy gen - fix abi-tester --- .../feature-tests/abi-tester/src/abi_proxy.rs | 95 +++++-------------- 1 file changed, 23 insertions(+), 72 deletions(-) diff --git a/contracts/feature-tests/abi-tester/src/abi_proxy.rs b/contracts/feature-tests/abi-tester/src/abi_proxy.rs index 5fdab1395f..fe87bd79a6 100644 --- a/contracts/feature-tests/abi-tester/src/abi_proxy.rs +++ b/contracts/feature-tests/abi-tester/src/abi_proxy.rs @@ -637,27 +637,23 @@ where } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpInConstructor -{ +pub struct OnlyShowsUpInConstructor { pub something: (), } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct AbiTestType -{ +pub struct AbiTestType { pub nested: OnlyShowsUpAsNested01, pub next: Option>, pub tuple_madness: (OnlyShowsUpAsNested02, Option>), } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested01 -{ +pub struct OnlyShowsUpAsNested01 { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested02 -{ +pub struct OnlyShowsUpAsNested02 { pub something: [u8; 0], } @@ -673,13 +669,11 @@ pub enum AbiEnum { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested08 -{ +pub struct OnlyShowsUpAsNested08 { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested09 -{ +pub struct OnlyShowsUpAsNested09 { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] @@ -693,28 +687,23 @@ where } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested03 -{ +pub struct OnlyShowsUpAsNested03 { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested04 -{ +pub struct OnlyShowsUpAsNested04 { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested05 -{ +pub struct OnlyShowsUpAsNested05 { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested06 -{ +pub struct OnlyShowsUpAsNested06 { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested07 -{ +pub struct OnlyShowsUpAsNested07 { } #[derive(TopDecode, TopEncode, NestedDecode, NestedEncode, Clone, PartialEq, Eq, Debug, Copy)] @@ -730,32 +719,6 @@ pub enum EsdtLocalRole { Transfer, } -#[derive(TopEncode, NestedEncode, Clone, PartialEq, Eq, Debug)] -pub struct EsdtTokenPayment -where - Api: ManagedTypeApi, -{ - pub token_identifier: TokenIdentifier, - pub token_nonce: u64, - pub amount: BigUint, -} - -#[derive(Clone, TopDecode, TopEncode, NestedDecode, NestedEncode, Debug, ManagedVecItem)] -pub struct EsdtTokenData -where - Api: ManagedTypeApi, -{ - pub token_type: EsdtTokenType, - pub amount: BigUint, - pub frozen: bool, - pub hash: ManagedBuffer, - pub name: ManagedBuffer, - pub attributes: ManagedBuffer, - pub creator: ManagedAddress, - pub royalties: BigUint, - pub uris: ManagedVec>, -} - #[derive(TopDecode, TopEncode, NestedDecode, NestedEncode, Clone, PartialEq, Eq, Debug, ManagedVecItem)] pub enum EsdtTokenType { Fungible, @@ -766,66 +729,54 @@ pub enum EsdtTokenType { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInSingleValueMapper -{ +pub struct OnlyShowsUpAsNestedInSingleValueMapper { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInVec -{ +pub struct OnlyShowsUpAsNestedInVec { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInArrayVec -{ +pub struct OnlyShowsUpAsNestedInArrayVec { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, ManagedVecItem)] -pub struct AbiManagedVecItem -{ +pub struct AbiManagedVecItem { pub value1: u32, pub value2: u32, } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInArray -{ +pub struct OnlyShowsUpAsNestedInArray { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInBox -{ +pub struct OnlyShowsUpAsNestedInBox { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInBoxedSlice -{ +pub struct OnlyShowsUpAsNestedInBoxedSlice { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInRef -{ +pub struct OnlyShowsUpAsNestedInRef { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInSlice -{ +pub struct OnlyShowsUpAsNestedInSlice { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInOption -{ +pub struct OnlyShowsUpAsNestedInOption { } #[derive(TopEncode, TopDecode)] -pub struct OnlyShowsUpInEsdtAttr -{ +pub struct OnlyShowsUpInEsdtAttr { pub field: OnlyShowsUpAsNested10, } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested10 -{ +pub struct OnlyShowsUpAsNested10 { } #[derive(TopEncode, TopDecode)] From 87fd1731933e4e3e1c6f2322d2eec8899cea7a8f Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 21 Mar 2024 23:29:08 +0200 Subject: [PATCH 140/461] tx proxy gen - fixed test --- contracts/examples/crypto-zombies/sc-config.toml | 2 +- contracts/examples/crypto-zombies/src/lib.rs | 2 +- .../src/{crypto_zombies_proxy.rs => proxy_crypto_zombies.rs} | 0 framework/meta/tests/template_test.rs | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) rename contracts/examples/crypto-zombies/src/{crypto_zombies_proxy.rs => proxy_crypto_zombies.rs} (100%) diff --git a/contracts/examples/crypto-zombies/sc-config.toml b/contracts/examples/crypto-zombies/sc-config.toml index 2a3130ea0d..d43702bdfa 100644 --- a/contracts/examples/crypto-zombies/sc-config.toml +++ b/contracts/examples/crypto-zombies/sc-config.toml @@ -1,2 +1,2 @@ [settings] -proxy-paths = ["src/crypto_zombies_proxy.rs"] \ No newline at end of file +proxy-paths = ["src/proxy_crypto_zombies.rs"] \ No newline at end of file diff --git a/contracts/examples/crypto-zombies/src/lib.rs b/contracts/examples/crypto-zombies/src/lib.rs index d767bd61ff..05364f6f31 100644 --- a/contracts/examples/crypto-zombies/src/lib.rs +++ b/contracts/examples/crypto-zombies/src/lib.rs @@ -3,7 +3,7 @@ use multiversx_sc::imports::*; mod crypto_kitties_proxy; -pub mod crypto_zombies_proxy; +pub mod proxy_crypto_zombies; mod storage; mod zombie; mod zombie_attack; diff --git a/contracts/examples/crypto-zombies/src/crypto_zombies_proxy.rs b/contracts/examples/crypto-zombies/src/proxy_crypto_zombies.rs similarity index 100% rename from contracts/examples/crypto-zombies/src/crypto_zombies_proxy.rs rename to contracts/examples/crypto-zombies/src/proxy_crypto_zombies.rs diff --git a/framework/meta/tests/template_test.rs b/framework/meta/tests/template_test.rs index 335fcb240b..950a6079d7 100644 --- a/framework/meta/tests/template_test.rs +++ b/framework/meta/tests/template_test.rs @@ -38,7 +38,7 @@ fn template_current_adder() { } #[test] -#[cfg_attr(not(feature = "template-test-current"), ignore)] +// #[cfg_attr(not(feature = "template-test-current"), ignore)] fn template_current_crypto_zombies() { template_test_current("crypto-zombies", "examples", "new-crypto-zombies"); } From 10e8d93dcf4910c1993a2f943e229accd4c85fed Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 21 Mar 2024 23:37:47 +0200 Subject: [PATCH 141/461] tx proxy gen - revert template test --- framework/meta/tests/template_test.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/meta/tests/template_test.rs b/framework/meta/tests/template_test.rs index 950a6079d7..335fcb240b 100644 --- a/framework/meta/tests/template_test.rs +++ b/framework/meta/tests/template_test.rs @@ -38,7 +38,7 @@ fn template_current_adder() { } #[test] -// #[cfg_attr(not(feature = "template-test-current"), ignore)] +#[cfg_attr(not(feature = "template-test-current"), ignore)] fn template_current_crypto_zombies() { template_test_current("crypto-zombies", "examples", "new-crypto-zombies"); } From cd8ab0890a42744f559142b3fd2b6552924fb4c5 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 22 Mar 2024 11:15:12 +0200 Subject: [PATCH 142/461] proxy gen formatting --- contracts/examples/adder/src/adder_proxy.rs | 35 +- .../src/crowdfunding_esdt_proxy.rs | 90 +--- .../src/proxy_crypto_zombies.rs | 187 +-------- .../digital-cash/src/digital_cash_proxy.rs | 137 +------ contracts/examples/empty/wasm/src/lib.rs | 5 +- .../examples/multisig/src/multisig_proxy.rs | 297 ++------------ .../examples/ping-pong-egld/wasm/src/lib.rs | 5 +- .../feature-tests/abi-tester/src/abi_proxy.rs | 385 +++--------------- .../base/src/types/interaction/tx_proxy.rs | 10 +- .../meta/src/cmd/contract/generate_proxy.rs | 2 +- .../contract/generate_proxy/proxy_gen_main.rs | 5 +- .../generate_proxy/proxy_gen_struct_enum.rs | 11 +- .../generate_proxy/proxy_sc_functions_gen.rs | 61 +-- .../generate_proxy/proxy_template_gen.rs | 24 +- 14 files changed, 200 insertions(+), 1054 deletions(-) diff --git a/contracts/examples/adder/src/adder_proxy.rs b/contracts/examples/adder/src/adder_proxy.rs index 72e85655f8..9a460ca687 100644 --- a/contracts/examples/adder/src/adder_proxy.rs +++ b/contracts/examples/adder/src/adder_proxy.rs @@ -32,6 +32,7 @@ where wrapped_tx: Tx, } +#[rustfmt::skip] impl AdderProxyMethods where Env: TxEnv, @@ -44,22 +45,15 @@ where >( self, initial_value: Arg0, - ) -> Tx< - Env, - From, - (), - (), - Gas, - DeployCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyDeploy { self.wrapped_tx .raw_deploy() .argument(&initial_value) .original_result() } - } + +#[rustfmt::skip] impl AdderProxyMethods where Env: TxEnv, @@ -70,15 +64,7 @@ where { pub fn sum( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>, - > { + ) -> TxProxyCall> { self.wrapped_tx .raw_call() .function_name("getSum") @@ -91,20 +77,11 @@ where >( self, value: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("add") .argument(&value) .original_result() } - } diff --git a/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt_proxy.rs b/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt_proxy.rs index fbbcec61d4..5f73825a34 100644 --- a/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt_proxy.rs +++ b/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt_proxy.rs @@ -48,15 +48,7 @@ where target: Arg0, deadline: Arg1, token_identifier: Arg2, - ) -> Tx< - Env, - From, - (), - (), - Gas, - DeployCall, - OriginalResultMarker<()>, - > { + ) -> Tx, OriginalResultMarker<()>> { self.wrapped_tx .raw_deploy() .argument(&target) @@ -64,7 +56,6 @@ where .argument(&token_identifier) .original_result() } - } impl CrowdfundingProxyMethods where @@ -76,15 +67,7 @@ where { pub fn fund( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> Tx, OriginalResultMarker<()>> { self.wrapped_tx .raw_call() .function_name("fund") @@ -93,15 +76,7 @@ where pub fn status( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> Tx, OriginalResultMarker> { self.wrapped_tx .raw_call() .function_name("status") @@ -110,15 +85,8 @@ where pub fn get_current_funds( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>, - > { + ) -> Tx, OriginalResultMarker>> + { self.wrapped_tx .raw_call() .function_name("getCurrentFunds") @@ -127,15 +95,7 @@ where pub fn claim( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> Tx, OriginalResultMarker<()>> { self.wrapped_tx .raw_call() .function_name("claim") @@ -144,15 +104,8 @@ where pub fn target( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>, - > { + ) -> Tx, OriginalResultMarker>> + { self.wrapped_tx .raw_call() .function_name("getTarget") @@ -161,35 +114,18 @@ where pub fn deadline( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> Tx, OriginalResultMarker> { self.wrapped_tx .raw_call() .function_name("getDeadline") .original_result() } - pub fn deposit< - Arg0: CodecInto>, - >( + pub fn deposit>>( self, donor: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>, - > { + ) -> Tx, OriginalResultMarker>> + { self.wrapped_tx .raw_call() .function_name("getDeposit") @@ -213,7 +149,6 @@ where .function_name("getCrowdfundingTokenIdentifier") .original_result() } - } #[derive(TopEncode, TopDecode, PartialEq, Eq, Clone, Copy, Debug)] pub enum Status { @@ -221,4 +156,3 @@ pub enum Status { Successful, Failed, } - diff --git a/contracts/examples/crypto-zombies/src/proxy_crypto_zombies.rs b/contracts/examples/crypto-zombies/src/proxy_crypto_zombies.rs index ea1a1ef4a6..ce6fcdd05b 100644 --- a/contracts/examples/crypto-zombies/src/proxy_crypto_zombies.rs +++ b/contracts/examples/crypto-zombies/src/proxy_crypto_zombies.rs @@ -32,6 +32,7 @@ where wrapped_tx: Tx, } +#[rustfmt::skip] impl CryptoZombiesProxyMethods where Env: TxEnv, @@ -41,21 +42,14 @@ where { pub fn init( self, - ) -> Tx< - Env, - From, - (), - (), - Gas, - DeployCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyDeploy { self.wrapped_tx .raw_deploy() .original_result() } - } + +#[rustfmt::skip] impl CryptoZombiesProxyMethods where Env: TxEnv, @@ -69,15 +63,7 @@ where >( self, address: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("set_crypto_kitties_sc_address") @@ -87,15 +73,7 @@ where pub fn generate_random_dna( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("generate_random_dna") @@ -107,15 +85,7 @@ where >( self, name: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("create_random_zombie") @@ -128,15 +98,7 @@ where >( self, zombie_id: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("is_ready") @@ -151,15 +113,7 @@ where self, zombie_id: Arg0, kitty_id: Arg1, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("feed_on_kitty") @@ -170,15 +124,7 @@ where pub fn dna_digits( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("dna_digits") @@ -187,15 +133,7 @@ where pub fn zombies_count( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("zombies_count") @@ -207,15 +145,7 @@ where >( self, id: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>, - > { + ) -> TxProxyCall> { self.wrapped_tx .raw_call() .function_name("zombies") @@ -228,15 +158,7 @@ where >( self, id: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>, - > { + ) -> TxProxyCall> { self.wrapped_tx .raw_call() .function_name("zombie_owner") @@ -246,15 +168,7 @@ where pub fn crypto_kitties_sc_address( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>, - > { + ) -> TxProxyCall> { self.wrapped_tx .raw_call() .function_name("crypto_kitties_sc_address") @@ -263,15 +177,7 @@ where pub fn cooldown_time( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("cooldown_time") @@ -283,15 +189,7 @@ where >( self, owner: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>, - > { + ) -> TxProxyCall> { self.wrapped_tx .raw_call() .function_name("owned_zombies") @@ -304,15 +202,7 @@ where >( self, zombie_id: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("level_up") @@ -322,15 +212,7 @@ where pub fn withdraw( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("withdraw") @@ -344,15 +226,7 @@ where self, zombie_id: Arg0, name: Arg1, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("change_name") @@ -368,15 +242,7 @@ where self, zombie_id: Arg0, dna: Arg1, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("change_dna") @@ -392,15 +258,7 @@ where self, zombie_id: Arg0, target_id: Arg1, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("attack") @@ -408,8 +266,8 @@ where .argument(&target_id) .original_result() } - } + #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct Zombie where @@ -422,4 +280,3 @@ where pub win_count: usize, pub loss_count: usize, } - diff --git a/contracts/examples/digital-cash/src/digital_cash_proxy.rs b/contracts/examples/digital-cash/src/digital_cash_proxy.rs index 75dc624b92..c3d87f81c7 100644 --- a/contracts/examples/digital-cash/src/digital_cash_proxy.rs +++ b/contracts/examples/digital-cash/src/digital_cash_proxy.rs @@ -32,6 +32,7 @@ where wrapped_tx: Tx, } +#[rustfmt::skip] impl DigitalCashProxyMethods where Env: TxEnv, @@ -46,23 +47,16 @@ where self, fee: Arg0, token: Arg1, - ) -> Tx< - Env, - From, - (), - (), - Gas, - DeployCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyDeploy { self.wrapped_tx .raw_deploy() .argument(&fee) .argument(&token) .original_result() } - } + +#[rustfmt::skip] impl DigitalCashProxyMethods where Env: TxEnv, @@ -78,15 +72,7 @@ where self, fee: Arg0, token: Arg1, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("whitelistFeeToken") @@ -100,15 +86,7 @@ where >( self, token: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("blacklistFeeToken") @@ -118,15 +96,7 @@ where pub fn claim_fees( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("claimFees") @@ -142,15 +112,7 @@ where address: Arg0, token: Arg1, nonce: Arg2, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>, - > { + ) -> TxProxyCall> { self.wrapped_tx .raw_call() .function_name("getAmount") @@ -167,15 +129,7 @@ where self, address: Arg0, valability: Arg1, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("payFeeAndFundESDT") @@ -191,15 +145,7 @@ where self, address: Arg0, valability: Arg1, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("payFeeAndFundEGLD") @@ -215,15 +161,7 @@ where self, address: Arg0, valability: Arg1, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("fund") @@ -237,15 +175,7 @@ where >( self, address: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("depositFees") @@ -258,15 +188,7 @@ where >( self, address: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("withdraw") @@ -281,15 +203,7 @@ where self, address: Arg0, signature: Arg1, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("claim") @@ -307,15 +221,7 @@ where address: Arg0, forward_address: Arg1, signature: Arg2, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("forward") @@ -330,23 +236,15 @@ where >( self, donor: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>, - > { + ) -> TxProxyCall> { self.wrapped_tx .raw_call() .function_name("deposit") .argument(&donor) .original_result() } - } + #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct DepositInfo where @@ -368,4 +266,3 @@ where pub num_token_to_transfer: usize, pub value: EgldOrEsdtTokenPayment, } - diff --git a/contracts/examples/empty/wasm/src/lib.rs b/contracts/examples/empty/wasm/src/lib.rs index 33ca3e1cfd..6267772e3b 100644 --- a/contracts/examples/empty/wasm/src/lib.rs +++ b/contracts/examples/empty/wasm/src/lib.rs @@ -5,9 +5,10 @@ //////////////////////////////////////////////////// // Init: 1 -// Endpoints: 1 +// Upgrade: 1 +// Endpoints: 0 // Async Callback (empty): 1 -// Total number of exported functions: 3 +// Total number of exported functions: 2 #![no_std] #![allow(internal_features)] diff --git a/contracts/examples/multisig/src/multisig_proxy.rs b/contracts/examples/multisig/src/multisig_proxy.rs index 330637de69..a4f5c82bd7 100644 --- a/contracts/examples/multisig/src/multisig_proxy.rs +++ b/contracts/examples/multisig/src/multisig_proxy.rs @@ -32,6 +32,7 @@ where wrapped_tx: Tx, } +#[rustfmt::skip] impl MultisigProxyMethods where Env: TxEnv, @@ -46,23 +47,16 @@ where self, quorum: Arg0, board: Arg1, - ) -> Tx< - Env, - From, - (), - (), - Gas, - DeployCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyDeploy { self.wrapped_tx .raw_deploy() .argument(&quorum) .argument(&board) .original_result() } - } + +#[rustfmt::skip] impl MultisigProxyMethods where Env: TxEnv, @@ -74,15 +68,7 @@ where /// Allows the contract to receive funds even if it is marked as unpayable in the protocol. pub fn deposit( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("deposit") @@ -96,15 +82,7 @@ where /// - (number of signers followed by) list of signer addresses. pub fn get_pending_action_full_info( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>>, - > { + ) -> TxProxyCall>> { self.wrapped_tx .raw_call() .function_name("getPendingActionFullInfo") @@ -120,15 +98,7 @@ where self, user: Arg0, action_id: Arg1, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("signed") @@ -146,15 +116,7 @@ where >( self, user: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("userRole") @@ -165,15 +127,7 @@ where /// Lists all users that can sign actions. pub fn get_all_board_members( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>>, - > { + ) -> TxProxyCall>> { self.wrapped_tx .raw_call() .function_name("getAllBoardMembers") @@ -183,15 +137,7 @@ where /// Lists all proposers that are not board members. pub fn get_all_proposers( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>>, - > { + ) -> TxProxyCall>> { self.wrapped_tx .raw_call() .function_name("getAllProposers") @@ -204,15 +150,7 @@ where >( self, action_id: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("sign") @@ -227,15 +165,7 @@ where >( self, action_id: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("unsign") @@ -251,15 +181,7 @@ where >( self, action_id: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("discardAction") @@ -270,15 +192,7 @@ where /// Minimum number of signatures needed to perform any action. pub fn quorum( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("getQuorum") @@ -289,15 +203,7 @@ where /// It is kept in sync with the user list by the contract. pub fn num_board_members( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("getNumBoardMembers") @@ -308,15 +214,7 @@ where /// It is kept in sync with the user list by the contract. pub fn num_proposers( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("getNumProposers") @@ -327,15 +225,7 @@ where /// 0 means that no action was ever proposed yet. pub fn get_action_last_index( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("getActionLastIndex") @@ -348,15 +238,7 @@ where >( self, action_id: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>, - > { + ) -> TxProxyCall> { self.wrapped_tx .raw_call() .function_name("getActionData") @@ -372,15 +254,7 @@ where >( self, action_id: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>>, - > { + ) -> TxProxyCall>> { self.wrapped_tx .raw_call() .function_name("getActionSigners") @@ -395,15 +269,7 @@ where >( self, action_id: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("getActionSignerCount") @@ -421,15 +287,7 @@ where >( self, action_id: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("getActionValidSignerCount") @@ -444,15 +302,7 @@ where >( self, board_member_address: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("proposeAddBoardMember") @@ -467,15 +317,7 @@ where >( self, proposer_address: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("proposeAddProposer") @@ -489,15 +331,7 @@ where >( self, user_address: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("proposeRemoveUser") @@ -510,15 +344,7 @@ where >( self, new_quorum: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("proposeChangeQuorum") @@ -539,15 +365,7 @@ where to: Arg0, egld_amount: Arg1, function_call: Arg2, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("proposeTransferExecute") @@ -571,15 +389,7 @@ where to: Arg0, egld_amount: Arg1, function_call: Arg2, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("proposeAsyncCall") @@ -600,15 +410,7 @@ where source: Arg1, code_metadata: Arg2, arguments: Arg3, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("proposeSCDeployFromSource") @@ -632,15 +434,7 @@ where source: Arg2, code_metadata: Arg3, arguments: Arg4, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("proposeSCUpgradeFromSource") @@ -658,15 +452,7 @@ where >( self, action_id: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("quorumReached") @@ -680,15 +466,7 @@ where >( self, action_id: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>>, - > { + ) -> TxProxyCall>> { self.wrapped_tx .raw_call() .function_name("performAction") @@ -703,15 +481,7 @@ where self, dns_address: Arg0, name: Arg1, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("dnsRegister") @@ -719,8 +489,8 @@ where .argument(&name) .original_result() } - } + #[derive(TopEncode)] pub struct ActionFullInfo where @@ -775,4 +545,3 @@ pub enum UserRole { Proposer, BoardMember, } - diff --git a/contracts/examples/ping-pong-egld/wasm/src/lib.rs b/contracts/examples/ping-pong-egld/wasm/src/lib.rs index ec95d16c7e..32ace34885 100644 --- a/contracts/examples/ping-pong-egld/wasm/src/lib.rs +++ b/contracts/examples/ping-pong-egld/wasm/src/lib.rs @@ -5,9 +5,10 @@ //////////////////////////////////////////////////// // Init: 1 -// Endpoints: 11 +// Upgrade: 1 +// Endpoints: 10 // Async Callback (empty): 1 -// Total number of exported functions: 13 +// Total number of exported functions: 12 #![no_std] #![allow(internal_features)] diff --git a/contracts/feature-tests/abi-tester/src/abi_proxy.rs b/contracts/feature-tests/abi-tester/src/abi_proxy.rs index fe87bd79a6..8759f224d8 100644 --- a/contracts/feature-tests/abi-tester/src/abi_proxy.rs +++ b/contracts/feature-tests/abi-tester/src/abi_proxy.rs @@ -32,6 +32,7 @@ where wrapped_tx: Tx, } +#[rustfmt::skip] impl AbiTesterProxyMethods where Env: TxEnv, @@ -47,23 +48,16 @@ where self, _constructor_arg_1: Arg0, _constructor_arg_2: Arg1, - ) -> Tx< - Env, - From, - (), - (), - Gas, - DeployCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyDeploy { self.wrapped_tx .raw_deploy() .argument(&_constructor_arg_1) .argument(&_constructor_arg_2) .original_result() } - } + +#[rustfmt::skip] impl AbiTesterProxyMethods where Env: TxEnv, @@ -78,15 +72,7 @@ where >( self, att: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("echo_abi_test_type") @@ -99,15 +85,7 @@ where >( self, e: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("echo_enum") @@ -120,15 +98,7 @@ where >( self, _arg: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("take_managed_type") @@ -138,15 +108,7 @@ where pub fn multi_result_3( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>, - > { + ) -> TxProxyCall> { self.wrapped_tx .raw_call() .function_name("multi_result_3") @@ -155,15 +117,7 @@ where pub fn multi_result_4( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>, - > { + ) -> TxProxyCall> { self.wrapped_tx .raw_call() .function_name("multi_result_4") @@ -177,15 +131,7 @@ where self, _simple_arg: Arg0, _var_args: Arg1, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("var_args") @@ -196,15 +142,7 @@ where pub fn multi_result_vec( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>>, - > { + ) -> TxProxyCall>> { self.wrapped_tx .raw_call() .function_name("multi_result_vec") @@ -218,15 +156,7 @@ where self, _simple_arg: Arg0, _opt_args: Arg1, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("optional_arg") @@ -237,15 +167,7 @@ where pub fn optional_result( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>, - > { + ) -> TxProxyCall> { self.wrapped_tx .raw_call() .function_name("optional_result") @@ -259,15 +181,7 @@ where self, address: Arg0, h256: Arg1, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>, - > { + ) -> TxProxyCall> { self.wrapped_tx .raw_call() .function_name("address_vs_h256") @@ -283,15 +197,7 @@ where self, address: Arg0, byte_array: Arg1, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, ManagedByteArray>>, - > { + ) -> TxProxyCall, ManagedByteArray>> { self.wrapped_tx .raw_call() .function_name("managed_address_vs_byte_array") @@ -302,15 +208,7 @@ where pub fn esdt_local_role( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("esdt_local_role") @@ -319,15 +217,7 @@ where pub fn esdt_token_payment( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>, - > { + ) -> TxProxyCall> { self.wrapped_tx .raw_call() .function_name("esdt_token_payment") @@ -336,15 +226,7 @@ where pub fn esdt_token_data( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>, - > { + ) -> TxProxyCall> { self.wrapped_tx .raw_call() .function_name("esdt_token_data") @@ -353,15 +235,7 @@ where pub fn sample_storage_mapper( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("sample_storage_mapper") @@ -370,15 +244,7 @@ where pub fn item_for_vec( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>, - > { + ) -> TxProxyCall> { self.wrapped_tx .raw_call() .function_name("item_for_vec") @@ -387,15 +253,7 @@ where pub fn item_for_array_vec( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>, - > { + ) -> TxProxyCall> { self.wrapped_tx .raw_call() .function_name("item_for_array_vec") @@ -404,15 +262,7 @@ where pub fn item_for_managed_vec( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>, - > { + ) -> TxProxyCall> { self.wrapped_tx .raw_call() .function_name("item_for_managed_vec") @@ -424,15 +274,7 @@ where >( self, _array: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("item_for_array") @@ -442,15 +284,7 @@ where pub fn item_for_box( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>, - > { + ) -> TxProxyCall> { self.wrapped_tx .raw_call() .function_name("item_for_box") @@ -459,15 +293,7 @@ where pub fn item_for_boxed_slice( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>, - > { + ) -> TxProxyCall> { self.wrapped_tx .raw_call() .function_name("item_for_boxed_slice") @@ -479,15 +305,7 @@ where >( self, _ref: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("item_for_ref") @@ -500,15 +318,7 @@ where >( self, _ref: Arg0, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("item_for_slice") @@ -518,15 +328,7 @@ where pub fn item_for_option( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>, - > { + ) -> TxProxyCall> { self.wrapped_tx .raw_call() .function_name("item_for_option") @@ -535,15 +337,7 @@ where pub fn payable_egld( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("payable_egld") @@ -552,15 +346,7 @@ where pub fn payable_some_token( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("payable_some_token") @@ -569,15 +355,7 @@ where pub fn payable_any_token( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("payable_any_token") @@ -586,15 +364,7 @@ where pub fn external_view( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("external_view") @@ -603,15 +373,7 @@ where pub fn label_a( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("label_a") @@ -620,22 +382,14 @@ where pub fn label_b( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<()>, - > { + ) -> TxProxyCall { self.wrapped_tx .raw_call() .function_name("label_b") .original_result() } - } + #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpInConstructor { pub something: (), @@ -649,8 +403,7 @@ pub struct AbiTestType { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested01 { -} +pub struct OnlyShowsUpAsNested01 {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested02 { @@ -662,19 +415,14 @@ pub enum AbiEnum { Nothing, Something(i32), SomethingMore(u8, OnlyShowsUpAsNested08), - SomeStruct { - a: u16, - b: OnlyShowsUpAsNested09, - }, + SomeStruct { a: u16, b: OnlyShowsUpAsNested09 }, } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested08 { -} +pub struct OnlyShowsUpAsNested08 {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested09 { -} +pub struct OnlyShowsUpAsNested09 {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct AbiManagedType @@ -687,24 +435,19 @@ where } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested03 { -} +pub struct OnlyShowsUpAsNested03 {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested04 { -} +pub struct OnlyShowsUpAsNested04 {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested05 { -} +pub struct OnlyShowsUpAsNested05 {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested06 { -} +pub struct OnlyShowsUpAsNested06 {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested07 { -} +pub struct OnlyShowsUpAsNested07 {} #[derive(TopDecode, TopEncode, NestedDecode, NestedEncode, Clone, PartialEq, Eq, Debug, Copy)] pub enum EsdtLocalRole { @@ -719,7 +462,9 @@ pub enum EsdtLocalRole { Transfer, } -#[derive(TopDecode, TopEncode, NestedDecode, NestedEncode, Clone, PartialEq, Eq, Debug, ManagedVecItem)] +#[derive( + TopDecode, TopEncode, NestedDecode, NestedEncode, Clone, PartialEq, Eq, Debug, ManagedVecItem, +)] pub enum EsdtTokenType { Fungible, NonFungible, @@ -729,16 +474,13 @@ pub enum EsdtTokenType { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInSingleValueMapper { -} +pub struct OnlyShowsUpAsNestedInSingleValueMapper {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInVec { -} +pub struct OnlyShowsUpAsNestedInVec {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInArrayVec { -} +pub struct OnlyShowsUpAsNestedInArrayVec {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, ManagedVecItem)] pub struct AbiManagedVecItem { @@ -747,28 +489,22 @@ pub struct AbiManagedVecItem { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInArray { -} +pub struct OnlyShowsUpAsNestedInArray {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInBox { -} +pub struct OnlyShowsUpAsNestedInBox {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInBoxedSlice { -} +pub struct OnlyShowsUpAsNestedInBoxedSlice {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInRef { -} +pub struct OnlyShowsUpAsNestedInRef {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInSlice { -} +pub struct OnlyShowsUpAsNestedInSlice {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInOption { -} +pub struct OnlyShowsUpAsNestedInOption {} #[derive(TopEncode, TopDecode)] pub struct OnlyShowsUpInEsdtAttr { @@ -776,8 +512,7 @@ pub struct OnlyShowsUpInEsdtAttr { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested10 { -} +pub struct OnlyShowsUpAsNested10 {} #[derive(TopEncode, TopDecode)] pub enum ExplicitDiscriminant { @@ -794,9 +529,5 @@ pub enum ExplicitDiscriminantMixed { Unit, Tuple(u16), Five, - Struct { - a: u8, - b: u16, - }, + Struct { a: u8, b: u16 }, } - diff --git a/framework/base/src/types/interaction/tx_proxy.rs b/framework/base/src/types/interaction/tx_proxy.rs index 273b9a2960..f38e356be0 100644 --- a/framework/base/src/types/interaction/tx_proxy.rs +++ b/framework/base/src/types/interaction/tx_proxy.rs @@ -1,4 +1,4 @@ -use super::{Tx, TxEnv, TxFrom, TxGas, TxTo}; +use super::{DeployCall, FunctionCall, OriginalResultMarker, Tx, TxEnv, TxFrom, TxGas, TxTo}; /// Defines a proxy object for a smart contract. pub trait TxProxyTrait @@ -13,3 +13,11 @@ where /// Creates the associated type that contains the proxy methods implementations. fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods; } + +/// Alias for a `Tx` generated from a proxy, in `init` or `upgrade`. +pub type TxProxyDeploy = + Tx, OriginalResultMarker>; + +/// Alias for a `Tx` generated from a proxy, in an endpoint. +pub type TxProxyCall = + Tx::Api>, OriginalResultMarker>; diff --git a/framework/meta/src/cmd/contract/generate_proxy.rs b/framework/meta/src/cmd/contract/generate_proxy.rs index 4538ae77d4..2aa854bc2e 100644 --- a/framework/meta/src/cmd/contract/generate_proxy.rs +++ b/framework/meta/src/cmd/contract/generate_proxy.rs @@ -1,6 +1,6 @@ pub mod proxy_crate_gen; pub mod proxy_gen_main; +pub mod proxy_gen_struct_enum; mod proxy_naming; pub mod proxy_sc_functions_gen; pub mod proxy_template_gen; -pub mod proxy_gen_struct_enum; diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs index a55fa334f5..2c0f730eca 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs @@ -8,7 +8,8 @@ use super::{ proxy_gen_struct_enum::write_types, proxy_sc_functions_gen::write_content, proxy_template_gen::{ - write_header, write_impl_for_tx_proxy, write_struct_template, write_struct_tx_proxy_methods, + write_header, write_impl_for_tx_proxy, write_struct_tx_proxy_methods, + write_tx_proxy_type_def, }, }; @@ -30,7 +31,7 @@ fn write_proxy_with_explicit_path(path: &str, abi: &ContractAbi) { fn write_proxy_to_file(mut file: File, abi: &ContractAbi) { write_header(&mut file); - write_struct_template(&mut file, &abi.name); + write_tx_proxy_type_def(&mut file, &abi.name); write_impl_for_tx_proxy(&mut file, &abi.name); write_struct_tx_proxy_methods(&mut file, &abi.name); write_content(&mut file, abi.clone()); diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs index 2179ce4a42..b82b071e16 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs @@ -5,8 +5,6 @@ use multiversx_sc::abi::{ TypeDescriptionContainerImpl, }; -use crate::cmd::contract::generate_snippets::snippet_gen_common::write_newline; - const ZERO: &str = "0"; /// Types defined in the framework don't need to be generated again in the proxy. @@ -38,11 +36,12 @@ pub(crate) fn write_types(file: &mut File, types: &TypeDescriptionContainerImpl) } fn start_write_type(file: &mut File, type_type: &str, type_description: &TypeDescription) { - let struct_name = type_description.names.rust.replace("$API", "Api"); + writeln!(file).unwrap(); + let type_name = type_description.names.rust.replace("$API", "Api"); write_macro_attributes(file, &type_description.macro_attributes); - write!(file, r#"pub {type_type} {struct_name}"#).unwrap(); + write!(file, r#"pub {type_type} {type_name}"#).unwrap(); - if struct_name.contains("") { + if type_name.contains("") { writeln!( file, r#" @@ -75,7 +74,6 @@ fn write_struct( } writeln!(file, "}}").unwrap(); - write_newline(file); } fn write_enum( @@ -99,7 +97,6 @@ fn write_enum( } } writeln!(file, "}}").unwrap(); - write_newline(file); } fn write_macro_attributes(file: &mut File, macro_attributes: &[String]) { diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs index 8198bbe325..59624f979d 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs @@ -2,13 +2,14 @@ use std::{fs::File, io::Write}; use multiversx_sc::abi::{ContractAbi, EndpointAbi, InputAbi, OutputAbi}; -use crate::cmd::contract::generate_snippets::snippet_gen_common::write_newline; - use super::proxy_naming::proxy_methods_type_name; pub(crate) fn write_content(file: &mut File, abi: ContractAbi) { write_header_impl_constructor(file, &abi.name); - for constructor_abi in abi.constructors { + for (i, constructor_abi) in abi.constructors.into_iter().enumerate() { + if i > 0 { + writeln!(file).unwrap(); + } write_constructor_header(file, constructor_abi.clone()); write_constructor_content(file, constructor_abi.inputs); write_end_of_function(file); @@ -16,7 +17,10 @@ pub(crate) fn write_content(file: &mut File, abi: ContractAbi) { writeln!(file, "}}").unwrap(); write_header_impl_endpoints(file, &abi.name); - for endpoint_abi in abi.endpoints { + for (i, endpoint_abi) in abi.endpoints.into_iter().enumerate() { + if i > 0 { + writeln!(file).unwrap(); + } write_endpoint_header(file, endpoint_abi.clone()); write_endpoint_content(file, endpoint_abi.name, endpoint_abi.inputs); write_end_of_function(file); @@ -29,7 +33,9 @@ fn write_header_impl_constructor(file: &mut File, name: &str) { let proxy_methods_type_name = proxy_methods_type_name(name); writeln!( file, - r#"impl {proxy_methods_type_name} + r#" +#[rustfmt::skip] +impl {proxy_methods_type_name} where Env: TxEnv, Env::Api: VMApi, @@ -44,7 +50,9 @@ fn write_header_impl_endpoints(file: &mut File, name: &str) { let proxy_methods_type_name = proxy_methods_type_name(name); writeln!( file, - r#"impl {proxy_methods_type_name} + r#" +#[rustfmt::skip] +impl {proxy_methods_type_name} where Env: TxEnv, Env::Api: VMApi, @@ -83,51 +91,19 @@ fn write_parameters(file: &mut File, inputs: Vec) { } fn write_constructor_output(file: &mut File, outputs: Vec) { - write!( - file, - "-> Tx< - Env, - From, - (), - (), - Gas, - DeployCall, - OriginalResultMarker<" - ) - .unwrap(); + write!(file, "-> TxProxyDeploy, - > {{" - ) - .unwrap(); + writeln!(file, "> {{").unwrap(); } fn write_endpoint_output(file: &mut File, outputs: Vec) { - write!( - file, - "-> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker<" - ) - .unwrap(); + write!(file, "-> TxProxyCall, - > {{" - ) - .unwrap(); + writeln!(file, "> {{").unwrap(); } fn write_constructor_content(file: &mut File, inputs: Vec) { @@ -191,7 +167,6 @@ fn write_argument(file: &mut File, index: usize, rust_name: &str) { fn write_end_of_function(file: &mut File) { writeln!(file, " }}").unwrap(); - write_newline(file); } fn adjust_type_name(original_rust_name: &str) -> String { diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs index 71b673e3a5..22e26eff5a 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs @@ -1,7 +1,5 @@ use std::{fs::File, io::Write}; -use crate::cmd::contract::generate_snippets::snippet_gen_common::write_newline; - use super::proxy_naming::{proxy_methods_type_name, proxy_type_name}; const PREFIX_AUTO_GENERATED: &str = "//////////////////////////////////////////////////// @@ -16,14 +14,16 @@ use multiversx_sc::proxy_imports::*;"; pub(crate) fn write_header(file: &mut File) { writeln!(file, "{PREFIX_AUTO_GENERATED}").unwrap(); writeln!(file, r#"{PRELUDE}"#).unwrap(); - - write_newline(file); } -pub(crate) fn write_struct_template(file: &mut File, name: &str) { +pub(crate) fn write_tx_proxy_type_def(file: &mut File, name: &str) { let proxy_type_name = proxy_type_name(name); - writeln!(file, "pub struct {proxy_type_name};").unwrap(); - write_newline(file) + writeln!( + file, + " +pub struct {proxy_type_name};" + ) + .unwrap(); } pub(crate) fn write_impl_for_tx_proxy(file: &mut File, name: &str) { @@ -31,7 +31,8 @@ pub(crate) fn write_impl_for_tx_proxy(file: &mut File, name: &str) { let proxy_methods_type_name = proxy_methods_type_name(name); writeln!( file, - r#"impl TxProxyTrait for {proxy_type_name} + r#" +impl TxProxyTrait for {proxy_type_name} where Env: TxEnv, From: TxFrom, @@ -46,15 +47,14 @@ where }}"# ) .unwrap(); - - write_newline(file); } pub(crate) fn write_struct_tx_proxy_methods(file: &mut File, name: &str) { let proxy_methods_type_name = proxy_methods_type_name(name); writeln!( file, - r#"pub struct {proxy_methods_type_name} + r#" +pub struct {proxy_methods_type_name} where Env: TxEnv, From: TxFrom, @@ -65,6 +65,4 @@ where }}"# ) .unwrap(); - - write_newline(file); } From 030b02b623ee6264cb253bdb917bbd5d9bb4718d Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 22 Mar 2024 01:56:59 +0200 Subject: [PATCH 143/461] unified syntax - refactored payment normalization --- .../types/interaction/expr/address_expr.rs | 7 +- .../src/types/interaction/expr/sc_expr.rs | 7 +- .../src/types/interaction/function_call.rs | 1 + framework/base/src/types/interaction/mod.rs | 2 + framework/base/src/types/interaction/tx.rs | 70 ++----- .../src/types/interaction/tx_call_async.rs | 25 ++- .../interaction/tx_call_async_promises.rs | 34 ++-- .../src/types/interaction/tx_call_sync.rs | 32 +-- .../base/src/types/interaction/tx_payment.rs | 180 +---------------- .../types/interaction/tx_payment_normalize.rs | 188 ++++++++++++++++++ framework/base/src/types/interaction/tx_to.rs | 24 ++- .../scenario/src/facade/contract_info.rs | 7 +- 12 files changed, 303 insertions(+), 274 deletions(-) create mode 100644 framework/base/src/types/interaction/tx_payment_normalize.rs diff --git a/framework/base/src/types/interaction/expr/address_expr.rs b/framework/base/src/types/interaction/expr/address_expr.rs index 9e1fd943b6..44db09f0fe 100644 --- a/framework/base/src/types/interaction/expr/address_expr.rs +++ b/framework/base/src/types/interaction/expr/address_expr.rs @@ -40,10 +40,13 @@ impl TxToSpecified for AddressExpr where Env: TxEnv, { - fn with_address_ref)>(&self, _env: &Env, f: F) { + fn with_address_ref(&self, env: &Env, f: F) -> R + where + F: FnOnce(&ManagedAddress) -> R, + { let expr: [u8; 32] = self.eval_to_array(); let ma = expr.into(); - f(&ma); + f(&ma) } } diff --git a/framework/base/src/types/interaction/expr/sc_expr.rs b/framework/base/src/types/interaction/expr/sc_expr.rs index 4d05f8bab1..a81275ec4e 100644 --- a/framework/base/src/types/interaction/expr/sc_expr.rs +++ b/framework/base/src/types/interaction/expr/sc_expr.rs @@ -42,10 +42,13 @@ impl<'a, Env> TxToSpecified for ScExpr<'a> where Env: TxEnv, { - fn with_address_ref)>(&self, _env: &Env, f: F) { + fn with_address_ref(&self, env: &Env, f: F) -> R + where + F: FnOnce(&ManagedAddress) -> R, + { let expr: [u8; 32] = self.eval_to_array(); let ma = expr.into(); - f(&ma); + f(&ma) } } diff --git a/framework/base/src/types/interaction/function_call.rs b/framework/base/src/types/interaction/function_call.rs index 63814de88a..8a1e298419 100644 --- a/framework/base/src/types/interaction/function_call.rs +++ b/framework/base/src/types/interaction/function_call.rs @@ -17,6 +17,7 @@ use super::{ContractCallNoPayment, ManagedArgBuffer, TypedFunctionCall}; /// Encodes a function call on the blockchain, composed of a function name and its encoded arguments. /// /// Can be used as a multi-argument, to embed a call within a call. +#[derive(Clone)] pub struct FunctionCall where Api: ManagedTypeApi, diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index 7b751e162b..e756f230d9 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -32,6 +32,7 @@ mod tx_env_sc; mod tx_from; mod tx_gas; mod tx_payment; +mod tx_payment_normalize; mod tx_proxy; mod tx_result_handler; mod tx_rh_list; @@ -70,6 +71,7 @@ pub use tx_env_sc::*; pub use tx_from::*; pub use tx_gas::*; pub use tx_payment::*; +pub use tx_payment_normalize::TxPaymentNormalize; pub use tx_proxy::*; pub use tx_result_handler::*; pub use tx_rh_list::*; diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index c2ca6a8903..84b94b238f 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -15,7 +15,8 @@ use super::{ DeployCall, ExplicitGas, FromSource, FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, TxCodeValue, TxData, TxDataFunctionCall, TxEnv, TxFrom, TxFromSourceValue, TxFromSpecified, TxGas, TxPayment, - TxPaymentEgldOnly, TxProxyTrait, TxResultHandler, TxScEnv, TxTo, TxToSpecified, + TxPaymentEgldOnly, TxPaymentNormalize, TxProxyTrait, TxResultHandler, TxScEnv, TxTo, + TxToSpecified, }; #[must_use] @@ -533,46 +534,6 @@ where } } -impl Tx -where - Env: TxEnv, - From: TxFrom, - To: TxToSpecified, - Payment: TxPayment, - Gas: TxGas, - FC: TxDataFunctionCall, - RH: TxResultHandler, -{ - #[allow(clippy::type_complexity)] - pub fn normalize_tx( - self, - ) -> Tx< - Env, - From, - ManagedAddress, - EgldPayment, - Gas, - FunctionCall, - RH, - > { - let result = self.payment.convert_tx_data( - &self.env, - &self.from, - self.to.into_value(&self.env), - self.data.into(), - ); - Tx { - env: self.env, - from: self.from, - to: result.to, - payment: result.egld_payment, - gas: self.gas, - data: result.fc, - result_handler: self.result_handler, - } - } -} - impl ContractCallBase for Tx< TxScEnv, @@ -586,23 +547,28 @@ impl ContractCallBase where Api: CallTypeApi + 'static, To: TxToSpecified>, - Payment: TxPayment>, + Payment: TxPaymentNormalize, (), To>, OriginalResult: TopEncodeMulti, { type OriginalResult = OriginalResult; fn into_normalized(self) -> ContractCallWithEgld { - let normalized = self.normalize_tx(); - ContractCallWithEgld { - basic: ContractCallNoPayment { - _phantom: core::marker::PhantomData, - to: normalized.to, - function_call: normalized.data, - explicit_gas_limit: UNSPECIFIED_GAS_LIMIT, - _return_type: core::marker::PhantomData, + self.payment.with_normalized( + &self.env, + &self.from, + self.to, + self.data, + |norm_to, norm_egld, norm_fc| ContractCallWithEgld { + basic: ContractCallNoPayment { + _phantom: core::marker::PhantomData, + to: norm_to.clone(), + function_call: norm_fc.clone(), + explicit_gas_limit: UNSPECIFIED_GAS_LIMIT, + _return_type: core::marker::PhantomData, + }, + egld_payment: norm_egld.clone(), }, - egld_payment: normalized.payment.value, - } + ) } } diff --git a/framework/base/src/types/interaction/tx_call_async.rs b/framework/base/src/types/interaction/tx_call_async.rs index 0b283db590..3e77979c2e 100644 --- a/framework/base/src/types/interaction/tx_call_async.rs +++ b/framework/base/src/types/interaction/tx_call_async.rs @@ -6,7 +6,7 @@ use crate::{ use super::{ OriginalResultMarker, Tx, TxData, TxDataFunctionCall, TxEnv, TxFrom, TxGas, TxPayment, - TxResultHandler, TxScEnv, TxTo, TxToSpecified, + TxPaymentNormalize, TxResultHandler, TxScEnv, TxTo, TxToSpecified, }; pub trait TxAsyncCallCallback: TxResultHandler> @@ -119,18 +119,25 @@ impl Tx, (), To, Payment, (), FC, RH> where Api: CallTypeApi, To: TxToSpecified>, - Payment: TxPayment>, + Payment: TxPaymentNormalize, (), To>, FC: TxDataFunctionCall>, RH: TxAsyncCallCallback, { pub fn async_call_and_exit(self) -> ! { - let normalized = self.normalize_tx(); - normalized.result_handler.save_callback_closure_to_storage(); - SendRawWrapper::::new().async_call_raw( - &normalized.to, - &normalized.payment.value, - &normalized.data.function_name, - &normalized.data.arg_buffer, + self.result_handler.save_callback_closure_to_storage(); + self.payment.with_normalized( + &self.env, + &self.from, + self.to, + self.data.into(), + |norm_to, norm_egld, norm_fc| { + SendRawWrapper::::new().async_call_raw( + norm_to, + norm_egld, + &norm_fc.function_name, + &norm_fc.arg_buffer, + ) + }, ) } diff --git a/framework/base/src/types/interaction/tx_call_async_promises.rs b/framework/base/src/types/interaction/tx_call_async_promises.rs index acf23e030d..134d2e0081 100644 --- a/framework/base/src/types/interaction/tx_call_async_promises.rs +++ b/framework/base/src/types/interaction/tx_call_async_promises.rs @@ -6,7 +6,7 @@ use crate::{ use super::{ callback_closure::CallbackClosureWithGas, ExplicitGas, FunctionCall, OriginalResultMarker, Tx, - TxGas, TxPayment, TxResultHandler, TxScEnv, TxToSpecified, + TxGas, TxPayment, TxPaymentNormalize, TxResultHandler, TxScEnv, TxToSpecified, }; pub trait TxPromisesCallback: TxResultHandler> @@ -122,7 +122,7 @@ impl where Api: CallTypeApi, To: TxToSpecified>, - Payment: TxPayment>, + Payment: TxPaymentNormalize, (), To>, Callback: TxPromisesCallback, { pub fn register_promise(self) { @@ -133,18 +133,24 @@ where .overwrite_with_serialized_args(&mut cb_closure_args_serialized); let extra_gas_for_callback = self.result_handler.gas_for_callback(); - let normalized = self.normalize_tx(); - - SendRawWrapper::::new().create_async_call_raw( - &normalized.to, - &normalized.payment.value, - &normalized.data.function_name, - &normalized.data.arg_buffer, - callback_name, - callback_name, - normalized.gas.0, - extra_gas_for_callback, - &cb_closure_args_serialized, + self.payment.with_normalized( + &self.env, + &self.from, + self.to, + self.data, + |norm_to, norm_egld, norm_fc| { + SendRawWrapper::::new().create_async_call_raw( + norm_to, + norm_egld, + &norm_fc.function_name, + &norm_fc.arg_buffer, + callback_name, + callback_name, + self.gas.0, + extra_gas_for_callback, + &cb_closure_args_serialized, + ) + }, ) } } diff --git a/framework/base/src/types/interaction/tx_call_sync.rs b/framework/base/src/types/interaction/tx_call_sync.rs index 2aaef2c26c..8e039b99d0 100644 --- a/framework/base/src/types/interaction/tx_call_sync.rs +++ b/framework/base/src/types/interaction/tx_call_sync.rs @@ -9,7 +9,8 @@ use crate::{ use super::{ contract_call_exec::decode_result, BackTransfers, ConsNoRet, ConsRet, OriginalResultMarker, - RHList, RHListItem, Tx, TxDataFunctionCall, TxEnv, TxGas, TxPayment, TxScEnv, TxToSpecified, + RHList, RHListItem, Tx, TxDataFunctionCall, TxEnv, TxGas, TxPayment, TxPaymentNormalize, + TxScEnv, TxToSpecified, }; pub trait RHListItemSync: RHListItem @@ -89,7 +90,7 @@ impl Tx, (), To, Payment, Gas, FC, R where Api: CallTypeApi, To: TxToSpecified>, - Payment: TxPayment>, + Payment: TxPaymentNormalize, (), To>, Gas: TxGas>, FC: TxDataFunctionCall>, RH: RHListSync>, @@ -97,19 +98,26 @@ where { fn execute_sync_call_raw(self) -> (ManagedVec>, RH) { let gas_limit = self.gas.resolve_gas(&self.env); - let normalized = self.normalize_tx(); - - let raw_result = SendRawWrapper::::new().execute_on_dest_context_raw( - gas_limit, - &normalized.to, - &normalized.payment.value, - &normalized.data.function_name, - &normalized.data.arg_buffer, + + let raw_result = self.payment.with_normalized( + &self.env, + &self.from, + self.to, + self.data.into(), + |norm_to, norm_egld, norm_fc| { + SendRawWrapper::::new().execute_on_dest_context_raw( + gas_limit, + norm_to, + norm_egld, + &norm_fc.function_name, + &norm_fc.arg_buffer, + ) + }, ); SendRawWrapper::::new().clean_return_data(); - (raw_result, normalized.result_handler) + (raw_result, self.result_handler) } pub fn sync_call(self) -> ::Unpacked { @@ -125,7 +133,7 @@ impl where Api: CallTypeApi, To: TxToSpecified>, - Payment: TxPayment>, + Payment: TxPaymentNormalize, (), To>, Gas: TxGas>, FC: TxDataFunctionCall>, { diff --git a/framework/base/src/types/interaction/tx_payment.rs b/framework/base/src/types/interaction/tx_payment.rs index d7f7fd90f5..055d42041b 100644 --- a/framework/base/src/types/interaction/tx_payment.rs +++ b/framework/base/src/types/interaction/tx_payment.rs @@ -9,17 +9,7 @@ use crate::{ }, }; -use super::{FunctionCall, TxEnv, TxFrom}; - -/// Temporary structure for returning a normalized transfer. -pub struct PaymentConversionResult -where - Api: ManagedTypeApi, -{ - pub to: ManagedAddress, - pub egld_payment: EgldPayment, - pub fc: FunctionCall, -} +use super::{FunctionCall, TxEnv, TxFrom, TxToSpecified}; #[derive(Clone)] pub struct AnnotatedEgldPayment @@ -73,16 +63,6 @@ where { fn is_no_payment(&self) -> bool; - fn convert_tx_data( - self, - env: &Env, - from: &From, - to: ManagedAddress, - fc: FunctionCall, - ) -> PaymentConversionResult - where - From: TxFrom; - fn perform_transfer_execute( self, env: &Env, @@ -110,23 +90,6 @@ where true } - fn convert_tx_data( - self, - _env: &Env, - _from: &From, - to: ManagedAddress, - fc: FunctionCall, - ) -> PaymentConversionResult - where - From: TxFrom, - { - PaymentConversionResult { - to, - egld_payment: EgldPayment::no_payment(), - fc, - } - } - fn perform_transfer_execute( self, env: &Env, @@ -159,23 +122,6 @@ where self.value == 0u32 } - fn convert_tx_data( - self, - _env: &Env, - _from: &From, - to: ManagedAddress, - fc: FunctionCall, - ) -> PaymentConversionResult - where - From: TxFrom, - { - PaymentConversionResult { - to, - egld_payment: self, - fc, - } - } - fn perform_transfer_execute( self, _env: &Env, @@ -192,7 +138,7 @@ where ); } - fn into_full_payment_data(self) -> FullPaymentData<::Api> { + fn into_full_payment_data(self) -> FullPaymentData { FullPaymentData { egld: Some(AnnotatedEgldPayment::new_egld(self.value)), multi_esdt: ManagedVec::new(), @@ -217,23 +163,6 @@ where self.amount == 0u32 } - fn convert_tx_data( - self, - env: &Env, - from: &From, - to: ManagedAddress, - fc: FunctionCall, - ) -> PaymentConversionResult - where - From: TxFrom, - { - if self.token_nonce == 0 { - convert_tx_data_fungible(self, to, fc) - } else { - convert_tx_data_nft(self, from.resolve_address(env), to, fc) - } - } - fn perform_transfer_execute( self, env: &Env, @@ -244,7 +173,7 @@ where MultiEsdtPayment::from_single_item(self).perform_transfer_execute(env, to, gas_limit, fc); } - fn into_full_payment_data(self) -> FullPaymentData<::Api> { + fn into_full_payment_data(self) -> FullPaymentData { FullPaymentData { egld: None, multi_esdt: MultiEsdtPayment::from_single_item(self), @@ -260,23 +189,6 @@ where self.is_empty() } - fn convert_tx_data( - self, - env: &Env, - from: &From, - to: ManagedAddress, - fc: FunctionCall, - ) -> PaymentConversionResult - where - From: TxFrom, - { - match self.len() { - 0 => ().convert_tx_data(env, from, to, fc), - 1 => self.get(0).convert_tx_data(env, from, to, fc), - _ => convert_tx_data_multi(self, from.resolve_address(env), to, fc), - } - } - fn perform_transfer_execute( self, _env: &Env, @@ -293,7 +205,7 @@ where ); } - fn into_full_payment_data(self) -> FullPaymentData<::Api> { + fn into_full_payment_data(self) -> FullPaymentData { FullPaymentData { egld: None, multi_esdt: self, @@ -309,23 +221,6 @@ where self.amount == 0u32 } - fn convert_tx_data( - self, - env: &Env, - from: &From, - to: ManagedAddress, - fc: FunctionCall, - ) -> PaymentConversionResult - where - From: TxFrom, - { - self.map_egld_or_esdt( - (to, fc), - |(to, fc), amount| EgldPayment::from(amount).convert_tx_data(env, from, to, fc), - |(to, fc), esdt_payment| esdt_payment.convert_tx_data(env, from, to, fc), - ) - } - fn perform_transfer_execute( self, env: &Env, @@ -359,26 +254,6 @@ where self.is_empty() } - fn convert_tx_data( - self, - env: &Env, - from: &From, - to: ManagedAddress, - fc: FunctionCall, - ) -> PaymentConversionResult - where - From: TxFrom, - { - match self { - EgldOrMultiEsdtPayment::Egld(egld_amount) => { - EgldPayment::from(egld_amount).convert_tx_data(env, from, to, fc) - }, - EgldOrMultiEsdtPayment::MultiEsdt(multi_esdt_payment) => { - multi_esdt_payment.convert_tx_data(env, from, to, fc) - }, - } - } - fn perform_transfer_execute( self, env: &Env, @@ -407,50 +282,3 @@ where } } } - -fn convert_tx_data_fungible( - payment: EsdtTokenPayment, - to: ManagedAddress, - fc: FunctionCall, -) -> PaymentConversionResult -where - Api: ManagedTypeApi, -{ - PaymentConversionResult { - to, - egld_payment: EgldPayment::no_payment(), - fc: fc.convert_to_single_transfer_fungible_call(payment), - } -} - -fn convert_tx_data_nft( - payment: EsdtTokenPayment, - from: ManagedAddress, - to: ManagedAddress, - fc: FunctionCall, -) -> PaymentConversionResult -where - Api: ManagedTypeApi, -{ - PaymentConversionResult { - to: from, - egld_payment: EgldPayment::no_payment(), - fc: fc.convert_to_single_transfer_nft_call(&to, payment), - } -} - -fn convert_tx_data_multi( - payment: MultiEsdtPayment, - from: ManagedAddress, - to: ManagedAddress, - fc: FunctionCall, -) -> PaymentConversionResult -where - Api: ManagedTypeApi, -{ - PaymentConversionResult { - to: from, - egld_payment: EgldPayment::no_payment(), - fc: fc.convert_to_multi_transfer_esdt_call(&to, payment), - } -} diff --git a/framework/base/src/types/interaction/tx_payment_normalize.rs b/framework/base/src/types/interaction/tx_payment_normalize.rs new file mode 100644 index 0000000000..5338c8c354 --- /dev/null +++ b/framework/base/src/types/interaction/tx_payment_normalize.rs @@ -0,0 +1,188 @@ +use crate::{ + api::{self, CallTypeApi, ManagedTypeApi}, + contract_base::{BlockchainWrapper, SendRawWrapper}, + types::{ + BigUint, CodeMetadata, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EgldPayment, + EsdtTokenPayment, ManagedAddress, ManagedBuffer, ManagedOption, ManagedVec, + MultiEsdtPayment, + }, +}; +use alloc::boxed::Box; +use multiversx_sc_codec::TopEncodeMulti; + +use super::{ + contract_call_exec::UNSPECIFIED_GAS_LIMIT, contract_call_trait::ContractCallBase, + AnnotatedValue, AsyncCall, Code, ContractCallNoPayment, ContractCallWithEgld, ContractDeploy, + DeployCall, ExplicitGas, FromSource, FunctionCall, ManagedArgBuffer, OriginalResultMarker, + RHList, RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, TxCodeValue, TxData, + TxDataFunctionCall, TxEnv, TxFrom, TxFromSourceValue, TxFromSpecified, TxGas, TxPayment, + TxPaymentEgldOnly, TxProxyTrait, TxResultHandler, TxScEnv, TxTo, TxToSpecified, +}; + +/// Defines how a payment transforms a transaction, +/// e.g. from ESDT transfer to ESDTTransfer builtin function. +pub trait TxPaymentNormalize: TxPayment +where + Env: TxEnv, + From: TxFrom, + To: TxToSpecified, +{ + fn with_normalized( + self, + env: &Env, + from: &From, + to: To, + fc: FunctionCall, + f: F, + ) -> R + where + F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R; +} + +impl TxPaymentNormalize for () +where + Env: TxEnv, + From: TxFrom, + To: TxToSpecified, +{ + fn with_normalized( + self, + env: &Env, + from: &From, + to: To, + fc: FunctionCall, + f: F, + ) -> R + where + F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, + { + to.with_address_ref(env, |to_addr| f(to_addr, &BigUint::zero(), &fc)) + } +} + +impl TxPaymentNormalize for EgldPayment +where + Env: TxEnv, + From: TxFrom, + To: TxToSpecified, +{ + fn with_normalized( + self, + env: &Env, + from: &From, + to: To, + fc: FunctionCall, + f: F, + ) -> R + where + F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, + { + to.with_address_ref(env, |to_addr| f(to_addr, &self.value, &fc)) + } +} + +impl TxPaymentNormalize for EsdtTokenPayment +where + Env: TxEnv, + From: TxFrom, + To: TxToSpecified, +{ + fn with_normalized( + self, + env: &Env, + from: &From, + to: To, + fc: FunctionCall, + f: F, + ) -> R + where + F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, + { + to.with_address_ref(env, |to_addr| { + if self.token_nonce == 0 { + let fc_conv = fc.convert_to_single_transfer_fungible_call(self); + f(to_addr, &BigUint::zero(), &fc_conv) + } else { + let fc_conv = fc.convert_to_single_transfer_nft_call(to_addr, self); + f(&from.resolve_address(env), &BigUint::zero(), &fc_conv) + } + }) + } +} + +impl TxPaymentNormalize for MultiEsdtPayment +where + Env: TxEnv, + From: TxFrom, + To: TxToSpecified, +{ + fn with_normalized( + self, + env: &Env, + from: &From, + to: To, + fc: FunctionCall, + f: F, + ) -> R + where + F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, + { + to.with_address_ref(env, |to_addr| { + let fc_conv = fc.convert_to_multi_transfer_esdt_call(to_addr, self); + f(&from.resolve_address(env), &BigUint::zero(), &fc_conv) + }) + } +} + +impl TxPaymentNormalize for EgldOrEsdtTokenPayment +where + Env: TxEnv, + From: TxFrom, + To: TxToSpecified, +{ + fn with_normalized( + self, + env: &Env, + from: &From, + to: To, + fc: FunctionCall, + f: F, + ) -> R + where + F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, + { + self.map_egld_or_esdt( + (to, fc, f), + |(to, fc, f), amount| EgldPayment::from(amount).with_normalized(env, from, to, fc, f), + |(to, fc, f), esdt_payment| esdt_payment.with_normalized(env, from, to, fc, f), + ) + } +} + +impl TxPaymentNormalize for EgldOrMultiEsdtPayment +where + Env: TxEnv, + From: TxFrom, + To: TxToSpecified, +{ + fn with_normalized( + self, + env: &Env, + from: &From, + to: To, + fc: FunctionCall, + f: F, + ) -> R + where + F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, + { + match self { + EgldOrMultiEsdtPayment::Egld(egld_amount) => { + EgldPayment::from(egld_amount).with_normalized(env, from, to, fc, f) + }, + EgldOrMultiEsdtPayment::MultiEsdt(multi_esdt_payment) => { + multi_esdt_payment.with_normalized(env, from, to, fc, f) + }, + } + } +} diff --git a/framework/base/src/types/interaction/tx_to.rs b/framework/base/src/types/interaction/tx_to.rs index 984587a6ed..c09b25d4f3 100644 --- a/framework/base/src/types/interaction/tx_to.rs +++ b/framework/base/src/types/interaction/tx_to.rs @@ -17,7 +17,9 @@ where /// Avoids a clone when performing transfer-execute. /// /// Other than that, does thesame as `AnnotatedValue::into_value`. - fn with_address_ref)>(&self, env: &Env, f: F); + fn with_address_ref(&self, env: &Env, f: F) -> R + where + F: FnOnce(&ManagedAddress) -> R; } impl TxTo for ManagedAddress where Env: TxEnv {} @@ -25,7 +27,10 @@ impl TxToSpecified for ManagedAddress where Env: TxEnv, { - fn with_address_ref)>(&self, _env: &Env, f: F) { + fn with_address_ref(&self, env: &Env, f: F) -> R + where + F: FnOnce(&ManagedAddress) -> R, + { f(self) } } @@ -35,7 +40,10 @@ impl TxToSpecified for &ManagedAddress where Env: TxEnv, { - fn with_address_ref)>(&self, _env: &Env, f: F) { + fn with_address_ref(&self, env: &Env, f: F) -> R + where + F: FnOnce(&ManagedAddress) -> R, + { f(self) } } @@ -45,7 +53,10 @@ impl TxToSpecified for Address where Env: TxEnv, { - fn with_address_ref)>(&self, _env: &Env, f: F) { + fn with_address_ref(&self, env: &Env, f: F) -> R + where + F: FnOnce(&ManagedAddress) -> R, + { let managed_address = ManagedAddress::from(self); f(&managed_address) } @@ -56,7 +67,10 @@ impl TxToSpecified for &Address where Env: TxEnv, { - fn with_address_ref)>(&self, _env: &Env, f: F) { + fn with_address_ref(&self, env: &Env, f: F) -> R + where + F: FnOnce(&ManagedAddress) -> R, + { let managed_address = ManagedAddress::from(*self); f(&managed_address) } diff --git a/framework/scenario/src/facade/contract_info.rs b/framework/scenario/src/facade/contract_info.rs index 9f88ad9a8b..56095208e6 100644 --- a/framework/scenario/src/facade/contract_info.rs +++ b/framework/scenario/src/facade/contract_info.rs @@ -148,8 +148,11 @@ where Env: TxEnv, P: ProxyObjNew, { - fn with_address_ref)>(&self, _env: &Env, f: F) { + fn with_address_ref(&self, _env: &Env, f: F) -> R + where + F: FnOnce(&ManagedAddress) -> R, + { let ma: ManagedAddress = (&self.scenario_address_expr.value).into(); - f(&ma); + f(&ma) } } From 21e2446b37ec9b83a7d8288599d13ba678f5ba6d Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 22 Mar 2024 11:33:47 +0200 Subject: [PATCH 144/461] MultiEsdtPayment with_normalized fix --- .../src/types/interaction/tx_payment_normalize.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/framework/base/src/types/interaction/tx_payment_normalize.rs b/framework/base/src/types/interaction/tx_payment_normalize.rs index 5338c8c354..af0e540de9 100644 --- a/framework/base/src/types/interaction/tx_payment_normalize.rs +++ b/framework/base/src/types/interaction/tx_payment_normalize.rs @@ -127,10 +127,14 @@ where where F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, { - to.with_address_ref(env, |to_addr| { - let fc_conv = fc.convert_to_multi_transfer_esdt_call(to_addr, self); - f(&from.resolve_address(env), &BigUint::zero(), &fc_conv) - }) + match self.len() { + 0 => ().with_normalized(env, from, to, fc, f), + 1 => self.get(0).with_normalized(env, from, to, fc, f), + _ => to.with_address_ref(env, |to_addr| { + let fc_conv = fc.convert_to_multi_transfer_esdt_call(to_addr, self); + f(&from.resolve_address(env), &BigUint::zero(), &fc_conv) + }), + } } } From 590e13cebcde6defff0ea46bad23a70df4f7ccec Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 22 Mar 2024 03:29:49 +0200 Subject: [PATCH 145/461] unified syntax - egld payment refactor --- .../adder/interact/src/basic_interact.rs | 2 +- .../base/src/types/interaction/annotated.rs | 45 +++++++- framework/base/src/types/interaction/mod.rs | 4 + framework/base/src/types/interaction/tx.rs | 27 +++-- .../src/types/interaction/tx_call_deploy.rs | 106 ++++++++++-------- .../base/src/types/interaction/tx_data.rs | 5 +- .../base/src/types/interaction/tx_payment.rs | 101 +++-------------- .../src/types/interaction/tx_payment_egld.rs | 105 +++++++++++++++++ .../interaction/tx_payment_egld_value.rs | 65 +++++++++++ .../types/interaction/tx_payment_normalize.rs | 26 +++-- .../base/src/types/managed/basic/big_uint.rs | 13 ++- .../src/types/managed/wrapped/egld_payment.rs | 30 ----- .../base/src/types/managed/wrapped/mod.rs | 2 - .../src/facade/world_tx/scenario_env_util.rs | 6 +- 14 files changed, 338 insertions(+), 199 deletions(-) create mode 100644 framework/base/src/types/interaction/tx_payment_egld.rs create mode 100644 framework/base/src/types/interaction/tx_payment_egld_value.rs delete mode 100644 framework/base/src/types/managed/wrapped/egld_payment.rs diff --git a/contracts/examples/adder/interact/src/basic_interact.rs b/contracts/examples/adder/interact/src/basic_interact.rs index 57ab414d53..f1036b4aa0 100644 --- a/contracts/examples/adder/interact/src/basic_interact.rs +++ b/contracts/examples/adder/interact/src/basic_interact.rs @@ -170,7 +170,7 @@ impl AdderInteract { .tx() .from(&self.wallet_address) .to(self.state.adder().to_address()) - .egld(50000000000000000u64.into()) // TODO: annotate "0,050000000000000000" + .egld(50000000000000000u64) // TODO: annotate "0,050000000000000000" .prepare_async() .run() .await; diff --git a/framework/base/src/types/interaction/annotated.rs b/framework/base/src/types/interaction/annotated.rs index d190f65631..8571b4669b 100644 --- a/framework/base/src/types/interaction/annotated.rs +++ b/framework/base/src/types/interaction/annotated.rs @@ -1,4 +1,4 @@ -use crate::types::{heap::Address, ManagedAddress, ManagedBuffer}; +use crate::types::{heap::Address, BigUint, ManagedAddress, ManagedBuffer}; use super::TxEnv; @@ -28,7 +28,7 @@ impl AnnotatedValue> for &ManagedAddress crate::types::ManagedBuffer { + fn annotation(&self, _env: &Env) -> ManagedBuffer { self.hex_expr() } @@ -67,7 +67,7 @@ impl AnnotatedValue> for ManagedBuffer crate::types::ManagedBuffer { + fn annotation(&self, _env: &Env) -> ManagedBuffer { self.hex_expr() } @@ -75,3 +75,42 @@ where self } } + +impl AnnotatedValue> for BigUint +where + Env: TxEnv, +{ + fn annotation(&self, _env: &Env) -> ManagedBuffer { + self.to_display() + } + + fn into_value(self, _env: &Env) -> BigUint { + self + } +} + +impl AnnotatedValue> for &BigUint +where + Env: TxEnv, +{ + fn annotation(&self, _env: &Env) -> ManagedBuffer { + self.to_display() + } + + fn into_value(self, _env: &Env) -> BigUint { + self.clone() + } +} + +impl AnnotatedValue> for u64 +where + Env: TxEnv, +{ + fn annotation(&self, env: &Env) -> ManagedBuffer { + self.into_value(env).to_display() + } + + fn into_value(self, _env: &Env) -> BigUint { + BigUint::::from(self) + } +} diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index e756f230d9..44697cddb8 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -32,6 +32,8 @@ mod tx_env_sc; mod tx_from; mod tx_gas; mod tx_payment; +mod tx_payment_egld; +mod tx_payment_egld_value; mod tx_payment_normalize; mod tx_proxy; mod tx_result_handler; @@ -71,6 +73,8 @@ pub use tx_env_sc::*; pub use tx_from::*; pub use tx_gas::*; pub use tx_payment::*; +pub use tx_payment_egld::*; +pub use tx_payment_egld_value::TxEgldValue; pub use tx_payment_normalize::TxPaymentNormalize; pub use tx_proxy::*; pub use tx_result_handler::*; diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 84b94b238f..8fae065026 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -2,8 +2,8 @@ use crate::{ api::{self, CallTypeApi, ManagedTypeApi}, contract_base::{BlockchainWrapper, SendRawWrapper}, types::{ - BigUint, CodeMetadata, EgldOrEsdtTokenPayment, EgldPayment, EsdtTokenPayment, - ManagedAddress, ManagedBuffer, ManagedOption, ManagedVec, MultiEsdtPayment, + BigUint, CodeMetadata, EgldOrEsdtTokenPayment, EsdtTokenPayment, ManagedAddress, + ManagedBuffer, ManagedOption, ManagedVec, MultiEsdtPayment, }, }; use alloc::boxed::Box; @@ -12,11 +12,11 @@ use multiversx_sc_codec::TopEncodeMulti; use super::{ contract_call_exec::UNSPECIFIED_GAS_LIMIT, contract_call_trait::ContractCallBase, AnnotatedValue, AsyncCall, Code, ContractCallNoPayment, ContractCallWithEgld, ContractDeploy, - DeployCall, ExplicitGas, FromSource, FunctionCall, ManagedArgBuffer, OriginalResultMarker, - RHList, RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, TxCodeValue, TxData, - TxDataFunctionCall, TxEnv, TxFrom, TxFromSourceValue, TxFromSpecified, TxGas, TxPayment, - TxPaymentEgldOnly, TxPaymentNormalize, TxProxyTrait, TxResultHandler, TxScEnv, TxTo, - TxToSpecified, + DeployCall, Egld, EgldPayment, ExplicitGas, FromSource, FunctionCall, ManagedArgBuffer, + OriginalResultMarker, RHList, RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, + TxCodeValue, TxData, TxDataFunctionCall, TxEgldValue, TxEnv, TxFrom, TxFromSourceValue, + TxFromSpecified, TxGas, TxPayment, TxPaymentEgldOnly, TxPaymentNormalize, TxProxyTrait, + TxResultHandler, TxScEnv, TxTo, TxToSpecified, }; #[must_use] @@ -151,15 +151,18 @@ where Data: TxData, RH: TxResultHandler, { - pub fn egld( + pub fn egld( self, - egld_amount: BigUint, - ) -> Tx, Gas, Data, RH> { + egld_value: EgldValue, + ) -> Tx, Gas, Data, RH> + where + EgldValue: TxEgldValue, + { Tx { env: self.env, from: self.from, to: self.to, - payment: EgldPayment { value: egld_amount }, + payment: Egld(egld_value), gas: self.gas, data: self.data, result_handler: self.result_handler, @@ -701,7 +704,7 @@ where ContractDeploy { _phantom: core::marker::PhantomData, to: ManagedOption::none(), - egld_payment: value.payment.to_egld_payment().value, + egld_payment: value.payment.into_egld_payment(&value.env), explicit_gas_limit: UNSPECIFIED_GAS_LIMIT, arg_buffer: value.data.arg_buffer, _return_type: core::marker::PhantomData, diff --git a/framework/base/src/types/interaction/tx_call_deploy.rs b/framework/base/src/types/interaction/tx_call_deploy.rs index 189d93b7ae..7c9e17d84c 100644 --- a/framework/base/src/types/interaction/tx_call_deploy.rs +++ b/framework/base/src/types/interaction/tx_call_deploy.rs @@ -104,15 +104,16 @@ where { fn execute_deploy_raw(self) -> (ManagedAddress, ManagedVec>, RH) { let gas_limit = self.gas.resolve_gas(&self.env); - let egld_payment = self.payment.to_egld_payment(); - let (new_address, raw_results) = SendRawWrapper::::new().deploy_contract( - gas_limit, - &egld_payment.value, - &self.data.code_source.0.into_value(&self.env), - self.data.code_metadata, - &self.data.arg_buffer, - ); + let (new_address, raw_results) = self.payment.with_egld_value(|egld_value| { + SendRawWrapper::::new().deploy_contract( + gas_limit, + egld_value, + &self.data.code_source.0.into_value(&self.env), + self.data.code_metadata, + &self.data.arg_buffer, + ) + }); SendRawWrapper::::new().clean_return_data(); @@ -141,15 +142,16 @@ where self, ) -> (ManagedAddress, ManagedVec>, RH) { let gas_limit = self.gas.resolve_gas(&self.env); - let egld_payment = self.payment.to_egld_payment(); - let (new_address, raw_results) = SendRawWrapper::::new().deploy_from_source_contract( - gas_limit, - &egld_payment.value, - &self.data.code_source.0.into_value(&self.env), - self.data.code_metadata, - &self.data.arg_buffer, - ); + let (new_address, raw_results) = self.payment.with_egld_value(|egld_value| { + SendRawWrapper::::new().deploy_from_source_contract( + gas_limit, + egld_value, + &self.data.code_source.0.into_value(&self.env), + self.data.code_metadata, + &self.data.arg_buffer, + ) + }); SendRawWrapper::::new().clean_return_data(); @@ -222,14 +224,16 @@ where { pub fn upgrade_async_call(self) { let gas = self.gas.explicit_or_gas_left(&self.env); - SendRawWrapper::::new().upgrade_contract( - &self.to, - gas, - &self.payment.to_egld_payment().value, - &self.data.code_source.0.into_value(&self.env), - self.data.code_metadata, - &self.data.arg_buffer, - ); + self.payment.with_egld_value(|egld_value| { + SendRawWrapper::::new().upgrade_contract( + &self.to, + gas, + egld_value, + &self.data.code_source.0.into_value(&self.env), + self.data.code_metadata, + &self.data.arg_buffer, + ); + }); } } @@ -252,14 +256,16 @@ where { pub fn upgrade_async_call(self) { let gas = self.gas.explicit_or_gas_left(&self.env); - SendRawWrapper::::new().upgrade_from_source_contract( - &self.to, - gas, - &self.payment.to_egld_payment().value, - &self.data.code_source.0.into_value(&self.env), - self.data.code_metadata, - &self.data.arg_buffer, - ); + self.payment.with_egld_value(|egld_value| { + SendRawWrapper::::new().upgrade_from_source_contract( + &self.to, + gas, + egld_value, + &self.data.code_source.0.into_value(&self.env), + self.data.code_metadata, + &self.data.arg_buffer, + ); + }); } } @@ -337,14 +343,16 @@ where /// For clarity, we don't want it set twice. pub fn upgrade_contract(self, code: &ManagedBuffer, code_metadata: CodeMetadata) { let gas = self.gas.explicit_or_gas_left(&self.env); - SendRawWrapper::::new().upgrade_contract( - &self.to, - gas, - &self.payment.to_egld_payment().value, - code, - code_metadata, - &self.data.arg_buffer, - ); + self.payment.with_egld_value(|egld_value| { + SendRawWrapper::::new().upgrade_contract( + &self.to, + gas, + egld_value, + code, + code_metadata, + &self.data.arg_buffer, + ); + }); } /// Backwards compatibility, immitates the old API. @@ -358,13 +366,15 @@ where code_metadata: CodeMetadata, ) { let gas = self.gas.explicit_or_gas_left(&self.env); - SendRawWrapper::::new().upgrade_from_source_contract( - &self.to, - gas, - &self.payment.to_egld_payment().value, - source_address, - code_metadata, - &self.data.arg_buffer, - ); + self.payment.with_egld_value(|egld_value| { + SendRawWrapper::::new().upgrade_from_source_contract( + &self.to, + gas, + egld_value, + source_address, + code_metadata, + &self.data.arg_buffer, + ); + }); } } diff --git a/framework/base/src/types/interaction/tx_data.rs b/framework/base/src/types/interaction/tx_data.rs index c4a679401f..eb1e56fd7d 100644 --- a/framework/base/src/types/interaction/tx_data.rs +++ b/framework/base/src/types/interaction/tx_data.rs @@ -2,10 +2,7 @@ use crate::{ api::ManagedTypeApi, contract_base::SendRawWrapper, formatter::SCLowerHex, - types::{ - CodeMetadata, EgldPayment, ManagedAddress, ManagedBuffer, ManagedBufferCachedBuilder, - ManagedVec, - }, + types::{CodeMetadata, ManagedAddress, ManagedBuffer, ManagedBufferCachedBuilder, ManagedVec}, }; use super::{FunctionCall, ManagedArgBuffer, Tx, TxEnv, TxFrom, TxGas, TxPayment, TxTo}; diff --git a/framework/base/src/types/interaction/tx_payment.rs b/framework/base/src/types/interaction/tx_payment.rs index 055d42041b..beca0172f0 100644 --- a/framework/base/src/types/interaction/tx_payment.rs +++ b/framework/base/src/types/interaction/tx_payment.rs @@ -4,12 +4,12 @@ use crate::{ formatter::FormatBuffer, imports::{BigUint, ManagedBuffer, ManagedBufferCachedBuilder, ManagedVec}, types::{ - EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EgldPayment, EsdtTokenPayment, - ManagedAddress, MultiEsdtPayment, + EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EsdtTokenPayment, ManagedAddress, + MultiEsdtPayment, }, }; -use super::{FunctionCall, TxEnv, TxFrom, TxToSpecified}; +use super::{Egld, FunctionCall, TxEnv, TxFrom, TxToSpecified}; #[derive(Clone)] pub struct AnnotatedEgldPayment @@ -25,12 +25,8 @@ where Api: ManagedTypeApi, { pub fn new_egld(value: BigUint) -> Self { - let mut annotation = ManagedBufferCachedBuilder::default(); - annotation.append_display(&value); - AnnotatedEgldPayment { - value, - annotation: annotation.into_managed_buffer(), - } + let annotation = value.to_display(); + AnnotatedEgldPayment { value, annotation } } } @@ -59,7 +55,6 @@ where pub trait TxPayment where Env: TxEnv, - Self: Clone, { fn is_no_payment(&self) -> bool; @@ -71,15 +66,7 @@ where fc: FunctionCall, ); - fn into_full_payment_data(self) -> FullPaymentData; -} - -/// Marks a payment object that only contains EGLD or nothing at all. -pub trait TxPaymentEgldOnly: TxPayment -where - Env: TxEnv, -{ - fn to_egld_payment(self) -> EgldPayment; + fn into_full_payment_data(self, env: &Env) -> FullPaymentData; } impl TxPayment for () @@ -97,64 +84,14 @@ where gas_limit: u64, fc: FunctionCall, ) { - EgldPayment::no_payment().perform_transfer_execute(env, to, gas_limit, fc); + Egld(BigUint::zero()).perform_transfer_execute(env, to, gas_limit, fc); } - fn into_full_payment_data(self) -> FullPaymentData { + fn into_full_payment_data(self, _env: &Env) -> FullPaymentData { FullPaymentData::default() } } -impl TxPaymentEgldOnly for () -where - Env: TxEnv, -{ - fn to_egld_payment(self) -> EgldPayment { - EgldPayment::no_payment() - } -} - -impl TxPayment for EgldPayment -where - Env: TxEnv, -{ - fn is_no_payment(&self) -> bool { - self.value == 0u32 - } - - fn perform_transfer_execute( - self, - _env: &Env, - to: &ManagedAddress, - gas_limit: u64, - fc: FunctionCall, - ) { - let _ = SendRawWrapper::::new().direct_egld_execute( - to, - &self.value, - gas_limit, - &fc.function_name, - &fc.arg_buffer, - ); - } - - fn into_full_payment_data(self) -> FullPaymentData { - FullPaymentData { - egld: Some(AnnotatedEgldPayment::new_egld(self.value)), - multi_esdt: ManagedVec::new(), - } - } -} - -impl TxPaymentEgldOnly for EgldPayment -where - Env: TxEnv, -{ - fn to_egld_payment(self) -> EgldPayment { - self - } -} - impl TxPayment for EsdtTokenPayment where Env: TxEnv, @@ -173,7 +110,7 @@ where MultiEsdtPayment::from_single_item(self).perform_transfer_execute(env, to, gas_limit, fc); } - fn into_full_payment_data(self) -> FullPaymentData { + fn into_full_payment_data(self, env: &Env) -> FullPaymentData { FullPaymentData { egld: None, multi_esdt: MultiEsdtPayment::from_single_item(self), @@ -205,7 +142,7 @@ where ); } - fn into_full_payment_data(self) -> FullPaymentData { + fn into_full_payment_data(self, env: &Env) -> FullPaymentData { FullPaymentData { egld: None, multi_esdt: self, @@ -230,18 +167,16 @@ where ) { self.map_egld_or_esdt( (to, fc), - |(to, fc), amount| { - EgldPayment::from(amount).perform_transfer_execute(env, to, gas_limit, fc) - }, + |(to, fc), amount| Egld(amount).perform_transfer_execute(env, to, gas_limit, fc), |(to, fc), esdt_payment| esdt_payment.perform_transfer_execute(env, to, gas_limit, fc), ) } - fn into_full_payment_data(self) -> FullPaymentData { + fn into_full_payment_data(self, env: &Env) -> FullPaymentData { self.map_egld_or_esdt( (), - |(), amount| TxPayment::::into_full_payment_data(EgldPayment::from(amount)), - |(), esdt_payment| TxPayment::::into_full_payment_data(esdt_payment), + |(), amount| TxPayment::::into_full_payment_data(Egld(amount), env), + |(), esdt_payment| TxPayment::::into_full_payment_data(esdt_payment, env), ) } } @@ -263,7 +198,7 @@ where ) { match self { EgldOrMultiEsdtPayment::Egld(egld_amount) => { - EgldPayment::from(egld_amount).perform_transfer_execute(env, to, gas_limit, fc) + Egld(egld_amount).perform_transfer_execute(env, to, gas_limit, fc) }, EgldOrMultiEsdtPayment::MultiEsdt(multi_esdt_payment) => { multi_esdt_payment.perform_transfer_execute(env, to, gas_limit, fc) @@ -271,13 +206,13 @@ where } } - fn into_full_payment_data(self) -> FullPaymentData { + fn into_full_payment_data(self, env: &Env) -> FullPaymentData { match self { EgldOrMultiEsdtPayment::Egld(egld_amount) => { - TxPayment::::into_full_payment_data(EgldPayment::from(egld_amount)) + TxPayment::::into_full_payment_data(Egld(egld_amount), env) }, EgldOrMultiEsdtPayment::MultiEsdt(multi_esdt_payment) => { - TxPayment::::into_full_payment_data(multi_esdt_payment) + TxPayment::::into_full_payment_data(multi_esdt_payment, env) }, } } diff --git a/framework/base/src/types/interaction/tx_payment_egld.rs b/framework/base/src/types/interaction/tx_payment_egld.rs new file mode 100644 index 0000000000..29a3d0781b --- /dev/null +++ b/framework/base/src/types/interaction/tx_payment_egld.rs @@ -0,0 +1,105 @@ +use crate::{ + api::{self, CallTypeApi, ManagedTypeApi}, + contract_base::{BlockchainWrapper, SendRawWrapper}, + types::{ + BigUint, CodeMetadata, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EsdtTokenPayment, + ManagedAddress, ManagedBuffer, ManagedOption, ManagedVec, MultiEsdtPayment, + }, +}; +use alloc::boxed::Box; +use multiversx_sc_codec::TopEncodeMulti; + +use super::{ + contract_call_exec::UNSPECIFIED_GAS_LIMIT, contract_call_trait::ContractCallBase, + AnnotatedEgldPayment, AnnotatedValue, AsyncCall, Code, ContractCallNoPayment, + ContractCallWithEgld, ContractDeploy, DeployCall, ExplicitGas, FromSource, FullPaymentData, + FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, RHListAppendNoRet, + RHListAppendRet, RHListItem, TxCodeSource, TxCodeValue, TxData, TxDataFunctionCall, + TxEgldValue, TxEnv, TxFrom, TxFromSourceValue, TxFromSpecified, TxGas, TxPayment, TxProxyTrait, + TxResultHandler, TxScEnv, TxTo, TxToSpecified, +}; + +/// Indicates the EGLD payment in a transaction. +pub struct Egld(pub EgldValue); + +pub type EgldPayment = Egld>; + +impl TxPayment for Egld +where + Env: TxEnv, + EgldValue: TxEgldValue, +{ + fn is_no_payment(&self) -> bool { + self.0.with_egld_value(|egld_value| egld_value == &0u32) + } + + fn perform_transfer_execute( + self, + _env: &Env, + to: &ManagedAddress, + gas_limit: u64, + fc: FunctionCall, + ) { + self.0.with_egld_value(|egld_value| { + let _ = SendRawWrapper::::new().direct_egld_execute( + to, + egld_value, + gas_limit, + &fc.function_name, + &fc.arg_buffer, + ); + }) + } + + fn into_full_payment_data(self, env: &Env) -> FullPaymentData { + FullPaymentData { + egld: Some(AnnotatedEgldPayment::new_egld(self.0.into_value(env))), + multi_esdt: ManagedVec::new(), + } + } +} + +/// Marks a payment object that only contains EGLD or nothing at all. +pub trait TxPaymentEgldOnly: TxPayment +where + Env: TxEnv, +{ + fn with_egld_value(&self, f: F) -> R + where + F: FnOnce(&BigUint) -> R; + + fn into_egld_payment(self, env: &Env) -> BigUint; +} + +impl TxPaymentEgldOnly for () +where + Env: TxEnv, +{ + fn with_egld_value(&self, f: F) -> R + where + F: FnOnce(&BigUint) -> R, + { + f(&BigUint::zero()) + } + + fn into_egld_payment(self, _env: &Env) -> BigUint { + BigUint::zero() + } +} + +impl TxPaymentEgldOnly for Egld +where + Env: TxEnv, + EgldValue: TxEgldValue, +{ + fn with_egld_value(&self, f: F) -> R + where + F: FnOnce(&BigUint) -> R, + { + self.0.with_egld_value(f) + } + + fn into_egld_payment(self, env: &Env) -> BigUint { + self.0.into_value(env) + } +} diff --git a/framework/base/src/types/interaction/tx_payment_egld_value.rs b/framework/base/src/types/interaction/tx_payment_egld_value.rs new file mode 100644 index 0000000000..af5da4cbd3 --- /dev/null +++ b/framework/base/src/types/interaction/tx_payment_egld_value.rs @@ -0,0 +1,65 @@ +use crate::{ + api::{self, CallTypeApi, ManagedTypeApi}, + contract_base::{BlockchainWrapper, SendRawWrapper}, + types::{ + BigUint, CodeMetadata, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EsdtTokenPayment, + ManagedAddress, ManagedBuffer, ManagedOption, ManagedVec, MultiEsdtPayment, + }, +}; +use alloc::boxed::Box; +use multiversx_sc_codec::TopEncodeMulti; + +use super::{ + contract_call_exec::UNSPECIFIED_GAS_LIMIT, contract_call_trait::ContractCallBase, + AnnotatedEgldPayment, AnnotatedValue, AsyncCall, Code, ContractCallNoPayment, + ContractCallWithEgld, ContractDeploy, DeployCall, ExplicitGas, FromSource, FullPaymentData, + FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, RHListAppendNoRet, + RHListAppendRet, RHListItem, TxCodeSource, TxCodeValue, TxData, TxDataFunctionCall, TxEnv, + TxFrom, TxFromSourceValue, TxFromSpecified, TxGas, TxPayment, TxProxyTrait, TxResultHandler, + TxScEnv, TxTo, TxToSpecified, +}; + +pub trait TxEgldValue: AnnotatedValue> +where + Env: TxEnv, +{ + fn with_egld_value(&self, f: F) -> R + where + F: FnOnce(&BigUint) -> R; +} + +impl TxEgldValue for BigUint +where + Env: TxEnv, +{ + fn with_egld_value(&self, f: F) -> R + where + F: FnOnce(&BigUint) -> R, + { + f(self) + } +} + +impl TxEgldValue for &BigUint +where + Env: TxEnv, +{ + fn with_egld_value(&self, f: F) -> R + where + F: FnOnce(&BigUint) -> R, + { + f(*self) + } +} + +impl TxEgldValue for u64 +where + Env: TxEnv, +{ + fn with_egld_value(&self, f: F) -> R + where + F: FnOnce(&BigUint) -> R, + { + f(&BigUint::::from(*self)) + } +} diff --git a/framework/base/src/types/interaction/tx_payment_normalize.rs b/framework/base/src/types/interaction/tx_payment_normalize.rs index af0e540de9..015df89087 100644 --- a/framework/base/src/types/interaction/tx_payment_normalize.rs +++ b/framework/base/src/types/interaction/tx_payment_normalize.rs @@ -2,9 +2,8 @@ use crate::{ api::{self, CallTypeApi, ManagedTypeApi}, contract_base::{BlockchainWrapper, SendRawWrapper}, types::{ - BigUint, CodeMetadata, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EgldPayment, - EsdtTokenPayment, ManagedAddress, ManagedBuffer, ManagedOption, ManagedVec, - MultiEsdtPayment, + BigUint, CodeMetadata, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EsdtTokenPayment, + ManagedAddress, ManagedBuffer, ManagedOption, ManagedVec, MultiEsdtPayment, }, }; use alloc::boxed::Box; @@ -13,10 +12,11 @@ use multiversx_sc_codec::TopEncodeMulti; use super::{ contract_call_exec::UNSPECIFIED_GAS_LIMIT, contract_call_trait::ContractCallBase, AnnotatedValue, AsyncCall, Code, ContractCallNoPayment, ContractCallWithEgld, ContractDeploy, - DeployCall, ExplicitGas, FromSource, FunctionCall, ManagedArgBuffer, OriginalResultMarker, - RHList, RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, TxCodeValue, TxData, - TxDataFunctionCall, TxEnv, TxFrom, TxFromSourceValue, TxFromSpecified, TxGas, TxPayment, - TxPaymentEgldOnly, TxProxyTrait, TxResultHandler, TxScEnv, TxTo, TxToSpecified, + DeployCall, Egld, ExplicitGas, FromSource, FunctionCall, ManagedArgBuffer, + OriginalResultMarker, RHList, RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, + TxCodeValue, TxData, TxDataFunctionCall, TxEgldValue, TxEnv, TxFrom, TxFromSourceValue, + TxFromSpecified, TxGas, TxPayment, TxPaymentEgldOnly, TxProxyTrait, TxResultHandler, TxScEnv, + TxTo, TxToSpecified, }; /// Defines how a payment transforms a transaction, @@ -60,11 +60,12 @@ where } } -impl TxPaymentNormalize for EgldPayment +impl TxPaymentNormalize for Egld where Env: TxEnv, From: TxFrom, To: TxToSpecified, + EgldValue: TxEgldValue, { fn with_normalized( self, @@ -77,7 +78,10 @@ where where F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, { - to.with_address_ref(env, |to_addr| f(to_addr, &self.value, &fc)) + to.with_address_ref(env, |to_addr| { + self.0 + .with_egld_value(|egld_value| f(to_addr, egld_value, &fc)) + }) } } @@ -157,7 +161,7 @@ where { self.map_egld_or_esdt( (to, fc, f), - |(to, fc, f), amount| EgldPayment::from(amount).with_normalized(env, from, to, fc, f), + |(to, fc, f), amount| Egld(amount).with_normalized(env, from, to, fc, f), |(to, fc, f), esdt_payment| esdt_payment.with_normalized(env, from, to, fc, f), ) } @@ -182,7 +186,7 @@ where { match self { EgldOrMultiEsdtPayment::Egld(egld_amount) => { - EgldPayment::from(egld_amount).with_normalized(env, from, to, fc, f) + Egld(egld_amount).with_normalized(env, from, to, fc, f) }, EgldOrMultiEsdtPayment::MultiEsdt(multi_esdt_payment) => { multi_esdt_payment.with_normalized(env, from, to, fc, f) diff --git a/framework/base/src/types/managed/basic/big_uint.rs b/framework/base/src/types/managed/basic/big_uint.rs index 4e1d286908..5f32388093 100644 --- a/framework/base/src/types/managed/basic/big_uint.rs +++ b/framework/base/src/types/managed/basic/big_uint.rs @@ -11,8 +11,8 @@ use crate::{ NestedDecodeInput, NestedEncode, NestedEncodeOutput, TopDecode, TopDecodeInput, TopEncode, TopEncodeOutput, TryStaticCast, }, - formatter::{hex_util::encode_bytes_as_hex, FormatByteReceiver, SCDisplay}, - types::{heap::BoxedBytes, ManagedBuffer, ManagedType}, + formatter::{hex_util::encode_bytes_as_hex, FormatBuffer, FormatByteReceiver, SCDisplay}, + types::{heap::BoxedBytes, ManagedBuffer, ManagedBufferCachedBuilder, ManagedType}, }; use super::cast_to_i64::cast_to_i64; @@ -307,6 +307,15 @@ impl SCDisplay for BigUint { } } +impl BigUint { + /// Creates to a managed buffer containing the textual representation of the number. + pub fn to_display(&self) -> ManagedBuffer { + let mut result = ManagedBufferCachedBuilder::new_from_slice(&[]); + result.append_display(self); + result.into_managed_buffer() + } +} + impl core::fmt::Debug for BigUint { fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { f.debug_struct("BigUint") diff --git a/framework/base/src/types/managed/wrapped/egld_payment.rs b/framework/base/src/types/managed/wrapped/egld_payment.rs deleted file mode 100644 index f4c190e899..0000000000 --- a/framework/base/src/types/managed/wrapped/egld_payment.rs +++ /dev/null @@ -1,30 +0,0 @@ -use crate::{api::ManagedTypeApi, types::BigUint}; - -/// Simple newtype wrapper around a BigUint value. -/// -/// Its purpose is to indicate -#[derive(Clone, Debug, PartialEq, Eq)] -pub struct EgldPayment -where - Api: ManagedTypeApi + 'static, -{ - pub value: BigUint, -} - -impl From> for EgldPayment -where - Api: ManagedTypeApi + 'static, -{ - fn from(value: BigUint) -> Self { - EgldPayment { value } - } -} - -impl EgldPayment -where - Api: ManagedTypeApi + 'static, -{ - pub fn no_payment() -> Self { - EgldPayment::from(BigUint::zero()) - } -} diff --git a/framework/base/src/types/managed/wrapped/mod.rs b/framework/base/src/types/managed/wrapped/mod.rs index dee1161f44..8ac485fa38 100644 --- a/framework/base/src/types/managed/wrapped/mod.rs +++ b/framework/base/src/types/managed/wrapped/mod.rs @@ -1,7 +1,6 @@ mod egld_or_esdt_token_identifier; mod egld_or_esdt_token_payment; mod egld_or_multi_esdt_payment; -mod egld_payment; mod encoded_managed_vec_item; mod esdt_token_data; mod esdt_token_payment; @@ -22,7 +21,6 @@ mod token_identifier; pub use egld_or_esdt_token_identifier::EgldOrEsdtTokenIdentifier; pub use egld_or_esdt_token_payment::EgldOrEsdtTokenPayment; pub use egld_or_multi_esdt_payment::EgldOrMultiEsdtPayment; -pub use egld_payment::EgldPayment; pub(crate) use encoded_managed_vec_item::EncodedManagedVecItem; pub use esdt_token_data::EsdtTokenData; pub use esdt_token_payment::{EsdtTokenPayment, MultiEsdtPayment}; diff --git a/framework/scenario/src/facade/world_tx/scenario_env_util.rs b/framework/scenario/src/facade/world_tx/scenario_env_util.rs index 19776e9a0d..2e75fa3c5d 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_util.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_util.rs @@ -64,7 +64,7 @@ where step.tx.arguments.push(arg.to_vec().into()); } - let full_payment_data = payment.into_full_payment_data(); + let full_payment_data = payment.into_full_payment_data(env); if let Some(annotated_egld_payment) = full_payment_data.egld { step.tx.egld_value = annotated_egld_payment.into(); } @@ -93,7 +93,7 @@ where step.tx.arguments.push(arg.to_vec().into()); } - let full_payment_data = payment.into_full_payment_data(); + let full_payment_data = payment.into_full_payment_data(env); if let Some(annotated_egld_payment) = full_payment_data.egld { step.tx.egld_value = annotated_egld_payment.into(); } @@ -134,7 +134,7 @@ where .from(address_annotated(env, from)) .to(address_annotated(env, to)); - let full_payment_data = payment.into_full_payment_data(); + let full_payment_data = payment.into_full_payment_data(env); if let Some(annotated_egld_payment) = full_payment_data.egld { step.tx.egld_value = annotated_egld_payment.into(); } From 92c188695c28d136c6fbffe43c510ba5d7d0aca7 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 22 Mar 2024 03:49:11 +0200 Subject: [PATCH 146/461] unified syntax - replaced direct_egld --- contracts/benchmarks/send-tx-repeat/src/send_tx_repeat.rs | 2 +- contracts/core/wegld-swap/src/wegld.rs | 2 +- contracts/examples/crypto-bubbles/src/crypto_bubbles.rs | 2 +- contracts/examples/ping-pong-egld/src/ping_pong.rs | 4 ++-- contracts/feature-tests/composability/forwarder/src/esdt.rs | 2 +- .../composability/forwarder/src/forwarder_main.rs | 2 +- contracts/feature-tests/composability/forwarder/src/nft.rs | 2 +- contracts/feature-tests/composability/forwarder/src/sft.rs | 2 +- .../feature-tests/composability/local-esdt-and-nft/src/lib.rs | 4 ++-- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/contracts/benchmarks/send-tx-repeat/src/send_tx_repeat.rs b/contracts/benchmarks/send-tx-repeat/src/send_tx_repeat.rs index da74343a01..ade5321f68 100644 --- a/contracts/benchmarks/send-tx-repeat/src/send_tx_repeat.rs +++ b/contracts/benchmarks/send-tx-repeat/src/send_tx_repeat.rs @@ -11,7 +11,7 @@ pub trait SendTxRepeat { #[endpoint] fn repeat(&self, to: ManagedAddress, amount: BigUint, times: usize) { for _ in 0..times { - self.send().direct_egld(&to, &amount); + self.tx().to(&to).egld(&amount).transfer(); } } } diff --git a/contracts/core/wegld-swap/src/wegld.rs b/contracts/core/wegld-swap/src/wegld.rs index 4b12bbc80a..e31a6d0e87 100644 --- a/contracts/core/wegld-swap/src/wegld.rs +++ b/contracts/core/wegld-swap/src/wegld.rs @@ -50,7 +50,7 @@ pub trait EgldEsdtSwap: multiversx_sc_modules::pause::PauseModule { // 1 wrapped eGLD = 1 eGLD, so we pay back the same amount let caller = self.blockchain().get_caller(); - self.send().direct_egld(&caller, &payment_amount); + self.tx().to(&caller).egld(&payment_amount).transfer(); } #[view(getLockedEgldBalance)] diff --git a/contracts/examples/crypto-bubbles/src/crypto_bubbles.rs b/contracts/examples/crypto-bubbles/src/crypto_bubbles.rs index da481fd273..35b687f2cc 100644 --- a/contracts/examples/crypto-bubbles/src/crypto_bubbles.rs +++ b/contracts/examples/crypto-bubbles/src/crypto_bubbles.rs @@ -38,7 +38,7 @@ pub trait CryptoBubbles { *balance -= amount; }); - self.send().direct_egld(player, amount); + self.tx().to(player).egld(amount).transfer(); self.withdraw_event(player, amount); } diff --git a/contracts/examples/ping-pong-egld/src/ping_pong.rs b/contracts/examples/ping-pong-egld/src/ping_pong.rs index d2d84546de..683c2a2ed5 100644 --- a/contracts/examples/ping-pong-egld/src/ping_pong.rs +++ b/contracts/examples/ping-pong-egld/src/ping_pong.rs @@ -107,8 +107,8 @@ pub trait PingPong { UserStatus::Registered => { self.user_status(user_id).set(UserStatus::Withdrawn); if let Some(user_address) = self.user_mapper().get_user_address(user_id) { - self.send() - .direct_egld(&user_address, &self.ping_amount().get()); + let amount = self.ping_amount().get(); + self.tx().to(user_address).egld(amount).transfer(); Result::Ok(()) } else { Result::Err("unknown user") diff --git a/contracts/feature-tests/composability/forwarder/src/esdt.rs b/contracts/feature-tests/composability/forwarder/src/esdt.rs index ed809e514a..ae9e366720 100644 --- a/contracts/feature-tests/composability/forwarder/src/esdt.rs +++ b/contracts/feature-tests/composability/forwarder/src/esdt.rs @@ -135,7 +135,7 @@ pub trait ForwarderEsdtModule: storage::ForwarderStorageModule { ManagedAsyncCallResult::Err(message) => { // return issue cost to the caller if token_identifier.is_egld() && returned_tokens > 0 { - self.send().direct_egld(caller, &returned_tokens); + self.tx().to(caller).egld(&returned_tokens).transfer(); } self.last_error_message().set(&message.err_msg); diff --git a/contracts/feature-tests/composability/forwarder/src/forwarder_main.rs b/contracts/feature-tests/composability/forwarder/src/forwarder_main.rs index 71ddd886df..ee8403fd9a 100644 --- a/contracts/feature-tests/composability/forwarder/src/forwarder_main.rs +++ b/contracts/feature-tests/composability/forwarder/src/forwarder_main.rs @@ -36,6 +36,6 @@ pub trait Forwarder: #[endpoint] fn send_egld(&self, to: &ManagedAddress, amount: &BigUint) { - self.send().direct_egld(to, amount); + self.tx().to(to).egld(amount).transfer(); } } diff --git a/contracts/feature-tests/composability/forwarder/src/nft.rs b/contracts/feature-tests/composability/forwarder/src/nft.rs index 97d7a2dbd2..95ab6cfeed 100644 --- a/contracts/feature-tests/composability/forwarder/src/nft.rs +++ b/contracts/feature-tests/composability/forwarder/src/nft.rs @@ -90,7 +90,7 @@ pub trait ForwarderNftModule: storage::ForwarderStorageModule { let (token_identifier, returned_tokens) = self.call_value().egld_or_single_fungible_esdt(); if token_identifier.is_egld() && returned_tokens > 0 { - self.send().direct_egld(caller, &returned_tokens); + self.tx().to(caller).egld(&returned_tokens).transfer(); } self.last_error_message().set(&message.err_msg); diff --git a/contracts/feature-tests/composability/forwarder/src/sft.rs b/contracts/feature-tests/composability/forwarder/src/sft.rs index 12e1a2f431..77b8d8b37c 100644 --- a/contracts/feature-tests/composability/forwarder/src/sft.rs +++ b/contracts/feature-tests/composability/forwarder/src/sft.rs @@ -47,7 +47,7 @@ pub trait ForwarderSftModule: storage::ForwarderStorageModule { let (token_identifier, returned_tokens) = self.call_value().egld_or_single_fungible_esdt(); if token_identifier.is_egld() && returned_tokens > 0 { - self.send().direct_egld(caller, &returned_tokens); + self.tx().to(caller).egld(&returned_tokens).transfer(); } self.last_error_message().set(&message.err_msg); diff --git a/contracts/feature-tests/composability/local-esdt-and-nft/src/lib.rs b/contracts/feature-tests/composability/local-esdt-and-nft/src/lib.rs index 235e3cde63..e65fd789b4 100644 --- a/contracts/feature-tests/composability/local-esdt-and-nft/src/lib.rs +++ b/contracts/feature-tests/composability/local-esdt-and-nft/src/lib.rs @@ -287,7 +287,7 @@ pub trait LocalEsdtAndEsdtNft { ManagedAsyncCallResult::Err(message) => { // return issue cost to the caller if token_identifier.is_egld() && returned_tokens > 0 { - self.send().direct_egld(caller, &returned_tokens); + self.tx().to(caller).egld(&returned_tokens).transfer(); } self.last_error_message().set(&message.err_msg); @@ -311,7 +311,7 @@ pub trait LocalEsdtAndEsdtNft { let (token_identifier, returned_tokens) = self.call_value().egld_or_single_fungible_esdt(); if token_identifier.is_egld() && returned_tokens > 0 { - self.send().direct_egld(caller, &returned_tokens); + self.tx().to(caller).egld(&returned_tokens).transfer(); } self.last_error_message().set(&message.err_msg); From 4519aca4ca4b90911cd5d72aa511b3d045e1175f Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 22 Mar 2024 14:22:23 +0200 Subject: [PATCH 147/461] cargo update --- Cargo.lock | 257 ++++++++++++++++++++++++++--------------------------- 1 file changed, 127 insertions(+), 130 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3c912fe3ca..cb6a9f3e5b 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -62,9 +62,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -88,9 +88,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.11" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5" +checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" dependencies = [ "anstyle", "anstyle-parse", @@ -136,9 +136,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.79" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" +checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247" [[package]] name = "arrayvec" @@ -154,9 +154,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "95d8e92cac0961e91dbd517496b00f7e9b92363dbe6d42c3198268323798860c" dependencies = [ "addr2line", "cc", @@ -312,9 +312,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.9.0" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c48f0051a4b4c5e0b6d365cd04af53aeaa209e3cc15ec2cdb69e73cc87fbd0dc" +checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" dependencies = [ "memchr", "serde", @@ -338,9 +338,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" [[package]] name = "byteorder" @@ -356,12 +356,9 @@ checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "cc" -version = "1.0.83" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" -dependencies = [ - "libc", -] +checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" [[package]] name = "cfg-if" @@ -406,9 +403,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.18" +version = "4.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c" +checksum = "949626d00e063efc93b6dca932419ceb5432f99769911c0b995f7e884c778813" dependencies = [ "clap_builder", "clap_derive", @@ -416,9 +413,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.18" +version = "4.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7" +checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" dependencies = [ "anstream", "anstyle", @@ -428,9 +425,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.4.7" +version = "4.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +checksum = "90239a040c80f5e14809ca132ddc4176ab33d5e17e49691793296e3fcb34d72f" dependencies = [ "heck", "proc-macro2", @@ -440,9 +437,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" +checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" [[package]] name = "colorchoice" @@ -528,9 +525,9 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" dependencies = [ "cfg-if", ] @@ -712,9 +709,9 @@ dependencies = [ [[package]] name = "either" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" [[package]] name = "empty" @@ -760,9 +757,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.1" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05e7cf40684ae96ade6232ed84582f40ce0a66efcd43a5117aef610534f8e0b8" +checksum = "38b35839ba51819680ba087cd351788c9a3c476841207e0b8cee0b04722343b9" dependencies = [ "anstream", "anstyle", @@ -1226,9 +1223,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" +checksum = "4fbd2820c5e49886948654ab546d0688ff24530286bdcf8fca3cefb16d4618eb" dependencies = [ "bytes", "fnv", @@ -1251,15 +1248,15 @@ checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" [[package]] name = "heck" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.3.5" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c62115964e08cb8039170eb33c1d0e2388a256930279edca206fff675f82c3" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "hex" @@ -1284,9 +1281,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ "bytes", "fnv", @@ -1387,9 +1384,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.2" +version = "2.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "824b2ae422412366ba479e8111fd301f7b5faece8149317bb81925979a53f520" +checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4" dependencies = [ "equivalent", "hashbrown", @@ -1432,9 +1429,9 @@ checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "js-sys" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] @@ -1590,9 +1587,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "lottery-erc20" @@ -1684,9 +1681,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "wasi 0.11.0+wasi-snapshot-preview1", @@ -2110,15 +2107,15 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "opaque-debug" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" -version = "0.10.63" +version = "0.10.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c9d69dd87a29568d4d017cfe8ec518706046a05184e5aea92d0af890b803c8" +checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" dependencies = [ "bitflags 2.4.2", "cfg-if", @@ -2148,9 +2145,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.99" +version = "0.9.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e1bf214306098e4832460f797824c05d25aacdf896f64a985fb0fd992454ae" +checksum = "dda2b0f344e78efc2facf7d195d098df0dd72151b26ab98da807afc26c198dff" dependencies = [ "cc", "libc", @@ -2316,9 +2313,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "ppv-lite86" @@ -2564,9 +2561,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" dependencies = [ "aho-corasick", "memchr", @@ -2581,9 +2578,9 @@ checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "reqwest" -version = "0.11.24" +version = "0.11.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6920094eb85afde5e4a138be3f2de8bbdf28000f0029e72c45025a56b042251" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" dependencies = [ "base64", "bytes", @@ -2706,9 +2703,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.31" +version = "0.38.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" dependencies = [ "bitflags 2.4.2", "errno", @@ -2728,9 +2725,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" [[package]] name = "same-file" @@ -2815,9 +2812,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.21" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" +checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "send-tx-repeat" @@ -2837,18 +2834,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.196" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.196" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", @@ -2857,9 +2854,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.113" +version = "1.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79" +checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" dependencies = [ "indexmap", "itoa", @@ -2993,18 +2990,18 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -3025,9 +3022,9 @@ dependencies = [ [[package]] name = "strsim" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" [[package]] name = "subtle" @@ -3075,9 +3072,9 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.10.0" +version = "3.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a365e8cd18e44762ef95d87f284f4b5cd04107fec2ff3052bd6a3e6069669e67" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ "cfg-if", "fastrand", @@ -3172,9 +3169,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.10" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a9aad4a3066010876e8dcf5a8a06e70a558751117a145c6ce2b82c2e2054290" +checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" dependencies = [ "indexmap", "serde", @@ -3194,9 +3191,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.4" +version = "0.22.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c9ffdf896f8daaabf9b66ba8e77ea1ed5ed0f72821b398aba62352e95062951" +checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4" dependencies = [ "indexmap", "serde", @@ -3369,9 +3366,9 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "walkdir" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", "winapi-util", @@ -3400,9 +3397,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3410,9 +3407,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", @@ -3425,9 +3422,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.41" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" dependencies = [ "cfg-if", "js-sys", @@ -3437,9 +3434,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3447,9 +3444,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", @@ -3460,15 +3457,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.91" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "wasmparser" -version = "0.121.0" +version = "0.121.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953cf6a7606ab31382cb1caa5ae403e77ba70c7f8e12eeda167e7040d42bfda8" +checksum = "9dbe55c8f9d0dbd25d9447a5a889ff90c0cc3feaa7395310d3d826b2c703eaab" dependencies = [ "bitflags 2.4.2", "indexmap", @@ -3477,9 +3474,9 @@ dependencies = [ [[package]] name = "wasmprinter" -version = "0.2.78" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05e32c13c59fdc64d3f6998a1d52eb1d362b6904a88b754190ccb85661ad577a" +checksum = "60e73986a6b7fdfedb7c5bf9e7eb71135486507c8fbc4c0c42cffcb6532988b7" dependencies = [ "anyhow", "wasmparser", @@ -3487,9 +3484,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", @@ -3541,7 +3538,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.4", ] [[package]] @@ -3561,17 +3558,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm 0.52.4", + "windows_aarch64_msvc 0.52.4", + "windows_i686_gnu 0.52.4", + "windows_i686_msvc 0.52.4", + "windows_x86_64_gnu 0.52.4", + "windows_x86_64_gnullvm 0.52.4", + "windows_x86_64_msvc 0.52.4", ] [[package]] @@ -3582,9 +3579,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" [[package]] name = "windows_aarch64_msvc" @@ -3594,9 +3591,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" [[package]] name = "windows_i686_gnu" @@ -3606,9 +3603,9 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" [[package]] name = "windows_i686_msvc" @@ -3618,9 +3615,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" [[package]] name = "windows_x86_64_gnu" @@ -3630,9 +3627,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" [[package]] name = "windows_x86_64_gnullvm" @@ -3642,9 +3639,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" [[package]] name = "windows_x86_64_msvc" @@ -3654,15 +3651,15 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" [[package]] name = "winnow" -version = "0.5.39" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5389a154b01683d28c77f8f68f49dea75f0a4da32557a58f68ee51ebba472d29" +checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8" dependencies = [ "memchr", ] From 9b0ae6867329e9aa89b927eeb3844ed173aa7cf1 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 22 Mar 2024 14:23:11 +0200 Subject: [PATCH 148/461] sc 0.47.8 --- CHANGELOG.md | 3 + Cargo.lock | 18 ++-- 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 +- .../scenarios/stress_submit_test.scen.json | 100 +++++++++--------- .../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/nft-subscription/Cargo.toml | 6 +- .../examples/nft-subscription/meta/Cargo.toml | 2 +- .../examples/nft-subscription/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 +- .../wasm-alloc-mem-fail/Cargo.toml | 2 +- .../wasm-alloc-mem-leaking/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 | 4 +- .../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 | 2 +- .../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 +- .../vault/wasm-vault-upgrade/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 +- framework/base/Cargo.toml | 4 +- framework/derive/Cargo.toml | 2 +- framework/meta/Cargo.toml | 4 +- .../generate_snippets/snippet_crate_gen.rs | 2 +- .../meta/src/cmd/contract/meta_config.rs | 4 +- framework/meta/src/version_history.rs | 3 +- framework/scenario/Cargo.toml | 6 +- 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 | 4 +- 263 files changed, 435 insertions(+), 431 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c69c506421..db5a580558 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,9 @@ They are: - `multiversx-chain-scenario-format`, in short `scenario-format`, scenario JSON serializer/deserializer, 1 crate. - `multiversx-sdk`, in short `sdk`, allows communication with the chain(s), 1 crate. +## [sc 0.47.8] - 2024-03-22 +- Test coverage functionality in sc-meta. +- Removed deprecation from legacy whitebox testing framework, since it is still used extensively. ## [sc 0.47.7] - 2024-03-15 - Template bugfix (concerning the interactor). diff --git a/Cargo.lock b/Cargo.lock index cb6a9f3e5b..0362d5974b 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -1782,7 +1782,7 @@ checksum = "b59072fa0624b55ae5ae3fa6bfa91515bbeb4ac440214bc4a509e2c8806d6e9f" [[package]] name = "multiversx-price-aggregator-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "arrayvec", "getrandom 0.2.12", @@ -1803,7 +1803,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags 2.4.2", "hex-literal", @@ -1833,7 +1833,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -1844,7 +1844,7 @@ dependencies = [ [[package]] name = "multiversx-sc-meta" -version = "0.47.7" +version = "0.47.8" dependencies = [ "clap", "colored", @@ -1870,14 +1870,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-scenario" -version = "0.47.7" +version = "0.47.8" dependencies = [ "base64", "bech32", @@ -1903,7 +1903,7 @@ dependencies = [ [[package]] name = "multiversx-sc-snippets" -version = "0.47.7" +version = "0.47.8" dependencies = [ "base64", "env_logger", @@ -1917,7 +1917,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -1948,7 +1948,7 @@ dependencies = [ [[package]] name = "multiversx-wegld-swap-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", "multiversx-sc-modules", diff --git a/contracts/benchmarks/large-storage/Cargo.toml b/contracts/benchmarks/large-storage/Cargo.toml index c14636ef07..d8d51ae966 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/large-storage/meta/Cargo.toml b/contracts/benchmarks/large-storage/meta/Cargo.toml index df4b4ca87a..fc26387f50 100644 --- a/contracts/benchmarks/large-storage/meta/Cargo.toml +++ b/contracts/benchmarks/large-storage/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/large-storage/wasm/Cargo.toml b/contracts/benchmarks/large-storage/wasm/Cargo.toml index 979d575564..43578fbca6 100644 --- a/contracts/benchmarks/large-storage/wasm/Cargo.toml +++ b/contracts/benchmarks/large-storage/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/benchmark-common/Cargo.toml b/contracts/benchmarks/mappers/benchmark-common/Cargo.toml index 125a2154ef..8677e1dc01 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.47.7" +version = "0.47.8" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/linked-list-repeat/Cargo.toml b/contracts/benchmarks/mappers/linked-list-repeat/Cargo.toml index 7d204e2520..af3d114fd2 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.47.7" +version = "0.47.8" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 fbe11e8dfb..3c360bd518 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/linked-list-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml index c894b1c183..bb1eb11323 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/map-repeat/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/Cargo.toml index 02a30108b1..18ff68251c 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.47.7" +version = "0.47.8" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml index bf452ee2cd..2ef4df4850 100644 --- a/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml index c8350b0002..c49b4cfb90 100644 --- a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/queue-repeat/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/Cargo.toml index 484adebeb7..82615c61e9 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.47.7" +version = "0.47.8" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml index 6616ebe0ed..6c017510da 100644 --- a/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml index 5dee69f0e3..ca9077b541 100644 --- a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/set-repeat/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/Cargo.toml index b02586fda1..cfabe4e46d 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.47.7" +version = "0.47.8" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml index 44f4460ec8..c722ed9b9e 100644 --- a/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml index 8582da6423..8737881c35 100644 --- a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 6d514a9876..456e49050c 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.47.7" +version = "0.47.8" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 27636e6c3b..efb702f58c 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/single-value-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml index a32bd93768..1373a98a29 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/vec-repeat/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/Cargo.toml index 86a34d011c..66a7f34c1e 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.47.7" +version = "0.47.8" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml index 39c9156194..12c7a4952d 100644 --- a/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml index 98b52695ce..71308601eb 100644 --- a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/send-tx-repeat/Cargo.toml b/contracts/benchmarks/send-tx-repeat/Cargo.toml index b2228d2bb3..7284596303 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml b/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml index e497927391..0bc84fbdc2 100644 --- a/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml index ca9b654305..c0c13946cc 100644 --- a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/str-repeat/Cargo.toml b/contracts/benchmarks/str-repeat/Cargo.toml index b2f9886089..116327da15 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.47.7" +version = "0.47.8" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/str-repeat/meta/Cargo.toml b/contracts/benchmarks/str-repeat/meta/Cargo.toml index 6552eff709..6792de337f 100644 --- a/contracts/benchmarks/str-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/str-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/str-repeat/wasm/Cargo.toml b/contracts/benchmarks/str-repeat/wasm/Cargo.toml index 0927435100..a36fe3ee2c 100644 --- a/contracts/benchmarks/str-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/str-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/core/price-aggregator/Cargo.toml b/contracts/core/price-aggregator/Cargo.toml index 324d1192de..ed988e0663 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.47.7" +version = "0.47.8" authors = [ "Claudiu-Marcel Bruda ", "MultiversX ", @@ -19,15 +19,15 @@ edition = "2021" path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.7" +version = "0.47.8" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" [dependencies] diff --git a/contracts/core/price-aggregator/meta/Cargo.toml b/contracts/core/price-aggregator/meta/Cargo.toml index 8116be6e4d..2cd9bbab1a 100644 --- a/contracts/core/price-aggregator/meta/Cargo.toml +++ b/contracts/core/price-aggregator/meta/Cargo.toml @@ -8,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/core/price-aggregator/scenarios/stress_submit_test.scen.json b/contracts/core/price-aggregator/scenarios/stress_submit_test.scen.json index a8f13f2994..6ed4ec81ac 100644 --- a/contracts/core/price-aggregator/scenarios/stress_submit_test.scen.json +++ b/contracts/core/price-aggregator/scenarios/stress_submit_test.scen.json @@ -1133,7 +1133,7 @@ "0x45474c44", "0x55534443", "0x5f", - "0xe4431c9cfb505fea", + "0x7e73f7325747f41e", "0x" ], "gasLimit": "7,000,000" @@ -1154,7 +1154,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xcca317a0b6489409", + "0x67da5ce3a07967b4", "0x" ], "gasLimit": "7,000,000" @@ -1175,7 +1175,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xd5da94d218e8b3e3", + "0x42345d9c03249906", "0x" ], "gasLimit": "7,000,000" @@ -1196,7 +1196,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x9b9f24755509abe6", + "0x729cbab7559d2418", "0x" ], "gasLimit": "7,000,000" @@ -1217,7 +1217,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x596faa56dc4d9d4e", + "0x4b1f1fb91704289a", "0x" ], "gasLimit": "7,000,000" @@ -1238,7 +1238,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x69ccc76678e2499e", + "0x9041a66f9a8eddd3", "0x" ], "gasLimit": "7,000,000" @@ -1259,7 +1259,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x0176a6a333f061", + "0x119426970178f4e8", "0x" ], "gasLimit": "7,000,000" @@ -1280,7 +1280,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xee2ede42941ffb6f", + "0xa4a00453870b1413", "0x" ], "gasLimit": "7,000,000" @@ -1301,7 +1301,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xfe5a2ca21500c94a", + "0x506335784433b85b", "0x" ], "gasLimit": "7,000,000" @@ -1322,7 +1322,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x98c16991e599ae6b", + "0xa272188ead522f3c", "0x" ], "gasLimit": "7,000,000" @@ -1343,7 +1343,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xec0197ac7c0da4a2", + "0x899a358acd3a916d", "0x" ], "gasLimit": "7,000,000" @@ -1364,7 +1364,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x4758692d635dde95", + "0xa72819f377890189", "0x" ], "gasLimit": "7,000,000" @@ -1385,7 +1385,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xfa99ca83e839c136", + "0x67c7c355dbf99be8", "0x" ], "gasLimit": "7,000,000" @@ -1406,7 +1406,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x2542eed0ad760b6f", + "0xfbb7382befbf0ba3", "0x" ], "gasLimit": "7,000,000" @@ -1427,7 +1427,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xcaa56ad357bf558a", + "0x3b6e67573e4e3f73", "0x" ], "gasLimit": "7,000,000" @@ -1448,7 +1448,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x4104ad72636fdc35", + "0xf1cad9d61b5dea8e", "0x" ], "gasLimit": "7,000,000" @@ -1469,7 +1469,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x08b6adc46d6dccf0", + "0x0f125f34c142d4dd", "0x" ], "gasLimit": "7,000,000" @@ -1490,7 +1490,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xb5c8708954d584e4", + "0xe78b1d333ef1d9cb", "0x" ], "gasLimit": "7,000,000" @@ -1511,7 +1511,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x6136e999fb83ab09", + "0x2d95a8f7484f98c5", "0x" ], "gasLimit": "7,000,000" @@ -1532,7 +1532,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x214d92d0a7450389", + "0x7a97d84d6b233203", "0x" ], "gasLimit": "7,000,000" @@ -1553,7 +1553,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xea21e03952d07af9", + "0xb874fdc44ac92cff", "0x" ], "gasLimit": "7,000,000" @@ -1574,7 +1574,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xdd822b3e1a5bb8a3", + "0x8cb05ff6dcfb459f", "0x" ], "gasLimit": "7,000,000" @@ -1595,7 +1595,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x80e2a3c4b931c4bc", + "0xa402f6a3b4ee09e7", "0x" ], "gasLimit": "7,000,000" @@ -1616,7 +1616,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x279c3fa2eeaf0fb0", + "0x24f913b5c6d6d687", "0x" ], "gasLimit": "7,000,000" @@ -1637,7 +1637,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x768021226eba1043", + "0x601430ad5b35c7b2", "0x" ], "gasLimit": "7,000,000" @@ -1658,7 +1658,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x026089384f007444", + "0xa66e3496b143093d", "0x" ], "gasLimit": "7,000,000" @@ -1679,7 +1679,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x49f7ab393052bb", + "0x10fbd80dee58e58c", "0x" ], "gasLimit": "7,000,000" @@ -1700,7 +1700,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x049afbf40fa88fb8", + "0xdbe95503112f8855", "0x" ], "gasLimit": "7,000,000" @@ -1721,7 +1721,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x6d9edf2f943d0c48", + "0x799a64362d43ecb5", "0x" ], "gasLimit": "7,000,000" @@ -1742,7 +1742,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x9fa99de813defc0c", + "0xc4040f7c568dfe5f", "0x" ], "gasLimit": "7,000,000" @@ -1763,7 +1763,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xd1d93e3611904d25", + "0x5f0934092a3b285e", "0x" ], "gasLimit": "7,000,000" @@ -1784,7 +1784,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x8696ff1edc27700e", + "0xbab97635db0333b2", "0x" ], "gasLimit": "7,000,000" @@ -1805,7 +1805,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xb20b2290aaa5a45e", + "0x3a540081e9ccd62e", "0x" ], "gasLimit": "7,000,000" @@ -1826,7 +1826,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x46f399722142c7dc", + "0x05bea873f4825a82", "0x" ], "gasLimit": "7,000,000" @@ -1847,7 +1847,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x812c7b08e5ef93bb", + "0x67d016dd357634ca", "0x" ], "gasLimit": "7,000,000" @@ -1868,7 +1868,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x9f42bd04602aabfa", + "0x4d6b5212f854c77d", "0x" ], "gasLimit": "7,000,000" @@ -1889,7 +1889,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x3313bced09c1b91f", + "0x7c62a09f1a3336c8", "0x" ], "gasLimit": "7,000,000" @@ -1910,7 +1910,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xcc71d4a051c86da1", + "0x21c179faeb48f1d7", "0x" ], "gasLimit": "7,000,000" @@ -1931,7 +1931,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x020dcbfee96f9111", + "0xe7f11437e10fa779", "0x" ], "gasLimit": "7,000,000" @@ -1952,7 +1952,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x66803b9e9fb6ae87", + "0xb06dea0282c5fa22", "0x" ], "gasLimit": "7,000,000" @@ -1973,7 +1973,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x5e784067e72d6000", + "0x805ed8f4a0a71cce", "0x" ], "gasLimit": "7,000,000" @@ -1994,7 +1994,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x1990e5a459100514", + "0x483ef0b2517c0915", "0x" ], "gasLimit": "7,000,000" @@ -2015,7 +2015,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x643b36cf7c98aed2", + "0x45e24c96cc048c8e", "0x" ], "gasLimit": "7,000,000" @@ -2036,7 +2036,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x19b768a5982e5d17", + "0x2c9cfe97258a6099", "0x" ], "gasLimit": "7,000,000" @@ -2057,7 +2057,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xe8396bc4dade2e38", + "0xf0c3114cbb06b7ac", "0x" ], "gasLimit": "7,000,000" @@ -2078,7 +2078,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xbd1b166e888f23b8", + "0x9400e2a0a2b4c559", "0x" ], "gasLimit": "7,000,000" @@ -2099,7 +2099,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x4541ecf9e1bcd219", + "0x6ff6239cf418528a", "0x" ], "gasLimit": "7,000,000" @@ -2120,7 +2120,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xac32e3eac4733d3e", + "0x3a1e0de1fb534547", "0x" ], "gasLimit": "7,000,000" @@ -2141,7 +2141,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x7d7dde2542dfa2d9", + "0x3a549a5c074f3805", "0x" ], "gasLimit": "7,000,000" @@ -2162,7 +2162,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xd2c63e8cf9db301a", + "0xaebe838a44d1559e", "0x" ], "gasLimit": "7,000,000" diff --git a/contracts/core/price-aggregator/wasm/Cargo.toml b/contracts/core/price-aggregator/wasm/Cargo.toml index 5a6caae0e4..b553602e97 100644 --- a/contracts/core/price-aggregator/wasm/Cargo.toml +++ b/contracts/core/price-aggregator/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/core/wegld-swap/Cargo.toml b/contracts/core/wegld-swap/Cargo.toml index 011eda03bc..64157bb652 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.47.7" +version = "0.47.8" authors = [ "Dorin Iancu ", @@ -20,13 +20,13 @@ edition = "2021" path = "src/wegld.rs" [dependencies.multiversx-sc] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.7" +version = "0.47.8" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" diff --git a/contracts/core/wegld-swap/meta/Cargo.toml b/contracts/core/wegld-swap/meta/Cargo.toml index 5544435199..213dfa0c5e 100644 --- a/contracts/core/wegld-swap/meta/Cargo.toml +++ b/contracts/core/wegld-swap/meta/Cargo.toml @@ -11,10 +11,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/core/wegld-swap/wasm/Cargo.toml b/contracts/core/wegld-swap/wasm/Cargo.toml index 2edcc0b9b7..3dee2153c4 100644 --- a/contracts/core/wegld-swap/wasm/Cargo.toml +++ b/contracts/core/wegld-swap/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/adder/Cargo.toml b/contracts/examples/adder/Cargo.toml index e5e3295387..f5a121ae40 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" diff --git a/contracts/examples/adder/interact/Cargo.toml b/contracts/examples/adder/interact/Cargo.toml index b82fd0a198..142f39c28c 100644 --- a/contracts/examples/adder/interact/Cargo.toml +++ b/contracts/examples/adder/interact/Cargo.toml @@ -18,5 +18,5 @@ toml = "0.8.6" path = ".." [dependencies.multiversx-sc-snippets] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/snippets" diff --git a/contracts/examples/adder/meta/Cargo.toml b/contracts/examples/adder/meta/Cargo.toml index 5b91c45d86..dfe91b3e7d 100644 --- a/contracts/examples/adder/meta/Cargo.toml +++ b/contracts/examples/adder/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/adder/wasm/Cargo.toml b/contracts/examples/adder/wasm/Cargo.toml index 8d6ad9d33a..21d0226bb2 100644 --- a/contracts/examples/adder/wasm/Cargo.toml +++ b/contracts/examples/adder/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/bonding-curve-contract/Cargo.toml b/contracts/examples/bonding-curve-contract/Cargo.toml index e49b33e18c..214b810a7f 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.7" +version = "0.47.8" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" diff --git a/contracts/examples/bonding-curve-contract/meta/Cargo.toml b/contracts/examples/bonding-curve-contract/meta/Cargo.toml index daa146036b..531d3b0113 100644 --- a/contracts/examples/bonding-curve-contract/meta/Cargo.toml +++ b/contracts/examples/bonding-curve-contract/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/bonding-curve-contract/wasm/Cargo.toml b/contracts/examples/bonding-curve-contract/wasm/Cargo.toml index ed65eb737e..f575a2ff9f 100644 --- a/contracts/examples/bonding-curve-contract/wasm/Cargo.toml +++ b/contracts/examples/bonding-curve-contract/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/check-pause/Cargo.toml b/contracts/examples/check-pause/Cargo.toml index b88e277df8..008b308b83 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" [dependencies.multiversx-sc] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.7" +version = "0.47.8" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" diff --git a/contracts/examples/check-pause/meta/Cargo.toml b/contracts/examples/check-pause/meta/Cargo.toml index f24dffa830..c4b5f792f1 100644 --- a/contracts/examples/check-pause/meta/Cargo.toml +++ b/contracts/examples/check-pause/meta/Cargo.toml @@ -9,6 +9,6 @@ authors = ["Alin Cruceat "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/check-pause/wasm/Cargo.toml b/contracts/examples/check-pause/wasm/Cargo.toml index 96ad3090db..1c40a1c120 100644 --- a/contracts/examples/check-pause/wasm/Cargo.toml +++ b/contracts/examples/check-pause/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crowdfunding-esdt/Cargo.toml b/contracts/examples/crowdfunding-esdt/Cargo.toml index f613fa063b..e5a85e92fb 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" [dev-dependencies] diff --git a/contracts/examples/crowdfunding-esdt/meta/Cargo.toml b/contracts/examples/crowdfunding-esdt/meta/Cargo.toml index bd09bd4551..100c48ff0b 100644 --- a/contracts/examples/crowdfunding-esdt/meta/Cargo.toml +++ b/contracts/examples/crowdfunding-esdt/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml b/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml index 689fec6919..2202fb5bf2 100644 --- a/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml +++ b/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-bubbles/Cargo.toml b/contracts/examples/crypto-bubbles/Cargo.toml index 125eaf59db..2e3590429a 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" diff --git a/contracts/examples/crypto-bubbles/meta/Cargo.toml b/contracts/examples/crypto-bubbles/meta/Cargo.toml index e05a6f0fd3..a1f11927a9 100644 --- a/contracts/examples/crypto-bubbles/meta/Cargo.toml +++ b/contracts/examples/crypto-bubbles/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-bubbles/wasm/Cargo.toml b/contracts/examples/crypto-bubbles/wasm/Cargo.toml index d1fd604852..7075fe64da 100644 --- a/contracts/examples/crypto-bubbles/wasm/Cargo.toml +++ b/contracts/examples/crypto-bubbles/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 c76b6d4ef0..23eaa019f3 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.47.7" +version = "0.47.8" 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 89e113c11e..cca99947d8 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.47.7" +version = "0.47.8" path = "../../../../../framework/base" diff --git a/contracts/examples/crypto-kitties/kitty-auction/Cargo.toml b/contracts/examples/crypto-kitties/kitty-auction/Cargo.toml index e6d49ccec0..9ee13ed08d 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.47.7" +version = "0.47.8" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 9928efcd4f..aaf92d9d1d 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-auction/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml index df1952bd3c..fd1bc05228 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-kitties/kitty-genetic-alg/Cargo.toml b/contracts/examples/crypto-kitties/kitty-genetic-alg/Cargo.toml index a73684282c..75ffc5989c 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.47.7" +version = "0.47.8" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 b69a84ab3f..17514bb97f 100644 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false 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 ce608c6fcc..ad70a987be 100644 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-kitties/kitty-ownership/Cargo.toml b/contracts/examples/crypto-kitties/kitty-ownership/Cargo.toml index 40ccfe9d17..9d7e08a9cf 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.47.7" +version = "0.47.8" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 51c19d26be..582fa4313f 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-ownership/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml index edd45c233c..6c7f572232 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-zombies/Cargo.toml b/contracts/examples/crypto-zombies/Cargo.toml index 5b3a3ec3b4..63d67d258b 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" diff --git a/contracts/examples/crypto-zombies/meta/Cargo.toml b/contracts/examples/crypto-zombies/meta/Cargo.toml index ab9e646a43..8a3ac45fa8 100644 --- a/contracts/examples/crypto-zombies/meta/Cargo.toml +++ b/contracts/examples/crypto-zombies/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-zombies/wasm/Cargo.toml b/contracts/examples/crypto-zombies/wasm/Cargo.toml index e9e2eed377..fd7179dea8 100644 --- a/contracts/examples/crypto-zombies/wasm/Cargo.toml +++ b/contracts/examples/crypto-zombies/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/digital-cash/Cargo.toml b/contracts/examples/digital-cash/Cargo.toml index c3e97b9d50..d9bdd6b52c 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" diff --git a/contracts/examples/digital-cash/meta/Cargo.toml b/contracts/examples/digital-cash/meta/Cargo.toml index 6a47014d9a..5692d13296 100644 --- a/contracts/examples/digital-cash/meta/Cargo.toml +++ b/contracts/examples/digital-cash/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/digital-cash/wasm/Cargo.toml b/contracts/examples/digital-cash/wasm/Cargo.toml index 14405201e3..1a990dca60 100644 --- a/contracts/examples/digital-cash/wasm/Cargo.toml +++ b/contracts/examples/digital-cash/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/empty/Cargo.toml b/contracts/examples/empty/Cargo.toml index d385cb0ae7..5ed6cf966f 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" [dev-dependencies] diff --git a/contracts/examples/empty/meta/Cargo.toml b/contracts/examples/empty/meta/Cargo.toml index 805066b5c8..c27adb6ad1 100644 --- a/contracts/examples/empty/meta/Cargo.toml +++ b/contracts/examples/empty/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/empty/wasm/Cargo.toml b/contracts/examples/empty/wasm/Cargo.toml index 3070e27098..1c3cae4528 100644 --- a/contracts/examples/empty/wasm/Cargo.toml +++ b/contracts/examples/empty/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 03f96eba03..e56c0ace06 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 684ace8d06..b774dd1607 100644 --- a/contracts/examples/esdt-transfer-with-fee/meta/Cargo.toml +++ b/contracts/examples/esdt-transfer-with-fee/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml index 0afb5f35f9..1c81968938 100644 --- a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml +++ b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/factorial/Cargo.toml b/contracts/examples/factorial/Cargo.toml index 3c39cfb14b..bec69a21be 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" diff --git a/contracts/examples/factorial/meta/Cargo.toml b/contracts/examples/factorial/meta/Cargo.toml index e781b294dd..746a2c9143 100644 --- a/contracts/examples/factorial/meta/Cargo.toml +++ b/contracts/examples/factorial/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/factorial/wasm/Cargo.toml b/contracts/examples/factorial/wasm/Cargo.toml index e8bdd8a99a..550140a626 100644 --- a/contracts/examples/factorial/wasm/Cargo.toml +++ b/contracts/examples/factorial/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/fractional-nfts/Cargo.toml b/contracts/examples/fractional-nfts/Cargo.toml index 75fc12bcef..0709e73516 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.7" +version = "0.47.8" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" diff --git a/contracts/examples/fractional-nfts/meta/Cargo.toml b/contracts/examples/fractional-nfts/meta/Cargo.toml index e3ea4de942..9026904365 100644 --- a/contracts/examples/fractional-nfts/meta/Cargo.toml +++ b/contracts/examples/fractional-nfts/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/fractional-nfts/wasm/Cargo.toml b/contracts/examples/fractional-nfts/wasm/Cargo.toml index ef3c3f47db..26ca3dc694 100644 --- a/contracts/examples/fractional-nfts/wasm/Cargo.toml +++ b/contracts/examples/fractional-nfts/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/lottery-esdt/Cargo.toml b/contracts/examples/lottery-esdt/Cargo.toml index 839f52d773..51341883a4 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" diff --git a/contracts/examples/lottery-esdt/meta/Cargo.toml b/contracts/examples/lottery-esdt/meta/Cargo.toml index 7e5658adbd..f528e0359d 100644 --- a/contracts/examples/lottery-esdt/meta/Cargo.toml +++ b/contracts/examples/lottery-esdt/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/lottery-esdt/wasm/Cargo.toml b/contracts/examples/lottery-esdt/wasm/Cargo.toml index b80ccdb610..c780b8253f 100644 --- a/contracts/examples/lottery-esdt/wasm/Cargo.toml +++ b/contracts/examples/lottery-esdt/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/multisig/Cargo.toml b/contracts/examples/multisig/Cargo.toml index 8ca32c7c05..5a4ac52971 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.7" +version = "0.47.8" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" [dev-dependencies.adder] @@ -27,7 +27,7 @@ path = "../adder" path = "../factorial" [dev-dependencies.multiversx-wegld-swap-sc] -version = "0.47.7" +version = "0.47.8" path = "../../core/wegld-swap" [dev-dependencies] diff --git a/contracts/examples/multisig/interact/Cargo.toml b/contracts/examples/multisig/interact/Cargo.toml index ecef6173f0..06f7debcdc 100644 --- a/contracts/examples/multisig/interact/Cargo.toml +++ b/contracts/examples/multisig/interact/Cargo.toml @@ -18,13 +18,13 @@ toml = "0.8.6" path = ".." [dependencies.multiversx-sc-modules] -version = "0.47.7" +version = "0.47.8" path = "../../../../contracts/modules" [dependencies.multiversx-sc-snippets] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/snippets" [dependencies.multiversx-sc-scenario] -version = "=0.47.7" +version = "=0.47.8" path = "../../../../framework/scenario" diff --git a/contracts/examples/multisig/meta/Cargo.toml b/contracts/examples/multisig/meta/Cargo.toml index 7fa9cc2c46..67b228a5dd 100644 --- a/contracts/examples/multisig/meta/Cargo.toml +++ b/contracts/examples/multisig/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/multisig/wasm-multisig-full/Cargo.toml b/contracts/examples/multisig/wasm-multisig-full/Cargo.toml index ca6d88e1d0..004b0e97f5 100644 --- a/contracts/examples/multisig/wasm-multisig-full/Cargo.toml +++ b/contracts/examples/multisig/wasm-multisig-full/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 f7e2721efb..28b230710b 100644 --- a/contracts/examples/multisig/wasm-multisig-view/Cargo.toml +++ b/contracts/examples/multisig/wasm-multisig-view/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/multisig/wasm/Cargo.toml b/contracts/examples/multisig/wasm/Cargo.toml index 6b844797f2..3a2268d369 100644 --- a/contracts/examples/multisig/wasm/Cargo.toml +++ b/contracts/examples/multisig/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-minter/Cargo.toml b/contracts/examples/nft-minter/Cargo.toml index aff73e25c2..89ee1e27f1 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-minter/meta/Cargo.toml b/contracts/examples/nft-minter/meta/Cargo.toml index 756b066668..6e3b2dfc81 100644 --- a/contracts/examples/nft-minter/meta/Cargo.toml +++ b/contracts/examples/nft-minter/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-minter/wasm/Cargo.toml b/contracts/examples/nft-minter/wasm/Cargo.toml index 069fba528a..d9001e8b30 100644 --- a/contracts/examples/nft-minter/wasm/Cargo.toml +++ b/contracts/examples/nft-minter/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-storage-prepay/Cargo.toml b/contracts/examples/nft-storage-prepay/Cargo.toml index a368d88336..ee4e7cbf03 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-storage-prepay/meta/Cargo.toml b/contracts/examples/nft-storage-prepay/meta/Cargo.toml index 0e49db9a62..faa27e4d8b 100644 --- a/contracts/examples/nft-storage-prepay/meta/Cargo.toml +++ b/contracts/examples/nft-storage-prepay/meta/Cargo.toml @@ -11,6 +11,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-storage-prepay/wasm/Cargo.toml b/contracts/examples/nft-storage-prepay/wasm/Cargo.toml index 05644d41ae..1e5478ddae 100644 --- a/contracts/examples/nft-storage-prepay/wasm/Cargo.toml +++ b/contracts/examples/nft-storage-prepay/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-subscription/Cargo.toml b/contracts/examples/nft-subscription/Cargo.toml index df21696927..deb7f32494 100644 --- a/contracts/examples/nft-subscription/Cargo.toml +++ b/contracts/examples/nft-subscription/Cargo.toml @@ -9,13 +9,13 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.7" +version = "0.47.8" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-subscription/meta/Cargo.toml b/contracts/examples/nft-subscription/meta/Cargo.toml index 89dffa7dfa..2d002e2afb 100644 --- a/contracts/examples/nft-subscription/meta/Cargo.toml +++ b/contracts/examples/nft-subscription/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-subscription/wasm/Cargo.toml b/contracts/examples/nft-subscription/wasm/Cargo.toml index 2cf17a24e4..9d6afb20b4 100644 --- a/contracts/examples/nft-subscription/wasm/Cargo.toml +++ b/contracts/examples/nft-subscription/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/order-book/factory/Cargo.toml b/contracts/examples/order-book/factory/Cargo.toml index ca12b9cc3d..89c01440da 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.47.7" +version = "0.47.8" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/scenario" diff --git a/contracts/examples/order-book/factory/meta/Cargo.toml b/contracts/examples/order-book/factory/meta/Cargo.toml index cefbe2fcde..9854915232 100644 --- a/contracts/examples/order-book/factory/meta/Cargo.toml +++ b/contracts/examples/order-book/factory/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/order-book/factory/wasm/Cargo.toml b/contracts/examples/order-book/factory/wasm/Cargo.toml index 6b7817678b..1d66994d44 100644 --- a/contracts/examples/order-book/factory/wasm/Cargo.toml +++ b/contracts/examples/order-book/factory/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/order-book/pair/Cargo.toml b/contracts/examples/order-book/pair/Cargo.toml index bb5c2f1627..0063356649 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.47.7" +version = "0.47.8" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/scenario" diff --git a/contracts/examples/order-book/pair/meta/Cargo.toml b/contracts/examples/order-book/pair/meta/Cargo.toml index a81995baef..b71a025162 100644 --- a/contracts/examples/order-book/pair/meta/Cargo.toml +++ b/contracts/examples/order-book/pair/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/order-book/pair/wasm/Cargo.toml b/contracts/examples/order-book/pair/wasm/Cargo.toml index 5d37fa7b60..08d0fb2c86 100644 --- a/contracts/examples/order-book/pair/wasm/Cargo.toml +++ b/contracts/examples/order-book/pair/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/ping-pong-egld/Cargo.toml b/contracts/examples/ping-pong-egld/Cargo.toml index fdb2d555ca..ed353384c1 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" diff --git a/contracts/examples/ping-pong-egld/meta/Cargo.toml b/contracts/examples/ping-pong-egld/meta/Cargo.toml index de3cc18e68..627ba0bf33 100644 --- a/contracts/examples/ping-pong-egld/meta/Cargo.toml +++ b/contracts/examples/ping-pong-egld/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/ping-pong-egld/wasm/Cargo.toml b/contracts/examples/ping-pong-egld/wasm/Cargo.toml index 1df8da0cc8..ca2420cd15 100644 --- a/contracts/examples/ping-pong-egld/wasm/Cargo.toml +++ b/contracts/examples/ping-pong-egld/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/proxy-pause/Cargo.toml b/contracts/examples/proxy-pause/Cargo.toml index 8d67538105..8f185a46a3 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 596d785f2b..13a900ebe5 100644 --- a/contracts/examples/proxy-pause/meta/Cargo.toml +++ b/contracts/examples/proxy-pause/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = [ "you",] path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/proxy-pause/wasm/Cargo.toml b/contracts/examples/proxy-pause/wasm/Cargo.toml index 902e25899a..214e9930eb 100644 --- a/contracts/examples/proxy-pause/wasm/Cargo.toml +++ b/contracts/examples/proxy-pause/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/rewards-distribution/Cargo.toml b/contracts/examples/rewards-distribution/Cargo.toml index 471247d8c3..6addeb95a8 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.7" +version = "0.47.8" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" diff --git a/contracts/examples/rewards-distribution/meta/Cargo.toml b/contracts/examples/rewards-distribution/meta/Cargo.toml index 420e9282e2..92c25000a7 100644 --- a/contracts/examples/rewards-distribution/meta/Cargo.toml +++ b/contracts/examples/rewards-distribution/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = ["Claudiu-Marcel Bruda "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/rewards-distribution/wasm/Cargo.toml b/contracts/examples/rewards-distribution/wasm/Cargo.toml index 39e2d3068a..e095d7be11 100644 --- a/contracts/examples/rewards-distribution/wasm/Cargo.toml +++ b/contracts/examples/rewards-distribution/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/seed-nft-minter/Cargo.toml b/contracts/examples/seed-nft-minter/Cargo.toml index c55ff0c92f..f544ddebf2 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.7" +version = "0.47.8" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" diff --git a/contracts/examples/seed-nft-minter/meta/Cargo.toml b/contracts/examples/seed-nft-minter/meta/Cargo.toml index bb0ce16461..c9f4fb9159 100644 --- a/contracts/examples/seed-nft-minter/meta/Cargo.toml +++ b/contracts/examples/seed-nft-minter/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = ["Claudiu-Marcel Bruda "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/seed-nft-minter/wasm/Cargo.toml b/contracts/examples/seed-nft-minter/wasm/Cargo.toml index 4d2c71fefa..d32e1ba149 100644 --- a/contracts/examples/seed-nft-minter/wasm/Cargo.toml +++ b/contracts/examples/seed-nft-minter/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/token-release/Cargo.toml b/contracts/examples/token-release/Cargo.toml index 1ce57e5743..4909074ab7 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" diff --git a/contracts/examples/token-release/meta/Cargo.toml b/contracts/examples/token-release/meta/Cargo.toml index df8d03f85c..2b61364559 100644 --- a/contracts/examples/token-release/meta/Cargo.toml +++ b/contracts/examples/token-release/meta/Cargo.toml @@ -10,7 +10,7 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/token-release/wasm/Cargo.toml b/contracts/examples/token-release/wasm/Cargo.toml index 868e19d6cc..48ca0061b0 100644 --- a/contracts/examples/token-release/wasm/Cargo.toml +++ b/contracts/examples/token-release/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/abi-tester/Cargo.toml b/contracts/feature-tests/abi-tester/Cargo.toml index 120c36ddb9..d2335a15b8 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.47.7" +version = "0.47.8" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" [dev-dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" 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 b054e907f9..d3e2a4d8ac 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.47.7" + "version": "0.47.8" } }, "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 f8a30cb9a5..5d1bde1cfa 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.47.7" + "version": "0.47.8" } }, "docs": [ diff --git a/contracts/feature-tests/abi-tester/meta/Cargo.toml b/contracts/feature-tests/abi-tester/meta/Cargo.toml index 01f35f065f..f8070e33ff 100644 --- a/contracts/feature-tests/abi-tester/meta/Cargo.toml +++ b/contracts/feature-tests/abi-tester/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false 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 c351e491ea..64cdfb6c85 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 f17dd3c623..a8952129d6 100644 --- a/contracts/feature-tests/abi-tester/wasm/Cargo.toml +++ b/contracts/feature-tests/abi-tester/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/Cargo.toml b/contracts/feature-tests/alloc-features/Cargo.toml index d11683c5e4..814c55b656 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.47.7" +version = "0.47.8" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 79afc0549d..62255e15fa 100644 --- a/contracts/feature-tests/alloc-features/meta/Cargo.toml +++ b/contracts/feature-tests/alloc-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml index ca1f942e8d..52c6563e32 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml index e80853eaec..1fac4d058d 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/wasm/Cargo.toml b/contracts/feature-tests/alloc-features/wasm/Cargo.toml index 538e891924..ab5fb829ca 100644 --- a/contracts/feature-tests/alloc-features/wasm/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/basic-features/Cargo.toml b/contracts/feature-tests/basic-features/Cargo.toml index 69bcc353b4..5529ecea8d 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" [dependencies.multiversx-sc-modules] -version = "0.47.7" +version = "0.47.8" 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 fa1a68e091..89b7ac2add 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.8.6" path = ".." [dependencies.multiversx-sc-snippets] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/snippets" diff --git a/contracts/feature-tests/basic-features/meta/Cargo.toml b/contracts/feature-tests/basic-features/meta/Cargo.toml index 137affe099..327f8c74a4 100644 --- a/contracts/feature-tests/basic-features/meta/Cargo.toml +++ b/contracts/feature-tests/basic-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false 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 eac8322b00..661bc1146e 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 93678ef55e..3973b0842c 100644 --- a/contracts/feature-tests/basic-features/wasm/Cargo.toml +++ b/contracts/feature-tests/basic-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = true path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 8b78db9d6d..8ac9cfb28a 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 4bd7003cb8..ae56a96cbe 100644 --- a/contracts/feature-tests/big-float-features/meta/Cargo.toml +++ b/contracts/feature-tests/big-float-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/big-float-features/wasm/Cargo.toml b/contracts/feature-tests/big-float-features/wasm/Cargo.toml index ca9aacf92c..6f693347c9 100644 --- a/contracts/feature-tests/big-float-features/wasm/Cargo.toml +++ b/contracts/feature-tests/big-float-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/Cargo.toml b/contracts/feature-tests/composability/Cargo.toml index 012b7c9b0f..72b9f9f248 100644 --- a/contracts/feature-tests/composability/Cargo.toml +++ b/contracts/feature-tests/composability/Cargo.toml @@ -33,9 +33,9 @@ path = "recursive-caller" path = "vault" [dependencies.multiversx-sc] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 6e63eed118..ffa3071ea0 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.47.7" +version = "0.47.8" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 7d9dd69080..8ad49c4ae9 100644 --- a/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false 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 29cae7410a..5e5e2253c2 100644 --- a/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 f524274292..7e9bdb354b 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.47.7" +version = "0.47.8" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 b90c693b83..96088fcc89 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.47.7" +version = "0.47.8" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 d1beb99c55..83d74291d0 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.7" +version = "0.47.8" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../../framework/meta" default-features = false 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 780b8b5976..3d060317d0 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 d63d17ba7c..158aae66f8 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.47.7" +version = "0.47.8" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 1b2b4c9ae8..9d5bce7286 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.7" +version = "0.47.8" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../../framework/meta" default-features = false 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 7fe7faba53..ce110829f3 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 523d016be9..bcd33e4734 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 ba2043bb9c..3b8cfb5174 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.47.7" +version = "0.47.8" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 c64d09ad9f..850924c2d7 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.7" +version = "0.47.8" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../../framework/meta" default-features = false 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 1c90664162..894f1e4a4b 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 c0b513daf9..f338b5dece 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.47.7" +version = "0.47.8" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 bd6370a5d6..571de47a23 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.7" +version = "0.47.8" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../../framework/meta" default-features = false 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 bf013293a4..5efabe6632 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 b74dab6fa0..45d7fd86c0 100644 --- a/contracts/feature-tests/composability/forwarder-queue/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/Cargo.toml @@ -12,14 +12,14 @@ path = "src/forwarder_queue.rs" path = "../vault" [dependencies.multiversx-sc] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/base" [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" optional = true [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 f1bd598825..9683e7d49b 100644 --- a/contracts/feature-tests/composability/forwarder-queue/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false 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 3b1cb00d61..3b33f8dedc 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 8d2783428d..e50bec1684 100644 --- a/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 aaee506a33..63f7f1d1f9 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.47.7" +version = "0.47.8" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 dfbe580e61..f10e13d7dd 100644 --- a/contracts/feature-tests/composability/forwarder-raw/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-raw/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false 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 741fcf25a4..3e70d341d7 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 6397512ee5..028cc4f9c8 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 0bfd54569f..82fdd0688b 100644 --- a/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/forwarder/Cargo.toml b/contracts/feature-tests/composability/forwarder/Cargo.toml index d67b930314..92b1504a59 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.47.7" +version = "0.47.8" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/forwarder/meta/Cargo.toml b/contracts/feature-tests/composability/forwarder/meta/Cargo.toml index 8664eb1263..613c92b16e 100644 --- a/contracts/feature-tests/composability/forwarder/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml b/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml index 3f16868f4f..5bb46d0307 100644 --- a/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/interact/Cargo.toml b/contracts/feature-tests/composability/interact/Cargo.toml index ad60ab2555..b3721732fd 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.47.7" +version = "0.47.8" path = "../../../../contracts/modules" [dependencies.multiversx-sc-snippets] -version = "0.47.7" +version = "0.47.8" 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 400f2b8326..46f7436547 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.47.7" +version = "0.47.8" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 11dcbc0172..999999a718 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,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false 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 57d59b04c8..bfca51da3a 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 d20bd48551..342c5b1456 100644 --- a/contracts/feature-tests/composability/promises-features/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/Cargo.toml @@ -12,6 +12,6 @@ path = "src/promises_main.rs" path = "../vault" [dependencies.multiversx-sc] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/base" diff --git a/contracts/feature-tests/composability/promises-features/meta/Cargo.toml b/contracts/feature-tests/composability/promises-features/meta/Cargo.toml index f87047401b..c0375d049f 100644 --- a/contracts/feature-tests/composability/promises-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml b/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml index a34280c6e3..557e5818c2 100644 --- a/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 6575490586..f3629b7af5 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.4.1" [dependencies.multiversx-sc] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 d028bd24b7..68f5e3fce2 100644 --- a/contracts/feature-tests/composability/proxy-test-first/meta/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-first/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false 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 2c1676b837..44d547460f 100644 --- a/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 730c7b533a..3f985bf59b 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.47.7" +version = "0.47.8" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 0dd5487e95..da932e6e3e 100644 --- a/contracts/feature-tests/composability/proxy-test-second/meta/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-second/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false 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 07753ca55d..883b4ca57e 100644 --- a/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 e7b04ffa7c..edf1153a21 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.47.7" +version = "0.47.8" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 c9793ace43..b7d04141e7 100644 --- a/contracts/feature-tests/composability/recursive-caller/meta/Cargo.toml +++ b/contracts/feature-tests/composability/recursive-caller/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml index 91ed65a2d3..e4b324558a 100644 --- a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 95f9b7f49e..f8b73bd1ed 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.47.7" +version = "0.47.8" path = "../../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.7" +version = "0.47.8" path = "../../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 a8181a9132..838f62ec07 100644 --- a/contracts/feature-tests/composability/transfer-role-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/transfer-role-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false 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 d30c662adc..7b4e0119bd 100644 --- a/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/vault/Cargo.toml b/contracts/feature-tests/composability/vault/Cargo.toml index e8dac88354..4ffd03f581 100644 --- a/contracts/feature-tests/composability/vault/Cargo.toml +++ b/contracts/feature-tests/composability/vault/Cargo.toml @@ -10,9 +10,9 @@ path = "src/vault.rs" [dependencies.multiversx-sc] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/vault/meta/Cargo.toml b/contracts/feature-tests/composability/vault/meta/Cargo.toml index e66d236430..0f93896e19 100644 --- a/contracts/feature-tests/composability/vault/meta/Cargo.toml +++ b/contracts/feature-tests/composability/vault/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false 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 eea431599a..2693692ecb 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml index df2708b28c..9a3472c495 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 91ba6c8eb0..13fd270b33 100644 --- a/contracts/feature-tests/composability/vault/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 eee5a8c938..8927b8f85e 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.47.7" +version = "0.47.8" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 860cb4cc26..0450a2b95d 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false 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 395ebd54ca..7d42a6b0c3 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 0cec9ec90c..52e5e2a3d1 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.47.7" +version = "0.47.8" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 58a5a24afb..f6a0e60410 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false 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 ddfa355f91..d8fe625b1d 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 018b1389f9..4827e78bf8 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.47.7" +version = "0.47.8" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 eb1c12b642..1162ceb5ba 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false 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 d97ea42d66..ae8a024f7d 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 472a2221c3..3fb1f66765 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.47.7" +version = "0.47.8" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 ed69ca1b1d..73652ff74a 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false 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 e87fed7bfb..6ecc47676f 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 13dec6eb99..b7406f877d 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.47.7" +version = "0.47.8" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 1df6d352e5..e823cd155d 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc20/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false 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 5ffc4b6634..101d4d596f 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 d4416664b3..d1a58ed741 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.47.7" +version = "0.47.8" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 14f9790c4e..bd511266c5 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc721/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false 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 2adcd02752..d76eb68fd8 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/wasm-adapter" [workspace] 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 c64d30a727..464c79efd7 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.47.7" +version = "0.47.8" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 6bc05488c3..40901de7a7 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/meta" default-features = false 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 6ac958ed88..ec4f4653ac 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/esdt-system-sc-mock/Cargo.toml b/contracts/feature-tests/esdt-system-sc-mock/Cargo.toml index 77f5c847b6..6cdb6d9217 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 b969dbdfd2..d66c92f437 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/meta/Cargo.toml +++ b/contracts/feature-tests/esdt-system-sc-mock/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false 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 1643028e3e..910198734b 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.toml +++ b/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 e4ad7a76f4..13c5d9ec32 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 8edf568f01..6059435514 100644 --- a/contracts/feature-tests/formatted-message-features/meta/Cargo.toml +++ b/contracts/feature-tests/formatted-message-features/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = [ "you",] path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml b/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml index 6df7609817..0ada82ca9b 100644 --- a/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml +++ b/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/managed-map-features/Cargo.toml b/contracts/feature-tests/managed-map-features/Cargo.toml index 60361712ca..cf64d6b26b 100644 --- a/contracts/feature-tests/managed-map-features/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/Cargo.toml @@ -9,11 +9,11 @@ publish = false path = "src/mmap_features.rs" [dependencies.multiversx-sc] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 bf307044ec..022e576282 100644 --- a/contracts/feature-tests/managed-map-features/meta/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/managed-map-features/wasm/Cargo.toml b/contracts/feature-tests/managed-map-features/wasm/Cargo.toml index 7539e5e8b4..b01e83de22 100644 --- a/contracts/feature-tests/managed-map-features/wasm/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 ce4c8336e1..55b238d90f 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 880326335d..7a30e9f032 100644 --- a/contracts/feature-tests/multi-contract-features/meta/Cargo.toml +++ b/contracts/feature-tests/multi-contract-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false 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 1f3aed535e..9e59c8cf59 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 c23dbbe7b5..e455698505 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 @@ -26,7 +26,7 @@ path = ".." features = ["example_feature"] [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 43e4ee7e81..c57395bee3 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 04ad42d688..a4ccad2d0a 100644 --- a/contracts/feature-tests/multi-contract-features/wasm/Cargo.toml +++ b/contracts/feature-tests/multi-contract-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 eee25be7cb..3c6eb639a6 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 eb9cc0fabd..b5b6de2443 100644 --- a/contracts/feature-tests/panic-message-features/meta/Cargo.toml +++ b/contracts/feature-tests/panic-message-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/panic-message-features/wasm/Cargo.toml b/contracts/feature-tests/panic-message-features/wasm/Cargo.toml index ea09b86ffb..0df3393018 100644 --- a/contracts/feature-tests/panic-message-features/wasm/Cargo.toml +++ b/contracts/feature-tests/panic-message-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/payable-features/Cargo.toml b/contracts/feature-tests/payable-features/Cargo.toml index 74caadb1ce..bcb27446c2 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/payable-features/meta/Cargo.toml b/contracts/feature-tests/payable-features/meta/Cargo.toml index 3b13a7b499..baced24321 100644 --- a/contracts/feature-tests/payable-features/meta/Cargo.toml +++ b/contracts/feature-tests/payable-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/payable-features/wasm/Cargo.toml b/contracts/feature-tests/payable-features/wasm/Cargo.toml index 4f1db6cd5b..58274256ad 100644 --- a/contracts/feature-tests/payable-features/wasm/Cargo.toml +++ b/contracts/feature-tests/payable-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 7b71012dee..21ff7ba5f7 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.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 b8216cfd0e..7415ce614c 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.47.7" +version = "0.47.8" 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 47c5484bb8..a134a77263 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/meta/Cargo.toml +++ b/contracts/feature-tests/rust-snippets-generator-test/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false 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 857244627f..deb116da19 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.47.7" +// version = "0.47.8" // 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 dcebf91da8..62dc6c73a4 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.toml +++ b/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 317fb42fab..1a5fa9375d 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.47.7" +version = "0.47.8" path = "../../../framework/base" features = [ "alloc" ] @@ -17,7 +17,7 @@ path = "../../examples/adder" path = "../../feature-tests/basic-features" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" 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 c8e6c1ce0c..d9601c6185 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/meta/Cargo.toml +++ b/contracts/feature-tests/rust-testing-framework-tester/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false 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 0580ef4b3d..aa6193531a 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.toml +++ b/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/use-module/Cargo.toml b/contracts/feature-tests/use-module/Cargo.toml index 7c7d7cec76..f0dd37e380 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.47.7" +version = "0.47.8" path = "../../../contracts/modules" [dependencies.multiversx-sc] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/scenario" [dev-dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../framework/meta" diff --git a/contracts/feature-tests/use-module/meta/Cargo.toml b/contracts/feature-tests/use-module/meta/Cargo.toml index 6cc313e34b..c23e5696aa 100644 --- a/contracts/feature-tests/use-module/meta/Cargo.toml +++ b/contracts/feature-tests/use-module/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/use-module/meta/abi/Cargo.toml b/contracts/feature-tests/use-module/meta/abi/Cargo.toml index 635ff546a0..41b204dcd7 100644 --- a/contracts/feature-tests/use-module/meta/abi/Cargo.toml +++ b/contracts/feature-tests/use-module/meta/abi/Cargo.toml @@ -9,10 +9,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/meta" default-features = false 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 2e4694e6fb..b40f0e911c 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.47.7" + "version": "0.47.8" } }, "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 c84a7deac4..a2e1621128 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.47.7" + "version": "0.47.8" } }, "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 a7dcfe74cf..55ded78fe6 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" 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 a08ec3fe72..571611596c 100644 --- a/contracts/feature-tests/use-module/wasm/Cargo.toml +++ b/contracts/feature-tests/use-module/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.7" +version = "0.47.8" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/modules/Cargo.toml b/contracts/modules/Cargo.toml index f6a506632d..b7df46cac1 100644 --- a/contracts/modules/Cargo.toml +++ b/contracts/modules/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-modules" -version = "0.47.7" +version = "0.47.8" edition = "2021" authors = ["MultiversX "] @@ -17,5 +17,5 @@ categories = ["no-std", "wasm", "cryptography::cryptocurrencies"] alloc = ["multiversx-sc/alloc"] [dependencies.multiversx-sc] -version = "0.47.7" +version = "0.47.8" path = "../../framework/base" diff --git a/framework/base/Cargo.toml b/framework/base/Cargo.toml index b3beb82b33..9edc7414d7 100644 --- a/framework/base/Cargo.toml +++ b/framework/base/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" edition = "2021" authors = ["Andrei Marinica ", "MultiversX "] @@ -27,7 +27,7 @@ bitflags = "=2.4.2" num-traits = { version = "=0.2.17", default-features = false } [dependencies.multiversx-sc-derive] -version = "=0.47.7" +version = "=0.47.8" path = "../derive" [dependencies.multiversx-sc-codec] diff --git a/framework/derive/Cargo.toml b/framework/derive/Cargo.toml index b31ebfcfd1..c615da8563 100644 --- a/framework/derive/Cargo.toml +++ b/framework/derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" edition = "2021" authors = ["Andrei Marinica ", "MultiversX "] diff --git a/framework/meta/Cargo.toml b/framework/meta/Cargo.toml index 5e7d2ea2ae..a8775be7a2 100644 --- a/framework/meta/Cargo.toml +++ b/framework/meta/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-meta" -version = "0.47.7" +version = "0.47.8" edition = "2021" authors = [ @@ -52,7 +52,7 @@ pathdiff = { version = "0.2.1", optional = true } common-path = { version = "1.0.0", optional = true } [dependencies.multiversx-sc] -version = "=0.47.7" +version = "=0.47.8" path = "../base" features = ["alloc", "num-bigint"] 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 8239f5c5e0..98e686cd90 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.47.7" +version = "0.47.8" # [workspace] diff --git a/framework/meta/src/cmd/contract/meta_config.rs b/framework/meta/src/cmd/contract/meta_config.rs index d1ba6a66ec..df9f1ab337 100644 --- a/framework/meta/src/cmd/contract/meta_config.rs +++ b/framework/meta/src/cmd/contract/meta_config.rs @@ -205,7 +205,7 @@ overflow-checks = false path = \"..\" [dependencies.multiversx-sc-wasm-adapter] -version = \"0.47.7\" +version = \"0.47.8\" path = \"../../../../framework/wasm-adapter\" [workspace] @@ -218,7 +218,7 @@ members = [\".\"] name: "test".to_string(), edition: "2021".to_string(), profile: ContractVariantProfile::default(), - framework_version: "0.47.7".to_string(), + framework_version: "0.47.8".to_string(), framework_path: Option::Some("../../../framework/base".to_string()), contract_features: Vec::::new(), }; diff --git a/framework/meta/src/version_history.rs b/framework/meta/src/version_history.rs index 531047fd6c..7b79e2ff5b 100644 --- a/framework/meta/src/version_history.rs +++ b/framework/meta/src/version_history.rs @@ -3,7 +3,7 @@ use crate::{framework_version, framework_versions, version::FrameworkVersion}; /// 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: FrameworkVersion = framework_version!(0.47.7); +pub const LAST_VERSION: FrameworkVersion = framework_version!(0.47.8); /// Indicates where to stop with the upgrades. pub const LAST_UPGRADE_VERSION: FrameworkVersion = LAST_VERSION; @@ -65,6 +65,7 @@ pub const VERSIONS: &[FrameworkVersion] = framework_versions![ 0.47.5, 0.47.6, 0.47.7, + 0.47.8, ]; #[rustfmt::skip] diff --git a/framework/scenario/Cargo.toml b/framework/scenario/Cargo.toml index a8846449bc..0e138752e6 100644 --- a/framework/scenario/Cargo.toml +++ b/framework/scenario/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-scenario" -version = "0.47.7" +version = "0.47.8" edition = "2021" authors = [ @@ -40,12 +40,12 @@ path = "src/main.rs" run-go-tests = [] [dependencies.multiversx-sc] -version = "=0.47.7" +version = "=0.47.8" features = ["alloc", "num-bigint"] path = "../base" [dependencies.multiversx-sc-meta] -version = "=0.47.7" +version = "=0.47.8" path = "../meta" [dependencies.multiversx-chain-scenario-format] diff --git a/framework/snippets/Cargo.toml b/framework/snippets/Cargo.toml index 9413f07e9f..14426e25fe 100644 --- a/framework/snippets/Cargo.toml +++ b/framework/snippets/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-snippets" -version = "0.47.7" +version = "0.47.8" edition = "2021" authors = ["MultiversX "] @@ -22,7 +22,7 @@ env_logger = "0.11" futures = "0.3" [dependencies.multiversx-sc-scenario] -version = "=0.47.7" +version = "=0.47.8" path = "../scenario" [dependencies.multiversx-sdk] diff --git a/framework/wasm-adapter/Cargo.toml b/framework/wasm-adapter/Cargo.toml index 217b5c98a8..b75da45633 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.47.7" +version = "0.47.8" edition = "2021" authors = [ @@ -22,5 +22,5 @@ categories = [ ] [dependencies.multiversx-sc] -version = "=0.47.7" +version = "=0.47.8" path = "../base" diff --git a/tools/mxpy-snippet-generator/Cargo.toml b/tools/mxpy-snippet-generator/Cargo.toml index 2d84fe4e2d..4253ef6872 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.47.7" +version = "0.47.8" path = "../../framework/base" [dependencies] diff --git a/tools/rust-debugger/format-tests/Cargo.toml b/tools/rust-debugger/format-tests/Cargo.toml index ce3cab8d55..c838a1d924 100644 --- a/tools/rust-debugger/format-tests/Cargo.toml +++ b/tools/rust-debugger/format-tests/Cargo.toml @@ -9,11 +9,11 @@ name = "format-tests" path = "src/format_tests.rs" [dependencies.multiversx-sc] -version = "=0.47.7" +version = "=0.47.8" path = "../../../framework/base" [dependencies.multiversx-sc-scenario] -version = "=0.47.7" +version = "=0.47.8" path = "../../../framework/scenario" [dependencies.multiversx-chain-vm] From 98e9b98e5867840ace9c0840a92077173f3528d1 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 22 Mar 2024 15:12:48 +0200 Subject: [PATCH 149/461] Cargo.lock update --- contracts/benchmarks/large-storage/wasm/Cargo.lock | 10 +++++----- .../mappers/linked-list-repeat/wasm/Cargo.lock | 10 +++++----- .../benchmarks/mappers/map-repeat/wasm/Cargo.lock | 10 +++++----- .../mappers/queue-repeat/wasm/Cargo.lock | 10 +++++----- .../benchmarks/mappers/set-repeat/wasm/Cargo.lock | 10 +++++----- .../mappers/single-value-repeat/wasm/Cargo.lock | 10 +++++----- .../benchmarks/mappers/vec-repeat/wasm/Cargo.lock | 10 +++++----- .../benchmarks/send-tx-repeat/wasm/Cargo.lock | 10 +++++----- contracts/benchmarks/str-repeat/wasm/Cargo.lock | 10 +++++----- contracts/core/price-aggregator/wasm/Cargo.lock | 14 +++++++------- contracts/examples/adder/wasm/Cargo.lock | 10 +++++----- .../bonding-curve-contract/wasm/Cargo.lock | 12 ++++++------ contracts/examples/check-pause/wasm/Cargo.lock | 12 ++++++------ .../examples/crowdfunding-esdt/wasm/Cargo.lock | 10 +++++----- contracts/examples/crypto-bubbles/wasm/Cargo.lock | 10 +++++----- .../crypto-kitties/kitty-auction/wasm/Cargo.lock | 10 +++++----- .../kitty-genetic-alg/wasm/Cargo.lock | 10 +++++----- .../crypto-kitties/kitty-ownership/wasm/Cargo.lock | 10 +++++----- contracts/examples/crypto-zombies/wasm/Cargo.lock | 10 +++++----- contracts/examples/digital-cash/wasm/Cargo.lock | 10 +++++----- contracts/examples/empty/wasm/Cargo.lock | 10 +++++----- .../esdt-transfer-with-fee/wasm/Cargo.lock | 10 +++++----- contracts/examples/factorial/wasm/Cargo.lock | 10 +++++----- contracts/examples/fractional-nfts/wasm/Cargo.lock | 12 ++++++------ contracts/examples/lottery-esdt/wasm/Cargo.lock | 10 +++++----- .../multisig/wasm-multisig-full/Cargo.lock | 12 ++++++------ .../multisig/wasm-multisig-view/Cargo.lock | 12 ++++++------ contracts/examples/multisig/wasm/Cargo.lock | 12 ++++++------ contracts/examples/nft-minter/wasm/Cargo.lock | 10 +++++----- .../examples/nft-storage-prepay/wasm/Cargo.lock | 10 +++++----- .../examples/nft-subscription/wasm/Cargo.lock | 12 ++++++------ .../examples/order-book/factory/wasm/Cargo.lock | 10 +++++----- contracts/examples/order-book/pair/wasm/Cargo.lock | 10 +++++----- contracts/examples/ping-pong-egld/wasm/Cargo.lock | 10 +++++----- contracts/examples/proxy-pause/wasm/Cargo.lock | 10 +++++----- .../examples/rewards-distribution/wasm/Cargo.lock | 12 ++++++------ contracts/examples/seed-nft-minter/wasm/Cargo.lock | 12 ++++++------ contracts/examples/token-release/wasm/Cargo.lock | 10 +++++----- .../abi-tester/wasm-abi-tester-ev/Cargo.lock | 10 +++++----- contracts/feature-tests/abi-tester/wasm/Cargo.lock | 10 +++++----- .../alloc-features/wasm-alloc-mem-fail/Cargo.lock | 10 +++++----- .../wasm-alloc-mem-leaking/Cargo.lock | 10 +++++----- .../feature-tests/alloc-features/wasm/Cargo.lock | 10 +++++----- .../wasm-basic-features-storage-bytes/Cargo.lock | 12 ++++++------ .../feature-tests/basic-features/wasm/Cargo.lock | 12 ++++++------ .../big-float-features/wasm/Cargo.lock | 10 +++++----- .../builtin-func-features/wasm/Cargo.lock | 10 +++++----- .../first-contract/wasm/Cargo.lock | 10 +++++----- .../second-contract/wasm/Cargo.lock | 10 +++++----- .../child/wasm/Cargo.lock | 10 +++++----- .../parent/wasm/Cargo.lock | 10 +++++----- .../wasm-forwarder-queue-promises/Cargo.lock | 10 +++++----- .../composability/forwarder-queue/wasm/Cargo.lock | 10 +++++----- .../wasm-forwarder-raw-init-async-call/Cargo.lock | 10 +++++----- .../wasm-forwarder-raw-init-sync-call/Cargo.lock | 10 +++++----- .../composability/forwarder-raw/wasm/Cargo.lock | 10 +++++----- .../composability/forwarder/wasm/Cargo.lock | 10 +++++----- .../local-esdt-and-nft/wasm/Cargo.lock | 10 +++++----- .../promises-features/wasm/Cargo.lock | 10 +++++----- .../composability/proxy-test-first/wasm/Cargo.lock | 10 +++++----- .../proxy-test-second/wasm/Cargo.lock | 10 +++++----- .../composability/recursive-caller/wasm/Cargo.lock | 10 +++++----- .../transfer-role-features/wasm/Cargo.lock | 12 ++++++------ .../vault/wasm-vault-promises/Cargo.lock | 10 +++++----- .../vault/wasm-vault-upgrade/Cargo.lock | 10 +++++----- .../composability/vault/wasm/Cargo.lock | 10 +++++----- .../crowdfunding-erc20/wasm/Cargo.lock | 10 +++++----- .../erc1155-marketplace/wasm/Cargo.lock | 10 +++++----- .../erc1155-user-mock/wasm/Cargo.lock | 10 +++++----- .../erc-style-contracts/erc1155/wasm/Cargo.lock | 10 +++++----- .../erc-style-contracts/erc20/wasm/Cargo.lock | 10 +++++----- .../erc-style-contracts/erc721/wasm/Cargo.lock | 10 +++++----- .../lottery-erc20/wasm/Cargo.lock | 10 +++++----- .../esdt-system-sc-mock/wasm/Cargo.lock | 10 +++++----- .../formatted-message-features/wasm/Cargo.lock | 10 +++++----- .../managed-map-features/wasm/Cargo.lock | 10 +++++----- .../wasm-multi-contract-alt-impl/Cargo.lock | 10 +++++----- .../wasm-multi-contract-example-feature/Cargo.lock | 10 +++++----- .../wasm-multi-contract-features-view/Cargo.lock | 10 +++++----- .../multi-contract-features/wasm/Cargo.lock | 10 +++++----- .../panic-message-features/wasm/Cargo.lock | 10 +++++----- .../feature-tests/payable-features/wasm/Cargo.lock | 10 +++++----- .../rust-snippets-generator-test/wasm/Cargo.lock | 10 +++++----- .../rust-testing-framework-tester/wasm/Cargo.lock | 10 +++++----- .../use-module/wasm-use-module-view/Cargo.lock | 12 ++++++------ contracts/feature-tests/use-module/wasm/Cargo.lock | 12 ++++++------ 86 files changed, 446 insertions(+), 446 deletions(-) diff --git a/contracts/benchmarks/large-storage/wasm/Cargo.lock b/contracts/benchmarks/large-storage/wasm/Cargo.lock index 31750ec068..3b7ddf924d 100755 --- a/contracts/benchmarks/large-storage/wasm/Cargo.lock +++ b/contracts/benchmarks/large-storage/wasm/Cargo.lock @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.lock index 1c822ccffb..1cf1efc122 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.lock @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -156,9 +156,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock index 93d5f89c99..946c9f3148 100644 --- a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -156,9 +156,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock index 42082bb424..78846158be 100644 --- a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -156,9 +156,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock index 7e38065884..9e34dfc959 100644 --- a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -156,9 +156,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.lock index 6b1f5c27ba..5a1e115b0d 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.lock @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -156,9 +156,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock index ac3a58591d..6a46869df7 100644 --- a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -140,9 +140,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock index ce4e08b913..8d5515d04d 100755 --- a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/benchmarks/str-repeat/wasm/Cargo.lock b/contracts/benchmarks/str-repeat/wasm/Cargo.lock index cffabbafb4..f85a43a545 100755 --- a/contracts/benchmarks/str-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/str-repeat/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -133,9 +133,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "str-repeat" diff --git a/contracts/core/price-aggregator/wasm/Cargo.lock b/contracts/core/price-aggregator/wasm/Cargo.lock index 0a413621c5..4331327ffd 100644 --- a/contracts/core/price-aggregator/wasm/Cargo.lock +++ b/contracts/core/price-aggregator/wasm/Cargo.lock @@ -86,7 +86,7 @@ checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "multiversx-price-aggregator-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "arrayvec", "getrandom", @@ -105,7 +105,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -134,7 +134,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -145,14 +145,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -247,9 +247,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/adder/wasm/Cargo.lock b/contracts/examples/adder/wasm/Cargo.lock index 2a5ed06f4c..d0b2c19aa6 100755 --- a/contracts/examples/adder/wasm/Cargo.lock +++ b/contracts/examples/adder/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/bonding-curve-contract/wasm/Cargo.lock b/contracts/examples/bonding-curve-contract/wasm/Cargo.lock index 562a9b2da4..d6238edca0 100644 --- a/contracts/examples/bonding-curve-contract/wasm/Cargo.lock +++ b/contracts/examples/bonding-curve-contract/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -156,9 +156,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/check-pause/wasm/Cargo.lock b/contracts/examples/check-pause/wasm/Cargo.lock index 1b0dee59f8..5ee107a05b 100644 --- a/contracts/examples/check-pause/wasm/Cargo.lock +++ b/contracts/examples/check-pause/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -156,9 +156,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock b/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock index b132742fa0..8d30b32a98 100644 --- a/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock +++ b/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/crypto-bubbles/wasm/Cargo.lock b/contracts/examples/crypto-bubbles/wasm/Cargo.lock index 5f554cec2b..58d2a4be8b 100755 --- a/contracts/examples/crypto-bubbles/wasm/Cargo.lock +++ b/contracts/examples/crypto-bubbles/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.lock b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.lock index 535a51de38..aeaec8ffb0 100755 --- a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.lock +++ b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.lock @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -113,7 +113,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -124,7 +124,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -184,9 +184,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 d61753e258..c3842dae09 100755 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.lock +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.lock @@ -65,7 +65,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -94,7 +94,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -105,7 +105,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -165,9 +165,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.lock b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.lock index 45a01439c5..f11b790b7f 100755 --- a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.lock +++ b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.lock @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -104,7 +104,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -115,7 +115,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -175,9 +175,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/crypto-zombies/wasm/Cargo.lock b/contracts/examples/crypto-zombies/wasm/Cargo.lock index a9f01a6180..9052befd7e 100755 --- a/contracts/examples/crypto-zombies/wasm/Cargo.lock +++ b/contracts/examples/crypto-zombies/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/digital-cash/wasm/Cargo.lock b/contracts/examples/digital-cash/wasm/Cargo.lock index 79bb5c8cba..844e04e7d1 100644 --- a/contracts/examples/digital-cash/wasm/Cargo.lock +++ b/contracts/examples/digital-cash/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/empty/wasm/Cargo.lock b/contracts/examples/empty/wasm/Cargo.lock index ac143852e3..c697c0de43 100755 --- a/contracts/examples/empty/wasm/Cargo.lock +++ b/contracts/examples/empty/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.lock b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.lock index 33e5926915..fdf2a62489 100644 --- a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.lock +++ b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/factorial/wasm/Cargo.lock b/contracts/examples/factorial/wasm/Cargo.lock index e8423983d5..de7d1ca2ae 100755 --- a/contracts/examples/factorial/wasm/Cargo.lock +++ b/contracts/examples/factorial/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/fractional-nfts/wasm/Cargo.lock b/contracts/examples/fractional-nfts/wasm/Cargo.lock index 64a57b293d..d13522f894 100644 --- a/contracts/examples/fractional-nfts/wasm/Cargo.lock +++ b/contracts/examples/fractional-nfts/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -156,9 +156,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/lottery-esdt/wasm/Cargo.lock b/contracts/examples/lottery-esdt/wasm/Cargo.lock index d63b3dead5..ce9560173c 100755 --- a/contracts/examples/lottery-esdt/wasm/Cargo.lock +++ b/contracts/examples/lottery-esdt/wasm/Cargo.lock @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/multisig/wasm-multisig-full/Cargo.lock b/contracts/examples/multisig/wasm-multisig-full/Cargo.lock index 606b39381c..83333cc9d2 100644 --- a/contracts/examples/multisig/wasm-multisig-full/Cargo.lock +++ b/contracts/examples/multisig/wasm-multisig-full/Cargo.lock @@ -56,7 +56,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -156,9 +156,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/multisig/wasm-multisig-view/Cargo.lock b/contracts/examples/multisig/wasm-multisig-view/Cargo.lock index 020a882847..7e84c623fa 100644 --- a/contracts/examples/multisig/wasm-multisig-view/Cargo.lock +++ b/contracts/examples/multisig/wasm-multisig-view/Cargo.lock @@ -56,7 +56,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -156,9 +156,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/multisig/wasm/Cargo.lock b/contracts/examples/multisig/wasm/Cargo.lock index 06d5316f69..b56f8b9f00 100755 --- a/contracts/examples/multisig/wasm/Cargo.lock +++ b/contracts/examples/multisig/wasm/Cargo.lock @@ -56,7 +56,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -156,9 +156,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/nft-minter/wasm/Cargo.lock b/contracts/examples/nft-minter/wasm/Cargo.lock index 4555b16aba..89c376064b 100644 --- a/contracts/examples/nft-minter/wasm/Cargo.lock +++ b/contracts/examples/nft-minter/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/nft-storage-prepay/wasm/Cargo.lock b/contracts/examples/nft-storage-prepay/wasm/Cargo.lock index f92cbb26e0..161c20f4ee 100755 --- a/contracts/examples/nft-storage-prepay/wasm/Cargo.lock +++ b/contracts/examples/nft-storage-prepay/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/nft-subscription/wasm/Cargo.lock b/contracts/examples/nft-subscription/wasm/Cargo.lock index 34a24cf679..b862e4314c 100644 --- a/contracts/examples/nft-subscription/wasm/Cargo.lock +++ b/contracts/examples/nft-subscription/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -156,9 +156,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/order-book/factory/wasm/Cargo.lock b/contracts/examples/order-book/factory/wasm/Cargo.lock index 5472eac6f3..884b17c296 100644 --- a/contracts/examples/order-book/factory/wasm/Cargo.lock +++ b/contracts/examples/order-book/factory/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/order-book/pair/wasm/Cargo.lock b/contracts/examples/order-book/pair/wasm/Cargo.lock index 76a5a75e99..6488a5eaa5 100644 --- a/contracts/examples/order-book/pair/wasm/Cargo.lock +++ b/contracts/examples/order-book/pair/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/ping-pong-egld/wasm/Cargo.lock b/contracts/examples/ping-pong-egld/wasm/Cargo.lock index 0bc1b1c801..1d697bc89d 100755 --- a/contracts/examples/ping-pong-egld/wasm/Cargo.lock +++ b/contracts/examples/ping-pong-egld/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/proxy-pause/wasm/Cargo.lock b/contracts/examples/proxy-pause/wasm/Cargo.lock index 49f181a970..7847d7e907 100644 --- a/contracts/examples/proxy-pause/wasm/Cargo.lock +++ b/contracts/examples/proxy-pause/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/rewards-distribution/wasm/Cargo.lock b/contracts/examples/rewards-distribution/wasm/Cargo.lock index 2daa481ff3..ed367793e0 100644 --- a/contracts/examples/rewards-distribution/wasm/Cargo.lock +++ b/contracts/examples/rewards-distribution/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -156,9 +156,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/seed-nft-minter/wasm/Cargo.lock b/contracts/examples/seed-nft-minter/wasm/Cargo.lock index 9ac9f584f9..5b0c14e4c0 100644 --- a/contracts/examples/seed-nft-minter/wasm/Cargo.lock +++ b/contracts/examples/seed-nft-minter/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -156,9 +156,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/examples/token-release/wasm/Cargo.lock b/contracts/examples/token-release/wasm/Cargo.lock index da72b4a6d4..982ffe7e5b 100644 --- a/contracts/examples/token-release/wasm/Cargo.lock +++ b/contracts/examples/token-release/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -133,9 +133,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 4b4fbd01f6..6224f94e8e 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/feature-tests/abi-tester/wasm/Cargo.lock b/contracts/feature-tests/abi-tester/wasm/Cargo.lock index 3c219d33c9..648921bf93 100755 --- a/contracts/feature-tests/abi-tester/wasm/Cargo.lock +++ b/contracts/feature-tests/abi-tester/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock index e5d2af2ccd..f7d9075764 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock index 4455b345f9..e278d208aa 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/feature-tests/alloc-features/wasm/Cargo.lock b/contracts/feature-tests/alloc-features/wasm/Cargo.lock index f2bdfc23e9..911763d1ee 100644 --- a/contracts/feature-tests/alloc-features/wasm/Cargo.lock +++ b/contracts/feature-tests/alloc-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 c9265a486f..4096da06a6 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 @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -156,9 +156,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/feature-tests/basic-features/wasm/Cargo.lock b/contracts/feature-tests/basic-features/wasm/Cargo.lock index c62ed6e208..b771e88a45 100755 --- a/contracts/feature-tests/basic-features/wasm/Cargo.lock +++ b/contracts/feature-tests/basic-features/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -156,9 +156,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/feature-tests/big-float-features/wasm/Cargo.lock b/contracts/feature-tests/big-float-features/wasm/Cargo.lock index 7d9f21fbd5..e219eb63f1 100644 --- a/contracts/feature-tests/big-float-features/wasm/Cargo.lock +++ b/contracts/feature-tests/big-float-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 d7c01b1316..b24993d7ef 100644 --- a/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 e2f6d2e32a..2df38c78c8 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 71a3d6506f..dae06b0b1b 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 @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 8c397ab34f..ceffed2f48 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 87ffcd81cd..543b947e37 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 @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -156,9 +156,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 1789144ba6..ad9a1f4b49 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 @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -149,9 +149,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.lock b/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.lock index b9c77bd876..4e148e341c 100644 --- a/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -149,9 +149,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 25b1bd5be1..8d5690eae5 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 24bb5c2c3c..1e4d942595 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.lock b/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.lock index 3bd5720470..951a706535 100755 --- a/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock b/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock index 3d741a724c..9fb9899a61 100755 --- a/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -149,9 +149,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 9df77263a4..3ecce8a599 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 @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/feature-tests/composability/promises-features/wasm/Cargo.lock b/contracts/feature-tests/composability/promises-features/wasm/Cargo.lock index d99b0c86ad..74b8399729 100644 --- a/contracts/feature-tests/composability/promises-features/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/promises-features/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -149,9 +149,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 131e1f98e0..c4e3b77125 100755 --- a/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -149,9 +149,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 07096a0c87..b45fac9e48 100755 --- a/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.lock b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.lock index ace05f291b..d3ff7c1587 100755 --- a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -149,9 +149,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 2426bbafc9..8f6bc439b6 100644 --- a/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -140,9 +140,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 817d599fc8..547f949bf0 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.lock +++ b/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -133,9 +133,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock index b86fda7779..8a1fb523c4 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock +++ b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -133,9 +133,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/feature-tests/composability/vault/wasm/Cargo.lock b/contracts/feature-tests/composability/vault/wasm/Cargo.lock index 63b59e6432..fad7e9967d 100755 --- a/contracts/feature-tests/composability/vault/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/vault/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -133,9 +133,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 48d839370c..542c92a53d 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 @@ -63,7 +63,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -156,9 +156,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 e824be164e..c0031acd5f 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 @@ -63,7 +63,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -156,9 +156,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 cafbaaa044..556081cf37 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 b06fbb5915..8e9ff2e68a 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 fadd4d7d06..9d4ae04370 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 1b86e0f930..391b426bb2 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 69246ef0e7..b24dd728d1 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 @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -156,9 +156,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 45dee647b9..cd0ce287fb 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.lock +++ b/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/feature-tests/formatted-message-features/wasm/Cargo.lock b/contracts/feature-tests/formatted-message-features/wasm/Cargo.lock index 7b03d2eed4..fc222834e1 100644 --- a/contracts/feature-tests/formatted-message-features/wasm/Cargo.lock +++ b/contracts/feature-tests/formatted-message-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/feature-tests/managed-map-features/wasm/Cargo.lock b/contracts/feature-tests/managed-map-features/wasm/Cargo.lock index 551ac72ffa..a01751bebe 100644 --- a/contracts/feature-tests/managed-map-features/wasm/Cargo.lock +++ b/contracts/feature-tests/managed-map-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 d2952ba4f2..6a372a85c5 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 @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 952172f4a5..e6c247041d 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 @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 f078c5b4cb..eb10f6d145 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 @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/feature-tests/multi-contract-features/wasm/Cargo.lock b/contracts/feature-tests/multi-contract-features/wasm/Cargo.lock index d849f259dd..db59aa094a 100755 --- a/contracts/feature-tests/multi-contract-features/wasm/Cargo.lock +++ b/contracts/feature-tests/multi-contract-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/feature-tests/panic-message-features/wasm/Cargo.lock b/contracts/feature-tests/panic-message-features/wasm/Cargo.lock index 19c41a8939..59e64f220b 100755 --- a/contracts/feature-tests/panic-message-features/wasm/Cargo.lock +++ b/contracts/feature-tests/panic-message-features/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/feature-tests/payable-features/wasm/Cargo.lock b/contracts/feature-tests/payable-features/wasm/Cargo.lock index 312b0558e5..29d59c1f86 100755 --- a/contracts/feature-tests/payable-features/wasm/Cargo.lock +++ b/contracts/feature-tests/payable-features/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 016e4d921d..4398ef5691 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.lock +++ b/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 be5589bcee..39a57994af 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.lock +++ b/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" 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 3d059e28f6..f01d124f6d 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 @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -140,9 +140,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" diff --git a/contracts/feature-tests/use-module/wasm/Cargo.lock b/contracts/feature-tests/use-module/wasm/Cargo.lock index 3478705566..49e4869bf9 100644 --- a/contracts/feature-tests/use-module/wasm/Cargo.lock +++ b/contracts/feature-tests/use-module/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.7" +version = "0.47.8" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.7" +version = "0.47.8" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.7" +version = "0.47.8" dependencies = [ "multiversx-sc", ] @@ -140,9 +140,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" From e8ce4666fe9602c9a4e15ef40c5be3e5cdd685c4 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Fri, 22 Mar 2024 15:58:06 +0200 Subject: [PATCH 150/461] unified sytax - remove direct_call usage in contracts --- .../examples/crypto-kitties/kitty-auction/src/lib.rs | 12 ++++++++---- .../crypto-kitties/kitty-ownership/src/lib.rs | 4 ++-- .../examples/crypto-zombies/src/zombie_helper.rs | 5 ++++- contracts/examples/digital-cash/src/digital_cash.rs | 2 +- contracts/examples/digital-cash/src/helpers.rs | 2 +- .../digital-cash/src/signature_operations.rs | 12 ++++++++---- .../nft-storage-prepay/src/nft_storage_prepay.rs | 4 ++-- .../src/bonding_curve/utils/owner_endpoints.rs | 2 +- contracts/modules/src/default_issue_callbacks.rs | 6 +++--- contracts/modules/src/esdt.rs | 6 +++--- 10 files changed, 33 insertions(+), 22 deletions(-) diff --git a/contracts/examples/crypto-kitties/kitty-auction/src/lib.rs b/contracts/examples/crypto-kitties/kitty-auction/src/lib.rs index af7c7c1736..a6bf8ae782 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/src/lib.rs +++ b/contracts/examples/crypto-kitties/kitty-auction/src/lib.rs @@ -183,8 +183,10 @@ pub trait KittyAuction { // refund losing bid if !auction.current_winner.is_zero() { - self.send() - .direct_egld(&auction.current_winner, &auction.current_bid); + self.tx() + .to(&auction.current_winner) + .egld(&auction.current_bid) + .transfer(); } // update auction bid and winner @@ -356,8 +358,10 @@ pub trait KittyAuction { if auction.kitty_owner != self.blockchain().get_sc_address() && !auction.current_winner.is_zero() { - self.send() - .direct_egld(&auction.kitty_owner, &auction.current_bid); + self.tx() + .to(&auction.kitty_owner) + .egld(&auction.current_bid) + .transfer(); } }, ManagedAsyncCallResult::Err(_) => { diff --git a/contracts/examples/crypto-kitties/kitty-ownership/src/lib.rs b/contracts/examples/crypto-kitties/kitty-ownership/src/lib.rs index 2514592465..21eadff6d9 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/src/lib.rs +++ b/contracts/examples/crypto-kitties/kitty-ownership/src/lib.rs @@ -52,7 +52,7 @@ pub trait KittyOwnership { .blockchain() .get_sc_balance(&EgldOrEsdtTokenIdentifier::egld(), 0); - self.send().direct_egld(&caller, &egld_balance); + self.tx().to(&caller).egld(&egld_balance).transfer(); } // views/endpoints - ERC721 required @@ -569,7 +569,7 @@ pub trait KittyOwnership { // send birth fee to caller let fee = self.birth_fee().get(); - self.send().direct_egld(&original_caller, &fee); + self.tx().to(&original_caller).egld(&fee).transfer(); }, ManagedAsyncCallResult::Err(_) => { // this can only fail if the kitty_genes contract address is invalid diff --git a/contracts/examples/crypto-zombies/src/zombie_helper.rs b/contracts/examples/crypto-zombies/src/zombie_helper.rs index 000ffda770..c38edc9ea0 100644 --- a/contracts/examples/crypto-zombies/src/zombie_helper.rs +++ b/contracts/examples/crypto-zombies/src/zombie_helper.rs @@ -31,7 +31,10 @@ pub trait ZombieHelper: storage::Storage { fn withdraw(&self) { let caller_address = self.blockchain().get_caller(); let collected_fees = self.collected_fees().get(); - self.send().direct_egld(&caller_address, &collected_fees); + self.tx() + .to(&caller_address) + .egld(&collected_fees) + .transfer(); self.collected_fees().clear(); } diff --git a/contracts/examples/digital-cash/src/digital_cash.rs b/contracts/examples/digital-cash/src/digital_cash.rs index 052faca2ef..e1384d1742 100644 --- a/contracts/examples/digital-cash/src/digital_cash.rs +++ b/contracts/examples/digital-cash/src/digital_cash.rs @@ -55,7 +55,7 @@ pub trait DigitalCash: continue; } if token == EgldOrEsdtTokenIdentifier::egld() { - self.send().direct_egld(&caller_address, &fee); + self.tx().to(&caller_address).egld(&fee).transfer(); } else { let collected_fee = EsdtTokenPayment::new(token.unwrap_esdt(), 0, fee); collected_esdt_fees.push(collected_fee); diff --git a/contracts/examples/digital-cash/src/helpers.rs b/contracts/examples/digital-cash/src/helpers.rs index d300e35d08..eef0b641f1 100644 --- a/contracts/examples/digital-cash/src/helpers.rs +++ b/contracts/examples/digital-cash/src/helpers.rs @@ -9,7 +9,7 @@ use crate::{ pub trait HelpersModule: storage::StorageModule { fn send_fee_to_address(&self, fee: &EgldOrEsdtTokenPayment, address: &ManagedAddress) { if fee.token_identifier == EgldOrEsdtTokenIdentifier::egld() { - self.send().direct_egld(address, &fee.amount); + self.tx().to(address).egld(&fee.amount).transfer(); } else { let esdt_fee = fee.clone().unwrap_esdt(); self.send() diff --git a/contracts/examples/digital-cash/src/signature_operations.rs b/contracts/examples/digital-cash/src/signature_operations.rs index 3da7143f88..5a60851143 100644 --- a/contracts/examples/digital-cash/src/signature_operations.rs +++ b/contracts/examples/digital-cash/src/signature_operations.rs @@ -33,8 +33,10 @@ pub trait SignatureOperationsModule: storage::StorageModule + helpers::HelpersMo } if egld_funds > 0 { - self.send() - .direct_egld(&deposit.depositor_address, &egld_funds); + self.tx() + .to(&deposit.depositor_address) + .egld(&egld_funds) + .transfer(); } if !esdt_funds.is_empty() { @@ -71,8 +73,10 @@ pub trait SignatureOperationsModule: storage::StorageModule + helpers::HelpersMo .update(|collected_fees| *collected_fees += fee_cost); if deposit.egld_funds > 0 { - self.send() - .direct_egld(&caller_address, &deposit.egld_funds); + self.tx() + .to(&caller_address) + .egld(&deposit.egld_funds) + .transfer(); } if !deposit.esdt_funds.is_empty() { self.send() diff --git a/contracts/examples/nft-storage-prepay/src/nft_storage_prepay.rs b/contracts/examples/nft-storage-prepay/src/nft_storage_prepay.rs index f21dfcb61b..7e1c6115d3 100644 --- a/contracts/examples/nft-storage-prepay/src/nft_storage_prepay.rs +++ b/contracts/examples/nft-storage-prepay/src/nft_storage_prepay.rs @@ -42,7 +42,7 @@ pub trait NftStoragePrepay { self.total_reserved().clear(); let owner = self.blockchain().get_caller(); - self.send().direct_egld(&owner, &total_reserved); + self.tx().to(&owner).egld(&total_reserved).transfer(); } // endpoints @@ -71,7 +71,7 @@ pub trait NftStoragePrepay { user_deposit -= &amount; self.deposit(&caller).set(&user_deposit); - self.send().direct_egld(&caller, &amount); + self.tx().to(&caller).egld(&amount).transfer(); } // views diff --git a/contracts/modules/src/bonding_curve/utils/owner_endpoints.rs b/contracts/modules/src/bonding_curve/utils/owner_endpoints.rs index 51f5eaaa35..007eda5fb7 100644 --- a/contracts/modules/src/bonding_curve/utils/owner_endpoints.rs +++ b/contracts/modules/src/bonding_curve/utils/owner_endpoints.rs @@ -181,7 +181,7 @@ pub trait OwnerEndpointsModule: storage::StorageModule + events::EventsModule { self.owned_tokens(&caller).clear(); self.send().direct_multi(&caller, &tokens_to_claim); if egld_to_claim > BigUint::zero() { - self.send().direct_egld(&caller, &egld_to_claim); + self.tx().to(&caller).egld(&egld_to_claim).transfer(); } } diff --git a/contracts/modules/src/default_issue_callbacks.rs b/contracts/modules/src/default_issue_callbacks.rs index 7c0d096b2e..6edd7abeec 100644 --- a/contracts/modules/src/default_issue_callbacks.rs +++ b/contracts/modules/src/default_issue_callbacks.rs @@ -46,9 +46,9 @@ pub trait DefaultIssueCallbacksModule { } fn return_failed_issue_funds(&self, initial_caller: ManagedAddress) { - let egld_returned = self.call_value().egld_value(); - if *egld_returned > 0u32 { - self.send().direct_egld(&initial_caller, &egld_returned); + let egld_returned = self.call_value().egld_value().to_u64().unwrap(); + if egld_returned > 0u64 { + self.tx().to(&initial_caller).egld(egld_returned).transfer(); } } } diff --git a/contracts/modules/src/esdt.rs b/contracts/modules/src/esdt.rs index 18f43b896f..a61ba67a3f 100644 --- a/contracts/modules/src/esdt.rs +++ b/contracts/modules/src/esdt.rs @@ -63,9 +63,9 @@ pub trait EsdtModule { ManagedAsyncCallResult::Err(_) => { // return payment to initial caller let initial_caller = self.blockchain().get_owner_address(); - let egld_returned = self.call_value().egld_value(); - if *egld_returned > 0u32 { - self.send().direct_egld(&initial_caller, &egld_returned); + let egld_returned = self.call_value().egld_value().to_u64().unwrap(); + if egld_returned > 0u64 { + self.tx().to(&initial_caller).egld(egld_returned).transfer(); } }, } From c374bfc9f6db1db5c106e73b096cfe848824c633 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Fri, 22 Mar 2024 16:54:50 +0200 Subject: [PATCH 151/461] unified syntax - add transfer_non_zero and replace multi_esdt_transfer_execute --- .../composability/forwarder/src/esdt.rs | 12 +++++------- framework/base/src/types/interaction/tx_call_te.rs | 8 ++++++++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/contracts/feature-tests/composability/forwarder/src/esdt.rs b/contracts/feature-tests/composability/forwarder/src/esdt.rs index ae9e366720..c178749ba9 100644 --- a/contracts/feature-tests/composability/forwarder/src/esdt.rs +++ b/contracts/feature-tests/composability/forwarder/src/esdt.rs @@ -73,13 +73,11 @@ pub trait ForwarderEsdtModule: storage::ForwarderStorageModule { all_token_payments.push(payment); } - let _ = self.send_raw().multi_esdt_transfer_execute( - &to, - &all_token_payments, - self.blockchain().get_gas_left(), - &ManagedBuffer::new(), - &ManagedArgBuffer::new(), - ); + self.tx() + .with_gas_limit(self.blockchain().get_gas_left()) + .to(&to) + .multi_esdt(all_token_payments) + .transfer_execute(); } #[payable("EGLD")] diff --git a/framework/base/src/types/interaction/tx_call_te.rs b/framework/base/src/types/interaction/tx_call_te.rs index b7a97a93d1..96eb1a72fb 100644 --- a/framework/base/src/types/interaction/tx_call_te.rs +++ b/framework/base/src/types/interaction/tx_call_te.rs @@ -49,4 +49,12 @@ where pub fn transfer(self) { self.transfer_execute_with_gas(0) } + + pub fn transfer_non_zero(self) { + if self.payment.is_no_payment() { + return; + } + + self.transfer_execute_with_gas(0) + } } From bb219c02ad2bc8b227a8587c441ebac6b30dfad7 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Fri, 22 Mar 2024 18:05:29 +0100 Subject: [PATCH 152/461] small gas fix and multisig unified syntax in interactor --- .../interact/src/multisig_interact.rs | 114 +++++++++--------- .../interact/src/multisig_interact_nfts.rs | 38 +++--- .../interact/src/multisig_interact_wegld.rs | 4 +- contracts/examples/multisig/src/multisig.rs | 2 +- .../examples/multisig/src/multisig_proxy.rs | 6 +- .../src/facade/world_tx/scenario_env_util.rs | 7 +- 6 files changed, 89 insertions(+), 82 deletions(-) diff --git a/contracts/examples/multisig/interact/src/multisig_interact.rs b/contracts/examples/multisig/interact/src/multisig_interact.rs index cf679c5a13..1de0b6f261 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact.rs @@ -6,27 +6,26 @@ mod multisig_interact_wegld; use clap::Parser; use multisig::{ - multisig_perform::ProxyTrait as _, multisig_propose::ProxyTrait as _, - multisig_state::ProxyTrait as _, ProxyTrait as _, + multisig_perform::ProxyTrait as _, multisig_propose::ProxyTrait as _, multisig_proxy, + ProxyTrait as _, }; use multisig_interact_config::Config; use multisig_interact_state::State; -use multiversx_sc_modules::dns::ProxyTrait as _; use multiversx_sc_scenario::{ - mandos_system::ScenarioRunner, multiversx_sc::codec::multi_types::IgnoreValue, + mandos_system::ScenarioRunner, + multiversx_sc::types::{BigUint, ReturnsNewAddress, ReturnsSimilar}, scenario_format::interpret_trait::InterpretableFrom, - standalone::retrieve_account_as_scenario_set_state, test_wallets, + standalone::retrieve_account_as_scenario_set_state, + test_wallets, }; use multiversx_sc_snippets::{ dns_address_for_name, env_logger, - multiversx_sc::{ - codec::multi_types::MultiValueVec, storage::mappers::SingleValue, types::Address, - }, + multiversx_sc::{codec::multi_types::MultiValueVec, types::Address}, multiversx_sc_scenario::{ api::StaticApi, bech32, scenario_format::interpret_trait::InterpreterContext, scenario_model::*, ContractInfo, }, - tokio, Interactor, StepBuffer, + tokio, Interactor, InteractorPrepareAsync, StepBuffer, }; const SYSTEM_SC_BECH32: &str = "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u"; @@ -160,21 +159,17 @@ impl MultisigInteract { self.set_state().await; let board = self.board(); - let (new_address, _) = self + + let new_address = self .interactor - .sc_deploy_get_result::<_, IgnoreValue>( - ScDeployStep::new() - .call( - self.state - .default_multisig() - .init(Config::load_config().quorum(), board), - ) - .from(&self.wallet_address) - .code(&self.multisig_code) - .gas_limit("100,000,000") - .expect(TxExpect::ok().additional_error_message("deploy failed: ")), - ) - .await; + .tx() + .from(&self.wallet_address) + .typed(multisig_proxy::MultisigProxy) + .init(&Config::load_config().quorum(), board) + .code(&self.multisig_code) + .with_gas_limit(100_000_000u64) + .returns(ReturnsNewAddress) + .sync_call(); let new_address_bech32 = bech32::encode(&new_address); println!("new address: {new_address_bech32}"); @@ -243,33 +238,31 @@ impl MultisigInteract { } async fn feed_contract_egld(&mut self) { - let _ = self - .interactor - .transfer( - TransferStep::new() - .from(&self.wallet_address) - .to(self.state.multisig()) - .egld_value("0,050000000000000000"), - ) + self.interactor + .tx() + .from(&self.wallet_address) + .to(self.state.multisig().to_address()) + .egld(BigUint::from(5_000_000_000_000_000_0u64)) // 0,05 or 5 * 10^16 + .prepare_async() + .run() .await; } - async fn perform_action(&mut self, action_id: usize, gas_expr: &str) { + async fn perform_action(&mut self, action_id: usize, gas_expr: u64) { if !self.quorum_reached(action_id).await && !self.sign(action_id).await { return; } println!("quorum reached for action `{action_id}`"); self.interactor - .sc_call( - ScCallStep::new() - .call(self.state.multisig().perform_action_endpoint(action_id)) - .from(&self.wallet_address) - .gas_limit(gas_expr) - .expect(TxExpect::ok().additional_error_message(format!( - "perform action `{action_id}` failed with: " - ))), - ) + .tx() + .from(&self.wallet_address) + .to(self.state.multisig().to_address()) + .with_gas_limit(gas_expr) + .typed(multisig_proxy::MultisigProxy) + .perform_action_endpoint(action_id) + .prepare_async() + .run() .await; println!("successfully performed action `{action_id}`"); @@ -361,33 +354,46 @@ impl MultisigInteract { async fn dns_register(&mut self, name: &str) { let dns_address = dns_address_for_name(name); self.interactor - .sc_call( - ScCallStep::new() - .call(self.state.multisig().dns_register(dns_address, name)) - .from(&self.wallet_address) - .gas_limit("30,000,000") - .expect(TxExpect::ok().additional_error_message("dns register failed with: ")), - ) + .tx() + .from(&self.wallet_address) + .to(self.state.multisig().to_address()) + .with_gas_limit(30_000_000u64) + .typed(multisig_proxy::MultisigProxy) + .dns_register(dns_address, name) + .prepare_async() + .run() .await; println!("successfully registered dns"); } async fn print_quorum(&mut self) { - let quorum: SingleValue = self + let quorum = self .interactor - .quick_query(self.state.multisig().quorum()) + .query() + .to(self.state.multisig().to_address()) + .typed(multisig_proxy::MultisigProxy) + .quorum() + .returns(ReturnsSimilar::::new()) + .prepare_async() + .run() .await; - println!("quorum: {}", quorum.into()); + println!("quorum: {}", quorum); } async fn print_board(&mut self) { - let board: SingleValue = self + let board = self .interactor - .quick_query(self.state.multisig().num_board_members()) + .query() + .to(self.state.multisig().to_address()) + .typed(multisig_proxy::MultisigProxy) + .num_board_members() + .returns(ReturnsSimilar::::new()) + .prepare_async() + .run() .await; - println!("board: {}", board.into()); + println!("board: {}", board); } } diff --git a/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs b/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs index ab8fa001f7..d607b7816a 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs @@ -39,26 +39,24 @@ impl MultisigInteract { let system_sc_address = bech32::decode(SYSTEM_SC_BECH32); let action_id = self .interactor - .sc_call_get_result( - ScCallStep::new() - .call( - self.state.multisig().propose_async_call( - system_sc_address, - ISSUE_COST, - FunctionCall::new("registerAndSetAllRoles") - .argument(&COLLECTION_NAME) - .argument(&COLLECTION_TICKER) - .argument(&TOKEN_TYPE) - .argument(&0u32), - ), - ) - .from(&self.wallet_address) - .gas_limit("10,000,000") - .expect(TxExpect::ok().additional_error_message("failed to issue collection")), + .tx() + .from(&self.wallet_address) + .to(self.state.multisig().to_address()) + .with_gas_limit(10_000_000u64) + .typed(multisig_proxy::MultisigProxy) + .propose_async_call( + system_sc_address, + ISSUE_COST, + FunctionCall::new("registerAndSetAllRoles") + .argument(&COLLECTION_NAME) + .argument(&COLLECTION_TICKER) + .argument(&TOKEN_TYPE) + .argument(&0u32), ) - .await - .result - .unwrap(); + .returns(ReturnsSimilar::::new()) + .prepare_async() + .run() + .await; println!("successfully proposed issue colllection with roles all action `{action_id}`"); action_id @@ -186,7 +184,7 @@ impl MultisigInteract { let action_id = self.propose_set_special_role().await; println!("performing set special role action `{action_id}`..."); - self.perform_action(action_id, "80,000,000").await; + self.perform_action(action_id, 80_000_000u64).await; } pub async fn create_items(&mut self) { diff --git a/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs b/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs index e3c6009b95..bcfa959805 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs @@ -34,7 +34,7 @@ impl MultisigInteract { let action_id = self.propose_wrap_egld().await; println!("perfoming wrap egld action `{action_id}`..."); - self.perform_action(action_id, "15,000,000").await; + self.perform_action(action_id, 15_000_000u64).await; } pub async fn unwrap_egld(&mut self) { @@ -42,7 +42,7 @@ impl MultisigInteract { let action_id = self.propose_unwrap_egld().await; println!("perfoming unwrap egld action `{action_id}`..."); - self.perform_action(action_id, "15,000,000").await; + self.perform_action(action_id, 15_000_000u64).await; } pub async fn wegld_swap_set_state(&mut self) { diff --git a/contracts/examples/multisig/src/multisig.rs b/contracts/examples/multisig/src/multisig.rs index 75c13cb5dd..96d3d5cdfa 100644 --- a/contracts/examples/multisig/src/multisig.rs +++ b/contracts/examples/multisig/src/multisig.rs @@ -4,7 +4,7 @@ pub mod action; pub mod multisig_events; pub mod multisig_perform; pub mod multisig_propose; -// pub mod multisig_proxy; +pub mod multisig_proxy; pub mod multisig_state; pub mod user_role; diff --git a/contracts/examples/multisig/src/multisig_proxy.rs b/contracts/examples/multisig/src/multisig_proxy.rs index b0d42e16ef..265bc968ab 100644 --- a/contracts/examples/multisig/src/multisig_proxy.rs +++ b/contracts/examples/multisig/src/multisig_proxy.rs @@ -355,7 +355,7 @@ where (), Gas, FunctionCall, - OriginalResultMarker>, + OriginalResultMarker, > { self.wrapped_tx .raw_call() @@ -727,11 +727,11 @@ where Api: ManagedTypeApi, { pub action_id: usize, - pub action_data: Action, + pub action_data: Action, pub signers: ManagedVec>, } -#[derive(TopEncode, TopDecode)] +#[derive(TopEncode, TopDecode, NestedEncode, NestedDecode)] pub enum Action { Nothing, AddBoardMember, diff --git a/framework/scenario/src/facade/world_tx/scenario_env_util.rs b/framework/scenario/src/facade/world_tx/scenario_env_util.rs index 19776e9a0d..2de2e9ae6c 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_util.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_util.rs @@ -12,7 +12,7 @@ use crate::{ api::StaticApi, scenario_model::{ AddressValue, BigUintValue, BytesValue, ScCallStep, ScDeployStep, ScQueryStep, - TransferStep, TxResponse, + TransferStep, TxResponse, U64Value, }, RHListScenario, ScenarioEnvExec, ScenarioWorld, }; @@ -46,7 +46,7 @@ pub fn tx_to_sc_call_step( from: From, to: To, payment: Payment, - _gas: Gas, + gas: Gas, data: FunctionCall, ) -> ScCallStep where @@ -63,6 +63,9 @@ where for arg in data.arg_buffer.iter_buffers() { step.tx.arguments.push(arg.to_vec().into()); } + + let explicit_gas = gas.resolve_gas(env); + step.tx.gas_limit = U64Value::from(explicit_gas); let full_payment_data = payment.into_full_payment_data(); if let Some(annotated_egld_payment) = full_payment_data.egld { From 4ac234c569076c995883dad551858c1a305c86ad Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 22 Mar 2024 19:16:17 +0200 Subject: [PATCH 153/461] send wrapper - send egld via unified syntax --- .../src/contract_base/wrappers/send_wrapper.rs | 14 ++++++++------ framework/base/src/types/interaction/tx_call_te.rs | 11 +++++++++++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index 62f99b767c..ec8fd41c5b 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -75,7 +75,10 @@ where /// Used especially for sending EGLD to regular accounts. #[inline] pub fn direct_egld(&self, to: &ManagedAddress, amount: &BigUint) { - self.send_raw_wrapper().direct_egld(to, amount, Empty) + Tx::new_tx_from_sc() + .to(to) + .egld(amount) + .transfer(); } /// Sends EGLD to a given address, directly. @@ -83,11 +86,10 @@ where /// /// If the amount is 0, it returns without error. pub fn direct_non_zero_egld(&self, to: &ManagedAddress, amount: &BigUint) { - if amount == &0 { - return; - } - - self.direct_egld(to, amount) + Tx::new_tx_from_sc() + .to(to) + .egld(amount) + .transfer_non_zero(); } /// Sends either EGLD, ESDT or NFT to the target address, diff --git a/framework/base/src/types/interaction/tx_call_te.rs b/framework/base/src/types/interaction/tx_call_te.rs index b7a97a93d1..792757eb07 100644 --- a/framework/base/src/types/interaction/tx_call_te.rs +++ b/framework/base/src/types/interaction/tx_call_te.rs @@ -49,4 +49,15 @@ where pub fn transfer(self) { self.transfer_execute_with_gas(0) } + + /// Transfers funds, amount is greater than zero. Does nothing otherwise. + /// + /// Can only used for simple transfers. + pub fn transfer_non_zero(self) { + if self.payment.is_no_payment() { + return; + } + + self.transfer(); + } } From 7a79ec9a73a94937ea66a0b4d30bc823737fa7a1 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Fri, 22 Mar 2024 18:19:33 +0100 Subject: [PATCH 154/461] regen proxy file --- contracts/examples/multisig/src/multisig_proxy.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/examples/multisig/src/multisig_proxy.rs b/contracts/examples/multisig/src/multisig_proxy.rs index 5b596c9836..a4f5c82bd7 100644 --- a/contracts/examples/multisig/src/multisig_proxy.rs +++ b/contracts/examples/multisig/src/multisig_proxy.rs @@ -497,7 +497,7 @@ where Api: ManagedTypeApi, { pub action_id: usize, - pub action_data: Action, + pub action_data: Action, pub signers: ManagedVec>, } From 48e8f36c35bd9b38593f2e6f207a9f8e2d342eb7 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 22 Mar 2024 19:44:22 +0200 Subject: [PATCH 155/461] send wrapper - send multi esdt via unified syntax --- .../contract_base/wrappers/send_wrapper.rs | 21 ++++--------- framework/base/src/types/interaction/tx.rs | 16 ++++++++++ .../base/src/types/interaction/tx_call_te.rs | 2 +- .../base/src/types/interaction/tx_payment.rs | 30 +++++++++++++++++-- 4 files changed, 51 insertions(+), 18 deletions(-) diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index ec8fd41c5b..d73074f52d 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -75,10 +75,7 @@ where /// Used especially for sending EGLD to regular accounts. #[inline] pub fn direct_egld(&self, to: &ManagedAddress, amount: &BigUint) { - Tx::new_tx_from_sc() - .to(to) - .egld(amount) - .transfer(); + Tx::new_tx_from_sc().to(to).egld(amount).transfer(); } /// Sends EGLD to a given address, directly. @@ -86,10 +83,7 @@ where /// /// If the amount is 0, it returns without error. pub fn direct_non_zero_egld(&self, to: &ManagedAddress, amount: &BigUint) { - Tx::new_tx_from_sc() - .to(to) - .egld(amount) - .transfer_non_zero(); + Tx::new_tx_from_sc().to(to).egld(amount).transfer_non_zero(); } /// Sends either EGLD, ESDT or NFT to the target address, @@ -293,13 +287,10 @@ where to: &ManagedAddress, payments: &ManagedVec>, ) { - let _ = self.send_raw_wrapper().multi_esdt_transfer_execute( - to, - payments, - 0, - &ManagedBuffer::new(), - &ManagedArgBuffer::new(), - ); + Tx::new_tx_from_sc() + .to(to) + .multi_esdt_ref(payments) + .transfer(); } /// Performs a simple ESDT/NFT transfer, but via async call. diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 8fae065026..d7388dc250 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -220,6 +220,22 @@ where } } + /// Sets a reference to multiple ESDT payments. + pub fn multi_esdt_ref( + self, + payments: &MultiEsdtPayment, + ) -> Tx, Gas, Data, RH> { + Tx { + env: self.env, + from: self.from, + to: self.to, + payment: payments, + gas: self.gas, + data: self.data, + result_handler: self.result_handler, + } + } + /// Backwards compatibility. pub fn with_multi_token_transfer( self, diff --git a/framework/base/src/types/interaction/tx_call_te.rs b/framework/base/src/types/interaction/tx_call_te.rs index 792757eb07..938a6c2523 100644 --- a/framework/base/src/types/interaction/tx_call_te.rs +++ b/framework/base/src/types/interaction/tx_call_te.rs @@ -51,7 +51,7 @@ where } /// Transfers funds, amount is greater than zero. Does nothing otherwise. - /// + /// /// Can only used for simple transfers. pub fn transfer_non_zero(self) { if self.payment.is_no_payment() { diff --git a/framework/base/src/types/interaction/tx_payment.rs b/framework/base/src/types/interaction/tx_payment.rs index beca0172f0..c3cc29fa9d 100644 --- a/framework/base/src/types/interaction/tx_payment.rs +++ b/framework/base/src/types/interaction/tx_payment.rs @@ -118,7 +118,7 @@ where } } -impl TxPayment for MultiEsdtPayment +impl TxPayment for &MultiEsdtPayment where Env: TxEnv, { @@ -135,13 +135,39 @@ where ) { let _ = SendRawWrapper::::new().multi_esdt_transfer_execute( to, - &self, + self, gas_limit, &fc.function_name, &fc.arg_buffer, ); } + fn into_full_payment_data(self, env: &Env) -> FullPaymentData { + FullPaymentData { + egld: None, + multi_esdt: self.clone(), + } + } +} + +impl TxPayment for MultiEsdtPayment +where + Env: TxEnv, +{ + fn is_no_payment(&self) -> bool { + self.is_empty() + } + + fn perform_transfer_execute( + self, + env: &Env, + to: &ManagedAddress, + gas_limit: u64, + fc: FunctionCall, + ) { + (&self).perform_transfer_execute(env, to, gas_limit, fc); + } + fn into_full_payment_data(self, env: &Env) -> FullPaymentData { FullPaymentData { egld: None, From 5a7aff284584c5c0d2d8912bf3fbbeccfe8613b8 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 22 Mar 2024 20:00:52 +0200 Subject: [PATCH 156/461] cleaned up imports --- .../base/src/types/interaction/deploy_call.rs | 7 ++---- .../types/interaction/expr/address_expr.rs | 2 +- .../src/types/interaction/expr/sc_expr.rs | 2 +- framework/base/src/types/interaction/tx.rs | 23 +++++++++--------- .../src/types/interaction/tx_call_deploy.rs | 5 ++-- .../src/types/interaction/tx_call_sync.rs | 4 ++-- .../src/types/interaction/tx_code_source.rs | 5 +--- .../base/src/types/interaction/tx_data.rs | 6 ++--- .../base/src/types/interaction/tx_env.rs | 7 +----- .../base/src/types/interaction/tx_env_sc.rs | 4 +--- .../base/src/types/interaction/tx_gas.rs | 2 +- .../base/src/types/interaction/tx_payment.rs | 11 ++++----- .../src/types/interaction/tx_payment_egld.rs | 19 ++++----------- .../interaction/tx_payment_egld_value.rs | 21 ++-------------- .../types/interaction/tx_payment_normalize.rs | 24 +++++-------------- .../tx_rh_list/returns_new_address.rs | 8 ++----- .../tx_rh_list/with_result_new_address.rs | 3 +-- .../tx_rh_list/with_result_similar.rs | 2 +- framework/base/src/types/interaction/tx_to.rs | 8 +++---- 19 files changed, 50 insertions(+), 113 deletions(-) diff --git a/framework/base/src/types/interaction/deploy_call.rs b/framework/base/src/types/interaction/deploy_call.rs index ec3a64e187..ad087d34b8 100644 --- a/framework/base/src/types/interaction/deploy_call.rs +++ b/framework/base/src/types/interaction/deploy_call.rs @@ -2,10 +2,7 @@ use multiversx_sc_codec::TopEncodeMulti; use crate::types::{CodeMetadata, ManagedBuffer, ManagedBufferCachedBuilder}; -use super::{ - Code, FunctionCall, ManagedArgBuffer, Tx, TxCodeSource, TxData, TxEnv, TxFrom, TxGas, - TxPayment, TxTo, -}; +use super::{ManagedArgBuffer, TxCodeSource, TxData, TxEnv}; /// Holds deploy data: code, code metadata, and arguments. pub struct DeployCall @@ -42,7 +39,7 @@ where fn to_call_data_string(&self) -> ManagedBuffer { // Implement as needed for deployment-specific data - let mut result = ManagedBufferCachedBuilder::default(); + let result = ManagedBufferCachedBuilder::default(); // result.append_managed_buffer(&self.code); // Add other fields as needed result.into_managed_buffer() diff --git a/framework/base/src/types/interaction/expr/address_expr.rs b/framework/base/src/types/interaction/expr/address_expr.rs index 44db09f0fe..a5b9756638 100644 --- a/framework/base/src/types/interaction/expr/address_expr.rs +++ b/framework/base/src/types/interaction/expr/address_expr.rs @@ -40,7 +40,7 @@ impl TxToSpecified for AddressExpr where Env: TxEnv, { - fn with_address_ref(&self, env: &Env, f: F) -> R + fn with_address_ref(&self, _env: &Env, f: F) -> R where F: FnOnce(&ManagedAddress) -> R, { diff --git a/framework/base/src/types/interaction/expr/sc_expr.rs b/framework/base/src/types/interaction/expr/sc_expr.rs index a81275ec4e..551d4eaf0a 100644 --- a/framework/base/src/types/interaction/expr/sc_expr.rs +++ b/framework/base/src/types/interaction/expr/sc_expr.rs @@ -42,7 +42,7 @@ impl<'a, Env> TxToSpecified for ScExpr<'a> where Env: TxEnv, { - fn with_address_ref(&self, env: &Env, f: F) -> R + fn with_address_ref(&self, _env: &Env, f: F) -> R where F: FnOnce(&ManagedAddress) -> R, { diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index d7388dc250..db6c244bd6 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -1,22 +1,21 @@ use crate::{ - api::{self, CallTypeApi, ManagedTypeApi}, - contract_base::{BlockchainWrapper, SendRawWrapper}, + api::CallTypeApi, + contract_base::BlockchainWrapper, types::{ BigUint, CodeMetadata, EgldOrEsdtTokenPayment, EsdtTokenPayment, ManagedAddress, ManagedBuffer, ManagedOption, ManagedVec, MultiEsdtPayment, }, }; -use alloc::boxed::Box; + use multiversx_sc_codec::TopEncodeMulti; use super::{ - contract_call_exec::UNSPECIFIED_GAS_LIMIT, contract_call_trait::ContractCallBase, - AnnotatedValue, AsyncCall, Code, ContractCallNoPayment, ContractCallWithEgld, ContractDeploy, - DeployCall, Egld, EgldPayment, ExplicitGas, FromSource, FunctionCall, ManagedArgBuffer, - OriginalResultMarker, RHList, RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, - TxCodeValue, TxData, TxDataFunctionCall, TxEgldValue, TxEnv, TxFrom, TxFromSourceValue, - TxFromSpecified, TxGas, TxPayment, TxPaymentEgldOnly, TxPaymentNormalize, TxProxyTrait, - TxResultHandler, TxScEnv, TxTo, TxToSpecified, + contract_call_exec::UNSPECIFIED_GAS_LIMIT, contract_call_trait::ContractCallBase, Code, + ContractCallNoPayment, ContractCallWithEgld, ContractDeploy, DeployCall, Egld, EgldPayment, + ExplicitGas, FromSource, FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, + RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, TxCodeValue, TxData, TxEgldValue, + TxEnv, TxFrom, TxFromSourceValue, TxGas, TxPayment, TxPaymentEgldOnly, TxPaymentNormalize, + TxProxyTrait, TxResultHandler, TxScEnv, TxTo, TxToSpecified, }; #[must_use] @@ -623,7 +622,7 @@ where RH: TxResultHandler, { pub fn code( - mut self, + self, code: CodeValue, ) -> Tx>, RH> where @@ -641,7 +640,7 @@ where } pub fn from_source( - mut self, + self, source_address: FromSourceValue, ) -> Tx>, RH> where diff --git a/framework/base/src/types/interaction/tx_call_deploy.rs b/framework/base/src/types/interaction/tx_call_deploy.rs index 7c9e17d84c..de2e943563 100644 --- a/framework/base/src/types/interaction/tx_call_deploy.rs +++ b/framework/base/src/types/interaction/tx_call_deploy.rs @@ -9,9 +9,8 @@ use crate::{ use super::{ contract_call_exec::decode_result, Code, ConsNoRet, ConsRet, DeployCall, FromSource, - OriginalResultMarker, RHList, RHListItem, Tx, TxCodeValue, TxDataFunctionCall, - TxEmptyResultHandler, TxEnv, TxFromSourceValue, TxGas, TxPayment, TxPaymentEgldOnly, - TxResultHandler, TxScEnv, TxToSpecified, + OriginalResultMarker, RHList, RHListItem, Tx, TxCodeValue, TxEmptyResultHandler, TxEnv, + TxFromSourceValue, TxGas, TxPaymentEgldOnly, TxResultHandler, TxScEnv, }; pub trait RHListItemDeploy: RHListItem diff --git a/framework/base/src/types/interaction/tx_call_sync.rs b/framework/base/src/types/interaction/tx_call_sync.rs index 8e039b99d0..0213a1df75 100644 --- a/framework/base/src/types/interaction/tx_call_sync.rs +++ b/framework/base/src/types/interaction/tx_call_sync.rs @@ -9,8 +9,8 @@ use crate::{ use super::{ contract_call_exec::decode_result, BackTransfers, ConsNoRet, ConsRet, OriginalResultMarker, - RHList, RHListItem, Tx, TxDataFunctionCall, TxEnv, TxGas, TxPayment, TxPaymentNormalize, - TxScEnv, TxToSpecified, + RHList, RHListItem, Tx, TxDataFunctionCall, TxEnv, TxGas, TxPaymentNormalize, TxScEnv, + TxToSpecified, }; pub trait RHListItemSync: RHListItem diff --git a/framework/base/src/types/interaction/tx_code_source.rs b/framework/base/src/types/interaction/tx_code_source.rs index b8c48e718e..d7013a9cde 100644 --- a/framework/base/src/types/interaction/tx_code_source.rs +++ b/framework/base/src/types/interaction/tx_code_source.rs @@ -1,7 +1,4 @@ -use crate::{ - api::ManagedTypeApi, - types::{ManagedAddress, ManagedBuffer}, -}; +use crate::types::{ManagedAddress, ManagedBuffer}; use super::{AnnotatedValue, TxEnv}; diff --git a/framework/base/src/types/interaction/tx_data.rs b/framework/base/src/types/interaction/tx_data.rs index eb1e56fd7d..7b347d2f3c 100644 --- a/framework/base/src/types/interaction/tx_data.rs +++ b/framework/base/src/types/interaction/tx_data.rs @@ -1,11 +1,9 @@ use crate::{ - api::ManagedTypeApi, - contract_base::SendRawWrapper, formatter::SCLowerHex, - types::{CodeMetadata, ManagedAddress, ManagedBuffer, ManagedBufferCachedBuilder, ManagedVec}, + types::{ManagedBuffer, ManagedBufferCachedBuilder}, }; -use super::{FunctionCall, ManagedArgBuffer, Tx, TxEnv, TxFrom, TxGas, TxPayment, TxTo}; +use super::{FunctionCall, TxEnv}; pub trait TxData where diff --git a/framework/base/src/types/interaction/tx_env.rs b/framework/base/src/types/interaction/tx_env.rs index 9a8bfd04ab..54fbf77b90 100644 --- a/framework/base/src/types/interaction/tx_env.rs +++ b/framework/base/src/types/interaction/tx_env.rs @@ -1,9 +1,4 @@ -use crate::{ - api::CallTypeApi, - types::{ManagedAddress, ManagedBuffer}, -}; - -use super::AnnotatedValue; +use crate::{api::CallTypeApi, types::ManagedAddress}; pub trait TxEnv: Sized { type Api: CallTypeApi; diff --git a/framework/base/src/types/interaction/tx_env_sc.rs b/framework/base/src/types/interaction/tx_env_sc.rs index cddc6c052b..ce2c287d30 100644 --- a/framework/base/src/types/interaction/tx_env_sc.rs +++ b/framework/base/src/types/interaction/tx_env_sc.rs @@ -6,9 +6,7 @@ use crate::{ types::ManagedAddress, }; -use super::{ - contract_call_exec::TRANSFER_EXECUTE_DEFAULT_LEFTOVER, AnnotatedValue, Tx, TxBaseWithEnv, TxEnv, -}; +use super::{contract_call_exec::TRANSFER_EXECUTE_DEFAULT_LEFTOVER, Tx, TxBaseWithEnv, TxEnv}; pub struct TxScEnv where diff --git a/framework/base/src/types/interaction/tx_gas.rs b/framework/base/src/types/interaction/tx_gas.rs index 0b867b19a2..eec1c19e4b 100644 --- a/framework/base/src/types/interaction/tx_gas.rs +++ b/framework/base/src/types/interaction/tx_gas.rs @@ -18,7 +18,7 @@ where env.default_gas() } - fn explicit_or_gas_left(&self, env: &Env) -> u64 { + fn explicit_or_gas_left(&self, _env: &Env) -> u64 { Env::Api::blockchain_api_impl().get_gas_left() } } diff --git a/framework/base/src/types/interaction/tx_payment.rs b/framework/base/src/types/interaction/tx_payment.rs index c3cc29fa9d..41d7b7f537 100644 --- a/framework/base/src/types/interaction/tx_payment.rs +++ b/framework/base/src/types/interaction/tx_payment.rs @@ -1,15 +1,14 @@ use crate::{ api::ManagedTypeApi, contract_base::SendRawWrapper, - formatter::FormatBuffer, - imports::{BigUint, ManagedBuffer, ManagedBufferCachedBuilder, ManagedVec}, + imports::{BigUint, ManagedBuffer}, types::{ EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EsdtTokenPayment, ManagedAddress, MultiEsdtPayment, }, }; -use super::{Egld, FunctionCall, TxEnv, TxFrom, TxToSpecified}; +use super::{Egld, FunctionCall, TxEnv}; #[derive(Clone)] pub struct AnnotatedEgldPayment @@ -110,7 +109,7 @@ where MultiEsdtPayment::from_single_item(self).perform_transfer_execute(env, to, gas_limit, fc); } - fn into_full_payment_data(self, env: &Env) -> FullPaymentData { + fn into_full_payment_data(self, _env: &Env) -> FullPaymentData { FullPaymentData { egld: None, multi_esdt: MultiEsdtPayment::from_single_item(self), @@ -142,7 +141,7 @@ where ); } - fn into_full_payment_data(self, env: &Env) -> FullPaymentData { + fn into_full_payment_data(self, _env: &Env) -> FullPaymentData { FullPaymentData { egld: None, multi_esdt: self.clone(), @@ -168,7 +167,7 @@ where (&self).perform_transfer_execute(env, to, gas_limit, fc); } - fn into_full_payment_data(self, env: &Env) -> FullPaymentData { + fn into_full_payment_data(self, _env: &Env) -> FullPaymentData { FullPaymentData { egld: None, multi_esdt: self, diff --git a/framework/base/src/types/interaction/tx_payment_egld.rs b/framework/base/src/types/interaction/tx_payment_egld.rs index 29a3d0781b..fca770068c 100644 --- a/framework/base/src/types/interaction/tx_payment_egld.rs +++ b/framework/base/src/types/interaction/tx_payment_egld.rs @@ -1,22 +1,11 @@ use crate::{ - api::{self, CallTypeApi, ManagedTypeApi}, - contract_base::{BlockchainWrapper, SendRawWrapper}, - types::{ - BigUint, CodeMetadata, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EsdtTokenPayment, - ManagedAddress, ManagedBuffer, ManagedOption, ManagedVec, MultiEsdtPayment, - }, + contract_base::SendRawWrapper, + types::{BigUint, ManagedAddress, ManagedVec}, }; -use alloc::boxed::Box; -use multiversx_sc_codec::TopEncodeMulti; use super::{ - contract_call_exec::UNSPECIFIED_GAS_LIMIT, contract_call_trait::ContractCallBase, - AnnotatedEgldPayment, AnnotatedValue, AsyncCall, Code, ContractCallNoPayment, - ContractCallWithEgld, ContractDeploy, DeployCall, ExplicitGas, FromSource, FullPaymentData, - FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, RHListAppendNoRet, - RHListAppendRet, RHListItem, TxCodeSource, TxCodeValue, TxData, TxDataFunctionCall, - TxEgldValue, TxEnv, TxFrom, TxFromSourceValue, TxFromSpecified, TxGas, TxPayment, TxProxyTrait, - TxResultHandler, TxScEnv, TxTo, TxToSpecified, + AnnotatedEgldPayment, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, + TxPayment, }; /// Indicates the EGLD payment in a transaction. diff --git a/framework/base/src/types/interaction/tx_payment_egld_value.rs b/framework/base/src/types/interaction/tx_payment_egld_value.rs index af5da4cbd3..94f424f2bc 100644 --- a/framework/base/src/types/interaction/tx_payment_egld_value.rs +++ b/framework/base/src/types/interaction/tx_payment_egld_value.rs @@ -1,23 +1,6 @@ -use crate::{ - api::{self, CallTypeApi, ManagedTypeApi}, - contract_base::{BlockchainWrapper, SendRawWrapper}, - types::{ - BigUint, CodeMetadata, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EsdtTokenPayment, - ManagedAddress, ManagedBuffer, ManagedOption, ManagedVec, MultiEsdtPayment, - }, -}; -use alloc::boxed::Box; -use multiversx_sc_codec::TopEncodeMulti; +use crate::types::BigUint; -use super::{ - contract_call_exec::UNSPECIFIED_GAS_LIMIT, contract_call_trait::ContractCallBase, - AnnotatedEgldPayment, AnnotatedValue, AsyncCall, Code, ContractCallNoPayment, - ContractCallWithEgld, ContractDeploy, DeployCall, ExplicitGas, FromSource, FullPaymentData, - FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, RHListAppendNoRet, - RHListAppendRet, RHListItem, TxCodeSource, TxCodeValue, TxData, TxDataFunctionCall, TxEnv, - TxFrom, TxFromSourceValue, TxFromSpecified, TxGas, TxPayment, TxProxyTrait, TxResultHandler, - TxScEnv, TxTo, TxToSpecified, -}; +use super::{AnnotatedValue, TxEnv}; pub trait TxEgldValue: AnnotatedValue> where diff --git a/framework/base/src/types/interaction/tx_payment_normalize.rs b/framework/base/src/types/interaction/tx_payment_normalize.rs index 015df89087..9d64cbb4df 100644 --- a/framework/base/src/types/interaction/tx_payment_normalize.rs +++ b/framework/base/src/types/interaction/tx_payment_normalize.rs @@ -1,22 +1,10 @@ -use crate::{ - api::{self, CallTypeApi, ManagedTypeApi}, - contract_base::{BlockchainWrapper, SendRawWrapper}, - types::{ - BigUint, CodeMetadata, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EsdtTokenPayment, - ManagedAddress, ManagedBuffer, ManagedOption, ManagedVec, MultiEsdtPayment, - }, +use crate::types::{ + BigUint, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EsdtTokenPayment, ManagedAddress, + MultiEsdtPayment, }; -use alloc::boxed::Box; -use multiversx_sc_codec::TopEncodeMulti; use super::{ - contract_call_exec::UNSPECIFIED_GAS_LIMIT, contract_call_trait::ContractCallBase, - AnnotatedValue, AsyncCall, Code, ContractCallNoPayment, ContractCallWithEgld, ContractDeploy, - DeployCall, Egld, ExplicitGas, FromSource, FunctionCall, ManagedArgBuffer, - OriginalResultMarker, RHList, RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, - TxCodeValue, TxData, TxDataFunctionCall, TxEgldValue, TxEnv, TxFrom, TxFromSourceValue, - TxFromSpecified, TxGas, TxPayment, TxPaymentEgldOnly, TxProxyTrait, TxResultHandler, TxScEnv, - TxTo, TxToSpecified, + Egld, FunctionCall, TxEgldValue, TxEnv, TxFrom, TxPayment, TxToSpecified, }; /// Defines how a payment transforms a transaction, @@ -48,7 +36,7 @@ where fn with_normalized( self, env: &Env, - from: &From, + _from: &From, to: To, fc: FunctionCall, f: F, @@ -70,7 +58,7 @@ where fn with_normalized( self, env: &Env, - from: &From, + _from: &From, to: To, fc: FunctionCall, f: F, diff --git a/framework/base/src/types/interaction/tx_rh_list/returns_new_address.rs b/framework/base/src/types/interaction/tx_rh_list/returns_new_address.rs index fee76c5e1f..c9c271e2dd 100644 --- a/framework/base/src/types/interaction/tx_rh_list/returns_new_address.rs +++ b/framework/base/src/types/interaction/tx_rh_list/returns_new_address.rs @@ -1,9 +1,5 @@ -use crate::{ - contract_base::BlockchainWrapper, - types::{ - interaction::tx_call_deploy::RHListItemDeploy, BackTransfers, ManagedAddress, - ManagedBuffer, ManagedVec, RHListItemSync, TxEnv, - }, +use crate::types::{ + interaction::tx_call_deploy::RHListItemDeploy, ManagedAddress, ManagedBuffer, ManagedVec, TxEnv, }; use super::RHListItem; diff --git a/framework/base/src/types/interaction/tx_rh_list/with_result_new_address.rs b/framework/base/src/types/interaction/tx_rh_list/with_result_new_address.rs index c58383a86e..64b2894f1f 100644 --- a/framework/base/src/types/interaction/tx_rh_list/with_result_new_address.rs +++ b/framework/base/src/types/interaction/tx_rh_list/with_result_new_address.rs @@ -1,8 +1,7 @@ use core::marker::PhantomData; use crate::types::{ - interaction::tx_call_deploy::RHListItemDeploy, ManagedAddress, ManagedBuffer, ManagedVec, - RHListItemSync, TxEnv, + interaction::tx_call_deploy::RHListItemDeploy, ManagedAddress, ManagedBuffer, ManagedVec, TxEnv, }; use super::RHListItem; diff --git a/framework/base/src/types/interaction/tx_rh_list/with_result_similar.rs b/framework/base/src/types/interaction/tx_rh_list/with_result_similar.rs index ff0e5b1b5f..c9fd9173b2 100644 --- a/framework/base/src/types/interaction/tx_rh_list/with_result_similar.rs +++ b/framework/base/src/types/interaction/tx_rh_list/with_result_similar.rs @@ -1,6 +1,6 @@ use core::marker::PhantomData; -use multiversx_sc_codec::{CodecFrom, TopDecodeMulti, TopEncodeMulti}; +use multiversx_sc_codec::{CodecFrom, TopEncodeMulti}; use crate::types::{ interaction::contract_call_exec::decode_result, ManagedBuffer, ManagedVec, RHListItemSync, diff --git a/framework/base/src/types/interaction/tx_to.rs b/framework/base/src/types/interaction/tx_to.rs index c09b25d4f3..4116cbc9f9 100644 --- a/framework/base/src/types/interaction/tx_to.rs +++ b/framework/base/src/types/interaction/tx_to.rs @@ -27,7 +27,7 @@ impl TxToSpecified for ManagedAddress where Env: TxEnv, { - fn with_address_ref(&self, env: &Env, f: F) -> R + fn with_address_ref(&self, _env: &Env, f: F) -> R where F: FnOnce(&ManagedAddress) -> R, { @@ -40,7 +40,7 @@ impl TxToSpecified for &ManagedAddress where Env: TxEnv, { - fn with_address_ref(&self, env: &Env, f: F) -> R + fn with_address_ref(&self, _env: &Env, f: F) -> R where F: FnOnce(&ManagedAddress) -> R, { @@ -53,7 +53,7 @@ impl TxToSpecified for Address where Env: TxEnv, { - fn with_address_ref(&self, env: &Env, f: F) -> R + fn with_address_ref(&self, _env: &Env, f: F) -> R where F: FnOnce(&ManagedAddress) -> R, { @@ -67,7 +67,7 @@ impl TxToSpecified for &Address where Env: TxEnv, { - fn with_address_ref(&self, env: &Env, f: F) -> R + fn with_address_ref(&self, _env: &Env, f: F) -> R where F: FnOnce(&ManagedAddress) -> R, { From 67d22a659a582dea2a76ebbf84989246dbd498f7 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Fri, 22 Mar 2024 19:59:18 +0100 Subject: [PATCH 157/461] further impl unified syntax in multisig interact --- .../interact/src/multisig_interact.rs | 43 +++++++---- .../interact/src/multisig_interact_nfts.rs | 76 +++++++++++-------- .../interact/src/multisig_interact_wegld.rs | 50 ++++++------ 3 files changed, 97 insertions(+), 72 deletions(-) diff --git a/contracts/examples/multisig/interact/src/multisig_interact.rs b/contracts/examples/multisig/interact/src/multisig_interact.rs index 1de0b6f261..c068f09a0e 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact.rs @@ -13,7 +13,7 @@ use multisig_interact_config::Config; use multisig_interact_state::State; use multiversx_sc_scenario::{ mandos_system::ScenarioRunner, - multiversx_sc::types::{BigUint, ReturnsNewAddress, ReturnsSimilar}, + multiversx_sc::types::{BigUint, ReturnsSimilar}, scenario_format::interpret_trait::InterpretableFrom, standalone::retrieve_account_as_scenario_set_state, test_wallets, @@ -158,18 +158,19 @@ impl MultisigInteract { async fn deploy(&mut self) { self.set_state().await; - let board = self.board(); + let _board = self.board(); - let new_address = self - .interactor - .tx() - .from(&self.wallet_address) - .typed(multisig_proxy::MultisigProxy) - .init(&Config::load_config().quorum(), board) - .code(&self.multisig_code) - .with_gas_limit(100_000_000u64) - .returns(ReturnsNewAddress) - .sync_call(); + let new_address = Address::zero(); + // let new_address = self + // .interactor + // .tx() + // .from(&self.wallet_address) + // .typed(multisig_proxy::MultisigProxy) + // .init(&Config::load_config().quorum(), board) + // .code(&self.multisig_code) + // .with_gas_limit(100_000_000u64) + // .returns(ReturnsNewAddress) + // .sync_call(); let new_address_bech32 = bech32::encode(&new_address); println!("new address: {new_address_bech32}"); @@ -242,7 +243,7 @@ impl MultisigInteract { .tx() .from(&self.wallet_address) .to(self.state.multisig().to_address()) - .egld(BigUint::from(5_000_000_000_000_000_0u64)) // 0,05 or 5 * 10^16 + .egld(BigUint::from(50_000_000_000_000_000u64)) // 0,05 or 5 * 10^16 .prepare_async() .run() .await; @@ -303,13 +304,25 @@ impl MultisigInteract { async fn quorum_reached(&mut self, action_id: usize) -> bool { self.interactor - .quick_query(self.state.multisig().quorum_reached(action_id)) + .query() + .to(self.state.multisig().to_address()) + .typed(multisig_proxy::MultisigProxy) + .quorum_reached(action_id) + .returns(ReturnsSimilar::::new()) + .prepare_async() + .run() .await } async fn signed(&mut self, signer: &Address, action_id: usize) -> bool { self.interactor - .quick_query(self.state.multisig().signed(signer, action_id)) + .query() + .to(self.state.multisig().to_address()) + .typed(multisig_proxy::MultisigProxy) + .signed(signer, action_id) + .returns(ReturnsSimilar::::new()) + .prepare_async() + .run() .await } diff --git a/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs b/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs index d607b7816a..bcf73645ad 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs @@ -73,6 +73,18 @@ impl MultisigInteract { } println!("quorum reached for action `{action_id}`"); + // let _ = self + // .interactor + // .tx() + // .from(&self.wallet_address) + // .to(&self.state.multisig().to_address()) + // .with_gas_limit(80_000_000u64) + // .typed(multisig_proxy::MultisigProxy) + // .perform_action_endpoint(action_id) + // .with_result(WithResultTokenIdentifier::new(|token_id| { + // self.collection_token_identifier = token_id.to_string() + // })); + let response: TypedResponse = self .interactor .sc_call_get_result( @@ -98,23 +110,22 @@ impl MultisigInteract { let system_sc_address = bech32::decode(SYSTEM_SC_BECH32); let action_id = self .interactor - .sc_call_get_result( - ScCallStep::new() - .call( - self.state.multisig().propose_async_call( - system_sc_address, - ISSUE_COST, - FunctionCall::new("issueNonFungible") - .argument(&COLLECTION_NAME) - .argument(&COLLECTION_TICKER), - ), - ) - .from(&self.wallet_address) - .gas_limit("10,000,000"), + .tx() + .from(&self.wallet_address) + .to(&self.state.multisig().to_address()) + .with_gas_limit(10_000_000u64) + .typed(multisig_proxy::MultisigProxy) + .propose_async_call( + system_sc_address, + ISSUE_COST, + FunctionCall::new("issueNonFungible") + .argument(&COLLECTION_NAME) + .argument(&COLLECTION_TICKER), ) - .await - .result - .unwrap(); + .returns(ReturnsSimilar::::new()) + .prepare_async() + .run() + .await; println!("successfully proposed issue colllection action `{action_id}`"); action_id @@ -156,24 +167,23 @@ impl MultisigInteract { let multisig_address = self.state.multisig().to_address(); let action_id = self .interactor - .sc_call_get_result( - ScCallStep::new() - .call( - self.state.multisig().propose_async_call( - &self.system_sc_address, - 0u64, - FunctionCall::new("setSpecialRole") - .argument(&self.collection_token_identifier) - .argument(&multisig_address) - .argument(&"ESDTRoleNFTCreate"), - ), - ) - .from(&self.wallet_address) - .gas_limit("10,000,000"), + .tx() + .from(&self.wallet_address) + .to(&self.state.multisig().to_address()) + .with_gas_limit(10_000_000u64) + .typed(multisig_proxy::MultisigProxy) + .propose_async_call( + &self.system_sc_address, + 0u64, + FunctionCall::new("setSpecialRole") + .argument(&self.collection_token_identifier) + .argument(&multisig_address) + .argument(&"ESDTRoleNFTCreate"), ) - .await - .result - .unwrap(); + .returns(ReturnsSimilar::::new()) + .prepare_async() + .run() + .await; println!("successfully proposed set special role with action `{action_id}`"); action_id diff --git a/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs b/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs index bcfa959805..ebd75faada 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs @@ -62,19 +62,20 @@ impl MultisigInteract { async fn propose_wrap_egld(&mut self) -> usize { let action_id = self .interactor - .sc_call_get_result( - ScCallStep::new() - .call(self.state.multisig().propose_async_call( - bech32::decode(WEGLD_SWAP_SC_BECH32), - WRAP_AMOUNT, - FunctionCall::new("wrapEgld"), - )) - .from(&self.wallet_address) - .gas_limit("10,000,000"), + .tx() + .from(&self.wallet_address) + .to(&self.state.multisig().to_address()) + .with_gas_limit(10_000_000u64) + .typed(multisig_proxy::MultisigProxy) + .propose_async_call( + bech32::decode(WEGLD_SWAP_SC_BECH32), + WRAP_AMOUNT, + FunctionCall::new("wrapEgld"), ) - .await - .result - .unwrap(); + .returns(ReturnsSimilar::::new()) + .prepare_async() + .run() + .await; println!("successfully proposed wrap egld action `{action_id}`"); action_id @@ -94,19 +95,20 @@ impl MultisigInteract { let action_id = self .interactor - .sc_call_get_result( - ScCallStep::new() - .call(self.state.multisig().propose_async_call( - contract_call.basic.to, - 0u64, - contract_call.basic.function_call, - )) - .from(&self.wallet_address) - .gas_limit("10,000,000"), + .tx() + .from(&self.wallet_address) + .to(&self.state.multisig().to_address()) + .with_gas_limit(10_000_000u64) + .typed(multisig_proxy::MultisigProxy) + .propose_async_call( + contract_call.basic.to, + 0u64, + contract_call.basic.function_call, ) - .await - .result - .unwrap(); + .returns(ReturnsSimilar::::new()) + .prepare_async() + .run() + .await; println!("successfully proposed unwrap egld action `{action_id}`"); action_id From 647a1a1c3ff375b5765e40b1c784c4edb7eda34a Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 22 Mar 2024 21:15:35 +0200 Subject: [PATCH 158/461] tx payment - file reorg --- framework/base/src/types/interaction/mod.rs | 6 - .../base/src/types/interaction/tx_payment.rs | 236 ++++-------------- .../{ => tx_payment}/tx_payment_egld.rs | 32 +-- .../{ => tx_payment}/tx_payment_egld_value.rs | 4 +- .../tx_payment/tx_payment_multi_esdt.rs | 64 +++++ .../interaction/tx_payment/tx_payment_none.rs | 48 ++++ .../{ => tx_payment}/tx_payment_normalize.rs | 6 +- .../tx_payment/tx_payment_other.rs | 76 ++++++ .../tx_payment/tx_payment_single_esdt.rs | 32 +++ 9 files changed, 268 insertions(+), 236 deletions(-) rename framework/base/src/types/interaction/{ => tx_payment}/tx_payment_egld.rs (71%) rename framework/base/src/types/interaction/{ => tx_payment}/tx_payment_egld_value.rs (92%) create mode 100644 framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs create mode 100644 framework/base/src/types/interaction/tx_payment/tx_payment_none.rs rename framework/base/src/types/interaction/{ => tx_payment}/tx_payment_normalize.rs (97%) create mode 100644 framework/base/src/types/interaction/tx_payment/tx_payment_other.rs create mode 100644 framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt.rs diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index 44697cddb8..7b751e162b 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -32,9 +32,6 @@ mod tx_env_sc; mod tx_from; mod tx_gas; mod tx_payment; -mod tx_payment_egld; -mod tx_payment_egld_value; -mod tx_payment_normalize; mod tx_proxy; mod tx_result_handler; mod tx_rh_list; @@ -73,9 +70,6 @@ pub use tx_env_sc::*; pub use tx_from::*; pub use tx_gas::*; pub use tx_payment::*; -pub use tx_payment_egld::*; -pub use tx_payment_egld_value::TxEgldValue; -pub use tx_payment_normalize::TxPaymentNormalize; pub use tx_proxy::*; pub use tx_result_handler::*; pub use tx_rh_list::*; diff --git a/framework/base/src/types/interaction/tx_payment.rs b/framework/base/src/types/interaction/tx_payment.rs index 41d7b7f537..af40f79f56 100644 --- a/framework/base/src/types/interaction/tx_payment.rs +++ b/framework/base/src/types/interaction/tx_payment.rs @@ -1,54 +1,25 @@ +mod tx_payment_egld; +mod tx_payment_egld_value; +mod tx_payment_multi_esdt; +mod tx_payment_none; +mod tx_payment_normalize; +mod tx_payment_other; +mod tx_payment_single_esdt; + +pub use tx_payment_egld::{Egld, EgldPayment}; +pub use tx_payment_egld_value::TxEgldValue; +pub use tx_payment_normalize::TxPaymentNormalize; + use crate::{ api::ManagedTypeApi, contract_base::SendRawWrapper, - imports::{BigUint, ManagedBuffer}, types::{ - EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EsdtTokenPayment, ManagedAddress, - MultiEsdtPayment, + BigUint, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EsdtTokenPayment, ManagedAddress, + ManagedBuffer, MultiEsdtPayment, }, }; -use super::{Egld, FunctionCall, TxEnv}; - -#[derive(Clone)] -pub struct AnnotatedEgldPayment -where - Api: ManagedTypeApi, -{ - pub value: BigUint, - pub annotation: ManagedBuffer, -} - -impl AnnotatedEgldPayment -where - Api: ManagedTypeApi, -{ - pub fn new_egld(value: BigUint) -> Self { - let annotation = value.to_display(); - AnnotatedEgldPayment { value, annotation } - } -} - -#[derive(Clone)] -pub struct FullPaymentData -where - Api: ManagedTypeApi, -{ - pub egld: Option>, - pub multi_esdt: MultiEsdtPayment, -} - -impl Default for FullPaymentData -where - Api: ManagedTypeApi, -{ - fn default() -> Self { - Self { - egld: None, - multi_esdt: Default::default(), - } - } -} +use super::{FunctionCall, TxEnv}; /// Describes a payment that is part of a transaction. pub trait TxPayment @@ -68,177 +39,54 @@ where fn into_full_payment_data(self, env: &Env) -> FullPaymentData; } -impl TxPayment for () +/// Marks a payment object that only contains EGLD or nothing at all. +pub trait TxPaymentEgldOnly: TxPayment where Env: TxEnv, { - fn is_no_payment(&self) -> bool { - true - } - - fn perform_transfer_execute( - self, - env: &Env, - to: &ManagedAddress, - gas_limit: u64, - fc: FunctionCall, - ) { - Egld(BigUint::zero()).perform_transfer_execute(env, to, gas_limit, fc); - } + fn with_egld_value(&self, f: F) -> R + where + F: FnOnce(&BigUint) -> R; - fn into_full_payment_data(self, _env: &Env) -> FullPaymentData { - FullPaymentData::default() - } + fn into_egld_payment(self, env: &Env) -> BigUint; } -impl TxPayment for EsdtTokenPayment -where - Env: TxEnv, -{ - fn is_no_payment(&self) -> bool { - self.amount == 0u32 - } - - fn perform_transfer_execute( - self, - env: &Env, - to: &ManagedAddress, - gas_limit: u64, - fc: FunctionCall, - ) { - MultiEsdtPayment::from_single_item(self).perform_transfer_execute(env, to, gas_limit, fc); - } - - fn into_full_payment_data(self, _env: &Env) -> FullPaymentData { - FullPaymentData { - egld: None, - multi_esdt: MultiEsdtPayment::from_single_item(self), - } - } -} - -impl TxPayment for &MultiEsdtPayment +#[derive(Clone)] +pub struct AnnotatedEgldPayment where - Env: TxEnv, + Api: ManagedTypeApi, { - fn is_no_payment(&self) -> bool { - self.is_empty() - } - - fn perform_transfer_execute( - self, - _env: &Env, - to: &ManagedAddress, - gas_limit: u64, - fc: FunctionCall, - ) { - let _ = SendRawWrapper::::new().multi_esdt_transfer_execute( - to, - self, - gas_limit, - &fc.function_name, - &fc.arg_buffer, - ); - } - - fn into_full_payment_data(self, _env: &Env) -> FullPaymentData { - FullPaymentData { - egld: None, - multi_esdt: self.clone(), - } - } + pub value: BigUint, + pub annotation: ManagedBuffer, } -impl TxPayment for MultiEsdtPayment +impl AnnotatedEgldPayment where - Env: TxEnv, + Api: ManagedTypeApi, { - fn is_no_payment(&self) -> bool { - self.is_empty() - } - - fn perform_transfer_execute( - self, - env: &Env, - to: &ManagedAddress, - gas_limit: u64, - fc: FunctionCall, - ) { - (&self).perform_transfer_execute(env, to, gas_limit, fc); - } - - fn into_full_payment_data(self, _env: &Env) -> FullPaymentData { - FullPaymentData { - egld: None, - multi_esdt: self, - } + pub fn new_egld(value: BigUint) -> Self { + let annotation = value.to_display(); + AnnotatedEgldPayment { value, annotation } } } -impl TxPayment for EgldOrEsdtTokenPayment +#[derive(Clone)] +pub struct FullPaymentData where - Env: TxEnv, + Api: ManagedTypeApi, { - fn is_no_payment(&self) -> bool { - self.amount == 0u32 - } - - fn perform_transfer_execute( - self, - env: &Env, - to: &ManagedAddress, - gas_limit: u64, - fc: FunctionCall, - ) { - self.map_egld_or_esdt( - (to, fc), - |(to, fc), amount| Egld(amount).perform_transfer_execute(env, to, gas_limit, fc), - |(to, fc), esdt_payment| esdt_payment.perform_transfer_execute(env, to, gas_limit, fc), - ) - } - - fn into_full_payment_data(self, env: &Env) -> FullPaymentData { - self.map_egld_or_esdt( - (), - |(), amount| TxPayment::::into_full_payment_data(Egld(amount), env), - |(), esdt_payment| TxPayment::::into_full_payment_data(esdt_payment, env), - ) - } + pub egld: Option>, + pub multi_esdt: MultiEsdtPayment, } -impl TxPayment for EgldOrMultiEsdtPayment +impl Default for FullPaymentData where - Env: TxEnv, + Api: ManagedTypeApi, { - fn is_no_payment(&self) -> bool { - self.is_empty() - } - - fn perform_transfer_execute( - self, - env: &Env, - to: &ManagedAddress, - gas_limit: u64, - fc: FunctionCall, - ) { - match self { - EgldOrMultiEsdtPayment::Egld(egld_amount) => { - Egld(egld_amount).perform_transfer_execute(env, to, gas_limit, fc) - }, - EgldOrMultiEsdtPayment::MultiEsdt(multi_esdt_payment) => { - multi_esdt_payment.perform_transfer_execute(env, to, gas_limit, fc) - }, - } - } - - fn into_full_payment_data(self, env: &Env) -> FullPaymentData { - match self { - EgldOrMultiEsdtPayment::Egld(egld_amount) => { - TxPayment::::into_full_payment_data(Egld(egld_amount), env) - }, - EgldOrMultiEsdtPayment::MultiEsdt(multi_esdt_payment) => { - TxPayment::::into_full_payment_data(multi_esdt_payment, env) - }, + fn default() -> Self { + Self { + egld: None, + multi_esdt: Default::default(), } } } diff --git a/framework/base/src/types/interaction/tx_payment_egld.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_egld.rs similarity index 71% rename from framework/base/src/types/interaction/tx_payment_egld.rs rename to framework/base/src/types/interaction/tx_payment/tx_payment_egld.rs index fca770068c..f84d6afacb 100644 --- a/framework/base/src/types/interaction/tx_payment_egld.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_egld.rs @@ -4,8 +4,8 @@ use crate::{ }; use super::{ - AnnotatedEgldPayment, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, - TxPayment, + AnnotatedEgldPayment, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment, + TxPaymentEgldOnly, }; /// Indicates the EGLD payment in a transaction. @@ -48,34 +48,6 @@ where } } -/// Marks a payment object that only contains EGLD or nothing at all. -pub trait TxPaymentEgldOnly: TxPayment -where - Env: TxEnv, -{ - fn with_egld_value(&self, f: F) -> R - where - F: FnOnce(&BigUint) -> R; - - fn into_egld_payment(self, env: &Env) -> BigUint; -} - -impl TxPaymentEgldOnly for () -where - Env: TxEnv, -{ - fn with_egld_value(&self, f: F) -> R - where - F: FnOnce(&BigUint) -> R, - { - f(&BigUint::zero()) - } - - fn into_egld_payment(self, _env: &Env) -> BigUint { - BigUint::zero() - } -} - impl TxPaymentEgldOnly for Egld where Env: TxEnv, diff --git a/framework/base/src/types/interaction/tx_payment_egld_value.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_value.rs similarity index 92% rename from framework/base/src/types/interaction/tx_payment_egld_value.rs rename to framework/base/src/types/interaction/tx_payment/tx_payment_egld_value.rs index 94f424f2bc..561235eef2 100644 --- a/framework/base/src/types/interaction/tx_payment_egld_value.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_value.rs @@ -1,6 +1,6 @@ -use crate::types::BigUint; +use crate::types::{AnnotatedValue, BigUint}; -use super::{AnnotatedValue, TxEnv}; +use super::TxEnv; pub trait TxEgldValue: AnnotatedValue> where diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs new file mode 100644 index 0000000000..84a8de5e5b --- /dev/null +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs @@ -0,0 +1,64 @@ +use crate::{ + contract_base::SendRawWrapper, + types::{BigUint, ManagedAddress, ManagedVec, MultiEsdtPayment}, +}; + +use super::{AnnotatedEgldPayment, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment}; + +impl TxPayment for &MultiEsdtPayment +where + Env: TxEnv, +{ + fn is_no_payment(&self) -> bool { + self.is_empty() + } + + fn perform_transfer_execute( + self, + _env: &Env, + to: &ManagedAddress, + gas_limit: u64, + fc: FunctionCall, + ) { + let _ = SendRawWrapper::::new().multi_esdt_transfer_execute( + to, + self, + gas_limit, + &fc.function_name, + &fc.arg_buffer, + ); + } + + fn into_full_payment_data(self, _env: &Env) -> FullPaymentData { + FullPaymentData { + egld: None, + multi_esdt: self.clone(), + } + } +} + +impl TxPayment for MultiEsdtPayment +where + Env: TxEnv, +{ + fn is_no_payment(&self) -> bool { + self.is_empty() + } + + fn perform_transfer_execute( + self, + env: &Env, + to: &ManagedAddress, + gas_limit: u64, + fc: FunctionCall, + ) { + (&self).perform_transfer_execute(env, to, gas_limit, fc); + } + + fn into_full_payment_data(self, _env: &Env) -> FullPaymentData { + FullPaymentData { + egld: None, + multi_esdt: self, + } + } +} diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_none.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_none.rs new file mode 100644 index 0000000000..7b34ccfe9b --- /dev/null +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_none.rs @@ -0,0 +1,48 @@ +use crate::{ + contract_base::SendRawWrapper, + types::{BigUint, ManagedAddress, ManagedVec}, +}; + +use super::{ + AnnotatedEgldPayment, Egld, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment, + TxPaymentEgldOnly, +}; + +impl TxPayment for () +where + Env: TxEnv, +{ + fn is_no_payment(&self) -> bool { + true + } + + fn perform_transfer_execute( + self, + env: &Env, + to: &ManagedAddress, + gas_limit: u64, + fc: FunctionCall, + ) { + Egld(BigUint::zero()).perform_transfer_execute(env, to, gas_limit, fc); + } + + fn into_full_payment_data(self, _env: &Env) -> FullPaymentData { + FullPaymentData::default() + } +} + +impl TxPaymentEgldOnly for () +where + Env: TxEnv, +{ + fn with_egld_value(&self, f: F) -> R + where + F: FnOnce(&BigUint) -> R, + { + f(&BigUint::zero()) + } + + fn into_egld_payment(self, _env: &Env) -> BigUint { + BigUint::zero() + } +} diff --git a/framework/base/src/types/interaction/tx_payment_normalize.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_normalize.rs similarity index 97% rename from framework/base/src/types/interaction/tx_payment_normalize.rs rename to framework/base/src/types/interaction/tx_payment/tx_payment_normalize.rs index 9d64cbb4df..db263fa83f 100644 --- a/framework/base/src/types/interaction/tx_payment_normalize.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_normalize.rs @@ -1,11 +1,9 @@ use crate::types::{ BigUint, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EsdtTokenPayment, ManagedAddress, - MultiEsdtPayment, + MultiEsdtPayment, TxFrom, TxToSpecified, }; -use super::{ - Egld, FunctionCall, TxEgldValue, TxEnv, TxFrom, TxPayment, TxToSpecified, -}; +use super::{Egld, FunctionCall, TxEgldValue, TxEnv, TxPayment}; /// Defines how a payment transforms a transaction, /// e.g. from ESDT transfer to ESDTTransfer builtin function. diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_other.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_other.rs new file mode 100644 index 0000000000..0c8bf7772b --- /dev/null +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_other.rs @@ -0,0 +1,76 @@ +use crate::{ + contract_base::SendRawWrapper, + types::{ + BigUint, Egld, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, ManagedAddress, ManagedVec, + }, +}; + +use super::{AnnotatedEgldPayment, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment}; + +impl TxPayment for EgldOrEsdtTokenPayment +where + Env: TxEnv, +{ + fn is_no_payment(&self) -> bool { + self.amount == 0u32 + } + + fn perform_transfer_execute( + self, + env: &Env, + to: &ManagedAddress, + gas_limit: u64, + fc: FunctionCall, + ) { + self.map_egld_or_esdt( + (to, fc), + |(to, fc), amount| Egld(amount).perform_transfer_execute(env, to, gas_limit, fc), + |(to, fc), esdt_payment| esdt_payment.perform_transfer_execute(env, to, gas_limit, fc), + ) + } + + fn into_full_payment_data(self, env: &Env) -> FullPaymentData { + self.map_egld_or_esdt( + (), + |(), amount| TxPayment::::into_full_payment_data(Egld(amount), env), + |(), esdt_payment| TxPayment::::into_full_payment_data(esdt_payment, env), + ) + } +} + +impl TxPayment for EgldOrMultiEsdtPayment +where + Env: TxEnv, +{ + fn is_no_payment(&self) -> bool { + self.is_empty() + } + + fn perform_transfer_execute( + self, + env: &Env, + to: &ManagedAddress, + gas_limit: u64, + fc: FunctionCall, + ) { + match self { + EgldOrMultiEsdtPayment::Egld(egld_amount) => { + Egld(egld_amount).perform_transfer_execute(env, to, gas_limit, fc) + }, + EgldOrMultiEsdtPayment::MultiEsdt(multi_esdt_payment) => { + multi_esdt_payment.perform_transfer_execute(env, to, gas_limit, fc) + }, + } + } + + fn into_full_payment_data(self, env: &Env) -> FullPaymentData { + match self { + EgldOrMultiEsdtPayment::Egld(egld_amount) => { + TxPayment::::into_full_payment_data(Egld(egld_amount), env) + }, + EgldOrMultiEsdtPayment::MultiEsdt(multi_esdt_payment) => { + TxPayment::::into_full_payment_data(multi_esdt_payment, env) + }, + } + } +} diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt.rs new file mode 100644 index 0000000000..7651351db8 --- /dev/null +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt.rs @@ -0,0 +1,32 @@ +use crate::{ + contract_base::SendRawWrapper, + types::{BigUint, EsdtTokenPayment, ManagedAddress, ManagedVec, MultiEsdtPayment}, +}; + +use super::{AnnotatedEgldPayment, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment}; + +impl TxPayment for EsdtTokenPayment +where + Env: TxEnv, +{ + fn is_no_payment(&self) -> bool { + self.amount == 0u32 + } + + fn perform_transfer_execute( + self, + env: &Env, + to: &ManagedAddress, + gas_limit: u64, + fc: FunctionCall, + ) { + MultiEsdtPayment::from_single_item(self).perform_transfer_execute(env, to, gas_limit, fc); + } + + fn into_full_payment_data(self, _env: &Env) -> FullPaymentData { + FullPaymentData { + egld: None, + multi_esdt: MultiEsdtPayment::from_single_item(self), + } + } +} From 2497d68df0aae32439c7c972ca639d0f5230e848 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 22 Mar 2024 21:15:41 +0200 Subject: [PATCH 159/461] import fix --- .../base/src/storage/mappers/ordered_binary_tree_mapper.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/framework/base/src/storage/mappers/ordered_binary_tree_mapper.rs b/framework/base/src/storage/mappers/ordered_binary_tree_mapper.rs index 8d56c302aa..fbc3de782f 100644 --- a/framework/base/src/storage/mappers/ordered_binary_tree_mapper.rs +++ b/framework/base/src/storage/mappers/ordered_binary_tree_mapper.rs @@ -3,10 +3,10 @@ use core::marker::PhantomData; use codec::Empty; use crate::{ - api::StorageMapperApi, - imports::{ErrorApiImpl, ManagedType}, + api::{ErrorApiImpl, StorageMapperApi}, storage::StorageKey, storage_set, + types::ManagedType, }; use super::{ From c78d33451732e5ec459e68a79c59be2537320413 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Fri, 22 Mar 2024 20:24:57 +0100 Subject: [PATCH 160/461] returnsNewTokenIdentifier and further improvements to multisig interact --- .../interact/src/multisig_interact.rs | 33 ++++----- .../interact/src/multisig_interact_nfts.rs | 69 ++++++++----------- .../base/src/types/interaction/tx_rh_list.rs | 3 + .../returns_new_token_identifier.rs | 32 +++++++++ .../facade/world_tx/scenario_rh_list_item.rs | 19 ++++- 5 files changed, 96 insertions(+), 60 deletions(-) create mode 100644 framework/base/src/types/interaction/tx_rh_list/returns_new_token_identifier.rs diff --git a/contracts/examples/multisig/interact/src/multisig_interact.rs b/contracts/examples/multisig/interact/src/multisig_interact.rs index c068f09a0e..8f7c4ddd1b 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact.rs @@ -13,7 +13,7 @@ use multisig_interact_config::Config; use multisig_interact_state::State; use multiversx_sc_scenario::{ mandos_system::ScenarioRunner, - multiversx_sc::types::{BigUint, ReturnsSimilar}, + multiversx_sc::types::{BigUint, ReturnsNewAddress, ReturnsSimilar}, scenario_format::interpret_trait::InterpretableFrom, standalone::retrieve_account_as_scenario_set_state, test_wallets, @@ -158,21 +158,22 @@ impl MultisigInteract { async fn deploy(&mut self) { self.set_state().await; - let _board = self.board(); - - let new_address = Address::zero(); - // let new_address = self - // .interactor - // .tx() - // .from(&self.wallet_address) - // .typed(multisig_proxy::MultisigProxy) - // .init(&Config::load_config().quorum(), board) - // .code(&self.multisig_code) - // .with_gas_limit(100_000_000u64) - // .returns(ReturnsNewAddress) - // .sync_call(); - - let new_address_bech32 = bech32::encode(&new_address); + let board = self.board(); + + let new_address = self + .interactor + .tx() + .from(&self.wallet_address) + .typed(multisig_proxy::MultisigProxy) + .init(&Config::load_config().quorum(), board) + .code(&self.multisig_code) + .with_gas_limit(100_000_000u64) + .returns(ReturnsNewAddress) + .prepare_async() + .run() + .await; + + let new_address_bech32 = bech32::encode(&new_address.to_address()); println!("new address: {new_address_bech32}"); let new_address_expr = format!("bech32:{new_address_bech32}"); diff --git a/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs b/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs index bcf73645ad..73f128c564 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs @@ -1,8 +1,8 @@ use std::time::Duration; use multiversx_sc_scenario::multiversx_sc::{ - codec::{multi_types::IgnoreValue, Empty}, - types::FunctionCall, + codec::Empty, + types::{FunctionCall, ReturnsNewTokenIdentidier}, }; use super::*; @@ -73,33 +73,20 @@ impl MultisigInteract { } println!("quorum reached for action `{action_id}`"); - // let _ = self - // .interactor - // .tx() - // .from(&self.wallet_address) - // .to(&self.state.multisig().to_address()) - // .with_gas_limit(80_000_000u64) - // .typed(multisig_proxy::MultisigProxy) - // .perform_action_endpoint(action_id) - // .with_result(WithResultTokenIdentifier::new(|token_id| { - // self.collection_token_identifier = token_id.to_string() - // })); - - let response: TypedResponse = self + let new_token_id = self .interactor - .sc_call_get_result( - ScCallStep::new() - .call(self.state.multisig().perform_action_endpoint(action_id)) - .from(&self.wallet_address) - .gas_limit("80,000,000") - .expect(TxExpect::ok().additional_error_message( - "perform issue collection with all roles failed: ", - )), - ) + .tx() + .from(&self.wallet_address) + .to(&self.state.multisig().to_address()) + .with_gas_limit(80_000_000u64) + .typed(multisig_proxy::MultisigProxy) + .perform_action_endpoint(action_id) + .returns(ReturnsNewTokenIdentidier) + .prepare_async() + .run() .await; - self.collection_token_identifier = response - .new_issued_token_identifier - .expect("new token identifier could not be retrieved"); + self.collection_token_identifier = new_token_id.to_string(); + println!( "collection token identifier: {}", self.collection_token_identifier @@ -141,22 +128,20 @@ impl MultisigInteract { return; } println!("quorum reached for action `{action_id}`"); + let new_token_id = self + .interactor + .tx() + .from(&self.wallet_address) + .to(&self.state.multisig().to_address()) + .with_gas_limit(80_000_000u64) + .typed(multisig_proxy::MultisigProxy) + .perform_action_endpoint(action_id) + .returns(ReturnsNewTokenIdentidier) + .prepare_async() + .run() + .await; + self.collection_token_identifier = new_token_id.to_string(); - let response: TypedResponse = - self.interactor - .sc_call_get_result( - ScCallStep::new() - .call(self.state.multisig().perform_action_endpoint(action_id)) - .from(&self.wallet_address) - .gas_limit("80,000,000") - .expect(TxExpect::ok().additional_error_message( - "perform issue collection with all failed: ", - )), - ) - .await; - self.collection_token_identifier = response - .new_issued_token_identifier - .expect("new token identifier could not be retrieved"); println!( "collection token identifier: {}", self.collection_token_identifier diff --git a/framework/base/src/types/interaction/tx_rh_list.rs b/framework/base/src/types/interaction/tx_rh_list.rs index 2cf4743ef2..b3dd278f12 100644 --- a/framework/base/src/types/interaction/tx_rh_list.rs +++ b/framework/base/src/types/interaction/tx_rh_list.rs @@ -3,6 +3,7 @@ mod returns_exact; mod returns_new_address; mod returns_raw; mod returns_similar; +mod returns_new_token_identifier; mod tx_rh_list_cons; mod tx_rh_list_item; mod with_result_exact; @@ -15,7 +16,9 @@ pub use returns_exact::*; pub use returns_new_address::*; pub use returns_raw::*; pub use returns_similar::*; +pub use returns_new_token_identifier::*; pub use tx_rh_list_cons::*; pub use tx_rh_list_item::*; pub use with_result_new_address::*; pub use with_result_similar::*; + diff --git a/framework/base/src/types/interaction/tx_rh_list/returns_new_token_identifier.rs b/framework/base/src/types/interaction/tx_rh_list/returns_new_token_identifier.rs new file mode 100644 index 0000000000..71d5751de1 --- /dev/null +++ b/framework/base/src/types/interaction/tx_rh_list/returns_new_token_identifier.rs @@ -0,0 +1,32 @@ +use crate::{ + contract_base::BlockchainWrapper, proxy_imports::TokenIdentifier, types::{ + interaction::tx_call_deploy::RHListItemDeploy, BackTransfers, ManagedAddress, + ManagedBuffer, ManagedVec, RHListItemSync, TxEnv, + } +}; + +use super::RHListItem; + +pub struct ReturnsNewTokenIdentidier; + +impl RHListItem for ReturnsNewTokenIdentidier +where + Env: TxEnv, +{ + type Returns = TokenIdentifier; +} + + +// impl RHListItemScenario for ReturnsNewTokenIdentidier +// where +// Env: TxEnv, +// { +// fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns { +// let new_token_id = tx_response +// .new_issued_token_identifier +// .clone() +// .expect("missing returned token identifier"); + +// new_token_id.into() +// } +// } diff --git a/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs b/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs index 36440e0313..7ed940c6be 100644 --- a/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs +++ b/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs @@ -1,8 +1,9 @@ use multiversx_sc::{ codec::{CodecFrom, TopDecodeMulti, TopEncodeMulti}, types::{ - ManagedAddress, RHList, RHListItem, ReturnsExact, ReturnsNewAddress, ReturnsSimilar, TxEnv, - WithResultNewAddress, WithResultSimilar, + ManagedAddress, RHList, RHListItem, ReturnsExact, ReturnsNewAddress, + ReturnsNewTokenIdentidier, ReturnsSimilar, TokenIdentifier, TxEnv, WithResultNewAddress, + WithResultSimilar, }, }; @@ -77,6 +78,20 @@ where } } +impl RHListItemScenario for ReturnsNewTokenIdentidier +where + Env: TxEnv, +{ + fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns { + let new_token_id = tx_response + .new_issued_token_identifier + .clone() + .expect("missing returned token identifier"); + + TokenIdentifier::from(new_token_id.as_str()) + } +} + impl RHListItemScenario for WithResultNewAddress where Env: TxEnv, From 1e95bad87d036e0e5971dc5fd3416827f6e8cfe0 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 22 Mar 2024 22:31:16 +0200 Subject: [PATCH 161/461] tx payment refactor - with_normalized moved back to TxPayment --- .../interaction/contract_call_convert.rs | 6 +- .../src/types/interaction/function_call.rs | 8 +- framework/base/src/types/interaction/tx.rs | 6 +- .../src/types/interaction/tx_call_async.rs | 4 +- .../interaction/tx_call_async_promises.rs | 4 +- .../src/types/interaction/tx_call_sync.rs | 7 +- .../base/src/types/interaction/tx_payment.rs | 22 ++- .../interaction/tx_payment/tx_payment_egld.rs | 21 +- .../tx_payment/tx_payment_multi_esdt.rs | 41 +++- .../interaction/tx_payment/tx_payment_none.rs | 18 +- .../tx_payment/tx_payment_normalize.rs | 182 ------------------ .../tx_payment/tx_payment_other.rs | 44 +++++ .../tx_payment/tx_payment_single_esdt.rs | 29 ++- 13 files changed, 185 insertions(+), 207 deletions(-) delete mode 100644 framework/base/src/types/interaction/tx_payment/tx_payment_normalize.rs diff --git a/framework/base/src/types/interaction/contract_call_convert.rs b/framework/base/src/types/interaction/contract_call_convert.rs index c7e4301c2c..88e6ae6627 100644 --- a/framework/base/src/types/interaction/contract_call_convert.rs +++ b/framework/base/src/types/interaction/contract_call_convert.rs @@ -38,7 +38,7 @@ where function_call: self .basic .function_call - .convert_to_single_transfer_fungible_call(payment), + .convert_to_single_transfer_fungible_call(&payment), explicit_gas_limit: self.basic.explicit_gas_limit, _return_type: PhantomData, }, @@ -55,7 +55,7 @@ where function_call: self .basic .function_call - .convert_to_single_transfer_nft_call(&self.basic.to, payment), + .convert_to_single_transfer_nft_call(&self.basic.to, &payment), explicit_gas_limit: self.basic.explicit_gas_limit, _return_type: PhantomData, }, @@ -78,7 +78,7 @@ where function_call: self .basic .function_call - .convert_to_multi_transfer_esdt_call(&self.basic.to, payments), + .convert_to_multi_transfer_esdt_call(&self.basic.to, &payments), explicit_gas_limit: self.basic.explicit_gas_limit, _return_type: PhantomData, }, diff --git a/framework/base/src/types/interaction/function_call.rs b/framework/base/src/types/interaction/function_call.rs index 8a1e298419..efb149e2b4 100644 --- a/framework/base/src/types/interaction/function_call.rs +++ b/framework/base/src/types/interaction/function_call.rs @@ -159,7 +159,7 @@ where /// Constructs `ESDTTransfer` builtin function call. pub(super) fn convert_to_single_transfer_fungible_call( self, - payment: EsdtTokenPayment, + payment: &EsdtTokenPayment, ) -> FunctionCall { FunctionCall::new(ESDT_TRANSFER_FUNC_NAME) .argument(&payment.token_identifier) @@ -177,7 +177,7 @@ where pub(super) fn convert_to_single_transfer_nft_call( self, to: &ManagedAddress, - payment: EsdtTokenPayment, + payment: &EsdtTokenPayment, ) -> FunctionCall { FunctionCall::new(ESDT_NFT_TRANSFER_FUNC_NAME) .argument(&payment.token_identifier) @@ -191,13 +191,13 @@ where pub(super) fn convert_to_multi_transfer_esdt_call( self, to: &ManagedAddress, - payments: ManagedVec>, + payments: &ManagedVec>, ) -> FunctionCall { let mut result = FunctionCall::new(ESDT_MULTI_TRANSFER_FUNC_NAME) .argument(&to) .argument(&payments.len()); - for payment in payments.into_iter() { + for payment in payments { result = result .argument(&payment.token_identifier) .argument(&payment.token_nonce) diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index db6c244bd6..9e41ae8b2d 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -14,8 +14,8 @@ use super::{ ContractCallNoPayment, ContractCallWithEgld, ContractDeploy, DeployCall, Egld, EgldPayment, ExplicitGas, FromSource, FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, TxCodeValue, TxData, TxEgldValue, - TxEnv, TxFrom, TxFromSourceValue, TxGas, TxPayment, TxPaymentEgldOnly, TxPaymentNormalize, - TxProxyTrait, TxResultHandler, TxScEnv, TxTo, TxToSpecified, + TxEnv, TxFrom, TxFromSourceValue, TxGas, TxPayment, TxPaymentEgldOnly, TxProxyTrait, + TxResultHandler, TxScEnv, TxTo, TxToSpecified, }; #[must_use] @@ -565,7 +565,7 @@ impl ContractCallBase where Api: CallTypeApi + 'static, To: TxToSpecified>, - Payment: TxPaymentNormalize, (), To>, + Payment: TxPayment>, OriginalResult: TopEncodeMulti, { type OriginalResult = OriginalResult; diff --git a/framework/base/src/types/interaction/tx_call_async.rs b/framework/base/src/types/interaction/tx_call_async.rs index 3e77979c2e..daa69013cf 100644 --- a/framework/base/src/types/interaction/tx_call_async.rs +++ b/framework/base/src/types/interaction/tx_call_async.rs @@ -6,7 +6,7 @@ use crate::{ use super::{ OriginalResultMarker, Tx, TxData, TxDataFunctionCall, TxEnv, TxFrom, TxGas, TxPayment, - TxPaymentNormalize, TxResultHandler, TxScEnv, TxTo, TxToSpecified, + TxResultHandler, TxScEnv, TxTo, TxToSpecified, }; pub trait TxAsyncCallCallback: TxResultHandler> @@ -119,7 +119,7 @@ impl Tx, (), To, Payment, (), FC, RH> where Api: CallTypeApi, To: TxToSpecified>, - Payment: TxPaymentNormalize, (), To>, + Payment: TxPayment>, FC: TxDataFunctionCall>, RH: TxAsyncCallCallback, { diff --git a/framework/base/src/types/interaction/tx_call_async_promises.rs b/framework/base/src/types/interaction/tx_call_async_promises.rs index 134d2e0081..f2560451cf 100644 --- a/framework/base/src/types/interaction/tx_call_async_promises.rs +++ b/framework/base/src/types/interaction/tx_call_async_promises.rs @@ -6,7 +6,7 @@ use crate::{ use super::{ callback_closure::CallbackClosureWithGas, ExplicitGas, FunctionCall, OriginalResultMarker, Tx, - TxGas, TxPayment, TxPaymentNormalize, TxResultHandler, TxScEnv, TxToSpecified, + TxGas, TxPayment, TxResultHandler, TxScEnv, TxToSpecified, }; pub trait TxPromisesCallback: TxResultHandler> @@ -122,7 +122,7 @@ impl where Api: CallTypeApi, To: TxToSpecified>, - Payment: TxPaymentNormalize, (), To>, + Payment: TxPayment>, Callback: TxPromisesCallback, { pub fn register_promise(self) { diff --git a/framework/base/src/types/interaction/tx_call_sync.rs b/framework/base/src/types/interaction/tx_call_sync.rs index 0213a1df75..61c73a7b0c 100644 --- a/framework/base/src/types/interaction/tx_call_sync.rs +++ b/framework/base/src/types/interaction/tx_call_sync.rs @@ -9,8 +9,7 @@ use crate::{ use super::{ contract_call_exec::decode_result, BackTransfers, ConsNoRet, ConsRet, OriginalResultMarker, - RHList, RHListItem, Tx, TxDataFunctionCall, TxEnv, TxGas, TxPaymentNormalize, TxScEnv, - TxToSpecified, + RHList, RHListItem, Tx, TxDataFunctionCall, TxEnv, TxGas, TxPayment, TxScEnv, TxToSpecified, }; pub trait RHListItemSync: RHListItem @@ -90,7 +89,7 @@ impl Tx, (), To, Payment, Gas, FC, R where Api: CallTypeApi, To: TxToSpecified>, - Payment: TxPaymentNormalize, (), To>, + Payment: TxPayment>, Gas: TxGas>, FC: TxDataFunctionCall>, RH: RHListSync>, @@ -133,7 +132,7 @@ impl where Api: CallTypeApi, To: TxToSpecified>, - Payment: TxPaymentNormalize, (), To>, + Payment: TxPayment>, Gas: TxGas>, FC: TxDataFunctionCall>, { diff --git a/framework/base/src/types/interaction/tx_payment.rs b/framework/base/src/types/interaction/tx_payment.rs index af40f79f56..2511d2ede8 100644 --- a/framework/base/src/types/interaction/tx_payment.rs +++ b/framework/base/src/types/interaction/tx_payment.rs @@ -2,13 +2,11 @@ mod tx_payment_egld; mod tx_payment_egld_value; mod tx_payment_multi_esdt; mod tx_payment_none; -mod tx_payment_normalize; mod tx_payment_other; mod tx_payment_single_esdt; pub use tx_payment_egld::{Egld, EgldPayment}; pub use tx_payment_egld_value::TxEgldValue; -pub use tx_payment_normalize::TxPaymentNormalize; use crate::{ api::ManagedTypeApi, @@ -19,15 +17,18 @@ use crate::{ }, }; -use super::{FunctionCall, TxEnv}; +use super::{FunctionCall, TxEnv, TxFrom, TxToSpecified}; /// Describes a payment that is part of a transaction. pub trait TxPayment where Env: TxEnv, { + /// Returns true if payment indicates transfer of either non-zero EGLD or ESDT amounts. fn is_no_payment(&self) -> bool; + /// Transfer-execute calls have different APIs for different payments types. + /// This method selects between them. fn perform_transfer_execute( self, env: &Env, @@ -36,6 +37,21 @@ where fc: FunctionCall, ); + /// Converts an ESDT call to a built-in function call, if necessary. + fn with_normalized( + self, + env: &Env, + from: &From, + to: To, + fc: FunctionCall, + f: F, + ) -> R + where + From: TxFrom, + To: TxToSpecified, + F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R; + + /// Payment data to be used by the testing framework. Will be refactored. fn into_full_payment_data(self, env: &Env) -> FullPaymentData; } diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_egld.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_egld.rs index f84d6afacb..a4881bda05 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_egld.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_egld.rs @@ -1,6 +1,6 @@ use crate::{ contract_base::SendRawWrapper, - types::{BigUint, ManagedAddress, ManagedVec}, + types::{BigUint, ManagedAddress, ManagedVec, TxFrom, TxToSpecified}, }; use super::{ @@ -40,6 +40,25 @@ where }) } + fn with_normalized( + self, + env: &Env, + _from: &From, + to: To, + fc: FunctionCall, + f: F, + ) -> R + where + From: TxFrom, + To: TxToSpecified, + F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, + { + to.with_address_ref(env, |to_addr| { + self.0 + .with_egld_value(|egld_value| f(to_addr, egld_value, &fc)) + }) + } + fn into_full_payment_data(self, env: &Env) -> FullPaymentData { FullPaymentData { egld: Some(AnnotatedEgldPayment::new_egld(self.0.into_value(env))), diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs index 84a8de5e5b..de9f65eff9 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs @@ -1,6 +1,6 @@ use crate::{ contract_base::SendRawWrapper, - types::{BigUint, ManagedAddress, ManagedVec, MultiEsdtPayment}, + types::{BigUint, ManagedAddress, ManagedVec, MultiEsdtPayment, TxFrom, TxToSpecified}, }; use super::{AnnotatedEgldPayment, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment}; @@ -29,6 +29,29 @@ where ); } + fn with_normalized( + self, + env: &Env, + from: &From, + to: To, + fc: FunctionCall, + f: F, + ) -> R + where + From: TxFrom, + To: TxToSpecified, + F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, + { + match self.len() { + 0 => ().with_normalized(env, from, to, fc, f), + 1 => self.get(0).with_normalized(env, from, to, fc, f), + _ => to.with_address_ref(env, |to_addr| { + let fc_conv = fc.convert_to_multi_transfer_esdt_call(to_addr, self); + f(&from.resolve_address(env), &BigUint::zero(), &fc_conv) + }), + } + } + fn into_full_payment_data(self, _env: &Env) -> FullPaymentData { FullPaymentData { egld: None, @@ -55,6 +78,22 @@ where (&self).perform_transfer_execute(env, to, gas_limit, fc); } + fn with_normalized( + self, + env: &Env, + from: &From, + to: To, + fc: FunctionCall, + f: F, + ) -> R + where + From: TxFrom, + To: TxToSpecified, + F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, + { + (&self).with_normalized(env, from, to, fc, f) + } + fn into_full_payment_data(self, _env: &Env) -> FullPaymentData { FullPaymentData { egld: None, diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_none.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_none.rs index 7b34ccfe9b..d97143a2ad 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_none.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_none.rs @@ -1,6 +1,6 @@ use crate::{ contract_base::SendRawWrapper, - types::{BigUint, ManagedAddress, ManagedVec}, + types::{BigUint, ManagedAddress, ManagedVec, TxFrom, TxToSpecified}, }; use super::{ @@ -26,6 +26,22 @@ where Egld(BigUint::zero()).perform_transfer_execute(env, to, gas_limit, fc); } + fn with_normalized( + self, + env: &Env, + _from: &From, + to: To, + fc: FunctionCall, + f: F, + ) -> R + where + From: TxFrom, + To: TxToSpecified, + F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, + { + to.with_address_ref(env, |to_addr| f(to_addr, &BigUint::zero(), &fc)) + } + fn into_full_payment_data(self, _env: &Env) -> FullPaymentData { FullPaymentData::default() } diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_normalize.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_normalize.rs deleted file mode 100644 index db263fa83f..0000000000 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_normalize.rs +++ /dev/null @@ -1,182 +0,0 @@ -use crate::types::{ - BigUint, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EsdtTokenPayment, ManagedAddress, - MultiEsdtPayment, TxFrom, TxToSpecified, -}; - -use super::{Egld, FunctionCall, TxEgldValue, TxEnv, TxPayment}; - -/// Defines how a payment transforms a transaction, -/// e.g. from ESDT transfer to ESDTTransfer builtin function. -pub trait TxPaymentNormalize: TxPayment -where - Env: TxEnv, - From: TxFrom, - To: TxToSpecified, -{ - fn with_normalized( - self, - env: &Env, - from: &From, - to: To, - fc: FunctionCall, - f: F, - ) -> R - where - F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R; -} - -impl TxPaymentNormalize for () -where - Env: TxEnv, - From: TxFrom, - To: TxToSpecified, -{ - fn with_normalized( - self, - env: &Env, - _from: &From, - to: To, - fc: FunctionCall, - f: F, - ) -> R - where - F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, - { - to.with_address_ref(env, |to_addr| f(to_addr, &BigUint::zero(), &fc)) - } -} - -impl TxPaymentNormalize for Egld -where - Env: TxEnv, - From: TxFrom, - To: TxToSpecified, - EgldValue: TxEgldValue, -{ - fn with_normalized( - self, - env: &Env, - _from: &From, - to: To, - fc: FunctionCall, - f: F, - ) -> R - where - F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, - { - to.with_address_ref(env, |to_addr| { - self.0 - .with_egld_value(|egld_value| f(to_addr, egld_value, &fc)) - }) - } -} - -impl TxPaymentNormalize for EsdtTokenPayment -where - Env: TxEnv, - From: TxFrom, - To: TxToSpecified, -{ - fn with_normalized( - self, - env: &Env, - from: &From, - to: To, - fc: FunctionCall, - f: F, - ) -> R - where - F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, - { - to.with_address_ref(env, |to_addr| { - if self.token_nonce == 0 { - let fc_conv = fc.convert_to_single_transfer_fungible_call(self); - f(to_addr, &BigUint::zero(), &fc_conv) - } else { - let fc_conv = fc.convert_to_single_transfer_nft_call(to_addr, self); - f(&from.resolve_address(env), &BigUint::zero(), &fc_conv) - } - }) - } -} - -impl TxPaymentNormalize for MultiEsdtPayment -where - Env: TxEnv, - From: TxFrom, - To: TxToSpecified, -{ - fn with_normalized( - self, - env: &Env, - from: &From, - to: To, - fc: FunctionCall, - f: F, - ) -> R - where - F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, - { - match self.len() { - 0 => ().with_normalized(env, from, to, fc, f), - 1 => self.get(0).with_normalized(env, from, to, fc, f), - _ => to.with_address_ref(env, |to_addr| { - let fc_conv = fc.convert_to_multi_transfer_esdt_call(to_addr, self); - f(&from.resolve_address(env), &BigUint::zero(), &fc_conv) - }), - } - } -} - -impl TxPaymentNormalize for EgldOrEsdtTokenPayment -where - Env: TxEnv, - From: TxFrom, - To: TxToSpecified, -{ - fn with_normalized( - self, - env: &Env, - from: &From, - to: To, - fc: FunctionCall, - f: F, - ) -> R - where - F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, - { - self.map_egld_or_esdt( - (to, fc, f), - |(to, fc, f), amount| Egld(amount).with_normalized(env, from, to, fc, f), - |(to, fc, f), esdt_payment| esdt_payment.with_normalized(env, from, to, fc, f), - ) - } -} - -impl TxPaymentNormalize for EgldOrMultiEsdtPayment -where - Env: TxEnv, - From: TxFrom, - To: TxToSpecified, -{ - fn with_normalized( - self, - env: &Env, - from: &From, - to: To, - fc: FunctionCall, - f: F, - ) -> R - where - F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, - { - match self { - EgldOrMultiEsdtPayment::Egld(egld_amount) => { - Egld(egld_amount).with_normalized(env, from, to, fc, f) - }, - EgldOrMultiEsdtPayment::MultiEsdt(multi_esdt_payment) => { - multi_esdt_payment.with_normalized(env, from, to, fc, f) - }, - } - } -} diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_other.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_other.rs index 0c8bf7772b..5a28d80902 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_other.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_other.rs @@ -2,6 +2,7 @@ use crate::{ contract_base::SendRawWrapper, types::{ BigUint, Egld, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, ManagedAddress, ManagedVec, + TxFrom, TxToSpecified, }, }; @@ -29,6 +30,26 @@ where ) } + fn with_normalized( + self, + env: &Env, + from: &From, + to: To, + fc: FunctionCall, + f: F, + ) -> R + where + From: TxFrom, + To: TxToSpecified, + F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, + { + self.map_egld_or_esdt( + (to, fc, f), + |(to, fc, f), amount| Egld(amount).with_normalized(env, from, to, fc, f), + |(to, fc, f), esdt_payment| esdt_payment.with_normalized(env, from, to, fc, f), + ) + } + fn into_full_payment_data(self, env: &Env) -> FullPaymentData { self.map_egld_or_esdt( (), @@ -63,6 +84,29 @@ where } } + fn with_normalized( + self, + env: &Env, + from: &From, + to: To, + fc: FunctionCall, + f: F, + ) -> R + where + From: TxFrom, + To: TxToSpecified, + F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, + { + match self { + EgldOrMultiEsdtPayment::Egld(egld_amount) => { + Egld(egld_amount).with_normalized(env, from, to, fc, f) + }, + EgldOrMultiEsdtPayment::MultiEsdt(multi_esdt_payment) => { + multi_esdt_payment.with_normalized(env, from, to, fc, f) + }, + } + } + fn into_full_payment_data(self, env: &Env) -> FullPaymentData { match self { EgldOrMultiEsdtPayment::Egld(egld_amount) => { diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt.rs index 7651351db8..f2fdf5aacb 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt.rs @@ -1,6 +1,9 @@ use crate::{ contract_base::SendRawWrapper, - types::{BigUint, EsdtTokenPayment, ManagedAddress, ManagedVec, MultiEsdtPayment}, + types::{ + BigUint, EsdtTokenPayment, ManagedAddress, ManagedVec, MultiEsdtPayment, TxFrom, + TxToSpecified, + }, }; use super::{AnnotatedEgldPayment, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment}; @@ -23,6 +26,30 @@ where MultiEsdtPayment::from_single_item(self).perform_transfer_execute(env, to, gas_limit, fc); } + fn with_normalized( + self, + env: &Env, + from: &From, + to: To, + fc: FunctionCall, + f: F, + ) -> R + where + From: TxFrom, + To: TxToSpecified, + F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, + { + to.with_address_ref(env, |to_addr| { + if self.token_nonce == 0 { + let fc_conv = fc.convert_to_single_transfer_fungible_call(&self); + f(to_addr, &BigUint::zero(), &fc_conv) + } else { + let fc_conv = fc.convert_to_single_transfer_nft_call(to_addr, &self); + f(&from.resolve_address(env), &BigUint::zero(), &fc_conv) + } + }) + } + fn into_full_payment_data(self, _env: &Env) -> FullPaymentData { FullPaymentData { egld: None, From 80cb79bcade227e3e13a5f0cded2a25774a2caaf Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Fri, 22 Mar 2024 21:57:29 +0100 Subject: [PATCH 162/461] fix after review, cleanup and fmt --- .../interact/src/multisig_interact_nfts.rs | 12 ++++----- .../interact/src/multisig_interact_wegld.rs | 6 ++--- .../base/src/types/interaction/tx_rh_list.rs | 5 ++-- .../returns_new_token_identifier.rs | 25 +++++-------------- .../src/facade/world_tx/scenario_env_util.rs | 2 +- .../facade/world_tx/scenario_rh_list_item.rs | 4 +-- 6 files changed, 20 insertions(+), 34 deletions(-) diff --git a/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs b/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs index 73f128c564..5d54205c8a 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs @@ -2,7 +2,7 @@ use std::time::Duration; use multiversx_sc_scenario::multiversx_sc::{ codec::Empty, - types::{FunctionCall, ReturnsNewTokenIdentidier}, + types::{FunctionCall, ReturnsExact, ReturnsNewTokenIdentifier}, }; use super::*; @@ -53,7 +53,7 @@ impl MultisigInteract { .argument(&TOKEN_TYPE) .argument(&0u32), ) - .returns(ReturnsSimilar::::new()) + .returns(ReturnsExact) .prepare_async() .run() .await; @@ -81,7 +81,7 @@ impl MultisigInteract { .with_gas_limit(80_000_000u64) .typed(multisig_proxy::MultisigProxy) .perform_action_endpoint(action_id) - .returns(ReturnsNewTokenIdentidier) + .returns(ReturnsNewTokenIdentifier) .prepare_async() .run() .await; @@ -109,7 +109,7 @@ impl MultisigInteract { .argument(&COLLECTION_NAME) .argument(&COLLECTION_TICKER), ) - .returns(ReturnsSimilar::::new()) + .returns(ReturnsExact) .prepare_async() .run() .await; @@ -136,7 +136,7 @@ impl MultisigInteract { .with_gas_limit(80_000_000u64) .typed(multisig_proxy::MultisigProxy) .perform_action_endpoint(action_id) - .returns(ReturnsNewTokenIdentidier) + .returns(ReturnsNewTokenIdentifier) .prepare_async() .run() .await; @@ -165,7 +165,7 @@ impl MultisigInteract { .argument(&multisig_address) .argument(&"ESDTRoleNFTCreate"), ) - .returns(ReturnsSimilar::::new()) + .returns(ReturnsExact) .prepare_async() .run() .await; diff --git a/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs b/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs index ebd75faada..cbfde97e3f 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs @@ -1,6 +1,6 @@ use std::time::Duration; -use multiversx_sc_scenario::multiversx_sc::types::{ContractCallBase, FunctionCall}; +use multiversx_sc_scenario::multiversx_sc::types::{ContractCallBase, FunctionCall, ReturnsExact}; #[allow(unused_imports)] use multiversx_sc_snippets::multiversx_sc::types::{ EsdtTokenPayment, MultiValueEncoded, TokenIdentifier, @@ -72,7 +72,7 @@ impl MultisigInteract { WRAP_AMOUNT, FunctionCall::new("wrapEgld"), ) - .returns(ReturnsSimilar::::new()) + .returns(ReturnsExact) .prepare_async() .run() .await; @@ -105,7 +105,7 @@ impl MultisigInteract { 0u64, contract_call.basic.function_call, ) - .returns(ReturnsSimilar::::new()) + .returns(ReturnsExact) .prepare_async() .run() .await; diff --git a/framework/base/src/types/interaction/tx_rh_list.rs b/framework/base/src/types/interaction/tx_rh_list.rs index b3dd278f12..4af293146a 100644 --- a/framework/base/src/types/interaction/tx_rh_list.rs +++ b/framework/base/src/types/interaction/tx_rh_list.rs @@ -1,9 +1,9 @@ mod returns_bt; mod returns_exact; mod returns_new_address; +mod returns_new_token_identifier; mod returns_raw; mod returns_similar; -mod returns_new_token_identifier; mod tx_rh_list_cons; mod tx_rh_list_item; mod with_result_exact; @@ -14,11 +14,10 @@ mod with_result_similar; pub use returns_bt::*; pub use returns_exact::*; pub use returns_new_address::*; +pub use returns_new_token_identifier::*; pub use returns_raw::*; pub use returns_similar::*; -pub use returns_new_token_identifier::*; pub use tx_rh_list_cons::*; pub use tx_rh_list_item::*; pub use with_result_new_address::*; pub use with_result_similar::*; - diff --git a/framework/base/src/types/interaction/tx_rh_list/returns_new_token_identifier.rs b/framework/base/src/types/interaction/tx_rh_list/returns_new_token_identifier.rs index 71d5751de1..c1a4af47d1 100644 --- a/framework/base/src/types/interaction/tx_rh_list/returns_new_token_identifier.rs +++ b/framework/base/src/types/interaction/tx_rh_list/returns_new_token_identifier.rs @@ -1,32 +1,19 @@ use crate::{ - contract_base::BlockchainWrapper, proxy_imports::TokenIdentifier, types::{ + contract_base::BlockchainWrapper, + proxy_imports::TokenIdentifier, + types::{ interaction::tx_call_deploy::RHListItemDeploy, BackTransfers, ManagedAddress, ManagedBuffer, ManagedVec, RHListItemSync, TxEnv, - } + }, }; use super::RHListItem; -pub struct ReturnsNewTokenIdentidier; +pub struct ReturnsNewTokenIdentifier; -impl RHListItem for ReturnsNewTokenIdentidier +impl RHListItem for ReturnsNewTokenIdentifier where Env: TxEnv, { type Returns = TokenIdentifier; } - - -// impl RHListItemScenario for ReturnsNewTokenIdentidier -// where -// Env: TxEnv, -// { -// fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns { -// let new_token_id = tx_response -// .new_issued_token_identifier -// .clone() -// .expect("missing returned token identifier"); - -// new_token_id.into() -// } -// } diff --git a/framework/scenario/src/facade/world_tx/scenario_env_util.rs b/framework/scenario/src/facade/world_tx/scenario_env_util.rs index 3a67373bb5..e54c34b969 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_util.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_util.rs @@ -63,7 +63,7 @@ where for arg in data.arg_buffer.iter_buffers() { step.tx.arguments.push(arg.to_vec().into()); } - + let explicit_gas = gas.resolve_gas(env); step.tx.gas_limit = U64Value::from(explicit_gas); diff --git a/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs b/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs index 7ed940c6be..780f2f7dcb 100644 --- a/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs +++ b/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs @@ -2,7 +2,7 @@ use multiversx_sc::{ codec::{CodecFrom, TopDecodeMulti, TopEncodeMulti}, types::{ ManagedAddress, RHList, RHListItem, ReturnsExact, ReturnsNewAddress, - ReturnsNewTokenIdentidier, ReturnsSimilar, TokenIdentifier, TxEnv, WithResultNewAddress, + ReturnsNewTokenIdentifier, ReturnsSimilar, TokenIdentifier, TxEnv, WithResultNewAddress, WithResultSimilar, }, }; @@ -78,7 +78,7 @@ where } } -impl RHListItemScenario for ReturnsNewTokenIdentidier +impl RHListItemScenario for ReturnsNewTokenIdentifier where Env: TxEnv, { From f0b1bb03e2bf07003af45d3eee5b2b131883f8f0 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 22 Mar 2024 23:01:33 +0200 Subject: [PATCH 163/461] transfer cleanup --- contracts/feature-tests/composability/forwarder/src/esdt.rs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/contracts/feature-tests/composability/forwarder/src/esdt.rs b/contracts/feature-tests/composability/forwarder/src/esdt.rs index c178749ba9..214b9dd9ea 100644 --- a/contracts/feature-tests/composability/forwarder/src/esdt.rs +++ b/contracts/feature-tests/composability/forwarder/src/esdt.rs @@ -73,11 +73,7 @@ pub trait ForwarderEsdtModule: storage::ForwarderStorageModule { all_token_payments.push(payment); } - self.tx() - .with_gas_limit(self.blockchain().get_gas_left()) - .to(&to) - .multi_esdt(all_token_payments) - .transfer_execute(); + self.tx().to(&to).multi_esdt(all_token_payments).transfer(); } #[payable("EGLD")] From 6100308e7f5b5c171f1a87967a853e6b62666e57 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 22 Mar 2024 23:07:34 +0200 Subject: [PATCH 164/461] transfer cleanup --- contracts/modules/src/esdt.rs | 9 +++++---- .../base/src/contract_base/wrappers/send_wrapper.rs | 5 ++++- framework/base/src/types/interaction/tx_call_te.rs | 4 ++-- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/contracts/modules/src/esdt.rs b/contracts/modules/src/esdt.rs index a61ba67a3f..fa02cfd263 100644 --- a/contracts/modules/src/esdt.rs +++ b/contracts/modules/src/esdt.rs @@ -63,10 +63,11 @@ pub trait EsdtModule { ManagedAsyncCallResult::Err(_) => { // return payment to initial caller let initial_caller = self.blockchain().get_owner_address(); - let egld_returned = self.call_value().egld_value().to_u64().unwrap(); - if egld_returned > 0u64 { - self.tx().to(&initial_caller).egld(egld_returned).transfer(); - } + let egld_returned = self.call_value().egld_value(); + self.tx() + .to(&initial_caller) + .egld(&*egld_returned) + .transfer_if_not_empty(); }, } } diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index d73074f52d..aa0c837fde 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -83,7 +83,10 @@ where /// /// If the amount is 0, it returns without error. pub fn direct_non_zero_egld(&self, to: &ManagedAddress, amount: &BigUint) { - Tx::new_tx_from_sc().to(to).egld(amount).transfer_non_zero(); + Tx::new_tx_from_sc() + .to(to) + .egld(amount) + .transfer_if_not_empty(); } /// Sends either EGLD, ESDT or NFT to the target address, diff --git a/framework/base/src/types/interaction/tx_call_te.rs b/framework/base/src/types/interaction/tx_call_te.rs index 938a6c2523..5cb81a6f0f 100644 --- a/framework/base/src/types/interaction/tx_call_te.rs +++ b/framework/base/src/types/interaction/tx_call_te.rs @@ -50,10 +50,10 @@ where self.transfer_execute_with_gas(0) } - /// Transfers funds, amount is greater than zero. Does nothing otherwise. + /// Transfers funds, if amount is greater than zero. Does nothing otherwise. /// /// Can only used for simple transfers. - pub fn transfer_non_zero(self) { + pub fn transfer_if_not_empty(self) { if self.payment.is_no_payment() { return; } From e3ba39d5b40aa03bea18ad6170cefdd8d8fd3872 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Fri, 22 Mar 2024 22:15:29 +0100 Subject: [PATCH 165/461] gas fix for deploy and transfer --- .../scenario/src/facade/world_tx/scenario_env_util.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/framework/scenario/src/facade/world_tx/scenario_env_util.rs b/framework/scenario/src/facade/world_tx/scenario_env_util.rs index e54c34b969..8663e54852 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_util.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_util.rs @@ -79,7 +79,7 @@ pub fn tx_to_sc_deploy_step( env: &Env, from: From, payment: Payment, - _gas: Gas, + gas: Gas, data: DeployCall>, ) -> ScDeployStep where @@ -96,6 +96,9 @@ where step.tx.arguments.push(arg.to_vec().into()); } + let explicit_gas = gas.resolve_gas(env); + step.tx.gas_limit = U64Value::from(explicit_gas); + let full_payment_data = payment.into_full_payment_data(env); if let Some(annotated_egld_payment) = full_payment_data.egld { step.tx.egld_value = annotated_egld_payment.into(); @@ -124,7 +127,7 @@ pub fn tx_to_transfer_step( from: From, to: To, payment: Payment, - _gas: Gas, + gas: Gas, ) -> TransferStep where Env: TxEnv, @@ -137,6 +140,9 @@ where .from(address_annotated(env, from)) .to(address_annotated(env, to)); + let explicit_gas = gas.resolve_gas(env); + step.tx.gas_limit = U64Value::from(explicit_gas); + let full_payment_data = payment.into_full_payment_data(env); if let Some(annotated_egld_payment) = full_payment_data.egld { step.tx.egld_value = annotated_egld_payment.into(); From 051fecf38c62ca4d3d33059fb2603a5c30877c43 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sat, 23 Mar 2024 00:08:59 +0200 Subject: [PATCH 166/461] EsdtTokenPaymentRefs, tx.esdt_refs, direct_esdt unified syntax impl --- .../contract_base/wrappers/send_wrapper.rs | 9 ++- .../interaction/contract_call_convert.rs | 4 +- .../src/types/interaction/function_call.rs | 9 ++- framework/base/src/types/interaction/tx.rs | 25 ++++++ .../base/src/types/interaction/tx_payment.rs | 1 + .../tx_payment/tx_payment_multi_esdt.rs | 27 ++++--- .../tx_payment/tx_payment_single_esdt.rs | 13 +-- .../tx_payment/tx_payment_single_esdt_ref.rs | 81 +++++++++++++++++++ .../managed/wrapped/esdt_token_payment.rs | 28 +++++++ .../base/src/types/managed/wrapped/mod.rs | 2 +- 10 files changed, 170 insertions(+), 29 deletions(-) create mode 100644 framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt_ref.rs diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index aa0c837fde..519c71158d 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -188,16 +188,17 @@ where } /// Sends a single ESDT transfer to target address. - #[inline] - #[allow(clippy::too_many_arguments)] pub fn direct_esdt( &self, to: &ManagedAddress, token_identifier: &TokenIdentifier, - nonce: u64, + token_nonce: u64, amount: &BigUint, ) { - self.direct_esdt_with_gas_limit(to, token_identifier, nonce, amount, 0, Empty, &[]); + Tx::new_tx_from_sc() + .to(to) + .esdt_refs(token_identifier, token_nonce, amount) + .transfer(); } /// Sends a single ESDT transfer to target address. diff --git a/framework/base/src/types/interaction/contract_call_convert.rs b/framework/base/src/types/interaction/contract_call_convert.rs index 88e6ae6627..fe4225d9a4 100644 --- a/framework/base/src/types/interaction/contract_call_convert.rs +++ b/framework/base/src/types/interaction/contract_call_convert.rs @@ -38,7 +38,7 @@ where function_call: self .basic .function_call - .convert_to_single_transfer_fungible_call(&payment), + .convert_to_single_transfer_fungible_call(payment.as_refs()), explicit_gas_limit: self.basic.explicit_gas_limit, _return_type: PhantomData, }, @@ -55,7 +55,7 @@ where function_call: self .basic .function_call - .convert_to_single_transfer_nft_call(&self.basic.to, &payment), + .convert_to_single_transfer_nft_call(&self.basic.to, payment.as_refs()), explicit_gas_limit: self.basic.explicit_gas_limit, _return_type: PhantomData, }, diff --git a/framework/base/src/types/interaction/function_call.rs b/framework/base/src/types/interaction/function_call.rs index efb149e2b4..1d78735a79 100644 --- a/framework/base/src/types/interaction/function_call.rs +++ b/framework/base/src/types/interaction/function_call.rs @@ -9,7 +9,10 @@ use crate::{ CallTypeApi, ManagedTypeApi, ESDT_MULTI_TRANSFER_FUNC_NAME, ESDT_NFT_TRANSFER_FUNC_NAME, ESDT_TRANSFER_FUNC_NAME, }, - types::{EsdtTokenPayment, ManagedAddress, ManagedBuffer, ManagedVec, MultiValueEncoded}, + types::{ + EsdtTokenPayment, EsdtTokenPaymentRefs, ManagedAddress, ManagedBuffer, ManagedVec, + MultiValueEncoded, + }, }; use super::{ContractCallNoPayment, ManagedArgBuffer, TypedFunctionCall}; @@ -159,7 +162,7 @@ where /// Constructs `ESDTTransfer` builtin function call. pub(super) fn convert_to_single_transfer_fungible_call( self, - payment: &EsdtTokenPayment, + payment: EsdtTokenPaymentRefs<'_, Api>, ) -> FunctionCall { FunctionCall::new(ESDT_TRANSFER_FUNC_NAME) .argument(&payment.token_identifier) @@ -177,7 +180,7 @@ where pub(super) fn convert_to_single_transfer_nft_call( self, to: &ManagedAddress, - payment: &EsdtTokenPayment, + payment: EsdtTokenPaymentRefs<'_, Api>, ) -> FunctionCall { FunctionCall::new(ESDT_NFT_TRANSFER_FUNC_NAME) .argument(&payment.token_identifier) diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 9e41ae8b2d..27b11f59f8 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -1,6 +1,7 @@ use crate::{ api::CallTypeApi, contract_base::BlockchainWrapper, + proxy_imports::{EsdtTokenPaymentRefs, TokenIdentifier}, types::{ BigUint, CodeMetadata, EgldOrEsdtTokenPayment, EsdtTokenPayment, ManagedAddress, ManagedBuffer, ManagedOption, ManagedVec, MultiEsdtPayment, @@ -203,6 +204,30 @@ where } } + /// Sets a single token payment, with the token identifier and amount kept as references. + /// + /// This is handy whem we only want one ESDT transfer and we want to avoid unnecessary object clones. + pub fn esdt_refs<'a>( + self, + token_identifier: &'a TokenIdentifier, + token_nonce: u64, + amount: &'a BigUint, + ) -> Tx, Gas, Data, RH> { + Tx { + env: self.env, + from: self.from, + to: self.to, + payment: EsdtTokenPaymentRefs { + token_identifier, + token_nonce, + amount, + }, + gas: self.gas, + data: self.data, + result_handler: self.result_handler, + } + } + /// Adds a collection of ESDT payments to a transaction. pub fn multi_esdt( self, diff --git a/framework/base/src/types/interaction/tx_payment.rs b/framework/base/src/types/interaction/tx_payment.rs index 2511d2ede8..4b2f54e29f 100644 --- a/framework/base/src/types/interaction/tx_payment.rs +++ b/framework/base/src/types/interaction/tx_payment.rs @@ -4,6 +4,7 @@ mod tx_payment_multi_esdt; mod tx_payment_none; mod tx_payment_other; mod tx_payment_single_esdt; +mod tx_payment_single_esdt_ref; pub use tx_payment_egld::{Egld, EgldPayment}; pub use tx_payment_egld_value::TxEgldValue; diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs index de9f65eff9..3c1a554d03 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs @@ -15,18 +15,27 @@ where fn perform_transfer_execute( self, - _env: &Env, + env: &Env, to: &ManagedAddress, gas_limit: u64, fc: FunctionCall, ) { - let _ = SendRawWrapper::::new().multi_esdt_transfer_execute( - to, - self, - gas_limit, - &fc.function_name, - &fc.arg_buffer, - ); + match self.len() { + 0 => ().perform_transfer_execute(env, to, gas_limit, fc), + 1 => self + .get(0) + .as_refs() + .perform_transfer_execute(env, to, gas_limit, fc), + _ => { + let _ = SendRawWrapper::::new().multi_esdt_transfer_execute( + to, + self, + gas_limit, + &fc.function_name, + &fc.arg_buffer, + ); + }, + } } fn with_normalized( @@ -44,7 +53,7 @@ where { match self.len() { 0 => ().with_normalized(env, from, to, fc, f), - 1 => self.get(0).with_normalized(env, from, to, fc, f), + 1 => self.get(0).as_refs().with_normalized(env, from, to, fc, f), _ => to.with_address_ref(env, |to_addr| { let fc_conv = fc.convert_to_multi_transfer_esdt_call(to_addr, self); f(&from.resolve_address(env), &BigUint::zero(), &fc_conv) diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt.rs index f2fdf5aacb..f5bf61c0f1 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt.rs @@ -23,7 +23,8 @@ where gas_limit: u64, fc: FunctionCall, ) { - MultiEsdtPayment::from_single_item(self).perform_transfer_execute(env, to, gas_limit, fc); + self.as_refs() + .perform_transfer_execute(env, to, gas_limit, fc); } fn with_normalized( @@ -39,15 +40,7 @@ where To: TxToSpecified, F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, { - to.with_address_ref(env, |to_addr| { - if self.token_nonce == 0 { - let fc_conv = fc.convert_to_single_transfer_fungible_call(&self); - f(to_addr, &BigUint::zero(), &fc_conv) - } else { - let fc_conv = fc.convert_to_single_transfer_nft_call(to_addr, &self); - f(&from.resolve_address(env), &BigUint::zero(), &fc_conv) - } - }) + self.as_refs().with_normalized(env, from, to, fc, f) } fn into_full_payment_data(self, _env: &Env) -> FullPaymentData { diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt_ref.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt_ref.rs new file mode 100644 index 0000000000..c0d568e11b --- /dev/null +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt_ref.rs @@ -0,0 +1,81 @@ +use crate::{ + api::ManagedTypeApi, + contract_base::SendRawWrapper, + types::{ + BigUint, EsdtTokenPayment, EsdtTokenPaymentRefs, ManagedAddress, ManagedVec, + MultiEsdtPayment, TokenIdentifier, TxFrom, TxToSpecified, + }, +}; + +use super::{AnnotatedEgldPayment, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment}; + +impl<'a, Env> TxPayment for EsdtTokenPaymentRefs<'a, Env::Api> +where + Env: TxEnv, +{ + fn is_no_payment(&self) -> bool { + self.amount == &0u32 + } + + fn perform_transfer_execute( + self, + env: &Env, + to: &ManagedAddress, + gas_limit: u64, + fc: FunctionCall, + ) { + if self.token_nonce == 0 { + // fungible ESDT + let _ = SendRawWrapper::::new().transfer_esdt_execute( + to, + self.token_identifier, + self.amount, + gas_limit, + &fc.function_name, + &fc.arg_buffer, + ); + } else { + // non-fungible/semi-fungible ESDT + let _ = SendRawWrapper::::new().transfer_esdt_nft_execute( + to, + self.token_identifier, + self.token_nonce, + self.amount, + gas_limit, + &fc.function_name, + &fc.arg_buffer, + ); + } + } + + fn with_normalized( + self, + env: &Env, + from: &From, + to: To, + fc: FunctionCall, + f: F, + ) -> R + where + From: TxFrom, + To: TxToSpecified, + F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, + { + to.with_address_ref(env, |to_addr| { + if self.token_nonce == 0 { + let fc_conv = fc.convert_to_single_transfer_fungible_call(self); + f(to_addr, &BigUint::zero(), &fc_conv) + } else { + let fc_conv = fc.convert_to_single_transfer_nft_call(to_addr, self); + f(&from.resolve_address(env), &BigUint::zero(), &fc_conv) + } + }) + } + + fn into_full_payment_data(self, _env: &Env) -> FullPaymentData { + FullPaymentData { + egld: None, + multi_esdt: MultiEsdtPayment::from_single_item(self.to_owned_payment()), + } + } +} diff --git a/framework/base/src/types/managed/wrapped/esdt_token_payment.rs b/framework/base/src/types/managed/wrapped/esdt_token_payment.rs index 246b28de1d..161c2c1ee3 100644 --- a/framework/base/src/types/managed/wrapped/esdt_token_payment.rs +++ b/framework/base/src/types/managed/wrapped/esdt_token_payment.rs @@ -222,3 +222,31 @@ impl ManagedVecItem for EsdtTokenPayment { writer(&arr[..]) } } + +/// The version of `EsdtTokenPayment` that contains referrences instead of owned fields. +pub struct EsdtTokenPaymentRefs<'a, M: ManagedTypeApi> { + pub token_identifier: &'a TokenIdentifier, + pub token_nonce: u64, + pub amount: &'a BigUint, +} + +impl EsdtTokenPayment { + pub fn as_refs(&self) -> EsdtTokenPaymentRefs<'_, M> { + EsdtTokenPaymentRefs { + token_identifier: &self.token_identifier, + token_nonce: self.token_nonce, + amount: &self.amount, + } + } +} + +impl<'a, M: ManagedTypeApi> EsdtTokenPaymentRefs<'a, M> { + /// Will clone the referenced values. + pub fn to_owned_payment(&self) -> EsdtTokenPayment { + EsdtTokenPayment { + token_identifier: self.token_identifier.clone(), + token_nonce: self.token_nonce, + amount: self.amount.clone(), + } + } +} diff --git a/framework/base/src/types/managed/wrapped/mod.rs b/framework/base/src/types/managed/wrapped/mod.rs index 8ac485fa38..a2dcd6008a 100644 --- a/framework/base/src/types/managed/wrapped/mod.rs +++ b/framework/base/src/types/managed/wrapped/mod.rs @@ -23,7 +23,7 @@ pub use egld_or_esdt_token_payment::EgldOrEsdtTokenPayment; pub use egld_or_multi_esdt_payment::EgldOrMultiEsdtPayment; pub(crate) use encoded_managed_vec_item::EncodedManagedVecItem; pub use esdt_token_data::EsdtTokenData; -pub use esdt_token_payment::{EsdtTokenPayment, MultiEsdtPayment}; +pub use esdt_token_payment::{EsdtTokenPayment, EsdtTokenPaymentRefs, MultiEsdtPayment}; pub use managed_address::ManagedAddress; pub use managed_buffer_cached_builder::ManagedBufferCachedBuilder; pub(crate) use managed_byte_array::ManagedBufferSizeContext; From 0b6e0d687e51d26f87b0abe457b10ebadac0ed29 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sat, 23 Mar 2024 00:22:55 +0200 Subject: [PATCH 167/461] unified sytax - remove direct_esdt usage in contracts --- contracts/examples/digital-cash/src/helpers.rs | 6 ++++-- contracts/examples/order-book/pair/src/orders.rs | 10 ++++------ .../forwarder-raw/src/forwarder_raw_async.rs | 4 ++-- .../modules/src/bonding_curve/utils/user_endpoints.rs | 6 ++++-- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/contracts/examples/digital-cash/src/helpers.rs b/contracts/examples/digital-cash/src/helpers.rs index eef0b641f1..9fa90f5b9b 100644 --- a/contracts/examples/digital-cash/src/helpers.rs +++ b/contracts/examples/digital-cash/src/helpers.rs @@ -12,8 +12,10 @@ pub trait HelpersModule: storage::StorageModule { self.tx().to(address).egld(&fee.amount).transfer(); } else { let esdt_fee = fee.clone().unwrap_esdt(); - self.send() - .direct_esdt(address, &esdt_fee.token_identifier, 0, &esdt_fee.amount); + self.tx() + .to(address) + .esdt_refs(&esdt_fee.token_identifier, 0, &esdt_fee.amount) + .transfer(); } } diff --git a/contracts/examples/order-book/pair/src/orders.rs b/contracts/examples/order-book/pair/src/orders.rs index 6dd9bdc0bf..67fc5aa619 100644 --- a/contracts/examples/order-book/pair/src/orders.rs +++ b/contracts/examples/order-book/pair/src/orders.rs @@ -353,12 +353,10 @@ pub trait OrdersModule: fn execute_transfers(&self, transfers: ManagedVec>) { for transfer in &transfers { if transfer.payment.amount > 0 { - self.send().direct_esdt( - &transfer.to, - &transfer.payment.token_id, - 0, - &transfer.payment.amount, - ) + self.tx() + .to(&transfer.to) + .esdt_refs(&transfer.payment.token_id, 0, &transfer.payment.amount) + .transfer(); } } } diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs index 25d8868298..b0c3cbfec9 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs @@ -13,14 +13,14 @@ pub trait ForwarderRawAsync: super::forwarder_raw_common::ForwarderRawCommon { #[payable("*")] fn forward_direct_esdt_via_transf_exec(&self, to: ManagedAddress) { let (token, payment) = self.call_value().single_fungible_esdt(); - self.send().direct_esdt(&to, &token, 0, &payment); + self.tx().to(&to).esdt_refs(&token, 0, &payment).transfer(); } #[endpoint] #[payable("*")] fn forward_direct_esdt_multi(&self, to: ManagedAddress) { let payments = self.call_value().all_esdt_transfers(); - self.send().direct_multi(&to, &payments); + self.tx().to(&to).multi_esdt_ref(&payments).transfer(); } fn forward_contract_call( diff --git a/contracts/modules/src/bonding_curve/utils/user_endpoints.rs b/contracts/modules/src/bonding_curve/utils/user_endpoints.rs index 321a0bd439..3f4471be95 100644 --- a/contracts/modules/src/bonding_curve/utils/user_endpoints.rs +++ b/contracts/modules/src/bonding_curve/utils/user_endpoints.rs @@ -98,8 +98,10 @@ pub trait UserEndpointsModule: storage::StorageModule + events::EventsModule { match requested_nonce { OptionalValue::Some(nonce) => { - self.send() - .direct_esdt(&caller, &requested_token, nonce, &requested_amount); + self.tx() + .to(&caller) + .esdt_refs(&requested_token, nonce, &requested_amount) + .transfer(); if self.nonce_amount(&requested_token, nonce).get() - requested_amount.clone() > 0 { self.nonce_amount(&requested_token, nonce) .update(|val| *val -= requested_amount.clone()); From be81bed9129a3ffc228e74325bd5550abeb02fb2 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sat, 23 Mar 2024 01:09:41 +0200 Subject: [PATCH 168/461] unified syntax - ToCaller --- framework/base/src/types/interaction/tx_to.rs | 4 ++ .../types/interaction/tx_to/tx_to_caller.rs | 43 +++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 framework/base/src/types/interaction/tx_to/tx_to_caller.rs diff --git a/framework/base/src/types/interaction/tx_to.rs b/framework/base/src/types/interaction/tx_to.rs index 4116cbc9f9..13c78b5da6 100644 --- a/framework/base/src/types/interaction/tx_to.rs +++ b/framework/base/src/types/interaction/tx_to.rs @@ -1,3 +1,7 @@ +mod tx_to_caller; + +pub use tx_to_caller::ToCaller; + use crate::types::{heap::Address, ManagedAddress}; use super::{AnnotatedValue, TxEnv}; diff --git a/framework/base/src/types/interaction/tx_to/tx_to_caller.rs b/framework/base/src/types/interaction/tx_to/tx_to_caller.rs new file mode 100644 index 0000000000..5c1668d38d --- /dev/null +++ b/framework/base/src/types/interaction/tx_to/tx_to_caller.rs @@ -0,0 +1,43 @@ +use crate::{ + api::{BlockchainApi, CallTypeApi}, + contract_base::BlockchainWrapper, + types::{AnnotatedValue, ManagedAddress, ManagedBuffer, TxScEnv}, +}; + +use super::{TxTo, TxToSpecified}; + +/// Indicates that transaction should be sent to the caller (the sender of the current transaction). +pub struct ToCaller; + +fn get_caller() -> ManagedAddress +where + Api: CallTypeApi + BlockchainApi, +{ + BlockchainWrapper::::new().get_caller() +} + +impl AnnotatedValue, ManagedAddress> for ToCaller +where + Api: CallTypeApi + BlockchainApi, +{ + fn annotation(&self, env: &TxScEnv) -> ManagedBuffer { + get_caller::().hex_expr() + } + + fn into_value(self, _env: &TxScEnv) -> ManagedAddress { + get_caller::() + } +} + +impl TxTo> for ToCaller where Api: CallTypeApi + BlockchainApi {} +impl TxToSpecified> for ToCaller +where + Api: CallTypeApi + BlockchainApi, +{ + fn with_address_ref(&self, env: &TxScEnv, f: F) -> R + where + F: FnOnce(&ManagedAddress) -> R, + { + f(&get_caller::()) + } +} From 072f46231b014f9bfd27abc9dabb05a75563d330 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sat, 23 Mar 2024 01:10:08 +0200 Subject: [PATCH 169/461] unified sytax - remove direct_esdt usage in contracts --- contracts/core/wegld-swap/src/wegld.rs | 7 +-- .../fractional-nfts/src/fractional_nfts.rs | 31 +++++++------ .../examples/nft-minter/src/nft_module.rs | 12 ++--- .../examples/nft-subscription/src/lib.rs | 46 +++++++++---------- .../seed-nft-minter/src/nft_module.rs | 12 ++--- .../token-release/src/token_release.rs | 6 ++- .../composability/forwarder/src/esdt.rs | 18 ++++++-- .../composability/forwarder/src/nft.rs | 6 ++- .../rust-testing-framework-tester/src/lib.rs | 12 +++-- contracts/modules/src/governance/mod.rs | 28 ++++++----- .../mappers/token/fungible_token_mapper.rs | 7 ++- .../token/non_fungible_token_mapper.rs | 16 ++++--- 12 files changed, 112 insertions(+), 89 deletions(-) diff --git a/contracts/core/wegld-swap/src/wegld.rs b/contracts/core/wegld-swap/src/wegld.rs index e31a6d0e87..11143e4209 100644 --- a/contracts/core/wegld-swap/src/wegld.rs +++ b/contracts/core/wegld-swap/src/wegld.rs @@ -23,9 +23,10 @@ pub trait EgldEsdtSwap: multiversx_sc_modules::pause::PauseModule { self.send() .esdt_local_mint(&wrapped_egld_token_id, 0, &payment_amount); - let caller = self.blockchain().get_caller(); - self.send() - .direct_esdt(&caller, &wrapped_egld_token_id, 0, &payment_amount); + self.tx() + .to(ToCaller) + .esdt_refs(&wrapped_egld_token_id, 0, &payment_amount) + .transfer(); EsdtTokenPayment::new(wrapped_egld_token_id, 0, payment_amount.clone_value()) } diff --git a/contracts/examples/fractional-nfts/src/fractional_nfts.rs b/contracts/examples/fractional-nfts/src/fractional_nfts.rs index c715edae82..f27ba43286 100644 --- a/contracts/examples/fractional-nfts/src/fractional_nfts.rs +++ b/contracts/examples/fractional-nfts/src/fractional_nfts.rs @@ -85,13 +85,14 @@ pub trait FractionalNfts: default_issue_callbacks::DefaultIssueCallbacksModule { &uris, ); - let caller = self.blockchain().get_caller(); - self.send().direct_esdt( - &caller, - fractional_token, - fractional_nonce, - &initial_fractional_amount, - ); + self.tx() + .to(ToCaller) + .esdt_refs( + fractional_token, + fractional_nonce, + &initial_fractional_amount, + ) + .transfer(); } #[payable("*")] @@ -123,13 +124,15 @@ pub trait FractionalNfts: default_issue_callbacks::DefaultIssueCallbacksModule { ); let original = fractional_info.original_payment; - let caller = self.blockchain().get_caller(); - self.send().direct_esdt( - &caller, - &original.token_identifier, - original.token_nonce, - &original.amount, - ); + + self.tx() + .to(ToCaller) + .esdt_refs( + &original.token_identifier, + original.token_nonce, + &original.amount, + ) + .transfer(); } #[view(getFractionalToken)] diff --git a/contracts/examples/nft-minter/src/nft_module.rs b/contracts/examples/nft-minter/src/nft_module.rs index 2b9b73523c..51208ea40d 100644 --- a/contracts/examples/nft-minter/src/nft_module.rs +++ b/contracts/examples/nft-minter/src/nft_module.rs @@ -88,13 +88,11 @@ pub trait NftModule { self.price_tag(nft_nonce).clear(); let nft_token_id = self.nft_token_id().get(); - let caller = self.blockchain().get_caller(); - self.send().direct_esdt( - &caller, - &nft_token_id, - nft_nonce, - &BigUint::from(NFT_AMOUNT), - ); + + self.tx() + .to(ToCaller) + .esdt_refs(&nft_token_id, nft_nonce, &BigUint::from(NFT_AMOUNT)) + .transfer(); let owner = self.blockchain().get_owner_address(); self.send().direct( diff --git a/contracts/examples/nft-subscription/src/lib.rs b/contracts/examples/nft-subscription/src/lib.rs index d291eaf212..277913dc88 100644 --- a/contracts/examples/nft-subscription/src/lib.rs +++ b/contracts/examples/nft-subscription/src/lib.rs @@ -35,12 +35,15 @@ pub trait NftSubscription: ManagedBuffer::from(b"common"), &ManagedVec::new(), ); - self.send().direct_esdt( - &self.blockchain().get_caller(), - self.token_id().get_token_id_ref(), - nonce, - &BigUint::from(1u8), - ); + + self.tx() + .to(ToCaller) + .esdt_refs( + self.token_id().get_token_id_ref(), + nonce, + &BigUint::from(1u8), + ) + .transfer(); } #[payable("*")] @@ -48,12 +51,10 @@ pub trait NftSubscription: fn update_attributes(&self, attributes: ManagedBuffer) { let (id, nonce, _) = self.call_value().single_esdt().into_tuple(); self.update_subscription_attributes::(&id, nonce, attributes); - self.send().direct_esdt( - &self.blockchain().get_caller(), - &id, - nonce, - &BigUint::from(1u8), - ); + self.tx() + .to(ToCaller) + .esdt_refs(&id, nonce, &BigUint::from(1u8)) + .transfer(); } #[payable("*")] @@ -61,12 +62,10 @@ pub trait NftSubscription: fn renew(&self, duration: u64) { let (id, nonce, _) = self.call_value().single_esdt().into_tuple(); self.renew_subscription::(&id, nonce, duration); - self.send().direct_esdt( - &self.blockchain().get_caller(), - &id, - nonce, - &BigUint::from(1u8), - ); + self.tx() + .to(ToCaller) + .esdt_refs(&id, nonce, &BigUint::from(1u8)) + .transfer(); } #[payable("*")] @@ -74,12 +73,11 @@ pub trait NftSubscription: fn cancel(&self) { let (id, nonce, _) = self.call_value().single_esdt().into_tuple(); self.cancel_subscription::(&id, nonce); - self.send().direct_esdt( - &self.blockchain().get_caller(), - &id, - nonce, - &BigUint::from(1u8), - ); + + self.tx() + .to(ToCaller) + .esdt_refs(&id, nonce, &BigUint::from(1u8)) + .transfer(); } #[storage_mapper("tokenId")] diff --git a/contracts/examples/seed-nft-minter/src/nft_module.rs b/contracts/examples/seed-nft-minter/src/nft_module.rs index 885ff36c90..e6d285f343 100644 --- a/contracts/examples/seed-nft-minter/src/nft_module.rs +++ b/contracts/examples/seed-nft-minter/src/nft_module.rs @@ -65,13 +65,11 @@ pub trait NftModule: self.price_tag(nft_nonce).clear(); let nft_token_id = self.nft_token_id().get_token_id(); - let caller = self.blockchain().get_caller(); - self.send().direct_esdt( - &caller, - &nft_token_id, - nft_nonce, - &BigUint::from(NFT_AMOUNT), - ); + + self.tx() + .to(ToCaller) + .esdt_refs(&nft_token_id, nft_nonce, &BigUint::from(NFT_AMOUNT)) + .transfer(); self.distribute_funds( &payment.token_identifier, diff --git a/contracts/examples/token-release/src/token_release.rs b/contracts/examples/token-release/src/token_release.rs index 29fb3890e0..71ac2934b6 100644 --- a/contracts/examples/token-release/src/token_release.rs +++ b/contracts/examples/token-release/src/token_release.rs @@ -312,8 +312,10 @@ pub trait TokenRelease { address: &ManagedAddress, amount: &BigUint, ) { - self.send() - .direct_esdt(address, token_identifier, 0, amount); + self.tx() + .to(address) + .esdt_refs(token_identifier, 0, amount) + .transfer(); } fn mint_all_tokens(&self, token_identifier: &TokenIdentifier, amount: &BigUint) { diff --git a/contracts/feature-tests/composability/forwarder/src/esdt.rs b/contracts/feature-tests/composability/forwarder/src/esdt.rs index 214b9dd9ea..bfe9de0d34 100644 --- a/contracts/feature-tests/composability/forwarder/src/esdt.rs +++ b/contracts/feature-tests/composability/forwarder/src/esdt.rs @@ -32,7 +32,7 @@ pub trait ForwarderEsdtModule: storage::ForwarderStorageModule { #[endpoint] fn send_esdt(&self, to: &ManagedAddress, token_id: TokenIdentifier, amount: &BigUint) { - self.send().direct_esdt(to, &token_id, 0, amount); + self.tx().to(to).esdt_refs(&token_id, 0, amount).transfer(); } #[payable("*")] @@ -42,7 +42,10 @@ pub trait ForwarderEsdtModule: storage::ForwarderStorageModule { let fees = &payment * &percentage_fees / PERCENTAGE_TOTAL; let amount_to_send = payment - fees; - self.send().direct_esdt(&to, &token_id, 0, &amount_to_send); + self.tx() + .to(&to) + .esdt_refs(&token_id, 0, &amount_to_send) + .transfer(); } #[endpoint] @@ -53,9 +56,14 @@ pub trait ForwarderEsdtModule: storage::ForwarderStorageModule { amount_first_time: &BigUint, amount_second_time: &BigUint, ) { - self.send().direct_esdt(to, &token_id, 0, amount_first_time); - self.send() - .direct_esdt(to, &token_id, 0, amount_second_time); + self.tx() + .to(to) + .esdt_refs(&token_id, 0, amount_first_time) + .transfer(); + self.tx() + .to(to) + .esdt_refs(&token_id, 0, amount_second_time) + .transfer(); } #[endpoint] diff --git a/contracts/feature-tests/composability/forwarder/src/nft.rs b/contracts/feature-tests/composability/forwarder/src/nft.rs index 95ab6cfeed..c21fa1f6c8 100644 --- a/contracts/feature-tests/composability/forwarder/src/nft.rs +++ b/contracts/feature-tests/composability/forwarder/src/nft.rs @@ -271,8 +271,10 @@ pub trait ForwarderNftModule: storage::ForwarderStorageModule { uri, ); - self.send() - .direct_esdt(&to, &token_identifier, token_nonce, &amount); + self.tx() + .to(&to) + .esdt_refs(&token_identifier, token_nonce, &amount) + .transfer(); self.send_event(&to, &token_identifier, token_nonce, &amount); } diff --git a/contracts/feature-tests/rust-testing-framework-tester/src/lib.rs b/contracts/feature-tests/rust-testing-framework-tester/src/lib.rs index 010f002e6a..dbb55e7fde 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/src/lib.rs +++ b/contracts/feature-tests/rust-testing-framework-tester/src/lib.rs @@ -88,12 +88,13 @@ pub trait RustTestingFrameworkTester: dummy_module::DummyModule { #[payable("*")] #[endpoint] fn receive_esdt_half(&self) { - let caller = self.blockchain().get_caller(); let payment = self.call_value().single_esdt(); let amount = payment.amount / 2u32; - self.send() - .direct_esdt(&caller, &payment.token_identifier, 0, &amount); + self.tx() + .to(ToCaller) + .esdt_refs(&payment.token_identifier, 0, &amount) + .transfer(); } #[payable("*")] @@ -111,7 +112,10 @@ pub trait RustTestingFrameworkTester: dummy_module::DummyModule { nft_nonce: u64, amount: BigUint, ) { - self.send().direct_esdt(&to, &token_id, nft_nonce, &amount); + self.tx() + .to(&to) + .esdt_refs(&token_id, nft_nonce, &amount) + .transfer(); } #[endpoint] diff --git a/contracts/modules/src/governance/mod.rs b/contracts/modules/src/governance/mod.rs index ee343f7101..5463975fbb 100644 --- a/contracts/modules/src/governance/mod.rs +++ b/contracts/modules/src/governance/mod.rs @@ -84,12 +84,14 @@ pub trait GovernanceModule: for fee_entry in fees_to_send.iter() { let payment = fee_entry.tokens.clone(); - self.send().direct_esdt( - &fee_entry.depositor_addr, - &payment.token_identifier, - payment.token_nonce, - &payment.amount, - ); + self.tx() + .to(&fee_entry.depositor_addr) + .esdt_refs( + &payment.token_identifier, + payment.token_nonce, + &payment.amount, + ) + .transfer(); self.user_claim_event(&caller, proposal_id, &fee_entry.tokens); } } @@ -420,12 +422,14 @@ pub trait GovernanceModule: for fee_entry in payments.entries.iter() { let payment = fee_entry.tokens; - self.send().direct_esdt( - &fee_entry.depositor_addr, - &payment.token_identifier, - payment.token_nonce, - &payment.amount, - ); + self.tx() + .to(&fee_entry.depositor_addr) + .esdt_refs( + &payment.token_identifier, + payment.token_nonce, + &payment.amount, + ) + .transfer(); } } diff --git a/framework/base/src/storage/mappers/token/fungible_token_mapper.rs b/framework/base/src/storage/mappers/token/fungible_token_mapper.rs index 7f84501071..a2df87584e 100644 --- a/framework/base/src/storage/mappers/token/fungible_token_mapper.rs +++ b/framework/base/src/storage/mappers/token/fungible_token_mapper.rs @@ -3,6 +3,7 @@ use crate::{ api::ErrorApiImpl, codec::{CodecFrom, EncodeErrorHandler, TopEncodeMulti, TopEncodeMultiOutput}, storage_clear, storage_get, storage_set, + types::Tx, }; use super::{ @@ -243,8 +244,10 @@ where } fn send_payment(&self, to: &ManagedAddress, payment: &EsdtTokenPayment) { - let send_wrapper = SendWrapper::::new(); - send_wrapper.direct_esdt(to, &payment.token_identifier, 0, &payment.amount); + Tx::new_tx_from_sc() + .to(to) + .esdt_refs(&payment.token_identifier, 0, &payment.amount) + .transfer(); } } diff --git a/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs b/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs index 80946dd2a6..a02f9d7d07 100644 --- a/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs +++ b/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs @@ -3,6 +3,7 @@ use crate::{ CodecFrom, EncodeErrorHandler, TopDecode, TopEncode, TopEncodeMulti, TopEncodeMultiOutput, }, storage_clear, storage_get, storage_set, + types::Tx, }; use super::{ @@ -368,13 +369,14 @@ where } fn send_payment(&self, to: &ManagedAddress, payment: &EsdtTokenPayment) { - let send_wrapper = SendWrapper::::new(); - send_wrapper.direct_esdt( - to, - &payment.token_identifier, - payment.token_nonce, - &payment.amount, - ); + Tx::new_tx_from_sc() + .to(to) + .esdt_refs( + &payment.token_identifier, + payment.token_nonce, + &payment.amount, + ) + .transfer(); } } From e473c20a07777e32ac32ab777faba1f9cc42265e Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sat, 23 Mar 2024 01:18:55 +0200 Subject: [PATCH 170/461] unified syntax - renamed single_esdt --- contracts/core/wegld-swap/src/wegld.rs | 2 +- contracts/examples/digital-cash/src/helpers.rs | 2 +- .../examples/fractional-nfts/src/fractional_nfts.rs | 4 ++-- contracts/examples/nft-minter/src/nft_module.rs | 2 +- contracts/examples/nft-subscription/src/lib.rs | 8 ++++---- contracts/examples/order-book/pair/src/orders.rs | 2 +- contracts/examples/seed-nft-minter/src/nft_module.rs | 2 +- contracts/examples/token-release/src/token_release.rs | 2 +- .../forwarder-raw/src/forwarder_raw_async.rs | 5 ++++- .../feature-tests/composability/forwarder/src/esdt.rs | 11 +++++++---- .../feature-tests/composability/forwarder/src/nft.rs | 2 +- .../rust-testing-framework-tester/src/lib.rs | 4 ++-- .../modules/src/bonding_curve/utils/user_endpoints.rs | 2 +- contracts/modules/src/governance/mod.rs | 4 ++-- .../base/src/contract_base/wrappers/send_wrapper.rs | 2 +- .../storage/mappers/token/fungible_token_mapper.rs | 2 +- .../mappers/token/non_fungible_token_mapper.rs | 2 +- framework/base/src/types/interaction/tx.rs | 2 +- 18 files changed, 33 insertions(+), 27 deletions(-) diff --git a/contracts/core/wegld-swap/src/wegld.rs b/contracts/core/wegld-swap/src/wegld.rs index 11143e4209..4a38cab09e 100644 --- a/contracts/core/wegld-swap/src/wegld.rs +++ b/contracts/core/wegld-swap/src/wegld.rs @@ -25,7 +25,7 @@ pub trait EgldEsdtSwap: multiversx_sc_modules::pause::PauseModule { self.tx() .to(ToCaller) - .esdt_refs(&wrapped_egld_token_id, 0, &payment_amount) + .single_esdt(&wrapped_egld_token_id, 0, &payment_amount) .transfer(); EsdtTokenPayment::new(wrapped_egld_token_id, 0, payment_amount.clone_value()) diff --git a/contracts/examples/digital-cash/src/helpers.rs b/contracts/examples/digital-cash/src/helpers.rs index 9fa90f5b9b..aa5c4efadc 100644 --- a/contracts/examples/digital-cash/src/helpers.rs +++ b/contracts/examples/digital-cash/src/helpers.rs @@ -14,7 +14,7 @@ pub trait HelpersModule: storage::StorageModule { let esdt_fee = fee.clone().unwrap_esdt(); self.tx() .to(address) - .esdt_refs(&esdt_fee.token_identifier, 0, &esdt_fee.amount) + .single_esdt(&esdt_fee.token_identifier, 0, &esdt_fee.amount) .transfer(); } } diff --git a/contracts/examples/fractional-nfts/src/fractional_nfts.rs b/contracts/examples/fractional-nfts/src/fractional_nfts.rs index f27ba43286..761eb1ec68 100644 --- a/contracts/examples/fractional-nfts/src/fractional_nfts.rs +++ b/contracts/examples/fractional-nfts/src/fractional_nfts.rs @@ -87,7 +87,7 @@ pub trait FractionalNfts: default_issue_callbacks::DefaultIssueCallbacksModule { self.tx() .to(ToCaller) - .esdt_refs( + .single_esdt( fractional_token, fractional_nonce, &initial_fractional_amount, @@ -127,7 +127,7 @@ pub trait FractionalNfts: default_issue_callbacks::DefaultIssueCallbacksModule { self.tx() .to(ToCaller) - .esdt_refs( + .single_esdt( &original.token_identifier, original.token_nonce, &original.amount, diff --git a/contracts/examples/nft-minter/src/nft_module.rs b/contracts/examples/nft-minter/src/nft_module.rs index 51208ea40d..05b937f432 100644 --- a/contracts/examples/nft-minter/src/nft_module.rs +++ b/contracts/examples/nft-minter/src/nft_module.rs @@ -91,7 +91,7 @@ pub trait NftModule { self.tx() .to(ToCaller) - .esdt_refs(&nft_token_id, nft_nonce, &BigUint::from(NFT_AMOUNT)) + .single_esdt(&nft_token_id, nft_nonce, &BigUint::from(NFT_AMOUNT)) .transfer(); let owner = self.blockchain().get_owner_address(); diff --git a/contracts/examples/nft-subscription/src/lib.rs b/contracts/examples/nft-subscription/src/lib.rs index 277913dc88..7b0b63096e 100644 --- a/contracts/examples/nft-subscription/src/lib.rs +++ b/contracts/examples/nft-subscription/src/lib.rs @@ -38,7 +38,7 @@ pub trait NftSubscription: self.tx() .to(ToCaller) - .esdt_refs( + .single_esdt( self.token_id().get_token_id_ref(), nonce, &BigUint::from(1u8), @@ -53,7 +53,7 @@ pub trait NftSubscription: self.update_subscription_attributes::(&id, nonce, attributes); self.tx() .to(ToCaller) - .esdt_refs(&id, nonce, &BigUint::from(1u8)) + .single_esdt(&id, nonce, &BigUint::from(1u8)) .transfer(); } @@ -64,7 +64,7 @@ pub trait NftSubscription: self.renew_subscription::(&id, nonce, duration); self.tx() .to(ToCaller) - .esdt_refs(&id, nonce, &BigUint::from(1u8)) + .single_esdt(&id, nonce, &BigUint::from(1u8)) .transfer(); } @@ -76,7 +76,7 @@ pub trait NftSubscription: self.tx() .to(ToCaller) - .esdt_refs(&id, nonce, &BigUint::from(1u8)) + .single_esdt(&id, nonce, &BigUint::from(1u8)) .transfer(); } diff --git a/contracts/examples/order-book/pair/src/orders.rs b/contracts/examples/order-book/pair/src/orders.rs index 67fc5aa619..1ec11afee4 100644 --- a/contracts/examples/order-book/pair/src/orders.rs +++ b/contracts/examples/order-book/pair/src/orders.rs @@ -355,7 +355,7 @@ pub trait OrdersModule: if transfer.payment.amount > 0 { self.tx() .to(&transfer.to) - .esdt_refs(&transfer.payment.token_id, 0, &transfer.payment.amount) + .single_esdt(&transfer.payment.token_id, 0, &transfer.payment.amount) .transfer(); } } diff --git a/contracts/examples/seed-nft-minter/src/nft_module.rs b/contracts/examples/seed-nft-minter/src/nft_module.rs index e6d285f343..a65a4175d7 100644 --- a/contracts/examples/seed-nft-minter/src/nft_module.rs +++ b/contracts/examples/seed-nft-minter/src/nft_module.rs @@ -68,7 +68,7 @@ pub trait NftModule: self.tx() .to(ToCaller) - .esdt_refs(&nft_token_id, nft_nonce, &BigUint::from(NFT_AMOUNT)) + .single_esdt(&nft_token_id, nft_nonce, &BigUint::from(NFT_AMOUNT)) .transfer(); self.distribute_funds( diff --git a/contracts/examples/token-release/src/token_release.rs b/contracts/examples/token-release/src/token_release.rs index 71ac2934b6..b0acd8a0e7 100644 --- a/contracts/examples/token-release/src/token_release.rs +++ b/contracts/examples/token-release/src/token_release.rs @@ -314,7 +314,7 @@ pub trait TokenRelease { ) { self.tx() .to(address) - .esdt_refs(token_identifier, 0, amount) + .single_esdt(token_identifier, 0, amount) .transfer(); } diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs index b0c3cbfec9..cdf3c8f42c 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs @@ -13,7 +13,10 @@ pub trait ForwarderRawAsync: super::forwarder_raw_common::ForwarderRawCommon { #[payable("*")] fn forward_direct_esdt_via_transf_exec(&self, to: ManagedAddress) { let (token, payment) = self.call_value().single_fungible_esdt(); - self.tx().to(&to).esdt_refs(&token, 0, &payment).transfer(); + self.tx() + .to(&to) + .single_esdt(&token, 0, &payment) + .transfer(); } #[endpoint] diff --git a/contracts/feature-tests/composability/forwarder/src/esdt.rs b/contracts/feature-tests/composability/forwarder/src/esdt.rs index bfe9de0d34..844329ae65 100644 --- a/contracts/feature-tests/composability/forwarder/src/esdt.rs +++ b/contracts/feature-tests/composability/forwarder/src/esdt.rs @@ -32,7 +32,10 @@ pub trait ForwarderEsdtModule: storage::ForwarderStorageModule { #[endpoint] fn send_esdt(&self, to: &ManagedAddress, token_id: TokenIdentifier, amount: &BigUint) { - self.tx().to(to).esdt_refs(&token_id, 0, amount).transfer(); + self.tx() + .to(to) + .single_esdt(&token_id, 0, amount) + .transfer(); } #[payable("*")] @@ -44,7 +47,7 @@ pub trait ForwarderEsdtModule: storage::ForwarderStorageModule { self.tx() .to(&to) - .esdt_refs(&token_id, 0, &amount_to_send) + .single_esdt(&token_id, 0, &amount_to_send) .transfer(); } @@ -58,11 +61,11 @@ pub trait ForwarderEsdtModule: storage::ForwarderStorageModule { ) { self.tx() .to(to) - .esdt_refs(&token_id, 0, amount_first_time) + .single_esdt(&token_id, 0, amount_first_time) .transfer(); self.tx() .to(to) - .esdt_refs(&token_id, 0, amount_second_time) + .single_esdt(&token_id, 0, amount_second_time) .transfer(); } diff --git a/contracts/feature-tests/composability/forwarder/src/nft.rs b/contracts/feature-tests/composability/forwarder/src/nft.rs index c21fa1f6c8..65e5eb7de1 100644 --- a/contracts/feature-tests/composability/forwarder/src/nft.rs +++ b/contracts/feature-tests/composability/forwarder/src/nft.rs @@ -273,7 +273,7 @@ pub trait ForwarderNftModule: storage::ForwarderStorageModule { self.tx() .to(&to) - .esdt_refs(&token_identifier, token_nonce, &amount) + .single_esdt(&token_identifier, token_nonce, &amount) .transfer(); self.send_event(&to, &token_identifier, token_nonce, &amount); diff --git a/contracts/feature-tests/rust-testing-framework-tester/src/lib.rs b/contracts/feature-tests/rust-testing-framework-tester/src/lib.rs index dbb55e7fde..dae11542e4 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/src/lib.rs +++ b/contracts/feature-tests/rust-testing-framework-tester/src/lib.rs @@ -93,7 +93,7 @@ pub trait RustTestingFrameworkTester: dummy_module::DummyModule { self.tx() .to(ToCaller) - .esdt_refs(&payment.token_identifier, 0, &amount) + .single_esdt(&payment.token_identifier, 0, &amount) .transfer(); } @@ -114,7 +114,7 @@ pub trait RustTestingFrameworkTester: dummy_module::DummyModule { ) { self.tx() .to(&to) - .esdt_refs(&token_id, nft_nonce, &amount) + .single_esdt(&token_id, nft_nonce, &amount) .transfer(); } diff --git a/contracts/modules/src/bonding_curve/utils/user_endpoints.rs b/contracts/modules/src/bonding_curve/utils/user_endpoints.rs index 3f4471be95..5eec6451d2 100644 --- a/contracts/modules/src/bonding_curve/utils/user_endpoints.rs +++ b/contracts/modules/src/bonding_curve/utils/user_endpoints.rs @@ -100,7 +100,7 @@ pub trait UserEndpointsModule: storage::StorageModule + events::EventsModule { OptionalValue::Some(nonce) => { self.tx() .to(&caller) - .esdt_refs(&requested_token, nonce, &requested_amount) + .single_esdt(&requested_token, nonce, &requested_amount) .transfer(); if self.nonce_amount(&requested_token, nonce).get() - requested_amount.clone() > 0 { self.nonce_amount(&requested_token, nonce) diff --git a/contracts/modules/src/governance/mod.rs b/contracts/modules/src/governance/mod.rs index 5463975fbb..624a6949e1 100644 --- a/contracts/modules/src/governance/mod.rs +++ b/contracts/modules/src/governance/mod.rs @@ -86,7 +86,7 @@ pub trait GovernanceModule: self.tx() .to(&fee_entry.depositor_addr) - .esdt_refs( + .single_esdt( &payment.token_identifier, payment.token_nonce, &payment.amount, @@ -424,7 +424,7 @@ pub trait GovernanceModule: let payment = fee_entry.tokens; self.tx() .to(&fee_entry.depositor_addr) - .esdt_refs( + .single_esdt( &payment.token_identifier, payment.token_nonce, &payment.amount, diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index 519c71158d..b55e486241 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -197,7 +197,7 @@ where ) { Tx::new_tx_from_sc() .to(to) - .esdt_refs(token_identifier, token_nonce, amount) + .single_esdt(token_identifier, token_nonce, amount) .transfer(); } diff --git a/framework/base/src/storage/mappers/token/fungible_token_mapper.rs b/framework/base/src/storage/mappers/token/fungible_token_mapper.rs index a2df87584e..53f07eab56 100644 --- a/framework/base/src/storage/mappers/token/fungible_token_mapper.rs +++ b/framework/base/src/storage/mappers/token/fungible_token_mapper.rs @@ -246,7 +246,7 @@ where fn send_payment(&self, to: &ManagedAddress, payment: &EsdtTokenPayment) { Tx::new_tx_from_sc() .to(to) - .esdt_refs(&payment.token_identifier, 0, &payment.amount) + .single_esdt(&payment.token_identifier, 0, &payment.amount) .transfer(); } } diff --git a/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs b/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs index a02f9d7d07..a49db9846b 100644 --- a/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs +++ b/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs @@ -371,7 +371,7 @@ where fn send_payment(&self, to: &ManagedAddress, payment: &EsdtTokenPayment) { Tx::new_tx_from_sc() .to(to) - .esdt_refs( + .single_esdt( &payment.token_identifier, payment.token_nonce, &payment.amount, diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 27b11f59f8..583e038625 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -207,7 +207,7 @@ where /// Sets a single token payment, with the token identifier and amount kept as references. /// /// This is handy whem we only want one ESDT transfer and we want to avoid unnecessary object clones. - pub fn esdt_refs<'a>( + pub fn single_esdt<'a>( self, token_identifier: &'a TokenIdentifier, token_nonce: u64, From e168ede6ba1002700b0306740aec07adc8872bb1 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sat, 23 Mar 2024 02:02:50 +0200 Subject: [PATCH 171/461] clean up multi-esdt transfer-execute call --- .../tx_payment/tx_payment_multi_esdt.rs | 23 ++++++------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs index 3c1a554d03..39f0e6a64c 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs @@ -20,22 +20,13 @@ where gas_limit: u64, fc: FunctionCall, ) { - match self.len() { - 0 => ().perform_transfer_execute(env, to, gas_limit, fc), - 1 => self - .get(0) - .as_refs() - .perform_transfer_execute(env, to, gas_limit, fc), - _ => { - let _ = SendRawWrapper::::new().multi_esdt_transfer_execute( - to, - self, - gas_limit, - &fc.function_name, - &fc.arg_buffer, - ); - }, - } + let _ = SendRawWrapper::::new().multi_esdt_transfer_execute( + to, + self, + gas_limit, + &fc.function_name, + &fc.arg_buffer, + ); } fn with_normalized( From f1d0737565f6b52b58ce9ce702a4695586196f57 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sat, 23 Mar 2024 02:11:49 +0200 Subject: [PATCH 172/461] unified sytax - remove direct_multi usage in contracts --- contracts/examples/digital-cash/src/digital_cash.rs | 6 ++++-- .../digital-cash/src/signature_operations.rs | 12 ++++++++---- .../src/esdt_transfer_with_fee.rs | 5 ++--- .../src/bonding_curve/utils/owner_endpoints.rs | 2 +- .../src/bonding_curve/utils/user_endpoints.rs | 2 +- contracts/modules/src/token_merge/mod.rs | 12 ++++++++---- contracts/modules/src/transfer_role_proxy.rs | 6 ++++-- 7 files changed, 28 insertions(+), 17 deletions(-) diff --git a/contracts/examples/digital-cash/src/digital_cash.rs b/contracts/examples/digital-cash/src/digital_cash.rs index e1384d1742..97875a1a15 100644 --- a/contracts/examples/digital-cash/src/digital_cash.rs +++ b/contracts/examples/digital-cash/src/digital_cash.rs @@ -62,8 +62,10 @@ pub trait DigitalCash: } } if !collected_esdt_fees.is_empty() { - self.send() - .direct_multi(&caller_address, &collected_esdt_fees); + self.tx() + .to(&caller_address) + .multi_esdt_ref(&collected_esdt_fees) + .transfer(); } } diff --git a/contracts/examples/digital-cash/src/signature_operations.rs b/contracts/examples/digital-cash/src/signature_operations.rs index 5a60851143..f729cb6061 100644 --- a/contracts/examples/digital-cash/src/signature_operations.rs +++ b/contracts/examples/digital-cash/src/signature_operations.rs @@ -40,8 +40,10 @@ pub trait SignatureOperationsModule: storage::StorageModule + helpers::HelpersMo } if !esdt_funds.is_empty() { - self.send() - .direct_multi(&deposit.depositor_address, &esdt_funds); + self.tx() + .to(&deposit.depositor_address) + .multi_esdt(esdt_funds) + .transfer(); } } @@ -79,8 +81,10 @@ pub trait SignatureOperationsModule: storage::StorageModule + helpers::HelpersMo .transfer(); } if !deposit.esdt_funds.is_empty() { - self.send() - .direct_multi(&caller_address, &deposit.esdt_funds); + self.tx() + .to(&caller_address) + .multi_esdt_ref(&deposit.esdt_funds) + .transfer(); } if deposited_fee.amount > 0 { self.send_fee_to_address(&deposited_fee, &deposit.depositor_address); diff --git a/contracts/examples/esdt-transfer-with-fee/src/esdt_transfer_with_fee.rs b/contracts/examples/esdt-transfer-with-fee/src/esdt_transfer_with_fee.rs index 6133e5500f..fc47ed9acd 100644 --- a/contracts/examples/esdt-transfer-with-fee/src/esdt_transfer_with_fee.rs +++ b/contracts/examples/esdt-transfer-with-fee/src/esdt_transfer_with_fee.rs @@ -40,8 +40,7 @@ pub trait EsdtTransferWithFee { } self.paid_fees().clear(); - let caller = self.blockchain().get_caller(); - self.send().direct_multi(&caller, &fees); + self.tx().to(ToCaller).multi_esdt_ref(&fees).transfer(); } #[payable("*")] @@ -82,7 +81,7 @@ pub trait EsdtTransferWithFee { }, } } - self.send().direct_multi(&address, &new_payments); + self.tx().to(&address).multi_esdt(new_payments).transfer(); } fn get_payment_after_fees( diff --git a/contracts/modules/src/bonding_curve/utils/owner_endpoints.rs b/contracts/modules/src/bonding_curve/utils/owner_endpoints.rs index 007eda5fb7..820ba41446 100644 --- a/contracts/modules/src/bonding_curve/utils/owner_endpoints.rs +++ b/contracts/modules/src/bonding_curve/utils/owner_endpoints.rs @@ -179,7 +179,7 @@ pub trait OwnerEndpointsModule: storage::StorageModule + events::EventsModule { self.bonding_curve(&token).clear(); } self.owned_tokens(&caller).clear(); - self.send().direct_multi(&caller, &tokens_to_claim); + self.tx().to(&caller).multi_esdt(tokens_to_claim).transfer(); if egld_to_claim > BigUint::zero() { self.tx().to(&caller).egld(&egld_to_claim).transfer(); } diff --git a/contracts/modules/src/bonding_curve/utils/user_endpoints.rs b/contracts/modules/src/bonding_curve/utils/user_endpoints.rs index 5eec6451d2..d81fc4f2b1 100644 --- a/contracts/modules/src/bonding_curve/utils/user_endpoints.rs +++ b/contracts/modules/src/bonding_curve/utils/user_endpoints.rs @@ -158,7 +158,7 @@ pub trait UserEndpointsModule: storage::StorageModule + events::EventsModule { } } - self.send().direct_multi(caller, &tokens_to_send); + self.tx().to(caller).multi_esdt(tokens_to_send).transfer(); self.token_details(&token) .update(|token_ownership| token_ownership.token_nonces = nonces); diff --git a/contracts/modules/src/token_merge/mod.rs b/contracts/modules/src/token_merge/mod.rs index 024626e2f1..0acdce1af8 100644 --- a/contracts/modules/src/token_merge/mod.rs +++ b/contracts/modules/src/token_merge/mod.rs @@ -118,8 +118,10 @@ pub trait TokenMergeModule: .esdt_local_burn(&token.token_identifier, token.token_nonce, &token.amount); } - let caller = self.blockchain().get_caller(); - self.send().direct_multi(&caller, &output_payments); + self.tx() + .to(ToCaller) + .multi_esdt_ref(&output_payments) + .transfer(); output_payments } @@ -165,8 +167,10 @@ pub trait TokenMergeModule: ); tokens_to_remove.push(new_merged_token); - let caller = self.blockchain().get_caller(); - self.send().direct_multi(&caller, &tokens_to_remove); + self.tx() + .to(ToCaller) + .multi_esdt_ref(&tokens_to_remove) + .transfer(); tokens_to_remove } diff --git a/contracts/modules/src/transfer_role_proxy.rs b/contracts/modules/src/transfer_role_proxy.rs index 80995eff04..2c272eb01b 100644 --- a/contracts/modules/src/transfer_role_proxy.rs +++ b/contracts/modules/src/transfer_role_proxy.rs @@ -109,8 +109,10 @@ pub trait TransferRoleProxyModule { ManagedAsyncCallResult::Ok(return_values) => return_values, ManagedAsyncCallResult::Err(err) => { if !initial_payments.is_empty() { - self.send() - .direct_multi(&original_caller, &initial_payments); + self.tx() + .to(&original_caller) + .multi_esdt(initial_payments) + .transfer(); } let mut err_result = MultiValueEncoded::new(); From 7228575a639f9784a2348fe222f1a30ca8faa13a Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sat, 23 Mar 2024 02:46:26 +0200 Subject: [PATCH 173/461] ToCaller optimization --- .../src/api/managed_types/const_handles.rs | 3 +++ .../types/interaction/tx_to/tx_to_caller.rs | 19 +++++++------------ 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/framework/base/src/api/managed_types/const_handles.rs b/framework/base/src/api/managed_types/const_handles.rs index bd92bcc1db..1657d18e67 100644 --- a/framework/base/src/api/managed_types/const_handles.rs +++ b/framework/base/src/api/managed_types/const_handles.rs @@ -22,6 +22,9 @@ pub const CALLBACK_CLOSURE_ARGS_BUFFER: RawHandle = -23; pub const MBUF_TEMPORARY_1: RawHandle = -25; pub const MBUF_TEMPORARY_2: RawHandle = -26; +pub const ADDRESS_CALLER: RawHandle = -30; +pub const ADDRESS_SELF: RawHandle = -31; + pub const NEW_HANDLE_START_FROM: RawHandle = -100; // > -100 reserved for APIs /// Used as a flag. Do not use as a regular handle. diff --git a/framework/base/src/types/interaction/tx_to/tx_to_caller.rs b/framework/base/src/types/interaction/tx_to/tx_to_caller.rs index 5c1668d38d..1e3b59db73 100644 --- a/framework/base/src/types/interaction/tx_to/tx_to_caller.rs +++ b/framework/base/src/types/interaction/tx_to/tx_to_caller.rs @@ -1,7 +1,7 @@ use crate::{ - api::{BlockchainApi, CallTypeApi}, + api::{const_handles, use_raw_handle, BlockchainApi, BlockchainApiImpl, CallTypeApi}, contract_base::BlockchainWrapper, - types::{AnnotatedValue, ManagedAddress, ManagedBuffer, TxScEnv}, + types::{AnnotatedValue, ManagedAddress, ManagedBuffer, ManagedType, TxScEnv}, }; use super::{TxTo, TxToSpecified}; @@ -9,23 +9,16 @@ use super::{TxTo, TxToSpecified}; /// Indicates that transaction should be sent to the caller (the sender of the current transaction). pub struct ToCaller; -fn get_caller() -> ManagedAddress -where - Api: CallTypeApi + BlockchainApi, -{ - BlockchainWrapper::::new().get_caller() -} - impl AnnotatedValue, ManagedAddress> for ToCaller where Api: CallTypeApi + BlockchainApi, { fn annotation(&self, env: &TxScEnv) -> ManagedBuffer { - get_caller::().hex_expr() + self.with_address_ref(env, |addr_ref| addr_ref.hex_expr()) } fn into_value(self, _env: &TxScEnv) -> ManagedAddress { - get_caller::() + BlockchainWrapper::::new().get_caller() } } @@ -38,6 +31,8 @@ where where F: FnOnce(&ManagedAddress) -> R, { - f(&get_caller::()) + let caller_handle: Api::ManagedBufferHandle = use_raw_handle(const_handles::ADDRESS_CALLER); + Api::blockchain_api_impl().load_caller_managed(caller_handle.clone()); + f(&ManagedAddress::from_handle(caller_handle)) } } From 4cce48246bc00397320f84b64a218c7b13775f32 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sat, 23 Mar 2024 02:46:34 +0200 Subject: [PATCH 174/461] ToSelf implementation --- framework/base/src/types/interaction/tx_to.rs | 2 + .../src/types/interaction/tx_to/tx_to_self.rs | 38 +++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 framework/base/src/types/interaction/tx_to/tx_to_self.rs diff --git a/framework/base/src/types/interaction/tx_to.rs b/framework/base/src/types/interaction/tx_to.rs index 13c78b5da6..6d964bd0b5 100644 --- a/framework/base/src/types/interaction/tx_to.rs +++ b/framework/base/src/types/interaction/tx_to.rs @@ -1,6 +1,8 @@ mod tx_to_caller; +mod tx_to_self; pub use tx_to_caller::ToCaller; +pub use tx_to_self::ToSelf; use crate::types::{heap::Address, ManagedAddress}; diff --git a/framework/base/src/types/interaction/tx_to/tx_to_self.rs b/framework/base/src/types/interaction/tx_to/tx_to_self.rs new file mode 100644 index 0000000000..a4adfaa429 --- /dev/null +++ b/framework/base/src/types/interaction/tx_to/tx_to_self.rs @@ -0,0 +1,38 @@ +use crate::{ + api::{const_handles, use_raw_handle, BlockchainApi, BlockchainApiImpl, CallTypeApi}, + contract_base::BlockchainWrapper, + types::{AnnotatedValue, ManagedAddress, ManagedBuffer, ManagedType, TxScEnv}, +}; + +use super::{TxTo, TxToSpecified}; + +/// Indicates that transaction should be sent to itself. +pub struct ToSelf; + +impl AnnotatedValue, ManagedAddress> for ToSelf +where + Api: CallTypeApi + BlockchainApi, +{ + fn annotation(&self, env: &TxScEnv) -> ManagedBuffer { + self.with_address_ref(env, |addr_ref| addr_ref.hex_expr()) + } + + fn into_value(self, _env: &TxScEnv) -> ManagedAddress { + BlockchainWrapper::::new().get_sc_address() + } +} + +impl TxTo> for ToSelf where Api: CallTypeApi + BlockchainApi {} +impl TxToSpecified> for ToSelf +where + Api: CallTypeApi + BlockchainApi, +{ + fn with_address_ref(&self, env: &TxScEnv, f: F) -> R + where + F: FnOnce(&ManagedAddress) -> R, + { + let sc_address_handle: Api::ManagedBufferHandle = use_raw_handle(const_handles::ADDRESS_CALLER); + Api::blockchain_api_impl().load_sc_address_managed(sc_address_handle.clone()); + f(&ManagedAddress::from_handle(sc_address_handle)) + } +} From 4f18e7b8596ded05860b56bd9afe9af6b2c0871b Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sat, 23 Mar 2024 03:03:12 +0200 Subject: [PATCH 175/461] call_local_esdt_built_in_function refactor --- .../contract_base/wrappers/send_wrapper.rs | 58 +++++++++++-------- 1 file changed, 33 insertions(+), 25 deletions(-) diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index b55e486241..83972d0b28 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -12,6 +12,7 @@ use crate::{ }, codec, esdt::ESDTSystemSmartContractProxy, + proxy_imports::{ReturnsRaw, ToSelf}, types::{ BigUint, ContractCall, ContractCallNoPayment, EgldOrEsdtTokenIdentifier, EsdtTokenPayment, ManagedAddress, ManagedArgBuffer, ManagedBuffer, ManagedType, ManagedVec, TokenIdentifier, @@ -380,11 +381,31 @@ where pub fn call_local_esdt_built_in_function( &self, gas: u64, - endpoint_name: &ManagedBuffer, - arg_buffer: &ManagedArgBuffer, + endpoint_name: ManagedBuffer, + arg_buffer: ManagedArgBuffer, ) -> ManagedVec> { - self.send_raw_wrapper() - .call_local_esdt_built_in_function(gas, endpoint_name, arg_buffer) + Tx::new_tx_from_sc() + .to(ToSelf) + .with_gas_limit(gas) + .raw_call() + .function_name(endpoint_name) + .arguments_raw(arg_buffer) + .returns(ReturnsRaw) + .sync_call() + } + + fn call_local_esdt_built_in_function_minimal( + &self, + function_name: &str, + arg_buffer: ManagedArgBuffer, + ) { + Tx::new_tx_from_sc() + .to(ToSelf) + .with_gas_limit(A::blockchain_api_impl().get_gas_left()) + .raw_call() + .function_name(function_name) + .arguments_raw(arg_buffer) + .sync_call() } /// Allows synchronous minting of ESDT/SFT (depending on nonce). Execution is resumed afterwards. @@ -410,11 +431,7 @@ where 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, - ); + self.call_local_esdt_built_in_function_minimal(func_name, arg_buffer); } /// Allows synchronous minting of ESDT/SFT (depending on nonce). Execution is resumed afterwards. @@ -456,11 +473,7 @@ where 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, - ); + self.call_local_esdt_built_in_function_minimal(func_name, arg_buffer); } /// Allows synchronous burning of ESDT/SFT/NFT (depending on nonce). Execution is resumed afterwards. @@ -549,8 +562,8 @@ where 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, + ManagedBuffer::from(ESDT_NFT_CREATE_FUNC_NAME), + arg_buffer, ); if let Some(first_result_bytes) = output.try_get(0) { @@ -770,11 +783,7 @@ where arg_buffer.push_arg(uri); } - let _ = self.call_local_esdt_built_in_function( - A::blockchain_api_impl().get_gas_left(), - &ManagedBuffer::from(ESDT_NFT_ADD_URI_FUNC_NAME), - &arg_buffer, - ); + self.call_local_esdt_built_in_function_minimal(ESDT_NFT_ADD_URI_FUNC_NAME, arg_buffer); } /// Changes attributes of an NFT, via a synchronous builtin function call. @@ -789,10 +798,9 @@ where arg_buffer.push_arg(nft_nonce); arg_buffer.push_arg(new_attributes); - let _ = self.call_local_esdt_built_in_function( - A::blockchain_api_impl().get_gas_left(), - &ManagedBuffer::from(ESDT_NFT_UPDATE_ATTRIBUTES_FUNC_NAME), - &arg_buffer, + self.call_local_esdt_built_in_function_minimal( + ESDT_NFT_UPDATE_ATTRIBUTES_FUNC_NAME, + arg_buffer, ); } } From 10c8b72ec3f2caeab5ec3e6a3e9f9988b260ce06 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 25 Mar 2024 09:46:22 +0200 Subject: [PATCH 176/461] removed duplicate RHListScenario trait --- framework/snippets/src/itx.rs | 4 - .../snippets/src/itx/interactor_rh_list.rs | 51 ------------- .../src/itx/interactor_rh_list_item.rs | 76 ------------------- 3 files changed, 131 deletions(-) delete mode 100644 framework/snippets/src/itx/interactor_rh_list.rs delete mode 100644 framework/snippets/src/itx/interactor_rh_list_item.rs diff --git a/framework/snippets/src/itx.rs b/framework/snippets/src/itx.rs index dd34244999..8cef20e699 100644 --- a/framework/snippets/src/itx.rs +++ b/framework/snippets/src/itx.rs @@ -5,13 +5,9 @@ mod interactor_env_deploy; mod interactor_env_exec; mod interactor_env_query; mod interactor_env_transf; -mod interactor_rh_list; -mod interactor_rh_list_item; pub use interactor_env::*; pub use interactor_env_deploy::*; pub use interactor_env_exec::InteractorEnvExec; pub use interactor_env_query::InteractorEnvQuery; pub use interactor_env_transf::*; -pub use interactor_rh_list::*; -pub use interactor_rh_list_item::*; diff --git a/framework/snippets/src/itx/interactor_rh_list.rs b/framework/snippets/src/itx/interactor_rh_list.rs deleted file mode 100644 index e48c94dc5f..0000000000 --- a/framework/snippets/src/itx/interactor_rh_list.rs +++ /dev/null @@ -1,51 +0,0 @@ -use multiversx_sc_scenario::{ - multiversx_sc::types::{ConsNoRet, ConsRet, OriginalResultMarker, RHList, RHListItem, TxEnv}, - scenario_model::TxResponse, - RHListItemScenario, -}; - -pub trait RHListScenario: RHList -where - Env: TxEnv, -{ - fn item_scenario_result(self, tx_response: &TxResponse) -> Self::ListReturns; -} - -impl RHListScenario for () -where - Env: TxEnv, -{ - fn item_scenario_result(self, tx_response: &TxResponse) -> Self::ListReturns {} -} - -impl RHListScenario for OriginalResultMarker -where - Env: TxEnv, -{ - fn item_scenario_result(self, tx_response: &TxResponse) -> Self::ListReturns {} -} - -impl RHListScenario for ConsRet -where - Env: TxEnv, - Head: RHListItemScenario, - Tail: RHListScenario, -{ - fn item_scenario_result(self, tx_response: &TxResponse) -> Self::ListReturns { - let head_result = self.head.item_scenario_result(tx_response); - let tail_result = self.tail.item_scenario_result(tx_response); - (head_result, tail_result) - } -} - -impl RHListScenario for ConsNoRet -where - Env: TxEnv, - Head: RHListItemScenario, - Tail: RHListScenario, -{ - fn item_scenario_result(self, tx_response: &TxResponse) -> Self::ListReturns { - self.head.item_scenario_result(tx_response); - self.tail.item_scenario_result(tx_response) - } -} diff --git a/framework/snippets/src/itx/interactor_rh_list_item.rs b/framework/snippets/src/itx/interactor_rh_list_item.rs deleted file mode 100644 index 7a6063fbc6..0000000000 --- a/framework/snippets/src/itx/interactor_rh_list_item.rs +++ /dev/null @@ -1,76 +0,0 @@ -use multiversx_sc_scenario::{ - api::StaticApi, - multiversx_sc::{ - codec::{CodecFrom, TopDecodeMulti, TopEncodeMulti}, - types::{ - ManagedAddress, RHList, RHListItem, ReturnsExact, ReturnsSimilar, TxEnv, - WithResultNewAddress, WithResultSimilar, - }, - }, - scenario_model::{TxResponse, TypedResponse}, -}; - -pub trait RHListItemScenario: RHListItem -where - Env: TxEnv, -{ - fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns; -} - -impl RHListItemScenario for ReturnsExact -where - Env: TxEnv, - Original: TopDecodeMulti, -{ - fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns { - let response = TypedResponse::::from_raw(tx_response); - response - .result - .expect("ReturnsExact expects that transaction is successful") - } -} - -impl RHListItemScenario for ReturnsSimilar -where - Env: TxEnv, - Original: TopEncodeMulti, - T: CodecFrom, -{ - fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns { - let response = TypedResponse::::from_raw(tx_response); - response - .result - .expect("ReturnsSimilar expects that transaction is successful") - } -} - -impl RHListItemScenario for WithResultSimilar -where - Env: TxEnv, - Original: TopEncodeMulti, - T: CodecFrom, - F: FnOnce(T), -{ - fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns { - let response = TypedResponse::::from_raw(tx_response); - let value = response - .result - .expect("ReturnsExact expects that transaction is successful"); - (self.f)(value); - } -} - -impl RHListItemScenario for WithResultNewAddress -where - Env: TxEnv, - F: FnOnce(&ManagedAddress), -{ - fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns { - let new_address = tx_response - .new_deployed_address - .clone() - .expect("missing returned address"); - - (self.f)(&ManagedAddress::from_address(&new_address)); - } -} From da7e01ba578eff1af63a86e74be925a9b0148b73 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 25 Mar 2024 13:00:35 +0200 Subject: [PATCH 177/461] Result handler processing traits generic in RawResult type --- .../src/types/interaction/tx_call_deploy.rs | 99 ++++--------------- .../src/types/interaction/tx_call_sync.rs | 82 ++------------- .../base/src/types/interaction/tx_rh_list.rs | 2 + .../interaction/tx_rh_list/returns_bt.rs | 27 +---- .../interaction/tx_rh_list/returns_exact.rs | 17 ++-- .../tx_rh_list/returns_new_address.rs | 16 +-- .../interaction/tx_rh_list/returns_raw.rs | 27 ++--- .../interaction/tx_rh_list/returns_similar.rs | 14 ++- .../interaction/tx_rh_list/tx_rh_list_exec.rs | 68 +++++++++++++ .../tx_rh_list/with_result_exact.rs | 14 ++- .../tx_rh_list/with_result_new_address.rs | 17 ++-- .../interaction/tx_rh_list/with_result_raw.rs | 14 ++- .../tx_rh_list/with_result_similar.rs | 14 ++- .../src/types/interaction/tx_to/tx_to_self.rs | 3 +- framework/scenario/src/facade/world_tx.rs | 5 +- .../facade/world_tx/scenario_env_deploy.rs | 8 +- .../src/facade/world_tx/scenario_env_exec.rs | 8 +- .../src/facade/world_tx/scenario_env_query.rs | 12 +-- .../src/facade/world_tx/scenario_env_util.rs | 8 +- ...io_rh_list_item.rs => scenario_rh_impl.rs} | 31 +++--- .../src/facade/world_tx/scenario_rh_list.rs | 51 ---------- .../facade/world_tx/with_tx_raw_response.rs | 10 +- .../snippets/src/itx/interactor_env_deploy.rs | 15 ++- .../snippets/src/itx/interactor_env_exec.rs | 12 +-- .../snippets/src/itx/interactor_env_query.rs | 12 +-- .../snippets/src/itx/interactor_env_transf.rs | 6 +- 26 files changed, 211 insertions(+), 381 deletions(-) create mode 100644 framework/base/src/types/interaction/tx_rh_list/tx_rh_list_exec.rs rename framework/scenario/src/facade/world_tx/{scenario_rh_list_item.rs => scenario_rh_impl.rs} (57%) delete mode 100644 framework/scenario/src/facade/world_tx/scenario_rh_list.rs diff --git a/framework/base/src/types/interaction/tx_call_deploy.rs b/framework/base/src/types/interaction/tx_call_deploy.rs index de2e943563..c5f948ea32 100644 --- a/framework/base/src/types/interaction/tx_call_deploy.rs +++ b/framework/base/src/types/interaction/tx_call_deploy.rs @@ -9,87 +9,16 @@ use crate::{ use super::{ contract_call_exec::decode_result, Code, ConsNoRet, ConsRet, DeployCall, FromSource, - OriginalResultMarker, RHList, RHListItem, Tx, TxCodeValue, TxEmptyResultHandler, TxEnv, - TxFromSourceValue, TxGas, TxPaymentEgldOnly, TxResultHandler, TxScEnv, + OriginalResultMarker, RHList, RHListExec, RHListItem, Tx, TxCodeValue, TxEmptyResultHandler, + TxEnv, TxFromSourceValue, TxGas, TxPaymentEgldOnly, TxResultHandler, TxScEnv, }; -pub trait RHListItemDeploy: RHListItem +pub struct DeployRawResult where - Env: TxEnv, -{ - fn item_deploy_result( - self, - new_address: &ManagedAddress, - raw_results: &ManagedVec>, - ) -> Self::Returns; -} - -pub trait RHListDeploy: RHList -where - Env: TxEnv, -{ - fn list_deploy_result( - self, - new_address: &ManagedAddress, - raw_results: &ManagedVec>, - ) -> Self::ListReturns; -} - -impl RHListDeploy for () -where - Env: TxEnv, -{ - fn list_deploy_result( - self, - _new_address: &ManagedAddress, - _raw_results: &ManagedVec>, - ) -> Self::ListReturns { - } -} - -impl RHListDeploy for OriginalResultMarker -where - Env: TxEnv, -{ - fn list_deploy_result( - self, - _new_address: &ManagedAddress, - _raw_results: &ManagedVec>, - ) -> Self::ListReturns { - } -} - -impl RHListDeploy for ConsRet -where - Env: TxEnv, - Head: RHListItemDeploy, - Tail: RHListDeploy, -{ - fn list_deploy_result( - self, - new_address: &ManagedAddress, - raw_results: &ManagedVec>, - ) -> Self::ListReturns { - let head_result = self.head.item_deploy_result(new_address, raw_results); - let tail_result = self.tail.list_deploy_result(new_address, raw_results); - (head_result, tail_result) - } -} - -impl RHListDeploy for ConsNoRet -where - Env: TxEnv, - Head: RHListItemDeploy, - Tail: RHListDeploy, + Api: CallTypeApi, { - fn list_deploy_result( - self, - new_address: &ManagedAddress, - raw_results: &ManagedVec>, - ) -> Self::ListReturns { - self.head.item_deploy_result(new_address, raw_results); - self.tail.list_deploy_result(new_address, raw_results) - } + pub new_address: ManagedAddress, + pub raw_results: ManagedVec>, } impl @@ -165,14 +94,18 @@ where Payment: TxPaymentEgldOnly>, Gas: TxGas>, CodeValue: TxCodeValue>, - RH: RHListDeploy>, + RH: RHListExec, TxScEnv>, RH::ListReturns: NestedTupleFlatten, { /// Synchronously deploys a contract. pub fn sync_call(self) -> ::Unpacked { let (new_address, raw_results, result_handler) = self.execute_deploy_raw(); - let tuple_result = result_handler.list_deploy_result(&new_address, &raw_results); + let deploy_raw_result = DeployRawResult { + new_address, + raw_results, + }; + let tuple_result = result_handler.list_process_result(&deploy_raw_result); tuple_result.flatten_unpack() } } @@ -192,14 +125,18 @@ where Payment: TxPaymentEgldOnly>, Gas: TxGas>, FromSourceValue: TxFromSourceValue>, - RH: RHListDeploy>, + RH: RHListExec, TxScEnv>, RH::ListReturns: NestedTupleFlatten, { /// Synchronously deploys a contract from source. pub fn sync_call(self) -> ::Unpacked { let (new_address, raw_results, result_handler) = self.execute_deploy_from_source_raw(); - let tuple_result = result_handler.list_deploy_result(&new_address, &raw_results); + let deploy_raw_result = DeployRawResult { + new_address, + raw_results, + }; + let tuple_result = result_handler.list_process_result(&deploy_raw_result); tuple_result.flatten_unpack() } } diff --git a/framework/base/src/types/interaction/tx_call_sync.rs b/framework/base/src/types/interaction/tx_call_sync.rs index 61c73a7b0c..9e45d09875 100644 --- a/framework/base/src/types/interaction/tx_call_sync.rs +++ b/framework/base/src/types/interaction/tx_call_sync.rs @@ -9,81 +9,13 @@ use crate::{ use super::{ contract_call_exec::decode_result, BackTransfers, ConsNoRet, ConsRet, OriginalResultMarker, - RHList, RHListItem, Tx, TxDataFunctionCall, TxEnv, TxGas, TxPayment, TxScEnv, TxToSpecified, + RHList, RHListExec, RHListItem, Tx, TxDataFunctionCall, TxEnv, TxGas, TxPayment, TxScEnv, + TxToSpecified, }; -pub trait RHListItemSync: RHListItem +pub struct SyncCallRawResult(pub ManagedVec>) where - Env: TxEnv, -{ - fn item_sync_call_result( - self, - raw_results: &ManagedVec>, - ) -> Self::Returns; -} - -pub trait RHListSync: RHList -where - Env: TxEnv, -{ - fn list_sync_call_result( - self, - raw_results: &ManagedVec>, - ) -> Self::ListReturns; -} - -impl RHListSync for () -where - Env: TxEnv, -{ - fn list_sync_call_result( - self, - _raw_results: &ManagedVec>, - ) -> Self::ListReturns { - } -} - -impl RHListSync for OriginalResultMarker -where - Env: TxEnv, -{ - fn list_sync_call_result( - self, - _raw_results: &ManagedVec>, - ) -> Self::ListReturns { - } -} - -impl RHListSync for ConsRet -where - Env: TxEnv, - Head: RHListItemSync, - Tail: RHListSync, -{ - fn list_sync_call_result( - self, - raw_results: &ManagedVec>, - ) -> Self::ListReturns { - let head_result = self.head.item_sync_call_result(raw_results); - let tail_result = self.tail.list_sync_call_result(raw_results); - (head_result, tail_result) - } -} - -impl RHListSync for ConsNoRet -where - Env: TxEnv, - Head: RHListItemSync, - Tail: RHListSync, -{ - fn list_sync_call_result( - self, - raw_results: &ManagedVec>, - ) -> Self::ListReturns { - self.head.item_sync_call_result(raw_results); - self.tail.list_sync_call_result(raw_results) - } -} + Api: CallTypeApi; impl Tx, (), To, Payment, Gas, FC, RH> where @@ -92,7 +24,7 @@ where Payment: TxPayment>, Gas: TxGas>, FC: TxDataFunctionCall>, - RH: RHListSync>, + RH: RHListExec, TxScEnv>, RH::ListReturns: NestedTupleFlatten, { fn execute_sync_call_raw(self) -> (ManagedVec>, RH) { @@ -121,8 +53,8 @@ where pub fn sync_call(self) -> ::Unpacked { let (raw_result, result_handler) = self.execute_sync_call_raw(); - - let tuple_result = result_handler.list_sync_call_result(&raw_result); + let sync_raw_result = SyncCallRawResult(raw_result); + let tuple_result = result_handler.list_process_result(&sync_raw_result); tuple_result.flatten_unpack() } } diff --git a/framework/base/src/types/interaction/tx_rh_list.rs b/framework/base/src/types/interaction/tx_rh_list.rs index 2cf4743ef2..4e0bb4327c 100644 --- a/framework/base/src/types/interaction/tx_rh_list.rs +++ b/framework/base/src/types/interaction/tx_rh_list.rs @@ -4,6 +4,7 @@ mod returns_new_address; mod returns_raw; mod returns_similar; mod tx_rh_list_cons; +mod tx_rh_list_exec; mod tx_rh_list_item; mod with_result_exact; mod with_result_new_address; @@ -16,6 +17,7 @@ pub use returns_new_address::*; pub use returns_raw::*; pub use returns_similar::*; pub use tx_rh_list_cons::*; +pub use tx_rh_list_exec::*; pub use tx_rh_list_item::*; pub use with_result_new_address::*; pub use with_result_similar::*; diff --git a/framework/base/src/types/interaction/tx_rh_list/returns_bt.rs b/framework/base/src/types/interaction/tx_rh_list/returns_bt.rs index 1f1be042e5..ceda028bcd 100644 --- a/framework/base/src/types/interaction/tx_rh_list/returns_bt.rs +++ b/framework/base/src/types/interaction/tx_rh_list/returns_bt.rs @@ -1,12 +1,9 @@ use crate::{ contract_base::BlockchainWrapper, - types::{ - interaction::tx_call_deploy::RHListItemDeploy, BackTransfers, ManagedAddress, - ManagedBuffer, ManagedVec, RHListItemSync, TxEnv, - }, + types::{BackTransfers, ManagedAddress, ManagedBuffer, ManagedVec, TxEnv}, }; -use super::RHListItem; +use super::{RHListItem, RHListItemExec}; pub struct ReturnsBackTransfers; @@ -17,27 +14,11 @@ where type Returns = BackTransfers; } -impl RHListItemSync for ReturnsBackTransfers +impl RHListItemExec for ReturnsBackTransfers where Env: TxEnv, { - fn item_sync_call_result( - self, - _raw_results: &ManagedVec>, - ) -> Self::Returns { - BlockchainWrapper::::new().get_back_transfers() - } -} - -impl RHListItemDeploy for ReturnsBackTransfers -where - Env: TxEnv, -{ - fn item_deploy_result( - self, - _new_address: &ManagedAddress, - _raw_results: &ManagedVec>, - ) -> Self::Returns { + fn item_process_result(self, _raw_result: &RawResult) -> Self::Returns { BlockchainWrapper::::new().get_back_transfers() } } diff --git a/framework/base/src/types/interaction/tx_rh_list/returns_exact.rs b/framework/base/src/types/interaction/tx_rh_list/returns_exact.rs index edbc82144d..87a25f0fb2 100644 --- a/framework/base/src/types/interaction/tx_rh_list/returns_exact.rs +++ b/framework/base/src/types/interaction/tx_rh_list/returns_exact.rs @@ -1,11 +1,11 @@ use multiversx_sc_codec::TopDecodeMulti; -use crate::types::{ - interaction::contract_call_exec::decode_result, ManagedBuffer, ManagedVec, RHListItemSync, - TxEnv, +use crate::{ + proxy_imports::SyncCallRawResult, + types::{interaction::contract_call_exec::decode_result, ManagedBuffer, ManagedVec, TxEnv}, }; -use super::RHListItem; +use super::{RHListItem, RHListItemExec}; pub struct ReturnsExact; @@ -16,15 +16,12 @@ where type Returns = Original; } -impl RHListItemSync for ReturnsExact +impl RHListItemExec, Env, Original> for ReturnsExact where Env: TxEnv, Original: TopDecodeMulti, { - fn item_sync_call_result( - self, - raw_results: &ManagedVec>, - ) -> Self::Returns { - decode_result::(raw_results.clone()) + fn item_process_result(self, raw_result: &SyncCallRawResult) -> Original { + decode_result::(raw_result.0.clone()) } } diff --git a/framework/base/src/types/interaction/tx_rh_list/returns_new_address.rs b/framework/base/src/types/interaction/tx_rh_list/returns_new_address.rs index c9c271e2dd..2b1b9ccad4 100644 --- a/framework/base/src/types/interaction/tx_rh_list/returns_new_address.rs +++ b/framework/base/src/types/interaction/tx_rh_list/returns_new_address.rs @@ -1,8 +1,6 @@ -use crate::types::{ - interaction::tx_call_deploy::RHListItemDeploy, ManagedAddress, ManagedBuffer, ManagedVec, TxEnv, -}; +use crate::types::{DeployRawResult, ManagedAddress, ManagedBuffer, ManagedVec, TxEnv}; -use super::RHListItem; +use super::{RHListItem, RHListItemExec}; pub struct ReturnsNewAddress; @@ -13,15 +11,11 @@ where type Returns = ManagedAddress; } -impl RHListItemDeploy for ReturnsNewAddress +impl RHListItemExec, Env, Original> for ReturnsNewAddress where Env: TxEnv, { - fn item_deploy_result( - self, - new_address: &ManagedAddress, - _raw_results: &ManagedVec>, - ) -> Self::Returns { - new_address.clone() + fn item_process_result(self, raw_result: &DeployRawResult) -> Self::Returns { + raw_result.new_address.clone() } } diff --git a/framework/base/src/types/interaction/tx_rh_list/returns_raw.rs b/framework/base/src/types/interaction/tx_rh_list/returns_raw.rs index 5f709c04a6..d1b501d77c 100644 --- a/framework/base/src/types/interaction/tx_rh_list/returns_raw.rs +++ b/framework/base/src/types/interaction/tx_rh_list/returns_raw.rs @@ -1,9 +1,9 @@ -use crate::types::{ - interaction::tx_call_deploy::RHListItemDeploy, ManagedAddress, ManagedBuffer, ManagedVec, - RHListItemSync, TxEnv, +use crate::{ + proxy_imports::SyncCallRawResult, + types::{DeployRawResult, ManagedAddress, ManagedBuffer, ManagedVec, TxEnv}, }; -use super::RHListItem; +use super::{RHListItem, RHListItemExec}; pub struct ReturnsRaw; @@ -14,27 +14,20 @@ where type Returns = ManagedVec>; } -impl RHListItemSync for ReturnsRaw +impl RHListItemExec, Env, Original> for ReturnsRaw where Env: TxEnv, { - fn item_sync_call_result( - self, - raw_results: &ManagedVec>, - ) -> Self::Returns { - raw_results.clone() + fn item_process_result(self, raw_result: &SyncCallRawResult) -> Self::Returns { + raw_result.0.clone() } } -impl RHListItemDeploy for ReturnsRaw +impl RHListItemExec, Env, Original> for ReturnsRaw where Env: TxEnv, { - fn item_deploy_result( - self, - _new_address: &ManagedAddress, - raw_results: &ManagedVec>, - ) -> Self::Returns { - raw_results.clone() + fn item_process_result(self, raw_result: &DeployRawResult) -> Self::Returns { + raw_result.raw_results.clone() } } diff --git a/framework/base/src/types/interaction/tx_rh_list/returns_similar.rs b/framework/base/src/types/interaction/tx_rh_list/returns_similar.rs index 1233a9bae0..adfb2f3bdb 100644 --- a/framework/base/src/types/interaction/tx_rh_list/returns_similar.rs +++ b/framework/base/src/types/interaction/tx_rh_list/returns_similar.rs @@ -3,11 +3,11 @@ use core::marker::PhantomData; use multiversx_sc_codec::{CodecFrom, TopEncodeMulti}; use crate::types::{ - interaction::contract_call_exec::decode_result, ManagedBuffer, ManagedVec, RHListItemSync, + interaction::contract_call_exec::decode_result, ManagedBuffer, ManagedVec, SyncCallRawResult, TxEnv, }; -use super::RHListItem; +use super::{RHListItem, RHListItemExec}; pub struct ReturnsSimilar { _phantom: PhantomData, @@ -36,16 +36,14 @@ where type Returns = T; } -impl RHListItemSync for ReturnsSimilar +impl RHListItemExec, Env, Original> + for ReturnsSimilar where Env: TxEnv, Original: TopEncodeMulti, T: CodecFrom, { - fn item_sync_call_result( - self, - raw_results: &ManagedVec>, - ) -> Self::Returns { - decode_result::(raw_results.clone()) + fn item_process_result(self, raw_result: &SyncCallRawResult) -> Self::Returns { + decode_result::(raw_result.0.clone()) } } diff --git a/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_exec.rs b/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_exec.rs new file mode 100644 index 0000000000..cc39d08561 --- /dev/null +++ b/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_exec.rs @@ -0,0 +1,68 @@ +use crate::{proxy_imports::OriginalResultMarker, types::TxEnv}; + +use super::{ConsNoRet, ConsRet, RHList, RHListItem}; + +/// Indicates how result processing will undergo for one specific result handler. +/// +/// Note that the `ResultType` needs to be the first generic type in the definition, +/// so we can add new implementations of the same result handlers for new raw result types in subsequent crates. +pub trait RHListItemExec: RHListItem +where + Env: TxEnv, +{ + fn item_process_result(self, raw_result: &RawResult) -> Self::Returns; +} + +impl RHListItemExec for () +where + Env: TxEnv, +{ + fn item_process_result(self, _raw_result: &RawResult) -> Self::Returns {} +} + +/// Indicates how result processing will undergo for an ensemble of result handlers. +pub trait RHListExec: RHList +where + Env: TxEnv, +{ + fn list_process_result(self, raw_result: &RawResult) -> Self::ListReturns; +} + +impl RHListExec for () +where + Env: TxEnv, +{ + fn list_process_result(self, _raw_result: &RawResult) -> Self::ListReturns {} +} + +impl RHListExec for OriginalResultMarker +where + Env: TxEnv, +{ + fn list_process_result(self, _raw_result: &RawResult) -> Self::ListReturns {} +} + +impl RHListExec for ConsRet +where + Env: TxEnv, + Head: RHListItemExec, + Tail: RHListExec, +{ + fn list_process_result(self, raw_result: &RawResult) -> Self::ListReturns { + let head_result = self.head.item_process_result(raw_result); + let tail_result = self.tail.list_process_result(raw_result); + (head_result, tail_result) + } +} + +impl RHListExec for ConsNoRet +where + Env: TxEnv, + Head: RHListItemExec, + Tail: RHListExec, +{ + fn list_process_result(self, raw_result: &RawResult) -> Self::ListReturns { + self.head.item_process_result(raw_result); + self.tail.list_process_result(raw_result) + } +} diff --git a/framework/base/src/types/interaction/tx_rh_list/with_result_exact.rs b/framework/base/src/types/interaction/tx_rh_list/with_result_exact.rs index f3319c5a07..d3045dca25 100644 --- a/framework/base/src/types/interaction/tx_rh_list/with_result_exact.rs +++ b/framework/base/src/types/interaction/tx_rh_list/with_result_exact.rs @@ -3,11 +3,11 @@ use core::marker::PhantomData; use multiversx_sc_codec::TopDecodeMulti; use crate::types::{ - interaction::contract_call_exec::decode_result, ManagedBuffer, ManagedVec, RHListItemSync, + interaction::contract_call_exec::decode_result, ManagedBuffer, ManagedVec, SyncCallRawResult, TxEnv, }; -use super::RHListItem; +use super::{RHListItem, RHListItemExec}; pub struct WithResultExact where @@ -37,17 +37,15 @@ where type Returns = (); } -impl RHListItemSync for WithResultExact +impl RHListItemExec, Env, Original> + for WithResultExact where Env: TxEnv, Original: TopDecodeMulti, F: FnOnce(Original), { - fn item_sync_call_result( - self, - raw_results: &ManagedVec>, - ) -> Self::Returns { - let t = decode_result::(raw_results.clone()); + fn item_process_result(self, raw_result: &SyncCallRawResult) -> Self::Returns { + let t = decode_result::(raw_result.0.clone()); (self.f)(t) } } diff --git a/framework/base/src/types/interaction/tx_rh_list/with_result_new_address.rs b/framework/base/src/types/interaction/tx_rh_list/with_result_new_address.rs index 64b2894f1f..5dad91eef6 100644 --- a/framework/base/src/types/interaction/tx_rh_list/with_result_new_address.rs +++ b/framework/base/src/types/interaction/tx_rh_list/with_result_new_address.rs @@ -1,10 +1,8 @@ use core::marker::PhantomData; -use crate::types::{ - interaction::tx_call_deploy::RHListItemDeploy, ManagedAddress, ManagedBuffer, ManagedVec, TxEnv, -}; +use crate::types::{DeployRawResult, ManagedAddress, ManagedBuffer, ManagedVec, TxEnv}; -use super::RHListItem; +use super::{RHListItem, RHListItemExec}; pub struct WithResultNewAddress where @@ -36,16 +34,13 @@ where type Returns = (); } -impl RHListItemDeploy for WithResultNewAddress +impl RHListItemExec, Env, Original> + for WithResultNewAddress where Env: TxEnv, F: FnOnce(&ManagedAddress), { - fn item_deploy_result( - self, - new_address: &ManagedAddress, - _raw_results: &ManagedVec>, - ) -> Self::Returns { - (self.f)(new_address); + fn item_process_result(self, raw_result: &DeployRawResult) -> Self::Returns { + (self.f)(&raw_result.new_address); } } diff --git a/framework/base/src/types/interaction/tx_rh_list/with_result_raw.rs b/framework/base/src/types/interaction/tx_rh_list/with_result_raw.rs index 8f288604be..35b4053d2a 100644 --- a/framework/base/src/types/interaction/tx_rh_list/with_result_raw.rs +++ b/framework/base/src/types/interaction/tx_rh_list/with_result_raw.rs @@ -1,8 +1,8 @@ use core::marker::PhantomData; -use crate::types::{ManagedBuffer, ManagedVec, RHListItemSync, TxEnv}; +use crate::types::{ManagedBuffer, ManagedVec, SyncCallRawResult, TxEnv}; -use super::RHListItem; +use super::{RHListItem, RHListItemExec}; pub struct WithResultRaw where @@ -34,15 +34,13 @@ where type Returns = (); } -impl RHListItemSync for WithResultRaw +impl RHListItemExec, Env, Original> + for WithResultRaw where Env: TxEnv, F: FnOnce(&ManagedVec>), { - fn item_sync_call_result( - self, - raw_results: &ManagedVec>, - ) -> Self::Returns { - (self.f)(raw_results) + fn item_process_result(self, raw_result: &SyncCallRawResult) -> Self::Returns { + (self.f)(&raw_result.0) } } diff --git a/framework/base/src/types/interaction/tx_rh_list/with_result_similar.rs b/framework/base/src/types/interaction/tx_rh_list/with_result_similar.rs index c9fd9173b2..d2af475447 100644 --- a/framework/base/src/types/interaction/tx_rh_list/with_result_similar.rs +++ b/framework/base/src/types/interaction/tx_rh_list/with_result_similar.rs @@ -3,11 +3,11 @@ use core::marker::PhantomData; use multiversx_sc_codec::{CodecFrom, TopEncodeMulti}; use crate::types::{ - interaction::contract_call_exec::decode_result, ManagedBuffer, ManagedVec, RHListItemSync, + interaction::contract_call_exec::decode_result, ManagedBuffer, ManagedVec, SyncCallRawResult, TxEnv, }; -use super::RHListItem; +use super::{RHListItem, RHListItemExec}; pub struct WithResultSimilar where @@ -39,18 +39,16 @@ where type Returns = (); } -impl RHListItemSync for WithResultSimilar +impl RHListItemExec, Env, Original> + for WithResultSimilar where Env: TxEnv, Original: TopEncodeMulti, T: CodecFrom, F: FnOnce(T), { - fn item_sync_call_result( - self, - raw_results: &ManagedVec>, - ) -> Self::Returns { - let t = decode_result::(raw_results.clone()); + fn item_process_result(self, raw_result: &SyncCallRawResult) -> Self::Returns { + let t = decode_result::(raw_result.0.clone()); (self.f)(t) } } diff --git a/framework/base/src/types/interaction/tx_to/tx_to_self.rs b/framework/base/src/types/interaction/tx_to/tx_to_self.rs index a4adfaa429..87e068ae6f 100644 --- a/framework/base/src/types/interaction/tx_to/tx_to_self.rs +++ b/framework/base/src/types/interaction/tx_to/tx_to_self.rs @@ -31,7 +31,8 @@ where where F: FnOnce(&ManagedAddress) -> R, { - let sc_address_handle: Api::ManagedBufferHandle = use_raw_handle(const_handles::ADDRESS_CALLER); + let sc_address_handle: Api::ManagedBufferHandle = + use_raw_handle(const_handles::ADDRESS_CALLER); Api::blockchain_api_impl().load_sc_address_managed(sc_address_handle.clone()); f(&ManagedAddress::from_handle(sc_address_handle)) } diff --git a/framework/scenario/src/facade/world_tx.rs b/framework/scenario/src/facade/world_tx.rs index 92f842cf55..4a6fd86317 100644 --- a/framework/scenario/src/facade/world_tx.rs +++ b/framework/scenario/src/facade/world_tx.rs @@ -6,14 +6,11 @@ mod scenario_env_deploy; mod scenario_env_exec; mod scenario_env_query; pub mod scenario_env_util; -mod scenario_rh_list; -mod scenario_rh_list_item; +mod scenario_rh_impl; mod with_tx_raw_response; pub use expr::*; pub use scenario_env::*; pub use scenario_env_exec::ScenarioEnvExec; pub use scenario_env_query::ScenarioEnvQuery; -pub use scenario_rh_list::*; -pub use scenario_rh_list_item::*; pub use with_tx_raw_response::WithRawTxResponse; diff --git a/framework/scenario/src/facade/world_tx/scenario_env_deploy.rs b/framework/scenario/src/facade/world_tx/scenario_env_deploy.rs index d9317a094c..fadd24d78d 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_deploy.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_deploy.rs @@ -4,7 +4,7 @@ use multiversx_chain_scenario_format::serde_raw::ValueSubTree; use multiversx_sc::{ tuple_util::NestedTupleFlatten, types::{ - AnnotatedValue, Code, DeployCall, FunctionCall, ManagedAddress, ManagedBuffer, RHListSync, + AnnotatedValue, Code, DeployCall, FunctionCall, ManagedAddress, ManagedBuffer, RHListExec, Tx, TxBaseWithEnv, TxCodeSource, TxCodeSourceSpecified, TxCodeValue, TxEnv, TxFromSpecified, TxGas, TxPayment, TxToSpecified, }, @@ -16,7 +16,7 @@ use crate::{ ScenarioEnvExec, ScenarioTxEnv, ScenarioTxRun, ScenarioWorld, }; -use super::{scenario_env_util::*, RHListScenario, ScenarioTxEnvData}; +use super::{scenario_env_util::*, ScenarioTxEnvData}; impl<'w, From, Payment, Gas, CodeValue, RH> ScenarioTxRun for Tx< @@ -33,7 +33,7 @@ where Payment: TxPayment>, Gas: TxGas>, CodeValue: TxCodeValue>, - RH: RHListScenario>, + RH: RHListExec>, RH::ListReturns: NestedTupleFlatten, { type Returns = ::Unpacked; @@ -53,7 +53,7 @@ impl ScenarioWorld { Payment: TxPayment, Gas: TxGas, CodeValue: TxCodeValue, - RH: RHListScenario, + RH: RHListExec, F: FnOnce( TxBaseWithEnv, ) -> Tx< diff --git a/framework/scenario/src/facade/world_tx/scenario_env_exec.rs b/framework/scenario/src/facade/world_tx/scenario_env_exec.rs index 3758673006..e19c515c0b 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_exec.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_exec.rs @@ -4,7 +4,7 @@ use multiversx_chain_scenario_format::serde_raw::ValueSubTree; use multiversx_sc::{ tuple_util::NestedTupleFlatten, types::{ - AnnotatedValue, Code, DeployCall, FunctionCall, ManagedAddress, ManagedBuffer, RHListSync, + AnnotatedValue, Code, DeployCall, FunctionCall, ManagedAddress, ManagedBuffer, RHListExec, Tx, TxBaseWithEnv, TxCodeSource, TxCodeSourceSpecified, TxCodeValue, TxEnv, TxFromSpecified, TxGas, TxPayment, TxToSpecified, }, @@ -16,7 +16,7 @@ use crate::{ ScenarioTxEnv, ScenarioTxRun, ScenarioWorld, }; -use super::{scenario_env_util::*, RHListScenario, ScenarioTxEnvData}; +use super::{scenario_env_util::*, ScenarioTxEnvData}; /// Environment for executing transactions. pub struct ScenarioEnvExec<'w> { @@ -49,7 +49,7 @@ where To: TxToSpecified>, Payment: TxPayment>, Gas: TxGas>, - RH: RHListScenario>, + RH: RHListExec>, RH::ListReturns: NestedTupleFlatten, { type Returns = ::Unpacked; @@ -81,7 +81,7 @@ impl ScenarioWorld { To: TxToSpecified, Payment: TxPayment, Gas: TxGas, - RH: RHListScenario, + RH: RHListExec, F: FnOnce( TxBaseWithEnv, ) diff --git a/framework/scenario/src/facade/world_tx/scenario_env_query.rs b/framework/scenario/src/facade/world_tx/scenario_env_query.rs index e7d73ec729..993b4d9636 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_query.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_query.rs @@ -3,14 +3,14 @@ use std::path::PathBuf; use multiversx_sc::{ tuple_util::NestedTupleFlatten, types::{ - AnnotatedValue, FunctionCall, ManagedAddress, Tx, TxBaseWithEnv, TxEnv, TxFromSpecified, - TxGas, TxPayment, TxToSpecified, + AnnotatedValue, FunctionCall, ManagedAddress, RHListExec, Tx, TxBaseWithEnv, TxEnv, + TxFromSpecified, TxGas, TxPayment, TxToSpecified, }, }; use crate::{ - api::StaticApi, scenario_model::TxResponse, RHListScenario, ScenarioTxEnv, ScenarioTxEnvData, - ScenarioTxRun, ScenarioWorld, + api::StaticApi, scenario_model::TxResponse, ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, + ScenarioWorld, }; use super::scenario_env_util::*; @@ -42,7 +42,7 @@ impl<'w, To, RH> ScenarioTxRun for Tx, (), To, (), (), FunctionCall, RH> where To: TxToSpecified>, - RH: RHListScenario>, + RH: RHListExec>, RH::ListReturns: NestedTupleFlatten, { type Returns = ::Unpacked; @@ -64,7 +64,7 @@ impl ScenarioWorld { pub fn chain_query(&mut self, f: F) -> &mut Self where To: TxToSpecified, - RH: RHListScenario, + RH: RHListExec, F: FnOnce( TxBaseWithEnv, ) -> Tx, RH>, diff --git a/framework/scenario/src/facade/world_tx/scenario_env_util.rs b/framework/scenario/src/facade/world_tx/scenario_env_util.rs index 2e75fa3c5d..eca9bc84ed 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_util.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_util.rs @@ -2,7 +2,7 @@ use multiversx_chain_scenario_format::serde_raw::ValueSubTree; use multiversx_sc::{ tuple_util::NestedTupleFlatten, types::{ - AnnotatedValue, Code, DeployCall, FunctionCall, ManagedAddress, ManagedBuffer, RHListSync, + AnnotatedValue, Code, DeployCall, FunctionCall, ManagedAddress, ManagedBuffer, RHListExec, Tx, TxBaseWithEnv, TxCodeSource, TxCodeSourceSpecified, TxCodeValue, TxEnv, TxFromSpecified, TxGas, TxPayment, TxToSpecified, }, @@ -14,7 +14,7 @@ use crate::{ AddressValue, BigUintValue, BytesValue, ScCallStep, ScDeployStep, ScQueryStep, TransferStep, TxResponse, }, - RHListScenario, ScenarioEnvExec, ScenarioWorld, + ScenarioEnvExec, ScenarioWorld, }; pub fn address_annotated(env: &Env, from: Addr) -> AddressValue @@ -148,10 +148,10 @@ pub fn process_result( ) -> ::Unpacked where Env: TxEnv, - RH: RHListScenario, + RH: RHListExec, RH::ListReturns: NestedTupleFlatten, { let response = response.expect("step did not return result"); - let tuple_result = result_handler.item_scenario_result(&response); + let tuple_result = result_handler.list_process_result(&response); tuple_result.flatten_unpack() } diff --git a/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs b/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs similarity index 57% rename from framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs rename to framework/scenario/src/facade/world_tx/scenario_rh_impl.rs index 36440e0313..b0161b52b8 100644 --- a/framework/scenario/src/facade/world_tx/scenario_rh_list_item.rs +++ b/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs @@ -1,8 +1,8 @@ use multiversx_sc::{ codec::{CodecFrom, TopDecodeMulti, TopEncodeMulti}, types::{ - ManagedAddress, RHList, RHListItem, ReturnsExact, ReturnsNewAddress, ReturnsSimilar, TxEnv, - WithResultNewAddress, WithResultSimilar, + ManagedAddress, RHList, RHListItem, RHListItemExec, ReturnsExact, ReturnsNewAddress, + ReturnsSimilar, TxEnv, WithResultNewAddress, WithResultSimilar, }, }; @@ -13,19 +13,12 @@ use crate::{ use super::ScenarioTxEnvData; -pub trait RHListItemScenario: RHListItem -where - Env: TxEnv, -{ - fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns; -} - -impl RHListItemScenario for ReturnsExact +impl RHListItemExec for ReturnsExact where Env: TxEnv, Original: TopDecodeMulti, { - fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns { + fn item_process_result(self, tx_response: &TxResponse) -> Self::Returns { let response = TypedResponse::::from_raw(tx_response); response .result @@ -33,13 +26,13 @@ where } } -impl RHListItemScenario for ReturnsSimilar +impl RHListItemExec for ReturnsSimilar where Env: TxEnv, Original: TopEncodeMulti, T: CodecFrom, { - fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns { + fn item_process_result(self, tx_response: &TxResponse) -> Self::Returns { let response = TypedResponse::::from_raw(tx_response); response .result @@ -47,14 +40,14 @@ where } } -impl RHListItemScenario for WithResultSimilar +impl RHListItemExec for WithResultSimilar where Env: TxEnv, Original: TopEncodeMulti, T: CodecFrom, F: FnOnce(T), { - fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns { + fn item_process_result(self, tx_response: &TxResponse) -> Self::Returns { let response = TypedResponse::::from_raw(tx_response); let value = response .result @@ -63,11 +56,11 @@ where } } -impl RHListItemScenario for ReturnsNewAddress +impl RHListItemExec for ReturnsNewAddress where Env: TxEnv, { - fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns { + fn item_process_result(self, tx_response: &TxResponse) -> Self::Returns { let new_address = tx_response .new_deployed_address .clone() @@ -77,12 +70,12 @@ where } } -impl RHListItemScenario for WithResultNewAddress +impl RHListItemExec for WithResultNewAddress where Env: TxEnv, F: FnOnce(&ManagedAddress), { - fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns { + fn item_process_result(self, tx_response: &TxResponse) -> Self::Returns { let new_address = tx_response .new_deployed_address .clone() diff --git a/framework/scenario/src/facade/world_tx/scenario_rh_list.rs b/framework/scenario/src/facade/world_tx/scenario_rh_list.rs deleted file mode 100644 index 4273b83fe7..0000000000 --- a/framework/scenario/src/facade/world_tx/scenario_rh_list.rs +++ /dev/null @@ -1,51 +0,0 @@ -use multiversx_sc::types::{ConsNoRet, ConsRet, OriginalResultMarker, RHList, RHListItem, TxEnv}; - -use crate::scenario_model::TxResponse; - -use super::RHListItemScenario; - -pub trait RHListScenario: RHList -where - Env: TxEnv, -{ - fn item_scenario_result(self, tx_response: &TxResponse) -> Self::ListReturns; -} - -impl RHListScenario for () -where - Env: TxEnv, -{ - fn item_scenario_result(self, tx_response: &TxResponse) -> Self::ListReturns {} -} - -impl RHListScenario for OriginalResultMarker -where - Env: TxEnv, -{ - fn item_scenario_result(self, tx_response: &TxResponse) -> Self::ListReturns {} -} - -impl RHListScenario for ConsRet -where - Env: TxEnv, - Head: RHListItemScenario, - Tail: RHListScenario, -{ - fn item_scenario_result(self, tx_response: &TxResponse) -> Self::ListReturns { - let head_result = self.head.item_scenario_result(tx_response); - let tail_result = self.tail.item_scenario_result(tx_response); - (head_result, tail_result) - } -} - -impl RHListScenario for ConsNoRet -where - Env: TxEnv, - Head: RHListItemScenario, - Tail: RHListScenario, -{ - fn item_scenario_result(self, tx_response: &TxResponse) -> Self::ListReturns { - self.head.item_scenario_result(tx_response); - self.tail.item_scenario_result(tx_response) - } -} diff --git a/framework/scenario/src/facade/world_tx/with_tx_raw_response.rs b/framework/scenario/src/facade/world_tx/with_tx_raw_response.rs index 51f603a47b..512338aab8 100644 --- a/framework/scenario/src/facade/world_tx/with_tx_raw_response.rs +++ b/framework/scenario/src/facade/world_tx/with_tx_raw_response.rs @@ -2,12 +2,12 @@ use core::marker::PhantomData; use multiversx_sc::{ codec::TopDecodeMulti, - types::{RHListItem, TxEnv}, + types::{RHListItem, RHListItemExec, TxEnv}, }; use crate::scenario_model::TxResponse; -use super::{RHListItemScenario, ScenarioTxEnvData}; +use super::ScenarioTxEnvData; /// Wraps a closure that handles a `TxResponse` object. pub struct WithRawTxResponse(pub F) @@ -22,13 +22,13 @@ where type Returns = (); } -impl RHListItemScenario for WithRawTxResponse +impl RHListItemExec for WithRawTxResponse where Env: TxEnv, Original: TopDecodeMulti, F: FnOnce(&TxResponse), { - fn item_scenario_result(self, tx_response: &TxResponse) -> Self::Returns { - (self.0)(tx_response) + fn item_process_result(self, raw_result: &TxResponse) -> Self::Returns { + (self.0)(raw_result) } } diff --git a/framework/snippets/src/itx/interactor_env_deploy.rs b/framework/snippets/src/itx/interactor_env_deploy.rs index ea11ecc338..d907db498e 100644 --- a/framework/snippets/src/itx/interactor_env_deploy.rs +++ b/framework/snippets/src/itx/interactor_env_deploy.rs @@ -6,14 +6,13 @@ use multiversx_sc_scenario::{ tuple_util::NestedTupleFlatten, types::{ AnnotatedValue, Code, DeployCall, FunctionCall, ManagedAddress, ManagedBuffer, - RHListSync, Tx, TxBaseWithEnv, TxCodeSource, TxCodeSourceSpecified, TxCodeValue, TxEnv, + RHListExec, Tx, TxBaseWithEnv, TxCodeSource, TxCodeSourceSpecified, TxCodeValue, TxEnv, TxFromSpecified, TxGas, TxPayment, TxToSpecified, }, }, scenario_env_util::*, scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep, TxResponse}, - RHListScenario, ScenarioEnvExec, ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, - ScenarioWorld, + ScenarioEnvExec, ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, ScenarioWorld, }; use crate::{Interactor, InteractorPrepareAsync}; @@ -22,7 +21,7 @@ use super::InteractorEnvExec; pub struct InteractorDeployStep<'w, RH> where - RH: RHListScenario>, + RH: RHListExec>, RH::ListReturns: NestedTupleFlatten, { world: &'w mut Interactor, @@ -45,7 +44,7 @@ where Payment: TxPayment>, Gas: TxGas>, CodeValue: TxCodeValue>, - RH: RHListScenario>, + RH: RHListExec>, RH::ListReturns: NestedTupleFlatten, { type Exec = InteractorDeployStep<'w, RH>; @@ -63,7 +62,7 @@ where impl<'w, RH> InteractorDeployStep<'w, RH> where - RH: RHListScenario>, + RH: RHListExec>, RH::ListReturns: NestedTupleFlatten, { pub async fn run(self) -> ::Unpacked { @@ -80,7 +79,7 @@ impl Interactor { Payment: TxPayment, Gas: TxGas, CodeValue: TxCodeValue, - RH: RHListScenario, + RH: RHListExec, F: FnOnce( TxBaseWithEnv, ) -> Tx< @@ -111,7 +110,7 @@ impl Interactor { Payment: TxPayment, Gas: TxGas, CodeValue: TxCodeValue, - RH: RHListScenario, + RH: RHListExec, RH::ListReturns: NestedTupleFlatten, F: FnOnce( TxBaseWithEnv, diff --git a/framework/snippets/src/itx/interactor_env_exec.rs b/framework/snippets/src/itx/interactor_env_exec.rs index dc5269e6e9..bc2d9d20da 100644 --- a/framework/snippets/src/itx/interactor_env_exec.rs +++ b/framework/snippets/src/itx/interactor_env_exec.rs @@ -6,13 +6,13 @@ use multiversx_sc_scenario::{ tuple_util::NestedTupleFlatten, types::{ AnnotatedValue, Code, DeployCall, FunctionCall, ManagedAddress, ManagedBuffer, - RHListSync, Tx, TxBaseWithEnv, TxCodeSource, TxCodeSourceSpecified, TxCodeValue, TxEnv, + RHListExec, Tx, TxBaseWithEnv, TxCodeSource, TxCodeSourceSpecified, TxCodeValue, TxEnv, TxFromSpecified, TxGas, TxPayment, TxToSpecified, }, }, scenario_env_util::*, scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep, TxResponse}, - RHListScenario, ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, ScenarioWorld, + ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, ScenarioWorld, }; use crate::{Interactor, InteractorPrepareAsync}; @@ -43,7 +43,7 @@ impl<'w> ScenarioTxEnv for InteractorEnvExec<'w> { pub struct InteractorCallStep<'w, RH> where - RH: RHListScenario>, + RH: RHListExec>, RH::ListReturns: NestedTupleFlatten, { world: &'w mut Interactor, @@ -58,7 +58,7 @@ where To: TxToSpecified>, Payment: TxPayment>, Gas: TxGas>, - RH: RHListScenario>, + RH: RHListExec>, RH::ListReturns: NestedTupleFlatten, { type Exec = InteractorCallStep<'w, RH>; @@ -82,7 +82,7 @@ where impl<'w, RH> InteractorCallStep<'w, RH> where - RH: RHListScenario>, + RH: RHListExec>, RH::ListReturns: NestedTupleFlatten, { pub async fn run(self) -> ::Unpacked { @@ -105,7 +105,7 @@ impl Interactor { To: TxToSpecified, Payment: TxPayment, Gas: TxGas, - RH: RHListScenario, + RH: RHListExec, F: FnOnce( TxBaseWithEnv, ) diff --git a/framework/snippets/src/itx/interactor_env_query.rs b/framework/snippets/src/itx/interactor_env_query.rs index 20e61e571f..1628215992 100644 --- a/framework/snippets/src/itx/interactor_env_query.rs +++ b/framework/snippets/src/itx/interactor_env_query.rs @@ -5,13 +5,13 @@ use multiversx_sc_scenario::{ multiversx_sc::{ tuple_util::NestedTupleFlatten, types::{ - AnnotatedValue, FunctionCall, ManagedAddress, Tx, TxBaseWithEnv, TxEnv, + AnnotatedValue, FunctionCall, ManagedAddress, RHListExec, Tx, TxBaseWithEnv, TxEnv, TxFromSpecified, TxGas, TxPayment, TxToSpecified, }, }, scenario_env_util::*, scenario_model::{ScQueryStep, TxResponse}, - RHListScenario, ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, ScenarioWorld, + ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, ScenarioWorld, }; use crate::{Interactor, InteractorPrepareAsync}; @@ -41,7 +41,7 @@ impl<'w> ScenarioTxEnv for InteractorEnvQuery<'w> { pub struct InteractorQueryStep<'w, RH> where - RH: RHListScenario>, + RH: RHListExec>, RH::ListReturns: NestedTupleFlatten, { world: &'w mut Interactor, @@ -53,7 +53,7 @@ impl<'w, To, RH> InteractorPrepareAsync for Tx, (), To, (), (), FunctionCall, RH> where To: TxToSpecified>, - RH: RHListScenario>, + RH: RHListExec>, RH::ListReturns: NestedTupleFlatten, { type Exec = InteractorQueryStep<'w, RH>; @@ -70,7 +70,7 @@ where impl<'w, RH> InteractorQueryStep<'w, RH> where - RH: RHListScenario>, + RH: RHListExec>, RH::ListReturns: NestedTupleFlatten, { pub async fn run(self) -> ::Unpacked { @@ -90,7 +90,7 @@ impl Interactor { pub async fn chain_query(&mut self, f: F) -> &mut Self where To: TxToSpecified, - RH: RHListScenario, + RH: RHListExec, F: FnOnce( TxBaseWithEnv, ) -> Tx, RH>, diff --git a/framework/snippets/src/itx/interactor_env_transf.rs b/framework/snippets/src/itx/interactor_env_transf.rs index 993b2b04d6..19a161b18f 100644 --- a/framework/snippets/src/itx/interactor_env_transf.rs +++ b/framework/snippets/src/itx/interactor_env_transf.rs @@ -5,8 +5,8 @@ use multiversx_sc_scenario::{ multiversx_sc::{ tuple_util::NestedTupleFlatten, types::{ - AnnotatedValue, Code, DeployCall, FunctionCall, ManagedAddress, ManagedBuffer, - RHListSync, Tx, TxBaseWithEnv, TxCodeSource, TxCodeSourceSpecified, TxCodeValue, TxEnv, + AnnotatedValue, Code, DeployCall, FunctionCall, ManagedAddress, ManagedBuffer, Tx, + TxBaseWithEnv, TxCodeSource, TxCodeSourceSpecified, TxCodeValue, TxEnv, TxFromSpecified, TxGas, TxPayment, TxToSpecified, }, }, @@ -14,7 +14,7 @@ use multiversx_sc_scenario::{ scenario_model::{ AddressValue, BytesValue, ScCallStep, ScDeployStep, TransferStep, TxResponse, }, - RHListScenario, ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, ScenarioWorld, + ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, ScenarioWorld, }; use crate::{Interactor, InteractorEnvExec, InteractorPrepareAsync}; From cd8f93eed85740349e4df4da30a841e91e551a18 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 25 Mar 2024 17:06:52 +0200 Subject: [PATCH 178/461] Result handler renamed --- .../adder/interact/src/basic_interact.rs | 4 ++-- .../tests/adder_blackbox_chained_test.rs | 6 +++--- .../tests/adder_blackbox_legacy_proxy_test.rs | 6 +++--- .../adder/tests/adder_blackbox_test.rs | 6 +++--- .../multisig/tests/multisig_blackbox_test.rs | 4 ++-- .../src/forwarder_raw_deploy_upgrade.rs | 2 +- .../forwarder-raw/src/forwarder_raw_sync.rs | 2 +- .../contract_base/wrappers/send_wrapper.rs | 4 ++-- .../types/interaction/tx_result_handler.rs | 18 ++++++++++++++++++ .../returns_bt.rs | 7 ++++--- .../returns_new_address.rs | 7 ++++--- .../returns_raw_result.rs} | 17 ++++++++--------- .../returns_result.rs} | 16 ++++++++++------ .../returns_result_conv.rs} | 19 ++++++++++--------- .../with_new_address.rs} | 17 +++++++++-------- .../with_raw_result.rs} | 17 +++++++++-------- .../with_result.rs} | 19 ++++++++++--------- .../with_result_conv.rs} | 19 ++++++++++--------- .../base/src/types/interaction/tx_rh_list.rs | 16 ---------------- .../src/facade/world_tx/scenario_rh_impl.rs | 12 ++++++------ 20 files changed, 115 insertions(+), 103 deletions(-) rename framework/base/src/types/interaction/{tx_rh_list => tx_result_handler}/returns_bt.rs (74%) rename framework/base/src/types/interaction/{tx_rh_list => tx_result_handler}/returns_new_address.rs (68%) rename framework/base/src/types/interaction/{tx_rh_list/returns_raw.rs => tx_result_handler/returns_raw_result.rs} (59%) rename framework/base/src/types/interaction/{tx_rh_list/returns_exact.rs => tx_result_handler/returns_result.rs} (52%) rename framework/base/src/types/interaction/{tx_rh_list/returns_similar.rs => tx_result_handler/returns_result_conv.rs} (65%) rename framework/base/src/types/interaction/{tx_rh_list/with_result_new_address.rs => tx_result_handler/with_new_address.rs} (62%) rename framework/base/src/types/interaction/{tx_rh_list/with_result_raw.rs => tx_result_handler/with_raw_result.rs} (66%) rename framework/base/src/types/interaction/{tx_rh_list/with_result_exact.rs => tx_result_handler/with_result.rs} (65%) rename framework/base/src/types/interaction/{tx_rh_list/with_result_similar.rs => tx_result_handler/with_result_conv.rs} (71%) diff --git a/contracts/examples/adder/interact/src/basic_interact.rs b/contracts/examples/adder/interact/src/basic_interact.rs index f1036b4aa0..7941bd7626 100644 --- a/contracts/examples/adder/interact/src/basic_interact.rs +++ b/contracts/examples/adder/interact/src/basic_interact.rs @@ -8,7 +8,7 @@ use basic_interact_state::State; use clap::Parser; use multiversx_sc_snippets::{ env_logger, - multiversx_sc::types::{Address, ReturnsNewAddress, ReturnsSimilar}, + multiversx_sc::types::{Address, ReturnsNewAddress, ReturnsResultConv}, multiversx_sc_scenario::{ api::StaticApi, bech32, @@ -197,7 +197,7 @@ impl AdderInteract { .to(self.state.adder().to_address()) .typed(adder_proxy::AdderProxy) .sum() - .returns(ReturnsSimilar::::new()) + .returns(ReturnsResultConv::::new()) .prepare_async() .run() .await; diff --git a/contracts/examples/adder/tests/adder_blackbox_chained_test.rs b/contracts/examples/adder/tests/adder_blackbox_chained_test.rs index 6060ad3859..05b95ba905 100644 --- a/contracts/examples/adder/tests/adder_blackbox_chained_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_chained_test.rs @@ -1,5 +1,5 @@ use adder::*; -use multiversx_sc::types::{AddressExpr, ScExpr, WithResultNewAddress, WithResultSimilar}; +use multiversx_sc::types::{AddressExpr, ScExpr, WithNewAddress, WithResultConv}; use multiversx_sc_scenario::{api::StaticApi, num_bigint::BigUint, scenario_model::*, *}; const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; @@ -30,7 +30,7 @@ fn adder_blackbox_chained() { .typed(adder_proxy::AdderProxy) .init(5u32) .code(MxscExpr("output/adder.mxsc.json")) - .with_result(WithResultNewAddress::new(|new_address| { + .with_result(WithNewAddress::new(|new_address| { assert_eq!(new_address.to_address(), adder_contract.to_address()); })) }) @@ -38,7 +38,7 @@ fn adder_blackbox_chained() { tx.to(ScExpr("adder")) .typed(adder_proxy::AdderProxy) .sum() - .with_result(WithResultSimilar::new(|value: BigUint| { + .with_result(WithResultConv::new(|value: BigUint| { assert_eq!(value, BigUint::from(5u32)); })) }) diff --git a/contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs b/contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs index 3e7030a3c0..1370a064fc 100644 --- a/contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs @@ -1,7 +1,7 @@ use adder::*; use multiversx_sc::{ storage::mappers::SingleValue, - types::{AddressExpr, ReturnsSimilar, WithResultNewAddress}, + types::{AddressExpr, ReturnsResultConv, WithNewAddress}, }; use multiversx_sc_scenario::{api::StaticApi, num_bigint::BigUint, scenario_model::*, *}; @@ -38,7 +38,7 @@ fn adder_blackbox_legacy_proxy() { .typed(adder_proxy::AdderProxy) .init(5u32) .code(CODE_EXPR) - .with_result(WithResultNewAddress::new(|new_address| { + .with_result(WithNewAddress::new(|new_address| { assert_eq!(new_address.to_address(), adder_contract.to_address()); })) .run(); @@ -53,7 +53,7 @@ fn adder_blackbox_legacy_proxy() { let value = world .query() .call(adder_contract.sum()) - .returns(ReturnsSimilar::>::new()) + .returns(ReturnsResultConv::>::new()) .run(); assert_eq!(value.into(), BigUint::from(5u32)); diff --git a/contracts/examples/adder/tests/adder_blackbox_test.rs b/contracts/examples/adder/tests/adder_blackbox_test.rs index 4a09e4117d..ec98935ba4 100644 --- a/contracts/examples/adder/tests/adder_blackbox_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_test.rs @@ -1,5 +1,5 @@ use adder::*; -use multiversx_sc::types::{AddressExpr, ReturnsSimilar, ScExpr, WithResultNewAddress}; +use multiversx_sc::types::{AddressExpr, ReturnsResultConv, ScExpr, WithNewAddress}; use multiversx_sc_scenario::{api::StaticApi, num_bigint::BigUint, scenario_model::*, *}; const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; @@ -36,7 +36,7 @@ fn adder_blackbox() { .typed(adder_proxy::AdderProxy) .init(5u32) .code(CODE_EXPR) - .with_result(WithResultNewAddress::new(|new_address| { + .with_result(WithNewAddress::new(|new_address| { assert_eq!(new_address.to_address(), adder_contract.to_address()); })) .run(); @@ -46,7 +46,7 @@ fn adder_blackbox() { .to(SC_ADDER) .typed(adder_proxy::AdderProxy) .sum() - .returns(ReturnsSimilar::::new()) + .returns(ReturnsResultConv::::new()) .run(); assert_eq!(value, BigUint::from(5u32)); diff --git a/contracts/examples/multisig/tests/multisig_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_blackbox_test.rs index eaec591e26..7107a6628e 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, AddressExpr, CodeMetadata, FunctionCall, ReturnsExact}, + types::{Address, AddressExpr, CodeMetadata, FunctionCall, ReturnsResult}, }; use multiversx_sc_scenario::{ api::StaticApi, @@ -131,7 +131,7 @@ impl MultisigTestState { self.multisig_contract .propose_add_board_member(board_member_address), ) - .returns(ReturnsExact) + .returns(ReturnsResult) .run() } diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs index b8fc6138eb..20ccacf4db 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs @@ -16,7 +16,7 @@ pub trait ForwarderRawDeployUpgrade { .arguments_raw(args.to_arg_buffer()) .with_gas_limit(self.blockchain().get_gas_left()) .returns(ReturnsNewAddress) - .returns(ReturnsRaw) + .returns(ReturnsRawResult) .sync_call() .into() } diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_sync.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_sync.rs index f235aca1da..7fd9958479 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_sync.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_sync.rs @@ -20,7 +20,7 @@ pub trait ForwarderRawSync: super::forwarder_raw_common::ForwarderRawCommon { .function_name(endpoint_name) .argument(&args) .with_gas_limit(half_gas) - .returns(ReturnsRaw) + .returns(ReturnsRawResult) .sync_call(); self.execute_on_dest_context_result(result); diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index 83972d0b28..6083b7b92a 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -12,7 +12,7 @@ use crate::{ }, codec, esdt::ESDTSystemSmartContractProxy, - proxy_imports::{ReturnsRaw, ToSelf}, + proxy_imports::{ReturnsRawResult, ToSelf}, types::{ BigUint, ContractCall, ContractCallNoPayment, EgldOrEsdtTokenIdentifier, EsdtTokenPayment, ManagedAddress, ManagedArgBuffer, ManagedBuffer, ManagedType, ManagedVec, TokenIdentifier, @@ -390,7 +390,7 @@ where .raw_call() .function_name(endpoint_name) .arguments_raw(arg_buffer) - .returns(ReturnsRaw) + .returns(ReturnsRawResult) .sync_call() } diff --git a/framework/base/src/types/interaction/tx_result_handler.rs b/framework/base/src/types/interaction/tx_result_handler.rs index 311679c442..754c339931 100644 --- a/framework/base/src/types/interaction/tx_result_handler.rs +++ b/framework/base/src/types/interaction/tx_result_handler.rs @@ -1,3 +1,21 @@ +mod returns_bt; +mod returns_new_address; +mod returns_raw_result; +mod returns_result; +mod returns_result_conv; +mod with_new_address; +mod with_raw_result; +mod with_result; +mod with_result_conv; + +pub use returns_bt::*; +pub use returns_new_address::*; +pub use returns_raw_result::*; +pub use returns_result::*; +pub use returns_result_conv::*; +pub use with_new_address::*; +pub use with_result_conv::*; + use super::TxEnv; pub trait TxResultHandler diff --git a/framework/base/src/types/interaction/tx_rh_list/returns_bt.rs b/framework/base/src/types/interaction/tx_result_handler/returns_bt.rs similarity index 74% rename from framework/base/src/types/interaction/tx_rh_list/returns_bt.rs rename to framework/base/src/types/interaction/tx_result_handler/returns_bt.rs index ceda028bcd..a04469930c 100644 --- a/framework/base/src/types/interaction/tx_rh_list/returns_bt.rs +++ b/framework/base/src/types/interaction/tx_result_handler/returns_bt.rs @@ -1,10 +1,11 @@ use crate::{ contract_base::BlockchainWrapper, - types::{BackTransfers, ManagedAddress, ManagedBuffer, ManagedVec, TxEnv}, + types::{ + BackTransfers, ManagedAddress, ManagedBuffer, ManagedVec, RHListItem, RHListItemExec, TxEnv, + }, }; -use super::{RHListItem, RHListItemExec}; - +/// Indicates that back-transfers will be returned. pub struct ReturnsBackTransfers; impl RHListItem for ReturnsBackTransfers diff --git a/framework/base/src/types/interaction/tx_rh_list/returns_new_address.rs b/framework/base/src/types/interaction/tx_result_handler/returns_new_address.rs similarity index 68% rename from framework/base/src/types/interaction/tx_rh_list/returns_new_address.rs rename to framework/base/src/types/interaction/tx_result_handler/returns_new_address.rs index 2b1b9ccad4..89854b906a 100644 --- a/framework/base/src/types/interaction/tx_rh_list/returns_new_address.rs +++ b/framework/base/src/types/interaction/tx_result_handler/returns_new_address.rs @@ -1,7 +1,8 @@ -use crate::types::{DeployRawResult, ManagedAddress, ManagedBuffer, ManagedVec, TxEnv}; - -use super::{RHListItem, RHListItemExec}; +use crate::types::{ + DeployRawResult, ManagedAddress, ManagedBuffer, ManagedVec, RHListItem, RHListItemExec, TxEnv, +}; +/// Indicates that the newly deployed address will be returned after a deploy. pub struct ReturnsNewAddress; impl RHListItem for ReturnsNewAddress diff --git a/framework/base/src/types/interaction/tx_rh_list/returns_raw.rs b/framework/base/src/types/interaction/tx_result_handler/returns_raw_result.rs similarity index 59% rename from framework/base/src/types/interaction/tx_rh_list/returns_raw.rs rename to framework/base/src/types/interaction/tx_result_handler/returns_raw_result.rs index d1b501d77c..2627d99065 100644 --- a/framework/base/src/types/interaction/tx_rh_list/returns_raw.rs +++ b/framework/base/src/types/interaction/tx_result_handler/returns_raw_result.rs @@ -1,20 +1,19 @@ -use crate::{ - proxy_imports::SyncCallRawResult, - types::{DeployRawResult, ManagedAddress, ManagedBuffer, ManagedVec, TxEnv}, +use crate::types::{ + DeployRawResult, ManagedAddress, ManagedBuffer, ManagedVec, RHListItem, RHListItemExec, + SyncCallRawResult, TxEnv, }; -use super::{RHListItem, RHListItemExec}; +/// Indicates that the raw result data will be returned. +pub struct ReturnsRawResult; -pub struct ReturnsRaw; - -impl RHListItem for ReturnsRaw +impl RHListItem for ReturnsRawResult where Env: TxEnv, { type Returns = ManagedVec>; } -impl RHListItemExec, Env, Original> for ReturnsRaw +impl RHListItemExec, Env, Original> for ReturnsRawResult where Env: TxEnv, { @@ -23,7 +22,7 @@ where } } -impl RHListItemExec, Env, Original> for ReturnsRaw +impl RHListItemExec, Env, Original> for ReturnsRawResult where Env: TxEnv, { diff --git a/framework/base/src/types/interaction/tx_rh_list/returns_exact.rs b/framework/base/src/types/interaction/tx_result_handler/returns_result.rs similarity index 52% rename from framework/base/src/types/interaction/tx_rh_list/returns_exact.rs rename to framework/base/src/types/interaction/tx_result_handler/returns_result.rs index 87a25f0fb2..71cbd020cf 100644 --- a/framework/base/src/types/interaction/tx_rh_list/returns_exact.rs +++ b/framework/base/src/types/interaction/tx_result_handler/returns_result.rs @@ -2,21 +2,25 @@ use multiversx_sc_codec::TopDecodeMulti; use crate::{ proxy_imports::SyncCallRawResult, - types::{interaction::contract_call_exec::decode_result, ManagedBuffer, ManagedVec, TxEnv}, + types::{ + interaction::contract_call_exec::decode_result, ManagedBuffer, ManagedVec, RHListItem, + RHListItemExec, TxEnv, + }, }; -use super::{RHListItem, RHListItemExec}; +/// Indicates that result will be returned. +/// +/// Value will be decoded according to the type defined in the smart contract. +pub struct ReturnsResult; -pub struct ReturnsExact; - -impl RHListItem for ReturnsExact +impl RHListItem for ReturnsResult where Env: TxEnv, { type Returns = Original; } -impl RHListItemExec, Env, Original> for ReturnsExact +impl RHListItemExec, Env, Original> for ReturnsResult where Env: TxEnv, Original: TopDecodeMulti, diff --git a/framework/base/src/types/interaction/tx_rh_list/returns_similar.rs b/framework/base/src/types/interaction/tx_result_handler/returns_result_conv.rs similarity index 65% rename from framework/base/src/types/interaction/tx_rh_list/returns_similar.rs rename to framework/base/src/types/interaction/tx_result_handler/returns_result_conv.rs index adfb2f3bdb..1dbabc0bf1 100644 --- a/framework/base/src/types/interaction/tx_rh_list/returns_similar.rs +++ b/framework/base/src/types/interaction/tx_result_handler/returns_result_conv.rs @@ -3,17 +3,18 @@ use core::marker::PhantomData; use multiversx_sc_codec::{CodecFrom, TopEncodeMulti}; use crate::types::{ - interaction::contract_call_exec::decode_result, ManagedBuffer, ManagedVec, SyncCallRawResult, - TxEnv, + interaction::contract_call_exec::decode_result, ManagedBuffer, ManagedVec, RHListItem, + RHListItemExec, SyncCallRawResult, TxEnv, }; -use super::{RHListItem, RHListItemExec}; - -pub struct ReturnsSimilar { +/// Indicates that result will be returned. +/// +/// Value will be converted to type `T`, which should be compatible with the original type. +pub struct ReturnsResultConv { _phantom: PhantomData, } -impl Default for ReturnsSimilar { +impl Default for ReturnsResultConv { fn default() -> Self { Self { _phantom: Default::default(), @@ -21,13 +22,13 @@ impl Default for ReturnsSimilar { } } -impl ReturnsSimilar { +impl ReturnsResultConv { pub fn new() -> Self { Self::default() } } -impl RHListItem for ReturnsSimilar +impl RHListItem for ReturnsResultConv where Env: TxEnv, Original: TopEncodeMulti, @@ -37,7 +38,7 @@ where } impl RHListItemExec, Env, Original> - for ReturnsSimilar + for ReturnsResultConv where Env: TxEnv, Original: TopEncodeMulti, diff --git a/framework/base/src/types/interaction/tx_rh_list/with_result_new_address.rs b/framework/base/src/types/interaction/tx_result_handler/with_new_address.rs similarity index 62% rename from framework/base/src/types/interaction/tx_rh_list/with_result_new_address.rs rename to framework/base/src/types/interaction/tx_result_handler/with_new_address.rs index 5dad91eef6..2a8840f744 100644 --- a/framework/base/src/types/interaction/tx_rh_list/with_result_new_address.rs +++ b/framework/base/src/types/interaction/tx_result_handler/with_new_address.rs @@ -1,10 +1,11 @@ use core::marker::PhantomData; -use crate::types::{DeployRawResult, ManagedAddress, ManagedBuffer, ManagedVec, TxEnv}; +use crate::types::{ + DeployRawResult, ManagedAddress, ManagedBuffer, ManagedVec, RHListItem, RHListItemExec, TxEnv, +}; -use super::{RHListItem, RHListItemExec}; - -pub struct WithResultNewAddress +/// Defines a lambda function to be called on the newly deployed address, after a deploy. +pub struct WithNewAddress where Env: TxEnv, F: FnOnce(&ManagedAddress), @@ -13,20 +14,20 @@ where pub f: F, } -impl WithResultNewAddress +impl WithNewAddress where Env: TxEnv, F: FnOnce(&ManagedAddress), { pub fn new(f: F) -> Self { - WithResultNewAddress { + WithNewAddress { _phantom: PhantomData, f, } } } -impl RHListItem for WithResultNewAddress +impl RHListItem for WithNewAddress where Env: TxEnv, F: FnOnce(&ManagedAddress), @@ -35,7 +36,7 @@ where } impl RHListItemExec, Env, Original> - for WithResultNewAddress + for WithNewAddress where Env: TxEnv, F: FnOnce(&ManagedAddress), diff --git a/framework/base/src/types/interaction/tx_rh_list/with_result_raw.rs b/framework/base/src/types/interaction/tx_result_handler/with_raw_result.rs similarity index 66% rename from framework/base/src/types/interaction/tx_rh_list/with_result_raw.rs rename to framework/base/src/types/interaction/tx_result_handler/with_raw_result.rs index 35b4053d2a..f2d1457f07 100644 --- a/framework/base/src/types/interaction/tx_rh_list/with_result_raw.rs +++ b/framework/base/src/types/interaction/tx_result_handler/with_raw_result.rs @@ -1,10 +1,11 @@ use core::marker::PhantomData; -use crate::types::{ManagedBuffer, ManagedVec, SyncCallRawResult, TxEnv}; +use crate::types::{ + ManagedBuffer, ManagedVec, RHListItem, RHListItemExec, SyncCallRawResult, TxEnv, +}; -use super::{RHListItem, RHListItemExec}; - -pub struct WithResultRaw +/// Defines a lambda function to be called on the raw result of the transaction. +pub struct WithRawResult where Env: TxEnv, F: FnOnce(&ManagedVec>), @@ -13,20 +14,20 @@ where f: F, } -impl WithResultRaw +impl WithRawResult where Env: TxEnv, F: FnOnce(&ManagedVec>), { pub fn new(f: F) -> Self { - WithResultRaw { + WithRawResult { _phantom: PhantomData, f, } } } -impl RHListItem for WithResultRaw +impl RHListItem for WithRawResult where Env: TxEnv, F: FnOnce(&ManagedVec>), @@ -35,7 +36,7 @@ where } impl RHListItemExec, Env, Original> - for WithResultRaw + for WithRawResult where Env: TxEnv, F: FnOnce(&ManagedVec>), diff --git a/framework/base/src/types/interaction/tx_rh_list/with_result_exact.rs b/framework/base/src/types/interaction/tx_result_handler/with_result.rs similarity index 65% rename from framework/base/src/types/interaction/tx_rh_list/with_result_exact.rs rename to framework/base/src/types/interaction/tx_result_handler/with_result.rs index d3045dca25..800ac30a7a 100644 --- a/framework/base/src/types/interaction/tx_rh_list/with_result_exact.rs +++ b/framework/base/src/types/interaction/tx_result_handler/with_result.rs @@ -3,13 +3,14 @@ use core::marker::PhantomData; use multiversx_sc_codec::TopDecodeMulti; use crate::types::{ - interaction::contract_call_exec::decode_result, ManagedBuffer, ManagedVec, SyncCallRawResult, - TxEnv, + interaction::contract_call_exec::decode_result, ManagedBuffer, ManagedVec, RHListItem, + RHListItemExec, SyncCallRawResult, TxEnv, }; -use super::{RHListItem, RHListItemExec}; - -pub struct WithResultExact +/// Defines a lambda function to be called on the decoded result. +/// +/// Value will be decoded according to the type defined in the smart contract. +pub struct WithResult where F: FnOnce(T), { @@ -17,19 +18,19 @@ where f: F, } -impl WithResultExact +impl WithResult where F: FnOnce(T), { pub fn new(f: F) -> Self { - WithResultExact { + WithResult { _phantom: PhantomData, f, } } } -impl RHListItem for WithResultExact +impl RHListItem for WithResult where Env: TxEnv, F: FnOnce(Original), @@ -38,7 +39,7 @@ where } impl RHListItemExec, Env, Original> - for WithResultExact + for WithResult where Env: TxEnv, Original: TopDecodeMulti, diff --git a/framework/base/src/types/interaction/tx_rh_list/with_result_similar.rs b/framework/base/src/types/interaction/tx_result_handler/with_result_conv.rs similarity index 71% rename from framework/base/src/types/interaction/tx_rh_list/with_result_similar.rs rename to framework/base/src/types/interaction/tx_result_handler/with_result_conv.rs index d2af475447..89831e8283 100644 --- a/framework/base/src/types/interaction/tx_rh_list/with_result_similar.rs +++ b/framework/base/src/types/interaction/tx_result_handler/with_result_conv.rs @@ -3,13 +3,14 @@ use core::marker::PhantomData; use multiversx_sc_codec::{CodecFrom, TopEncodeMulti}; use crate::types::{ - interaction::contract_call_exec::decode_result, ManagedBuffer, ManagedVec, SyncCallRawResult, - TxEnv, + interaction::contract_call_exec::decode_result, ManagedBuffer, ManagedVec, RHListItem, + RHListItemExec, SyncCallRawResult, TxEnv, }; -use super::{RHListItem, RHListItemExec}; - -pub struct WithResultSimilar +/// Defines a lambda function to be called on the decoded result. +/// +/// Value will be converted to type `T`, which should be compatible with the original type. +pub struct WithResultConv where F: FnOnce(T), { @@ -17,19 +18,19 @@ where pub f: F, } -impl WithResultSimilar +impl WithResultConv where F: FnOnce(T), { pub fn new(f: F) -> Self { - WithResultSimilar { + WithResultConv { _phantom: PhantomData, f, } } } -impl RHListItem for WithResultSimilar +impl RHListItem for WithResultConv where Env: TxEnv, Original: TopEncodeMulti, @@ -40,7 +41,7 @@ where } impl RHListItemExec, Env, Original> - for WithResultSimilar + for WithResultConv where Env: TxEnv, Original: TopEncodeMulti, diff --git a/framework/base/src/types/interaction/tx_rh_list.rs b/framework/base/src/types/interaction/tx_rh_list.rs index 4e0bb4327c..b4ca45bc58 100644 --- a/framework/base/src/types/interaction/tx_rh_list.rs +++ b/framework/base/src/types/interaction/tx_rh_list.rs @@ -1,23 +1,7 @@ -mod returns_bt; -mod returns_exact; -mod returns_new_address; -mod returns_raw; -mod returns_similar; mod tx_rh_list_cons; mod tx_rh_list_exec; mod tx_rh_list_item; -mod with_result_exact; -mod with_result_new_address; -mod with_result_raw; -mod with_result_similar; -pub use returns_bt::*; -pub use returns_exact::*; -pub use returns_new_address::*; -pub use returns_raw::*; -pub use returns_similar::*; pub use tx_rh_list_cons::*; pub use tx_rh_list_exec::*; pub use tx_rh_list_item::*; -pub use with_result_new_address::*; -pub use with_result_similar::*; diff --git a/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs b/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs index b0161b52b8..0471e42786 100644 --- a/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs +++ b/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs @@ -1,8 +1,8 @@ use multiversx_sc::{ codec::{CodecFrom, TopDecodeMulti, TopEncodeMulti}, types::{ - ManagedAddress, RHList, RHListItem, RHListItemExec, ReturnsExact, ReturnsNewAddress, - ReturnsSimilar, TxEnv, WithResultNewAddress, WithResultSimilar, + ManagedAddress, RHList, RHListItem, RHListItemExec, ReturnsNewAddress, ReturnsResult, + ReturnsResultConv, TxEnv, WithNewAddress, WithResultConv, }, }; @@ -13,7 +13,7 @@ use crate::{ use super::ScenarioTxEnvData; -impl RHListItemExec for ReturnsExact +impl RHListItemExec for ReturnsResult where Env: TxEnv, Original: TopDecodeMulti, @@ -26,7 +26,7 @@ where } } -impl RHListItemExec for ReturnsSimilar +impl RHListItemExec for ReturnsResultConv where Env: TxEnv, Original: TopEncodeMulti, @@ -40,7 +40,7 @@ where } } -impl RHListItemExec for WithResultSimilar +impl RHListItemExec for WithResultConv where Env: TxEnv, Original: TopEncodeMulti, @@ -70,7 +70,7 @@ where } } -impl RHListItemExec for WithResultNewAddress +impl RHListItemExec for WithNewAddress where Env: TxEnv, F: FnOnce(&ManagedAddress), From 5a1a184f424432fb8bdc6b5492f4cdbc3c2a1a03 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Mon, 25 Mar 2024 18:15:25 +0200 Subject: [PATCH 179/461] unified syntax - initial impl of EgldOrMultiEsdtPaymentRefs --- .../wrapped/egld_or_multi_esdt_payment.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/framework/base/src/types/managed/wrapped/egld_or_multi_esdt_payment.rs b/framework/base/src/types/managed/wrapped/egld_or_multi_esdt_payment.rs index bcd4d2cd03..11a8d7ea83 100644 --- a/framework/base/src/types/managed/wrapped/egld_or_multi_esdt_payment.rs +++ b/framework/base/src/types/managed/wrapped/egld_or_multi_esdt_payment.rs @@ -33,3 +33,21 @@ impl EgldOrMultiEsdtPayment { } } } + +pub enum EgldOrMultiEsdtPaymentRefs<'a, M: ManagedTypeApi> { + Egld(&'a BigUint), + MultiEsdt(&'a ManagedVec>), +} + +impl EgldOrMultiEsdtPayment { + pub fn as_refs(&self) -> EgldOrMultiEsdtPaymentRefs<'_, M> { + match self { + EgldOrMultiEsdtPayment::Egld(egld_value) => { + EgldOrMultiEsdtPaymentRefs::Egld(egld_value) + }, + EgldOrMultiEsdtPayment::MultiEsdt(esdt_payments) => { + EgldOrMultiEsdtPaymentRefs::MultiEsdt(esdt_payments) + }, + } + } +} From 448c5caf159fed961a0b929b13aa83e0016c0539 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 25 Mar 2024 18:27:45 +0200 Subject: [PATCH 180/461] result handler cleanup --- .../src/types/interaction/tx_rh_list/tx_rh_list_exec.rs | 7 ------- 1 file changed, 7 deletions(-) diff --git a/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_exec.rs b/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_exec.rs index cc39d08561..b8121d40d8 100644 --- a/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_exec.rs +++ b/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_exec.rs @@ -13,13 +13,6 @@ where fn item_process_result(self, raw_result: &RawResult) -> Self::Returns; } -impl RHListItemExec for () -where - Env: TxEnv, -{ - fn item_process_result(self, _raw_result: &RawResult) -> Self::Returns {} -} - /// Indicates how result processing will undergo for an ensemble of result handlers. pub trait RHListExec: RHList where From a2f48a52b28900ac60e0fbc59274a4930e69cefd Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Tue, 26 Mar 2024 02:55:53 +0100 Subject: [PATCH 181/461] vault generated proxy in forwarder - except upgrade --- .../composability/forwarder/src/call_async.rs | 55 ++-- .../composability/forwarder/src/call_sync.rs | 103 +++---- .../forwarder/src/call_transf_exec.rs | 47 ++-- .../forwarder/src/contract_change_owner.rs | 13 +- .../forwarder/src/contract_deploy.rs | 41 ++- .../forwarder/src/forwarder_main.rs | 1 + .../forwarder/src/vault_proxy.rs | 253 ++++++++++++++++++ .../composability/vault/sc-config.toml | 1 + .../returns_new_token_identifier.rs | 4 +- 9 files changed, 412 insertions(+), 106 deletions(-) create mode 100644 contracts/feature-tests/composability/forwarder/src/vault_proxy.rs diff --git a/contracts/feature-tests/composability/forwarder/src/call_async.rs b/contracts/feature-tests/composability/forwarder/src/call_async.rs index 8826c2db48..04ba78faab 100644 --- a/contracts/feature-tests/composability/forwarder/src/call_async.rs +++ b/contracts/feature-tests/composability/forwarder/src/call_async.rs @@ -1,3 +1,5 @@ +use crate::vault_proxy; + multiversx_sc::imports!(); multiversx_sc::derive_imports!(); @@ -14,13 +16,11 @@ const PERCENTAGE_TOTAL: u64 = 10_000; // 100% #[multiversx_sc::module] pub trait ForwarderAsyncCallModule { - #[proxy] - fn vault_proxy(&self) -> vault::Proxy; - #[endpoint] fn echo_args_async(&self, to: ManagedAddress, args: MultiValueEncoded) { - self.vault_proxy() - .contract(to) + self.tx() + .to(&to) + .typed(vault_proxy::VaultProxy) .echo_arguments(args) .async_call() .with_callback(self.callbacks().echo_args_callback()) @@ -57,8 +57,9 @@ pub trait ForwarderAsyncCallModule { #[payable("*")] fn forward_async_accept_funds(&self, to: ManagedAddress) { let payment = self.call_value().egld_or_single_esdt(); - self.vault_proxy() - .contract(to) + self.tx() + .to(&to) + .typed(vault_proxy::VaultProxy) .accept_funds() .with_egld_or_single_esdt_transfer(payment) .async_call() @@ -70,8 +71,9 @@ pub trait ForwarderAsyncCallModule { fn forward_async_accept_funds_half_payment(&self, to: ManagedAddress) { let payment = self.call_value().egld_or_single_esdt(); let half_payment = payment.amount / 2u32; - self.vault_proxy() - .contract(to) + self.tx() + .to(&to) + .typed(vault_proxy::VaultProxy) .accept_funds() .with_egld_or_single_esdt_transfer(( payment.token_identifier, @@ -89,8 +91,9 @@ pub trait ForwarderAsyncCallModule { let fees = &payment.amount * &percentage_fees / PERCENTAGE_TOTAL; let amount_to_send = &payment.amount - &fees; - self.vault_proxy() - .contract(to) + self.tx() + .to(&to) + .typed(vault_proxy::VaultProxy) .accept_funds() .with_egld_or_single_esdt_transfer(( payment.token_identifier, @@ -109,8 +112,9 @@ pub trait ForwarderAsyncCallModule { token_nonce: u64, amount: BigUint, ) { - self.vault_proxy() - .contract(to) + self.tx() + .to(&to) + .typed(vault_proxy::VaultProxy) .retrieve_funds(token, token_nonce, amount) .async_call() .with_callback(self.callbacks().retrieve_funds_callback()) @@ -146,16 +150,17 @@ pub trait ForwarderAsyncCallModule { token_identifier: &EgldOrEsdtTokenIdentifier, amount: &BigUint, ) { - self.vault_proxy() - .contract(to.clone()) + self.tx() + .to(to) + .typed(vault_proxy::VaultProxy) .accept_funds() - .with_egld_or_single_esdt_transfer((token_identifier.clone(), 0, amount.clone())) + .with_egld_or_single_esdt_transfer((token_identifier.clone(), 0u64, amount.clone())) .async_call() .with_callback( self.callbacks() .send_funds_twice_callback(to, token_identifier, amount), ) - .call_and_exit() + .call_and_exit(); } #[callback] @@ -165,12 +170,13 @@ pub trait ForwarderAsyncCallModule { token_identifier: &EgldOrEsdtTokenIdentifier, cb_amount: &BigUint, ) { - self.vault_proxy() - .contract(to.clone()) + self.tx() + .to(to) + .typed(vault_proxy::VaultProxy) .accept_funds() - .with_egld_or_single_esdt_transfer((token_identifier.clone(), 0, cb_amount.clone())) + .with_egld_or_single_esdt_transfer((token_identifier.clone(), 0u64, cb_amount.clone())) .async_call() - .call_and_exit() + .call_and_exit(); } #[endpoint] @@ -188,12 +194,13 @@ pub trait ForwarderAsyncCallModule { all_token_payments.push(payment); } - self.vault_proxy() - .contract(to) + self.tx() + .to(&to) + .typed(vault_proxy::VaultProxy) .accept_funds() .with_multi_token_transfer(all_token_payments) .async_call() - .call_and_exit() + .call_and_exit(); } #[view] diff --git a/contracts/feature-tests/composability/forwarder/src/call_sync.rs b/contracts/feature-tests/composability/forwarder/src/call_sync.rs index 67d923936e..d2b32e1913 100644 --- a/contracts/feature-tests/composability/forwarder/src/call_sync.rs +++ b/contracts/feature-tests/composability/forwarder/src/call_sync.rs @@ -1,23 +1,24 @@ +use crate::vault_proxy; + multiversx_sc::imports!(); const PERCENTAGE_TOTAL: u64 = 10_000; // 100% #[multiversx_sc::module] pub trait ForwarderSyncCallModule { - #[proxy] - fn vault_proxy(&self) -> vault::Proxy; - #[endpoint] #[payable("*")] fn echo_arguments_sync(&self, to: ManagedAddress, args: MultiValueEncoded) { let half_gas = self.blockchain().get_gas_left() / 2; - let result: MultiValueEncoded = self - .vault_proxy() - .contract(to) - .echo_arguments(args) + let result = self + .tx() + .to(&to) .with_gas_limit(half_gas) - .execute_on_dest_context(); + .typed(vault_proxy::VaultProxy) + .echo_arguments(args) + .returns(ReturnsExact) + .sync_call(); self.execute_on_dest_context_result_event(&result.into_vec_of_buffers()); } @@ -31,21 +32,25 @@ pub trait ForwarderSyncCallModule { ) { let one_third_gas = self.blockchain().get_gas_left() / 3; - let result: MultiValueEncoded = self - .vault_proxy() - .contract(to.clone()) - .echo_arguments(&args) + let result = self + .tx() + .to(&to) .with_gas_limit(one_third_gas) - .execute_on_dest_context(); + .typed(vault_proxy::VaultProxy) + .echo_arguments(args.clone()) + .returns(ReturnsExact) + .sync_call(); self.execute_on_dest_context_result_event(&result.into_vec_of_buffers()); - let result: MultiValueEncoded = self - .vault_proxy() - .contract(to) - .echo_arguments(&args) + let result = self + .tx() + .to(&to) .with_gas_limit(one_third_gas) - .execute_on_dest_context(); + .typed(vault_proxy::VaultProxy) + .echo_arguments(args) + .returns(ReturnsExact) + .sync_call(); self.execute_on_dest_context_result_event(&result.into_vec_of_buffers()); } @@ -59,13 +64,16 @@ pub trait ForwarderSyncCallModule { let payment = self.call_value().egld_or_single_esdt(); let half_gas = self.blockchain().get_gas_left() / 2; - let result: MultiValue2> = self - .vault_proxy() - .contract(to) + let result = self + .tx() + .to(&to) + .with_gas_limit(half_gas) + .typed(vault_proxy::VaultProxy) .accept_funds_echo_payment() .with_egld_or_single_esdt_transfer(payment) - .with_gas_limit(half_gas) - .execute_on_dest_context(); + .returns(ReturnsExact) + .sync_call(); + let (egld_value, esdt_transfers_multi) = result.into_tuple(); self.accept_funds_sync_result_event(&egld_value, &esdt_transfers_multi); @@ -78,12 +86,13 @@ pub trait ForwarderSyncCallModule { let fees = &payment * &percentage_fees / PERCENTAGE_TOTAL; let amount_to_send = payment - fees; - let () = self - .vault_proxy() - .contract(to) + self.tx() + .to(&to) + .typed(vault_proxy::VaultProxy) .accept_funds() - .with_egld_or_single_esdt_transfer((token_id, 0, amount_to_send)) - .execute_on_dest_context(); + .with_egld_or_single_esdt_transfer((token_id, 0u64, amount_to_send)) + .returns(ReturnsExact) + .sync_call(); } #[event("accept_funds_sync_result")] @@ -97,17 +106,19 @@ pub trait ForwarderSyncCallModule { #[payable("*")] fn forward_sync_accept_funds_then_read(&self, to: ManagedAddress) -> usize { let payment = self.call_value().egld_or_single_esdt(); - self.vault_proxy() - .contract(to.clone()) + self.tx() + .to(&to) + .typed(vault_proxy::VaultProxy) .accept_funds() .with_egld_or_single_esdt_transfer(payment) - .execute_on_dest_context::<()>(); + .sync_call(); - self.vault_proxy() - .contract(to) + self.tx() + .to(&to) + .typed(vault_proxy::VaultProxy) .call_counts(b"accept_funds") - .execute_on_dest_context::>() - .into() + .returns(ReturnsExact) + .sync_call() } #[endpoint] @@ -118,10 +129,11 @@ pub trait ForwarderSyncCallModule { token_nonce: u64, amount: BigUint, ) { - self.vault_proxy() - .contract(to) + self.tx() + .to(&to) + .typed(vault_proxy::VaultProxy) .retrieve_funds(token, token_nonce, amount) - .execute_on_dest_context::<()>(); + .sync_call(); } #[payable("*")] @@ -134,15 +146,16 @@ pub trait ForwarderSyncCallModule { ) { let payments = self.call_value().all_esdt_transfers(); - self.vault_proxy() - .contract(to) + self.tx() + .to(&to) + .typed(vault_proxy::VaultProxy) .retrieve_funds_with_transfer_exec( token, amount, OptionalValue::::Some(b"accept_funds_func".into()), ) .with_multi_token_transfer(payments.clone_value()) - .execute_on_dest_context::<()>(); + .sync_call(); } #[payable("*")] @@ -163,11 +176,11 @@ pub trait ForwarderSyncCallModule { all_token_payments.push(payment); } - let () = self - .vault_proxy() - .contract(to) + self.tx() + .to(&to) + .typed(vault_proxy::VaultProxy) .accept_funds() .with_multi_token_transfer(all_token_payments) - .execute_on_dest_context(); + .sync_call(); } } diff --git a/contracts/feature-tests/composability/forwarder/src/call_transf_exec.rs b/contracts/feature-tests/composability/forwarder/src/call_transf_exec.rs index e402ea5316..3573987867 100644 --- a/contracts/feature-tests/composability/forwarder/src/call_transf_exec.rs +++ b/contracts/feature-tests/composability/forwarder/src/call_transf_exec.rs @@ -1,18 +1,18 @@ +use crate::vault_proxy; + multiversx_sc::imports!(); const PERCENTAGE_TOTAL: u64 = 10_000; // 100% #[multiversx_sc::module] pub trait ForwarderTransferExecuteModule { - #[proxy] - fn vault_proxy(&self) -> vault::Proxy; - #[endpoint] #[payable("*")] fn forward_transf_exec_accept_funds(&self, to: ManagedAddress) { let payment = self.call_value().egld_or_single_esdt(); - self.vault_proxy() - .contract(to) + self.tx() + .to(&to) + .typed(vault_proxy::VaultProxy) .accept_funds() .with_egld_or_single_esdt_transfer(payment) .transfer_execute(); @@ -29,10 +29,11 @@ pub trait ForwarderTransferExecuteModule { let fees = &payment * &percentage_fees / PERCENTAGE_TOTAL; let amount_to_send = payment - fees; - self.vault_proxy() - .contract(to) + self.tx() + .to(&to) + .typed(vault_proxy::VaultProxy) .accept_funds() - .with_egld_or_single_esdt_transfer((token_id, 0, amount_to_send)) + .with_egld_or_single_esdt_transfer((token_id, 0u64, amount_to_send)) .transfer_execute(); } @@ -43,15 +44,17 @@ pub trait ForwarderTransferExecuteModule { let half_payment = payment / 2u32; let half_gas = self.blockchain().get_gas_left() / 2; - self.vault_proxy() - .contract(to.clone()) + self.tx() + .to(&to) + .typed(vault_proxy::VaultProxy) .accept_funds() .with_egld_or_single_esdt_transfer((token.clone(), token_nonce, half_payment.clone())) .with_gas_limit(half_gas) .transfer_execute(); - self.vault_proxy() - .contract(to) + self.tx() + .to(&to) + .typed(vault_proxy::VaultProxy) .accept_funds() .with_egld_or_single_esdt_transfer((token, token_nonce, half_payment)) .with_gas_limit(half_gas) @@ -70,8 +73,9 @@ pub trait ForwarderTransferExecuteModule { let payment_token = payment.token_identifier.clone(); let gas_left_before = self.blockchain().get_gas_left(); - self.vault_proxy() - .contract(to) + self.tx() + .to(&to) + .typed(vault_proxy::VaultProxy) .accept_funds() .with_egld_or_single_esdt_transfer(payment) .transfer_execute(); @@ -102,8 +106,9 @@ pub trait ForwarderTransferExecuteModule { all_token_payments.push(payment); } - self.vault_proxy() - .contract(to) + self.tx() + .to(&to) + .typed(vault_proxy::VaultProxy) .accept_funds() .with_multi_token_transfer(all_token_payments) .transfer_execute() @@ -124,8 +129,9 @@ pub trait ForwarderTransferExecuteModule { all_token_payments.push(payment); } - self.vault_proxy() - .contract(to) + self.tx() + .to(&to) + .typed(vault_proxy::VaultProxy) .accept_funds() .with_multi_token_transfer(all_token_payments) .transfer_execute() @@ -146,8 +152,9 @@ pub trait ForwarderTransferExecuteModule { all_token_payments.push(payment); } - self.vault_proxy() - .contract(to) + self.tx() + .to(&to) + .typed(vault_proxy::VaultProxy) .reject_funds() .with_multi_token_transfer(all_token_payments) .transfer_execute() diff --git a/contracts/feature-tests/composability/forwarder/src/contract_change_owner.rs b/contracts/feature-tests/composability/forwarder/src/contract_change_owner.rs index 8c5a140e8d..2e1247d9f7 100644 --- a/contracts/feature-tests/composability/forwarder/src/contract_change_owner.rs +++ b/contracts/feature-tests/composability/forwarder/src/contract_change_owner.rs @@ -1,10 +1,9 @@ +use crate::vault_proxy; + multiversx_sc::imports!(); #[multiversx_sc::module] pub trait ChangeOwnerModule { - #[proxy] - fn vault_proxy(&self) -> vault::Proxy; - #[endpoint(changeOwnerAddress)] fn change_owner( &self, @@ -20,9 +19,11 @@ pub trait ChangeOwnerModule { } fn get_owner_of_vault_contract(&self, address: ManagedAddress) -> ManagedAddress { - self.vault_proxy() - .contract(address) + self.tx() + .to(&address) + .typed(vault_proxy::VaultProxy) .get_owner_address() - .execute_on_dest_context() + .returns(ReturnsExact) + .sync_call() } } diff --git a/contracts/feature-tests/composability/forwarder/src/contract_deploy.rs b/contracts/feature-tests/composability/forwarder/src/contract_deploy.rs index d573b45ec0..aefdfb55c0 100644 --- a/contracts/feature-tests/composability/forwarder/src/contract_deploy.rs +++ b/contracts/feature-tests/composability/forwarder/src/contract_deploy.rs @@ -1,10 +1,9 @@ +use crate::vault_proxy; + multiversx_sc::imports!(); #[multiversx_sc::module] pub trait DeployContractModule { - #[proxy] - fn vault_proxy(&self) -> vault::Proxy; - #[endpoint] fn deploy_contract( &self, @@ -36,9 +35,22 @@ pub trait DeployContractModule { code: &ManagedBuffer, opt_arg: OptionalValue, ) -> (ManagedAddress, OptionalValue) { - self.vault_proxy() + let (new_address, response_vec) = self + .tx() + .typed(vault_proxy::VaultProxy) .init(opt_arg) - .deploy_contract(code, CodeMetadata::DEFAULT) + .code(code.clone()) + .returns(ReturnsNewAddress) + .returns(ReturnsRaw) + .sync_call(); + + let response = if response_vec.is_empty() { + OptionalValue::None + } else { + OptionalValue::Some(response_vec.get(0).clone_value()) + }; + + (new_address, response) } #[endpoint] @@ -47,9 +59,22 @@ pub trait DeployContractModule { source_address: ManagedAddress, opt_arg: OptionalValue, ) -> MultiValue2> { - self.vault_proxy() + let (new_address, response_vec) = self + .tx() + .typed(vault_proxy::VaultProxy) .init(opt_arg) - .deploy_from_source(&source_address, CodeMetadata::DEFAULT) - .into() + .code_metadata(CodeMetadata::DEFAULT) + .from_source(source_address) + .returns(ReturnsNewAddress) + .returns(ReturnsRaw) + .sync_call(); + + let response = if response_vec.is_empty() { + OptionalValue::None + } else { + OptionalValue::Some(response_vec.get(0).clone_value()) + }; + + MultiValue2::from((new_address, response)) } } diff --git a/contracts/feature-tests/composability/forwarder/src/forwarder_main.rs b/contracts/feature-tests/composability/forwarder/src/forwarder_main.rs index ee8403fd9a..61dcbad468 100644 --- a/contracts/feature-tests/composability/forwarder/src/forwarder_main.rs +++ b/contracts/feature-tests/composability/forwarder/src/forwarder_main.rs @@ -13,6 +13,7 @@ pub mod nft; pub mod roles; pub mod sft; pub mod storage; +pub mod vault_proxy; multiversx_sc::imports!(); diff --git a/contracts/feature-tests/composability/forwarder/src/vault_proxy.rs b/contracts/feature-tests/composability/forwarder/src/vault_proxy.rs new file mode 100644 index 0000000000..f1c9e2127a --- /dev/null +++ b/contracts/feature-tests/composability/forwarder/src/vault_proxy.rs @@ -0,0 +1,253 @@ +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +pub struct VaultProxy; + +impl TxProxyTrait for VaultProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = VaultProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + VaultProxyMethods { wrapped_tx: tx } + } +} + +pub struct VaultProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl VaultProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init< + Arg0: CodecInto>>, + >( + self, + opt_arg_to_echo: Arg0, + ) -> TxProxyDeploy>> { + self.wrapped_tx + .raw_deploy() + .argument(&opt_arg_to_echo) + .original_result() + } +} + +#[rustfmt::skip] +impl VaultProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn echo_arguments< + Arg0: CodecInto>>, + >( + self, + args: Arg0, + ) -> TxProxyCall>> { + self.wrapped_tx + .raw_call() + .function_name("echo_arguments") + .argument(&args) + .original_result() + } + + pub fn echo_arguments_without_storage< + Arg0: CodecInto>>, + >( + self, + args: Arg0, + ) -> TxProxyCall>> { + self.wrapped_tx + .raw_call() + .function_name("echo_arguments_without_storage") + .argument(&args) + .original_result() + } + + pub fn echo_caller( + self, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call() + .function_name("echo_caller") + .original_result() + } + + pub fn accept_funds( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("accept_funds") + .original_result() + } + + pub fn accept_funds_echo_payment( + self, + ) -> TxProxyCall, MultiValueEncoded>>> { + self.wrapped_tx + .raw_call() + .function_name("accept_funds_echo_payment") + .original_result() + } + + pub fn accept_funds_single_esdt_transfer( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("accept_funds_single_esdt_transfer") + .original_result() + } + + pub fn reject_funds( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("reject_funds") + .original_result() + } + + pub fn retrieve_funds_with_transfer_exec< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>>, + >( + self, + token: Arg0, + amount: Arg1, + opt_receive_func: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("retrieve_funds_with_transfer_exec") + .argument(&token) + .argument(&amount) + .argument(&opt_receive_func) + .original_result() + } + + pub fn retrieve_funds_promises< + Arg0: CodecInto>, + Arg1: CodecInto>>, + >( + self, + back_transfers: Arg0, + back_transfer_value: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("retrieve_funds_promises") + .argument(&back_transfers) + .argument(&back_transfer_value) + .original_result() + } + + pub fn retrieve_funds< + Arg0: CodecInto>, + Arg1: CodecInto, + Arg2: CodecInto>, + >( + self, + token: Arg0, + nonce: Arg1, + amount: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("retrieve_funds") + .argument(&token) + .argument(&nonce) + .argument(&amount) + .original_result() + } + + pub fn retrieve_multi_funds_async< + Arg0: CodecInto, u64, BigUint>>>, + >( + self, + token_payments: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("retrieve_multi_funds_async") + .argument(&token_payments) + .original_result() + } + + pub fn burn_and_create_retrive_async( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("burn_and_create_retrive_async") + .original_result() + } + + pub fn get_owner_address( + self, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call() + .function_name("get_owner_address") + .original_result() + } + + /// We already leave a trace of the calls using the event logs; + /// this additional counter has the role of showing that storage also gets saved correctly. + pub fn call_counts< + Arg0: CodecInto>, + >( + self, + endpoint: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("call_counts") + .argument(&endpoint) + .original_result() + } + + pub fn num_called_retrieve_funds_promises( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("num_called_retrieve_funds_promises") + .original_result() + } + + pub fn num_async_calls_sent_from_child( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("num_async_calls_sent_from_child") + .original_result() + } +} diff --git a/contracts/feature-tests/composability/vault/sc-config.toml b/contracts/feature-tests/composability/vault/sc-config.toml index f0d4da2f02..33b8945873 100644 --- a/contracts/feature-tests/composability/vault/sc-config.toml +++ b/contracts/feature-tests/composability/vault/sc-config.toml @@ -1,5 +1,6 @@ [settings] main = "main" +proxy-paths = ["../forwarder/src/vault_proxy.rs"] [contracts.main] name = "vault" diff --git a/framework/base/src/types/interaction/tx_rh_list/returns_new_token_identifier.rs b/framework/base/src/types/interaction/tx_rh_list/returns_new_token_identifier.rs index c1a4af47d1..5e8169df92 100644 --- a/framework/base/src/types/interaction/tx_rh_list/returns_new_token_identifier.rs +++ b/framework/base/src/types/interaction/tx_rh_list/returns_new_token_identifier.rs @@ -3,12 +3,10 @@ use crate::{ proxy_imports::TokenIdentifier, types::{ interaction::tx_call_deploy::RHListItemDeploy, BackTransfers, ManagedAddress, - ManagedBuffer, ManagedVec, RHListItemSync, TxEnv, + ManagedBuffer, ManagedVec, RHListItem, RHListItemSync, TxEnv, }, }; -use super::RHListItem; - pub struct ReturnsNewTokenIdentifier; impl RHListItem for ReturnsNewTokenIdentifier From dcd48415b5df41c529a96c958bf17948501ca2f8 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 26 Mar 2024 10:28:20 +0200 Subject: [PATCH 182/461] Result handlers folder in scenario --- framework/scenario/src/facade.rs | 1 + framework/scenario/src/facade/result_handlers.rs | 3 +++ .../{world_tx => result_handlers}/with_tx_raw_response.rs | 4 ---- framework/scenario/src/facade/world_tx.rs | 2 -- framework/scenario/src/lib.rs | 2 +- 5 files changed, 5 insertions(+), 7 deletions(-) create mode 100644 framework/scenario/src/facade/result_handlers.rs rename framework/scenario/src/facade/{world_tx => result_handlers}/with_tx_raw_response.rs (91%) diff --git a/framework/scenario/src/facade.rs b/framework/scenario/src/facade.rs index 51989165df..a37265e0b4 100644 --- a/framework/scenario/src/facade.rs +++ b/framework/scenario/src/facade.rs @@ -1,5 +1,6 @@ mod contract_info; mod debugger_backend; +pub(crate) mod result_handlers; mod scenario_world; mod scenario_world_runner; mod scenario_world_steps; diff --git a/framework/scenario/src/facade/result_handlers.rs b/framework/scenario/src/facade/result_handlers.rs new file mode 100644 index 0000000000..6bb2de8216 --- /dev/null +++ b/framework/scenario/src/facade/result_handlers.rs @@ -0,0 +1,3 @@ +mod with_tx_raw_response; + +pub use with_tx_raw_response::WithRawTxResponse; diff --git a/framework/scenario/src/facade/world_tx/with_tx_raw_response.rs b/framework/scenario/src/facade/result_handlers/with_tx_raw_response.rs similarity index 91% rename from framework/scenario/src/facade/world_tx/with_tx_raw_response.rs rename to framework/scenario/src/facade/result_handlers/with_tx_raw_response.rs index 512338aab8..f67d3b0f48 100644 --- a/framework/scenario/src/facade/world_tx/with_tx_raw_response.rs +++ b/framework/scenario/src/facade/result_handlers/with_tx_raw_response.rs @@ -1,5 +1,3 @@ -use core::marker::PhantomData; - use multiversx_sc::{ codec::TopDecodeMulti, types::{RHListItem, RHListItemExec, TxEnv}, @@ -7,8 +5,6 @@ use multiversx_sc::{ use crate::scenario_model::TxResponse; -use super::ScenarioTxEnvData; - /// Wraps a closure that handles a `TxResponse` object. pub struct WithRawTxResponse(pub F) where diff --git a/framework/scenario/src/facade/world_tx.rs b/framework/scenario/src/facade/world_tx.rs index 4a6fd86317..0ccbdd9514 100644 --- a/framework/scenario/src/facade/world_tx.rs +++ b/framework/scenario/src/facade/world_tx.rs @@ -7,10 +7,8 @@ mod scenario_env_exec; mod scenario_env_query; pub mod scenario_env_util; mod scenario_rh_impl; -mod with_tx_raw_response; pub use expr::*; pub use scenario_env::*; pub use scenario_env_exec::ScenarioEnvExec; pub use scenario_env_query::ScenarioEnvQuery; -pub use with_tx_raw_response::WithRawTxResponse; diff --git a/framework/scenario/src/lib.rs b/framework/scenario/src/lib.rs index 1fb9b4c63e..64229851af 100644 --- a/framework/scenario/src/lib.rs +++ b/framework/scenario/src/lib.rs @@ -39,7 +39,7 @@ pub use crate::scenario as mandos_system; // Re-exporting the whole mandos crate for easier use in tests. pub use multiversx_chain_scenario_format as scenario_format; -pub use facade::{world_tx::*, ContractInfo, ScenarioWorld, WhiteboxContract}; +pub use facade::{result_handlers::*, world_tx::*, ContractInfo, ScenarioWorld, WhiteboxContract}; use std::path::Path; From e83cb660db4a0595a700a6d5e8a98c5939676013 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 26 Mar 2024 10:46:23 +0200 Subject: [PATCH 183/461] renamed adder unit test --- .../examples/adder/tests/{adder_test.rs => adder_unit_test.rs} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename contracts/examples/adder/tests/{adder_test.rs => adder_unit_test.rs} (100%) diff --git a/contracts/examples/adder/tests/adder_test.rs b/contracts/examples/adder/tests/adder_unit_test.rs similarity index 100% rename from contracts/examples/adder/tests/adder_test.rs rename to contracts/examples/adder/tests/adder_unit_test.rs From cb303813b635d9e8c04bb85750bbe7e0ff684655 Mon Sep 17 00:00:00 2001 From: Laurentiu Ciobanu Date: Tue, 26 Mar 2024 16:29:43 +0200 Subject: [PATCH 184/461] use shared sc-actions test-coverage job --- .github/workflows/actions.yml | 59 +++-------------------------------- 1 file changed, 4 insertions(+), 55 deletions(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index a2aa85a4ee..278e4e30df 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -14,63 +14,12 @@ permissions: jobs: contracts: name: Contracts - uses: multiversx/mx-sc-actions/.github/workflows/contracts.yml@v3.0.0 + # uses: multiversx/mx-sc-actions/.github/workflows/contracts.yml@v3.0.0 + uses: multiversx/mx-sc-actions/.github/workflows/contracts.yml@3c37e52a9de8f4111f823da0b2412f1fc55b7d30 with: rust-toolchain: nightly-2023-12-11 path-to-sc-meta: framework/meta mx-scenario-go-version: v2.1.0-alpha + coverage-args: --ignore-filename-regex='meta/src' --ignore-filename-regex='wasm-adapter' --ignore-filename-regex='benchmarks/' --ignore-filename-regex='tests/' --output ./coverage.md secrets: - token: ${{ secrets.GITHUB_TOKEN }} - - test_coverage: - name: Test Coverage - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Install rust - uses: actions-rust-lang/setup-rust-toolchain@v1 - with: - toolchain: nightly-2023-12-11 - - - name: Install prerequisites - run: | - rustup component add llvm-tools-preview - dirname $(find ~/.rustup -name llvm-cov) >> $GITHUB_PATH - - echo $(dirname $(find ~/.rustup -name llvm-cov)) - - - name: Run tests and generate report - env: - RUSTFLAGS: "" - run: | - cargo run --bin sc-meta test-coverage \ - --ignore-filename-regex='meta/src' \ - --ignore-filename-regex='wasm-adapter' \ - --ignore-filename-regex='benchmarks/' \ - --ignore-filename-regex='tests/' \ - --output ./coverage.md - - - name: Upload the report - uses: actions/upload-artifact@v3 - with: - name: coverage - path: coverage.md - - - name: Find the comment containing the report - id: fc - uses: peter-evans/find-comment@v2 - if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository - with: - issue-number: ${{ github.event.pull_request.number }} - comment-author: "github-actions[bot]" - body-includes: "Coverage Summary" - - - name: Create or update the report comment - uses: peter-evans/create-or-update-comment@v2 - if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository - with: - comment-id: ${{ steps.fc.outputs.comment-id }} - issue-number: ${{ github.event.pull_request.number }} - body-file: ./coverage.md - edit-mode: replace + token: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From 38e6794bfb4c5273f1d0cb4e9d33055390bedecc Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Tue, 26 Mar 2024 19:24:10 +0200 Subject: [PATCH 185/461] unified sytax - integrate in Tx --- framework/base/src/types/interaction/tx.rs | 32 ++++++- .../base/src/types/interaction/tx_payment.rs | 1 + .../tx_payment_egld_or_multi_esdt.rs | 93 +++++++++++++++++++ .../tx_payment/tx_payment_single_esdt_ref.rs | 4 +- .../wrapped/egld_or_multi_esdt_payment.rs | 21 +++++ .../base/src/types/managed/wrapped/mod.rs | 2 +- 6 files changed, 149 insertions(+), 4 deletions(-) create mode 100644 framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt.rs diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 583e038625..1251dc656c 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -1,7 +1,7 @@ use crate::{ api::CallTypeApi, contract_base::BlockchainWrapper, - proxy_imports::{EsdtTokenPaymentRefs, TokenIdentifier}, + proxy_imports::{EgldOrMultiEsdtPaymentRefs, EsdtTokenPaymentRefs, TokenIdentifier}, types::{ BigUint, CodeMetadata, EgldOrEsdtTokenPayment, EsdtTokenPayment, ManagedAddress, ManagedBuffer, ManagedOption, ManagedVec, MultiEsdtPayment, @@ -260,6 +260,36 @@ where } } + pub fn egld_ref( + self, + amount: &BigUint, + ) -> Tx, Gas, Data, RH> { + Tx { + env: self.env, + from: self.from, + to: self.to, + payment: EgldOrMultiEsdtPaymentRefs::Egld(amount), + gas: self.gas, + data: self.data, + result_handler: self.result_handler, + } + } + + pub fn mult_esdt_payment_ref( + self, + amount: &ManagedVec>, + ) -> Tx, Gas, Data, RH> { + Tx { + env: self.env, + from: self.from, + to: self.to, + payment: EgldOrMultiEsdtPaymentRefs::MultiEsdt(amount), + gas: self.gas, + data: self.data, + result_handler: self.result_handler, + } + } + /// Backwards compatibility. pub fn with_multi_token_transfer( self, diff --git a/framework/base/src/types/interaction/tx_payment.rs b/framework/base/src/types/interaction/tx_payment.rs index 4b2f54e29f..d70fc79349 100644 --- a/framework/base/src/types/interaction/tx_payment.rs +++ b/framework/base/src/types/interaction/tx_payment.rs @@ -1,4 +1,5 @@ mod tx_payment_egld; +mod tx_payment_egld_or_multi_esdt; mod tx_payment_egld_value; mod tx_payment_multi_esdt; mod tx_payment_none; diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt.rs new file mode 100644 index 0000000000..7ebfe42806 --- /dev/null +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt.rs @@ -0,0 +1,93 @@ +use alloc::borrow::ToOwned; + +use crate::{ + api::ManagedTypeApi, + contract_base::SendRawWrapper, + proxy_imports::{ + AnnotatedValue, EgldOrMultiEsdtPayment, EgldOrMultiEsdtPaymentRefs, ManagedType, + }, + types::{ + BigUint, EsdtTokenPayment, EsdtTokenPaymentRefs, ManagedAddress, ManagedVec, + MultiEsdtPayment, TxFrom, TxToSpecified, + }, +}; + +use super::{AnnotatedEgldPayment, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment}; + +impl<'a, Env> TxPayment for EgldOrMultiEsdtPaymentRefs<'a, Env::Api> +where + Env: TxEnv, +{ + fn is_no_payment(&self) -> bool { + self.is_empty() + } + + fn perform_transfer_execute( + self, + env: &Env, + to: &ManagedAddress, + gas_limit: u64, + fc: FunctionCall, + ) { + match self { + EgldOrMultiEsdtPaymentRefs::Egld(egld_amount) => { + let _ = SendRawWrapper::::new().direct_egld_execute( + to, + egld_amount, + gas_limit, + &fc.function_name, + &fc.arg_buffer, + ); + }, + EgldOrMultiEsdtPaymentRefs::MultiEsdt(multi_esdt_payment) => { + let _ = SendRawWrapper::::new().multi_esdt_transfer_execute( + to, + multi_esdt_payment, + gas_limit, + &fc.function_name, + &fc.arg_buffer, + ); + }, + } + } + + fn with_normalized( + self, + env: &Env, + from: &From, + to: To, + fc: FunctionCall, + f: F, + ) -> R + where + From: TxFrom, + To: TxToSpecified, + F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, + { + match self { + EgldOrMultiEsdtPaymentRefs::Egld(egld_amount) => { + to.with_address_ref(env, |to_addr| f(to_addr, &BigUint::zero(), &fc)) + }, + EgldOrMultiEsdtPaymentRefs::MultiEsdt(multi_esdt_payment) => { + to.with_address_ref(env, |to_addr| { + let fc_conv = + fc.convert_to_multi_transfer_esdt_call(to_addr, multi_esdt_payment); + f(to_addr, &BigUint::zero(), &fc_conv) + }) + }, + } + } + + fn into_full_payment_data(self, env: &Env) -> FullPaymentData { + match self { + EgldOrMultiEsdtPaymentRefs::Egld(egld_amount) => FullPaymentData { + egld: Some(AnnotatedEgldPayment::new_egld(egld_amount.into_value(env))), + multi_esdt: ManagedVec::new(), + }, + EgldOrMultiEsdtPaymentRefs::MultiEsdt(multi_esdt_payment) => FullPaymentData { + egld: None, + multi_esdt: multi_esdt_payment.clone(), + }, + } + } +} diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt_ref.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt_ref.rs index c0d568e11b..fd976e14d4 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt_ref.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt_ref.rs @@ -2,8 +2,8 @@ use crate::{ api::ManagedTypeApi, contract_base::SendRawWrapper, types::{ - BigUint, EsdtTokenPayment, EsdtTokenPaymentRefs, ManagedAddress, ManagedVec, - MultiEsdtPayment, TokenIdentifier, TxFrom, TxToSpecified, + BigUint, EsdtTokenPaymentRefs, ManagedAddress, ManagedVec, MultiEsdtPayment, + TokenIdentifier, TxFrom, TxToSpecified, }, }; diff --git a/framework/base/src/types/managed/wrapped/egld_or_multi_esdt_payment.rs b/framework/base/src/types/managed/wrapped/egld_or_multi_esdt_payment.rs index 11a8d7ea83..838fc278a4 100644 --- a/framework/base/src/types/managed/wrapped/egld_or_multi_esdt_payment.rs +++ b/framework/base/src/types/managed/wrapped/egld_or_multi_esdt_payment.rs @@ -34,6 +34,7 @@ impl EgldOrMultiEsdtPayment { } } +/// The version of `EgldOrMultiEsdtPayment` that contains referrences instead of owned fields. pub enum EgldOrMultiEsdtPaymentRefs<'a, M: ManagedTypeApi> { Egld(&'a BigUint), MultiEsdt(&'a ManagedVec>), @@ -51,3 +52,23 @@ impl EgldOrMultiEsdtPayment { } } } + +impl<'a, M: ManagedTypeApi> EgldOrMultiEsdtPaymentRefs<'a, M> { + pub fn to_owned_payment(&self) -> EgldOrMultiEsdtPayment { + match self { + EgldOrMultiEsdtPaymentRefs::Egld(egld_value) => { + EgldOrMultiEsdtPayment::Egld((*egld_value).clone()) + }, + EgldOrMultiEsdtPaymentRefs::MultiEsdt(esdt_payments) => { + EgldOrMultiEsdtPayment::MultiEsdt((*esdt_payments).clone()) + }, + } + } + + pub fn is_empty(&self) -> bool { + match self { + EgldOrMultiEsdtPaymentRefs::Egld(egld_value) => *egld_value == &0u32, + EgldOrMultiEsdtPaymentRefs::MultiEsdt(esdt_payments) => esdt_payments.is_empty(), + } + } +} diff --git a/framework/base/src/types/managed/wrapped/mod.rs b/framework/base/src/types/managed/wrapped/mod.rs index a2dcd6008a..5a5e907403 100644 --- a/framework/base/src/types/managed/wrapped/mod.rs +++ b/framework/base/src/types/managed/wrapped/mod.rs @@ -20,7 +20,7 @@ mod token_identifier; pub use egld_or_esdt_token_identifier::EgldOrEsdtTokenIdentifier; pub use egld_or_esdt_token_payment::EgldOrEsdtTokenPayment; -pub use egld_or_multi_esdt_payment::EgldOrMultiEsdtPayment; +pub use egld_or_multi_esdt_payment::{EgldOrMultiEsdtPayment, EgldOrMultiEsdtPaymentRefs}; pub(crate) use encoded_managed_vec_item::EncodedManagedVecItem; pub use esdt_token_data::EsdtTokenData; pub use esdt_token_payment::{EsdtTokenPayment, EsdtTokenPaymentRefs, MultiEsdtPayment}; From ba6da3fbe0c034a7b7784c553694b72115d4a04b Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Tue, 26 Mar 2024 18:40:48 +0100 Subject: [PATCH 186/461] upgrade in proxy --- .../src/forwarder_raw_deploy_upgrade.rs | 4 +- .../forwarder/src/contract_upgrade.rs | 27 ++-- .../forwarder/src/vault_proxy.rs | 22 +++ .../proxy-test-first/src/proxy-test-first.rs | 7 +- framework/base/src/types/interaction/mod.rs | 4 + framework/base/src/types/interaction/tx.rs | 99 +++++++++++++- .../src/types/interaction/tx_call_deploy.rs | 117 +--------------- .../src/types/interaction/tx_call_upgrade.rs | 127 ++++++++++++++++++ .../base/src/types/interaction/tx_proxy.rs | 10 +- .../src/types/interaction/upgrade_call.rs | 90 +++++++++++++ .../generate_proxy/proxy_sc_functions_gen.rs | 69 +++++++++- 11 files changed, 437 insertions(+), 139 deletions(-) create mode 100644 framework/base/src/types/interaction/tx_call_upgrade.rs create mode 100644 framework/base/src/types/interaction/upgrade_call.rs diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs index b8fc6138eb..03ebdd9cb4 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs @@ -48,7 +48,7 @@ pub trait ForwarderRawDeployUpgrade { ) { self.tx() .to(child_sc_address) - .raw_deploy() + .raw_upgrade() .code(new_code) .code_metadata(code_metadata) .arguments_raw(args.to_arg_buffer()) @@ -65,7 +65,7 @@ pub trait ForwarderRawDeployUpgrade { ) { self.tx() .to(sc_address) - .raw_deploy() + .raw_upgrade() .from_source(source_contract_address) .code_metadata(code_metadata) .arguments_raw(args.to_arg_buffer()) diff --git a/contracts/feature-tests/composability/forwarder/src/contract_upgrade.rs b/contracts/feature-tests/composability/forwarder/src/contract_upgrade.rs index b1629eeaa1..a1a402c6e7 100644 --- a/contracts/feature-tests/composability/forwarder/src/contract_upgrade.rs +++ b/contracts/feature-tests/composability/forwarder/src/contract_upgrade.rs @@ -1,10 +1,9 @@ +use crate::vault_proxy; + multiversx_sc::imports!(); #[multiversx_sc::module] pub trait UpgradeContractModule { - #[proxy] - fn vault_proxy(&self, sc_address: ManagedAddress) -> vault::Proxy; - #[endpoint(upgradeVault)] fn upgrade_vault( &self, @@ -12,9 +11,14 @@ pub trait UpgradeContractModule { new_code: ManagedBuffer, opt_arg: OptionalValue, ) { - self.vault_proxy(child_sc_address) - .init(opt_arg) - .upgrade_contract(&new_code, CodeMetadata::UPGRADEABLE); + let _ = self + .tx() + .to(child_sc_address) + .typed(vault_proxy::VaultProxy) + .upgrade(opt_arg) + .code(new_code) + .code_metadata(CodeMetadata::UPGRADEABLE) + .upgrade_async_call(); } #[endpoint] @@ -24,8 +28,13 @@ pub trait UpgradeContractModule { source_address: ManagedAddress, opt_arg: OptionalValue, ) { - self.vault_proxy(child_sc_address) - .init(opt_arg) - .upgrade_from_source(&source_address, CodeMetadata::UPGRADEABLE) + let _ = self + .tx() + .to(child_sc_address) + .typed(vault_proxy::VaultProxy) + .upgrade(opt_arg) + .code_metadata(CodeMetadata::UPGRADEABLE) + .from_source(source_address) + .upgrade_async_call(); } } diff --git a/contracts/feature-tests/composability/forwarder/src/vault_proxy.rs b/contracts/feature-tests/composability/forwarder/src/vault_proxy.rs index f1c9e2127a..2d6cb09693 100644 --- a/contracts/feature-tests/composability/forwarder/src/vault_proxy.rs +++ b/contracts/feature-tests/composability/forwarder/src/vault_proxy.rs @@ -53,6 +53,28 @@ where } } +#[rustfmt::skip] +impl VaultProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn upgrade< + Arg0: CodecInto>>, + >( + self, + opt_arg_to_echo: Arg0, + ) -> TxProxyUpgrade, OptionalValue>>> { + self.wrapped_tx + .raw_upgrade() + .argument(&opt_arg_to_echo) + .original_result() + } +} + #[rustfmt::skip] impl VaultProxyMethods where diff --git a/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs b/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs index b6d04b7606..7d18e22e3b 100644 --- a/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs +++ b/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs @@ -77,10 +77,11 @@ pub trait ProxyTestFirst { let payment = self.call_value().egld_value(); let other_contract = self.get_other_contract(); - self.message_me_proxy() - .init(456) // TODO: upgrade proxy + self.tx() .to(other_contract) - .with_egld_transfer(payment.clone_value()) + .raw_upgrade() + .argument(&456) + .egld(payment.clone_value()) .upgrade_contract(&code, CodeMetadata::UPGRADEABLE); } diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index 7b751e162b..125f16150b 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -25,6 +25,7 @@ mod tx_call_async_promises; mod tx_call_deploy; mod tx_call_sync; mod tx_call_te; +mod tx_call_upgrade; mod tx_code_source; mod tx_data; mod tx_env; @@ -38,6 +39,7 @@ mod tx_rh_list; mod tx_rh_original_result; mod tx_to; mod typed_function_call; +mod upgrade_call; pub use annotated::*; pub use async_call::AsyncCall; @@ -63,6 +65,7 @@ pub use tx_call_async::*; pub use tx_call_async_promises::*; pub use tx_call_deploy::*; pub use tx_call_sync::*; +pub use tx_call_upgrade::*; pub use tx_code_source::*; pub use tx_data::*; pub use tx_env::*; @@ -76,5 +79,6 @@ pub use tx_rh_list::*; pub use tx_rh_original_result::*; pub use tx_to::*; pub use typed_function_call::*; +pub use upgrade_call::*; pub type TxScBase = TxBaseWithEnv>; diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 583e038625..548da703c8 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -16,7 +16,7 @@ use super::{ ExplicitGas, FromSource, FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, TxCodeValue, TxData, TxEgldValue, TxEnv, TxFrom, TxFromSourceValue, TxGas, TxPayment, TxPaymentEgldOnly, TxProxyTrait, - TxResultHandler, TxScEnv, TxTo, TxToSpecified, + TxResultHandler, TxScEnv, TxTo, TxToSpecified, UpgradeCall, }; #[must_use] @@ -637,6 +637,74 @@ where } } +impl Tx +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Payment: TxPaymentEgldOnly, + Gas: TxGas, + RH: TxResultHandler, +{ + pub fn raw_upgrade(self) -> Tx, RH> { + Tx { + env: self.env, + from: self.from, + to: self.to, + payment: self.payment, + gas: self.gas, + data: UpgradeCall::default(), + result_handler: self.result_handler, + } + } +} + +impl Tx, RH> +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Payment: TxPaymentEgldOnly, + Gas: TxGas, + RH: TxResultHandler, +{ + pub fn code( + self, + code: CodeValue, + ) -> Tx>, RH> + where + CodeValue: TxCodeValue, + { + Tx { + env: self.env, + from: self.from, + to: self.to, + payment: self.payment, + gas: self.gas, + data: self.data.code_source(Code(code)), + result_handler: self.result_handler, + } + } + + pub fn from_source( + self, + source_address: FromSourceValue, + ) -> Tx>, RH> + where + FromSourceValue: TxFromSourceValue, + { + Tx { + env: self.env, + from: self.from, + to: self.to, + payment: self.payment, + gas: self.gas, + data: self.data.code_source(FromSource(source_address)), + result_handler: self.result_handler, + } + } +} + impl Tx, RH> where Env: TxEnv, @@ -712,6 +780,35 @@ where } } +impl + Tx, RH> +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Payment: TxPaymentEgldOnly, + Gas: TxGas, + CodeSource: TxCodeSource, + RH: TxResultHandler, +{ + pub fn code_metadata(mut self, code_metadata: CodeMetadata) -> Self { + self.data = self.data.code_metadata(code_metadata); + self + } + + #[inline] + pub fn argument(mut self, arg: &T) -> Self { + self.data = self.data.argument(arg); + self + } + + #[inline] + pub fn arguments_raw(mut self, raw: ManagedArgBuffer) -> Self { + self.data.arg_buffer = raw; + self + } +} + impl From< Tx< diff --git a/framework/base/src/types/interaction/tx_call_deploy.rs b/framework/base/src/types/interaction/tx_call_deploy.rs index c5f948ea32..0fd9cedc74 100644 --- a/framework/base/src/types/interaction/tx_call_deploy.rs +++ b/framework/base/src/types/interaction/tx_call_deploy.rs @@ -10,7 +10,7 @@ use crate::{ use super::{ contract_call_exec::decode_result, Code, ConsNoRet, ConsRet, DeployCall, FromSource, OriginalResultMarker, RHList, RHListExec, RHListItem, Tx, TxCodeValue, TxEmptyResultHandler, - TxEnv, TxFromSourceValue, TxGas, TxPaymentEgldOnly, TxResultHandler, TxScEnv, + TxEnv, TxFromSourceValue, TxGas, TxPaymentEgldOnly, TxResultHandler, TxScEnv, UpgradeCall, }; pub struct DeployRawResult @@ -141,70 +141,6 @@ where } } -impl - Tx< - TxScEnv, - (), - ManagedAddress, - Payment, - Gas, - DeployCall, Code>, - RH, - > -where - Api: CallTypeApi, - Payment: TxPaymentEgldOnly>, - Gas: TxGas>, - CodeValue: TxCodeValue>, - RH: TxEmptyResultHandler>, -{ - pub fn upgrade_async_call(self) { - let gas = self.gas.explicit_or_gas_left(&self.env); - self.payment.with_egld_value(|egld_value| { - SendRawWrapper::::new().upgrade_contract( - &self.to, - gas, - egld_value, - &self.data.code_source.0.into_value(&self.env), - self.data.code_metadata, - &self.data.arg_buffer, - ); - }); - } -} - -impl - Tx< - TxScEnv, - (), - ManagedAddress, - Payment, - Gas, - DeployCall, FromSource>, - RH, - > -where - Api: CallTypeApi, - Payment: TxPaymentEgldOnly>, - Gas: TxGas>, - FromSourceValue: TxFromSourceValue>, - RH: TxEmptyResultHandler>, -{ - pub fn upgrade_async_call(self) { - let gas = self.gas.explicit_or_gas_left(&self.env); - self.payment.with_egld_value(|egld_value| { - SendRawWrapper::::new().upgrade_from_source_contract( - &self.to, - gas, - egld_value, - &self.data.code_source.0.into_value(&self.env), - self.data.code_metadata, - &self.data.arg_buffer, - ); - }); - } -} - impl Tx< TxScEnv, @@ -263,54 +199,3 @@ where (new_address, decode_result(raw_results)) } } - -impl - Tx, (), ManagedAddress, Payment, Gas, DeployCall, ()>, RH> -where - Api: CallTypeApi, - Payment: TxPaymentEgldOnly>, - Gas: TxGas>, - RH: TxEmptyResultHandler>, -{ - /// Backwards compatibility, immitates the old API. - /// - /// Note that the data type (the `DeployCall`) doesn't have the code set. - /// This is because the old API was passing it as paramter, so we do the Apime here. - /// For clarity, we don't want it set twice. - pub fn upgrade_contract(self, code: &ManagedBuffer, code_metadata: CodeMetadata) { - let gas = self.gas.explicit_or_gas_left(&self.env); - self.payment.with_egld_value(|egld_value| { - SendRawWrapper::::new().upgrade_contract( - &self.to, - gas, - egld_value, - code, - code_metadata, - &self.data.arg_buffer, - ); - }); - } - - /// Backwards compatibility, immitates the old API. - /// - /// Note that the data type (the `DeployCall`) doesn't have the code set. - /// This is because the old API was passing it as paramter, so we do the Apime here. - /// For clarity, we don't want it set twice. - pub fn upgrade_from_source( - self, - source_address: &ManagedAddress, - code_metadata: CodeMetadata, - ) { - let gas = self.gas.explicit_or_gas_left(&self.env); - self.payment.with_egld_value(|egld_value| { - SendRawWrapper::::new().upgrade_from_source_contract( - &self.to, - gas, - egld_value, - source_address, - code_metadata, - &self.data.arg_buffer, - ); - }); - } -} diff --git a/framework/base/src/types/interaction/tx_call_upgrade.rs b/framework/base/src/types/interaction/tx_call_upgrade.rs new file mode 100644 index 0000000000..013c5adf06 --- /dev/null +++ b/framework/base/src/types/interaction/tx_call_upgrade.rs @@ -0,0 +1,127 @@ +use crate::{ + api::CallTypeApi, + contract_base::SendRawWrapper, + proxy_imports::{CodeMetadata, ManagedAddress, ManagedBuffer, ManagedVec}, + tuple_util::NestedTupleFlatten, +}; + +use super::{ + tx_from, Code, DeployRawResult, FromSource, RHListExec, Tx, TxCodeValue, TxEmptyResultHandler, + TxFrom, TxFromSourceValue, TxGas, TxPaymentEgldOnly, TxResultHandler, TxScEnv, TxTo, + UpgradeCall, +}; + +impl + Tx< + TxScEnv, + (), + ManagedAddress, + Payment, + Gas, + UpgradeCall, Code>, + RH, + > +where + Api: CallTypeApi, + Payment: TxPaymentEgldOnly>, + Gas: TxGas>, + CodeValue: TxCodeValue>, + RH: TxEmptyResultHandler>, +{ + pub fn upgrade_async_call(self) { + let gas = self.gas.explicit_or_gas_left(&self.env); + self.payment.with_egld_value(|egld_value| { + SendRawWrapper::::new().upgrade_contract( + &self.to, + gas, + egld_value, + &self.data.code_source.0.into_value(&self.env), + self.data.code_metadata, + &self.data.arg_buffer, + ); + }); + } +} + +impl + Tx< + TxScEnv, + (), + ManagedAddress, + Payment, + Gas, + UpgradeCall, FromSource>, + RH, + > +where + Api: CallTypeApi, + Payment: TxPaymentEgldOnly>, + Gas: TxGas>, + FromSourceValue: TxFromSourceValue>, + RH: TxEmptyResultHandler>, +{ + pub fn upgrade_async_call(self) { + let gas = self.gas.explicit_or_gas_left(&self.env); + self.payment.with_egld_value(|egld_value| { + SendRawWrapper::::new().upgrade_from_source_contract( + &self.to, + gas, + egld_value, + &self.data.code_source.0.into_value(&self.env), + self.data.code_metadata, + &self.data.arg_buffer, + ); + }); + } +} + +impl + Tx, (), ManagedAddress, Payment, Gas, UpgradeCall, ()>, RH> +where + Api: CallTypeApi, + Payment: TxPaymentEgldOnly>, + Gas: TxGas>, + RH: TxEmptyResultHandler>, +{ + /// Backwards compatibility, immitates the old API. + /// + /// Note that the data type (the `DeployCall`) doesn't have the code set. + /// This is because the old API was passing it as paramter, so we do the Apime here. + /// For clarity, we don't want it set twice. + pub fn upgrade_contract(self, code: &ManagedBuffer, code_metadata: CodeMetadata) { + let gas = self.gas.explicit_or_gas_left(&self.env); + self.payment.with_egld_value(|egld_value| { + SendRawWrapper::::new().upgrade_contract( + &self.to, + gas, + egld_value, + code, + code_metadata, + &self.data.arg_buffer, + ); + }); + } + + /// Backwards compatibility, immitates the old API. + /// + /// Note that the data type (the `DeployCall`) doesn't have the code set. + /// This is because the old API was passing it as paramter, so we do the Apime here. + /// For clarity, we don't want it set twice. + pub fn upgrade_from_source( + self, + source_address: &ManagedAddress, + code_metadata: CodeMetadata, + ) { + let gas = self.gas.explicit_or_gas_left(&self.env); + self.payment.with_egld_value(|egld_value| { + SendRawWrapper::::new().upgrade_from_source_contract( + &self.to, + gas, + egld_value, + source_address, + code_metadata, + &self.data.arg_buffer, + ); + }); + } +} diff --git a/framework/base/src/types/interaction/tx_proxy.rs b/framework/base/src/types/interaction/tx_proxy.rs index f38e356be0..7bb0c67439 100644 --- a/framework/base/src/types/interaction/tx_proxy.rs +++ b/framework/base/src/types/interaction/tx_proxy.rs @@ -1,4 +1,6 @@ -use super::{DeployCall, FunctionCall, OriginalResultMarker, Tx, TxEnv, TxFrom, TxGas, TxTo}; +use super::{ + DeployCall, FunctionCall, OriginalResultMarker, Tx, TxEnv, TxFrom, TxGas, TxTo, UpgradeCall, +}; /// Defines a proxy object for a smart contract. pub trait TxProxyTrait @@ -14,10 +16,14 @@ where fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods; } -/// Alias for a `Tx` generated from a proxy, in `init` or `upgrade`. +/// Alias for a `Tx` generated from a proxy, in `init`. pub type TxProxyDeploy = Tx, OriginalResultMarker>; /// Alias for a `Tx` generated from a proxy, in an endpoint. pub type TxProxyCall = Tx::Api>, OriginalResultMarker>; + +/// Alias for a `Tx` generated from a proxy, in `upgrade`. +pub type TxProxyUpgrade = + Tx, OriginalResultMarker>; diff --git a/framework/base/src/types/interaction/upgrade_call.rs b/framework/base/src/types/interaction/upgrade_call.rs new file mode 100644 index 0000000000..d69895f029 --- /dev/null +++ b/framework/base/src/types/interaction/upgrade_call.rs @@ -0,0 +1,90 @@ +use multiversx_sc_codec::TopEncodeMulti; + +use crate::types::{CodeMetadata, ManagedBuffer, ManagedBufferCachedBuilder}; + +use super::{ManagedArgBuffer, TxCodeSource, TxData, TxEnv}; + +/// Holds deploy data: code, code metadata, and arguments. +pub struct UpgradeCall +where + Env: TxEnv, + CodeSource: TxCodeSource, +{ + pub code_source: CodeSource, + pub code_metadata: CodeMetadata, + pub arg_buffer: ManagedArgBuffer, +} + +impl Default for UpgradeCall +where + Env: TxEnv, +{ + fn default() -> UpgradeCall { + UpgradeCall { + code_source: (), + code_metadata: CodeMetadata::DEFAULT, + arg_buffer: ManagedArgBuffer::new(), + } + } +} + +impl TxData for UpgradeCall +where + Env: TxEnv, + CodeSource: TxCodeSource, +{ + fn is_no_call(&self) -> bool { + false + } + + fn to_call_data_string(&self) -> ManagedBuffer { + // Implement as needed for deployment-specific data + let result = ManagedBufferCachedBuilder::default(); + // result.append_managed_buffer(&self.code); + // Add other fields as needed + result.into_managed_buffer() + } +} + +impl UpgradeCall +where + Env: TxEnv, +{ + pub fn code_source(self, code_source: CodeSource) -> UpgradeCall + where + CodeSource: TxCodeSource, + { + UpgradeCall { + code_source, + code_metadata: self.code_metadata, + arg_buffer: self.arg_buffer, + } + } +} + +impl UpgradeCall +where + Env: TxEnv, + CodeSource: TxCodeSource, +{ + pub fn code_metadata(mut self, code_metadata: CodeMetadata) -> Self + where + CodeSource: TxCodeSource, + { + self.code_metadata = code_metadata; + self + } + + /// Adds an argument of any serializable type. + /// + /// Multi-values are accepted. No type checking performed. + pub fn argument(mut self, arg: &T) -> Self { + self.arg_buffer.push_multi_arg(arg); + self + } + + pub fn arguments_raw(mut self, raw: ManagedArgBuffer) -> Self { + self.arg_buffer = raw; + self + } +} diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs index 59624f979d..54eee5c44a 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs @@ -14,6 +14,19 @@ pub(crate) fn write_content(file: &mut File, abi: ContractAbi) { write_constructor_content(file, constructor_abi.inputs); write_end_of_function(file); } + + writeln!(file, "}}").unwrap(); + + write_header_impl_upgrade_constructor(file, &abi.name); + for (i, upgrade_abi) in abi.upgrade_constructors.clone().into_iter().enumerate() { + if i > 0 { + writeln!(file).unwrap(); + } + write_upgrade_constructor_header(file, upgrade_abi.clone()); + write_upgrade_constructor_content(file, upgrade_abi.inputs); + write_end_of_function(file); + } + writeln!(file, "}}").unwrap(); write_header_impl_endpoints(file, &abi.name); @@ -46,6 +59,24 @@ where .unwrap(); } +fn write_header_impl_upgrade_constructor(file: &mut File, name: &str) { + let proxy_methods_type_name = proxy_methods_type_name(name); + writeln!( + file, + r#" +#[rustfmt::skip] +impl {proxy_methods_type_name} +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{{"# + ) + .unwrap(); +} + fn write_header_impl_endpoints(file: &mut File, name: &str) { let proxy_methods_type_name = proxy_methods_type_name(name); writeln!( @@ -64,14 +95,19 @@ where .unwrap(); } -fn write_constructor_header(file: &mut File, contructor_abi: EndpointAbi) { - write_fn_signature(file, contructor_abi.clone()); - write_constructor_output(file, contructor_abi.outputs); +fn write_constructor_header(file: &mut File, constructor_abi: EndpointAbi) { + write_fn_signature(file, constructor_abi.clone()); + write_constructor_output(file, constructor_abi.outputs); } -fn write_endpoint_header(file: &mut File, contructor_abi: EndpointAbi) { - write_fn_signature(file, contructor_abi.clone()); - write_endpoint_output(file, contructor_abi.outputs); +fn write_upgrade_constructor_header(file: &mut File, upgrade_constructor_abi: EndpointAbi) { + write_fn_signature(file, upgrade_constructor_abi.clone()); + write_upgrade_constructor_output(file, upgrade_constructor_abi.outputs); +} + +fn write_endpoint_header(file: &mut File, constructor_abi: EndpointAbi) { + write_fn_signature(file, constructor_abi.clone()); + write_endpoint_output(file, constructor_abi.outputs); } fn write_fn_signature(file: &mut File, endpoint_abi: EndpointAbi) { @@ -98,6 +134,14 @@ fn write_constructor_output(file: &mut File, outputs: Vec) { writeln!(file, "> {{").unwrap(); } +fn write_upgrade_constructor_output(file: &mut File, outputs: Vec) { + write!(file, "-> TxProxyUpgrade {{").unwrap(); +} + fn write_endpoint_output(file: &mut File, outputs: Vec) { write!(file, "-> TxProxyCall) { writeln!(file, " .original_result()").unwrap(); } +fn write_upgrade_constructor_content(file: &mut File, inputs: Vec) { + writeln!( + file, + " self.wrapped_tx + .raw_upgrade()" + ) + .unwrap(); + for input in inputs.iter() { + writeln!(file, " .argument(&{})", input.arg_name).unwrap(); + } + writeln!(file, " .original_result()").unwrap(); +} + fn write_endpoint_content(file: &mut File, function_name: String, inputs: Vec) { writeln!( file, From 819c43868a39dace3f0e25f92c2c760b9372e761 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 26 Mar 2024 19:51:19 +0200 Subject: [PATCH 187/461] address expression conversions --- .../types/interaction/expr/address_expr.rs | 5 +++++ .../src/types/interaction/expr/sc_expr.rs | 5 +++++ .../src/scenario/model/value/address_key.rs | 20 +++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/framework/base/src/types/interaction/expr/address_expr.rs b/framework/base/src/types/interaction/expr/address_expr.rs index a5b9756638..ce2fa10fb5 100644 --- a/framework/base/src/types/interaction/expr/address_expr.rs +++ b/framework/base/src/types/interaction/expr/address_expr.rs @@ -63,6 +63,11 @@ impl AddressExpr { } result } + + #[cfg(feature = "alloc")] + pub fn eval_to_expr(&self) -> alloc::string::String { + alloc::format!("{ADDRESS_PREFIX}{}", self.0) + } } #[cfg(test)] diff --git a/framework/base/src/types/interaction/expr/sc_expr.rs b/framework/base/src/types/interaction/expr/sc_expr.rs index 551d4eaf0a..1613587402 100644 --- a/framework/base/src/types/interaction/expr/sc_expr.rs +++ b/framework/base/src/types/interaction/expr/sc_expr.rs @@ -74,6 +74,11 @@ impl<'a> ScExpr<'a> { } result } + + #[cfg(feature = "alloc")] + pub fn eval_to_expr(&self) -> alloc::string::String { + alloc::format!("{SC_PREFIX}{}", self.0) + } } #[cfg(test)] diff --git a/framework/scenario/src/scenario/model/value/address_key.rs b/framework/scenario/src/scenario/model/value/address_key.rs index 5bbc1d79ae..889cca69ae 100644 --- a/framework/scenario/src/scenario/model/value/address_key.rs +++ b/framework/scenario/src/scenario/model/value/address_key.rs @@ -1,3 +1,5 @@ +use multiversx_sc::types::{AddressExpr, ScExpr}; + use super::{value_from_slice, AddressValue}; use crate::{ multiversx_sc::types::Address, @@ -114,3 +116,21 @@ impl From<&Address> for AddressKey { } } } + +impl From for AddressKey { + fn from(from: AddressExpr) -> Self { + AddressKey { + value: from.eval_to_array().into(), + original: from.eval_to_expr(), + } + } +} + +impl From> for AddressKey { + fn from(from: ScExpr) -> Self { + AddressKey { + value: from.eval_to_array().into(), + original: from.eval_to_expr(), + } + } +} From d28adf093020337f96f077f7f361cb9dc2b043c3 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 26 Mar 2024 19:54:24 +0200 Subject: [PATCH 188/461] result handlers for errors, v1 --- .../interaction/tx_rh_list/tx_rh_list_exec.rs | 22 ++++++++++++++++ .../scenario/src/facade/result_handlers.rs | 4 +++ .../facade/result_handlers/returns_message.rs | 26 +++++++++++++++++++ .../facade/result_handlers/returns_status.rs | 26 +++++++++++++++++++ 4 files changed, 78 insertions(+) create mode 100644 framework/scenario/src/facade/result_handlers/returns_message.rs create mode 100644 framework/scenario/src/facade/result_handlers/returns_status.rs diff --git a/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_exec.rs b/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_exec.rs index b8121d40d8..64f8a0a487 100644 --- a/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_exec.rs +++ b/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_exec.rs @@ -10,6 +10,10 @@ pub trait RHListItemExec: RHListItem where Env: TxEnv, { + fn is_error_handled(&self) -> bool { + false + } + fn item_process_result(self, raw_result: &RawResult) -> Self::Returns; } @@ -18,6 +22,8 @@ pub trait RHListExec: RHList where Env: TxEnv, { + fn is_error_handled(&self) -> bool; + fn list_process_result(self, raw_result: &RawResult) -> Self::ListReturns; } @@ -25,6 +31,10 @@ impl RHListExec for () where Env: TxEnv, { + fn is_error_handled(&self) -> bool { + false + } + fn list_process_result(self, _raw_result: &RawResult) -> Self::ListReturns {} } @@ -32,6 +42,10 @@ impl RHListExec for OriginalResultMarker where Env: TxEnv, { + fn is_error_handled(&self) -> bool { + false + } + fn list_process_result(self, _raw_result: &RawResult) -> Self::ListReturns {} } @@ -41,6 +55,10 @@ where Head: RHListItemExec, Tail: RHListExec, { + fn is_error_handled(&self) -> bool { + self.head.is_error_handled() || self.tail.is_error_handled() + } + fn list_process_result(self, raw_result: &RawResult) -> Self::ListReturns { let head_result = self.head.item_process_result(raw_result); let tail_result = self.tail.list_process_result(raw_result); @@ -54,6 +72,10 @@ where Head: RHListItemExec, Tail: RHListExec, { + fn is_error_handled(&self) -> bool { + self.head.is_error_handled() || self.tail.is_error_handled() + } + fn list_process_result(self, raw_result: &RawResult) -> Self::ListReturns { self.head.item_process_result(raw_result); self.tail.list_process_result(raw_result) diff --git a/framework/scenario/src/facade/result_handlers.rs b/framework/scenario/src/facade/result_handlers.rs index 6bb2de8216..55f541d8e0 100644 --- a/framework/scenario/src/facade/result_handlers.rs +++ b/framework/scenario/src/facade/result_handlers.rs @@ -1,3 +1,7 @@ +mod returns_message; +mod returns_status; mod with_tx_raw_response; +pub use returns_message::ReturnsMessage; +pub use returns_status::ReturnsStatus; pub use with_tx_raw_response::WithRawTxResponse; diff --git a/framework/scenario/src/facade/result_handlers/returns_message.rs b/framework/scenario/src/facade/result_handlers/returns_message.rs new file mode 100644 index 0000000000..c9e9821055 --- /dev/null +++ b/framework/scenario/src/facade/result_handlers/returns_message.rs @@ -0,0 +1,26 @@ +use multiversx_sc::types::{RHListItem, RHListItemExec, TxEnv}; + +use crate::scenario_model::TxResponse; + +/// Indicates that the error status will be returned. +pub struct ReturnsMessage; + +impl RHListItem for ReturnsMessage +where + Env: TxEnv, +{ + type Returns = String; +} + +impl RHListItemExec for ReturnsMessage +where + Env: TxEnv, +{ + fn is_error_handled(&self) -> bool { + true + } + + fn item_process_result(self, raw_result: &TxResponse) -> Self::Returns { + raw_result.tx_error.message.clone() + } +} diff --git a/framework/scenario/src/facade/result_handlers/returns_status.rs b/framework/scenario/src/facade/result_handlers/returns_status.rs new file mode 100644 index 0000000000..7e81421efb --- /dev/null +++ b/framework/scenario/src/facade/result_handlers/returns_status.rs @@ -0,0 +1,26 @@ +use multiversx_sc::types::{RHListItem, RHListItemExec, TxEnv}; + +use crate::scenario_model::TxResponse; + +/// Indicates that the error status will be returned. +pub struct ReturnsStatus; + +impl RHListItem for ReturnsStatus +where + Env: TxEnv, +{ + type Returns = u64; +} + +impl RHListItemExec for ReturnsStatus +where + Env: TxEnv, +{ + fn is_error_handled(&self) -> bool { + true + } + + fn item_process_result(self, raw_result: &TxResponse) -> Self::Returns { + raw_result.tx_error.status + } +} From b3f1e9e7cf44f38ae222db631a202e0c7befdf3a Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 26 Mar 2024 21:51:34 +0200 Subject: [PATCH 189/461] result handlers for errors, v2 --- .../panic-message-features/sc-config.toml | 1 + .../src/panic_features.rs | 5 + .../tests/pmf_blackbox_test.rs | 93 ++++++++++++++++++ .../panic-message-features/tests/pmf_proxy.rs | 95 +++++++++++++++++++ .../panic-message-features/wasm/src/lib.rs | 5 +- .../base/src/types/interaction/tx_env.rs | 3 + .../base/src/types/interaction/tx_env_sc.rs | 2 + .../interaction/tx_rh_list/tx_rh_list_exec.rs | 43 ++++++--- .../generate_proxy/proxy_template_gen.rs | 9 +- .../scenario/src/facade/result_handlers.rs | 4 + .../facade/result_handlers/expect_message.rs | 32 +++++++ .../facade/result_handlers/expect_status.rs | 27 ++++++ .../facade/result_handlers/returns_message.rs | 11 ++- .../facade/result_handlers/returns_status.rs | 18 +++- .../src/facade/world_tx/scenario_env.rs | 8 +- .../facade/world_tx/scenario_env_deploy.rs | 2 + .../src/facade/world_tx/scenario_env_exec.rs | 6 +- .../src/facade/world_tx/scenario_env_query.rs | 9 +- .../scenario/model/transaction/tx_expect.rs | 6 ++ .../snippets/src/itx/interactor_env_deploy.rs | 9 +- .../snippets/src/itx/interactor_env_exec.rs | 12 ++- .../snippets/src/itx/interactor_env_query.rs | 12 ++- 22 files changed, 371 insertions(+), 41 deletions(-) create mode 100644 contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs create mode 100644 contracts/feature-tests/panic-message-features/tests/pmf_proxy.rs create mode 100644 framework/scenario/src/facade/result_handlers/expect_message.rs create mode 100644 framework/scenario/src/facade/result_handlers/expect_status.rs diff --git a/contracts/feature-tests/panic-message-features/sc-config.toml b/contracts/feature-tests/panic-message-features/sc-config.toml index fc05c90bba..7b60b5fb8c 100644 --- a/contracts/feature-tests/panic-message-features/sc-config.toml +++ b/contracts/feature-tests/panic-message-features/sc-config.toml @@ -1,4 +1,5 @@ [settings] +proxy-paths = ["tests/pmf_proxy.rs"] main = "main" [contracts.main] diff --git a/contracts/feature-tests/panic-message-features/src/panic_features.rs b/contracts/feature-tests/panic-message-features/src/panic_features.rs index 4b4ed32258..a2726d2fea 100644 --- a/contracts/feature-tests/panic-message-features/src/panic_features.rs +++ b/contracts/feature-tests/panic-message-features/src/panic_features.rs @@ -24,4 +24,9 @@ pub trait PanicMessageFeatures { #[event("before-panic")] fn before_panic(&self); + + #[view] + fn sc_panic(&self) { + sc_panic!("sc_panic! test"); + } } diff --git a/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs b/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs new file mode 100644 index 0000000000..ff14571fd9 --- /dev/null +++ b/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs @@ -0,0 +1,93 @@ +mod pmf_proxy; +use multiversx_sc::types::{AddressExpr, ScExpr}; +use multiversx_sc_scenario::{scenario_model::*, *}; + +const OWNER: AddressExpr = AddressExpr("owner"); +const SC_PMF: ScExpr = ScExpr("pmf"); +const CODE_EXPR: &str = "mxsc:output/panic-message-features.mxsc.json"; + +fn world() -> ScenarioWorld { + let mut blockchain = ScenarioWorld::new(); + blockchain.set_current_dir_from_workspace("contracts/examples/adder"); + + blockchain.register_contract(CODE_EXPR, panic_message_features::ContractBuilder); + blockchain +} + +fn setup() -> ScenarioWorld { + let mut world = world(); + let code = world.code_expression(CODE_EXPR); + + world.set_state_step( + SetStateStep::new() + .put_account(OWNER, Account::new().nonce(1)) + .put_account(SC_PMF, Account::new().code(code)), + ); + + world +} + +// TODO: move to basic-features a testing framework tester +#[test] +fn tx_returns_error_test() { + let mut world = setup(); + + let (status, message) = world + .tx() + .from(OWNER) + .to(SC_PMF) + .typed(pmf_proxy::PanicMessageFeaturesProxy) + .sc_panic() + .returns(ReturnsStatus) + .returns(ReturnsMessage) + .run(); + + assert_eq!(status, 4); + assert_eq!(message, "sc_panic! test"); +} + +#[test] +fn query_returns_error_test() { + let mut world = setup(); + + let (status, message) = world + .query() + .to(SC_PMF) + .typed(pmf_proxy::PanicMessageFeaturesProxy) + .sc_panic() + .returns(ReturnsStatus) + .returns(ReturnsMessage) + .run(); + + assert_eq!(status, 4); + assert_eq!(message, "sc_panic! test"); +} + +#[test] +fn tx_expect_error_test() { + let mut world = setup(); + + world + .tx() + .from(OWNER) + .to(SC_PMF) + .typed(pmf_proxy::PanicMessageFeaturesProxy) + .sc_panic() + .returns(ExpectStatus(4)) + .returns(ExpectMessage("sc_panic! test")) + .run(); +} + +#[test] +fn query_expect_error_test() { + let mut world = setup(); + + world + .query() + .to(SC_PMF) + .typed(pmf_proxy::PanicMessageFeaturesProxy) + .sc_panic() + .returns(ExpectStatus(4)) + .returns(ExpectMessage("sc_panic! test")) + .run(); +} diff --git a/contracts/feature-tests/panic-message-features/tests/pmf_proxy.rs b/contracts/feature-tests/panic-message-features/tests/pmf_proxy.rs new file mode 100644 index 0000000000..8226a1ec5f --- /dev/null +++ b/contracts/feature-tests/panic-message-features/tests/pmf_proxy.rs @@ -0,0 +1,95 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(dead_code)] +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +pub struct PanicMessageFeaturesProxy; + +impl TxProxyTrait for PanicMessageFeaturesProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = PanicMessageFeaturesProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + PanicMessageFeaturesProxyMethods { wrapped_tx: tx } + } +} + +pub struct PanicMessageFeaturesProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl PanicMessageFeaturesProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init( + self, + ) -> TxProxyDeploy { + self.wrapped_tx + .raw_deploy() + .original_result() + } +} + +#[rustfmt::skip] +impl PanicMessageFeaturesProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn panic_with_message< + Arg0: CodecInto, + >( + self, + some_value: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("panicWithMessage") + .argument(&some_value) + .original_result() + } + + /// Logs do not get recorded in case of panic. + pub fn panic_after_log( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("panicAfterLog") + .original_result() + } + + pub fn sc_panic( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("sc_panic") + .original_result() + } +} diff --git a/contracts/feature-tests/panic-message-features/wasm/src/lib.rs b/contracts/feature-tests/panic-message-features/wasm/src/lib.rs index 2a024b15d2..a347a1aaa3 100644 --- a/contracts/feature-tests/panic-message-features/wasm/src/lib.rs +++ b/contracts/feature-tests/panic-message-features/wasm/src/lib.rs @@ -5,9 +5,9 @@ //////////////////////////////////////////////////// // Init: 1 -// Endpoints: 2 +// Endpoints: 3 // Async Callback (empty): 1 -// Total number of exported functions: 4 +// Total number of exported functions: 5 #![no_std] #![allow(internal_features)] @@ -22,6 +22,7 @@ multiversx_sc_wasm_adapter::endpoints! { init => init panicWithMessage => panic_with_message panicAfterLog => panic_after_log + sc_panic => sc_panic ) } diff --git a/framework/base/src/types/interaction/tx_env.rs b/framework/base/src/types/interaction/tx_env.rs index 54fbf77b90..482b0a0e8e 100644 --- a/framework/base/src/types/interaction/tx_env.rs +++ b/framework/base/src/types/interaction/tx_env.rs @@ -3,6 +3,9 @@ use crate::{api::CallTypeApi, types::ManagedAddress}; pub trait TxEnv: Sized { type Api: CallTypeApi; + /// Type built by result handlers that translates into the "expect" section in scenarios. + type RHExpect: Default; + fn resolve_sender_address(&self) -> ManagedAddress; fn default_gas(&self) -> u64; diff --git a/framework/base/src/types/interaction/tx_env_sc.rs b/framework/base/src/types/interaction/tx_env_sc.rs index ce2c287d30..f22c4a3dee 100644 --- a/framework/base/src/types/interaction/tx_env_sc.rs +++ b/framework/base/src/types/interaction/tx_env_sc.rs @@ -41,6 +41,8 @@ where { type Api = Api; + type RHExpect = (); + fn resolve_sender_address(&self) -> ManagedAddress { BlockchainWrapper::::new().get_sc_address() } diff --git a/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_exec.rs b/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_exec.rs index 64f8a0a487..06b2184366 100644 --- a/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_exec.rs +++ b/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_exec.rs @@ -1,4 +1,8 @@ -use crate::{proxy_imports::OriginalResultMarker, types::TxEnv}; +use crate::{ + api::CallTypeApi, + proxy_imports::{ManagedBuffer, OriginalResultMarker}, + types::TxEnv, +}; use super::{ConsNoRet, ConsRet, RHList, RHListItem}; @@ -10,10 +14,19 @@ pub trait RHListItemExec: RHListItem where Env: TxEnv, { - fn is_error_handled(&self) -> bool { - false + /// Part of the execution pre-processing, each result handler needs to produce an "expect" field, + /// as defined in the environment. + /// + /// The operation is chained, so all result handlers can contribute, hence the `prev` argument, + /// which represents the "expect" field produces by the other result handlers. + /// + /// The default behavior is to leave it unchanged. + fn item_tx_expect(&self, prev: Env::RHExpect) -> Env::RHExpect { + prev } + /// The main functionality of a result handler, it either does some computation internally + /// (e.g. execution of a lambda function), or produces a result, or both. fn item_process_result(self, raw_result: &RawResult) -> Self::Returns; } @@ -22,8 +35,14 @@ pub trait RHListExec: RHList where Env: TxEnv, { - fn is_error_handled(&self) -> bool; + /// Provides the execution pre-processing, in which result handlers collectively produce an "expect" field. + /// + /// The operation starts with the default "expect" field, which normally has all fields unspecified, except + /// for the "status", which is by default set to "0". This means that failing transactions will cause a panic + /// unless explicitly stated in one of the result handlers. + fn list_tx_expect(&self) -> Env::RHExpect; + /// Aggregates the executions of all result handlers, as configured for a transaction. fn list_process_result(self, raw_result: &RawResult) -> Self::ListReturns; } @@ -31,8 +50,8 @@ impl RHListExec for () where Env: TxEnv, { - fn is_error_handled(&self) -> bool { - false + fn list_tx_expect(&self) -> Env::RHExpect { + Env::RHExpect::default() } fn list_process_result(self, _raw_result: &RawResult) -> Self::ListReturns {} @@ -42,8 +61,8 @@ impl RHListExec for OriginalResultMarker where Env: TxEnv, { - fn is_error_handled(&self) -> bool { - false + fn list_tx_expect(&self) -> Env::RHExpect { + Env::RHExpect::default() } fn list_process_result(self, _raw_result: &RawResult) -> Self::ListReturns {} @@ -55,8 +74,8 @@ where Head: RHListItemExec, Tail: RHListExec, { - fn is_error_handled(&self) -> bool { - self.head.is_error_handled() || self.tail.is_error_handled() + fn list_tx_expect(&self) -> Env::RHExpect { + self.head.item_tx_expect(self.tail.list_tx_expect()) } fn list_process_result(self, raw_result: &RawResult) -> Self::ListReturns { @@ -72,8 +91,8 @@ where Head: RHListItemExec, Tail: RHListExec, { - fn is_error_handled(&self) -> bool { - self.head.is_error_handled() || self.tail.is_error_handled() + fn list_tx_expect(&self) -> Env::RHExpect { + self.head.item_tx_expect(self.tail.list_tx_expect()) } fn list_process_result(self, raw_result: &RawResult) -> Self::ListReturns { diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs index 22e26eff5a..6145315233 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs @@ -2,17 +2,18 @@ use std::{fs::File, io::Write}; use super::proxy_naming::{proxy_methods_type_name, proxy_type_name}; -const PREFIX_AUTO_GENERATED: &str = "//////////////////////////////////////////////////// +const PRELUDE: &str = "// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + +//////////////////////////////////////////////////// ////////////////// AUTO-GENERATED ////////////////// //////////////////////////////////////////////////// -"; -const PRELUDE: &str = "#![allow(clippy::all)] +#![allow(dead_code)] +#![allow(clippy::all)] use multiversx_sc::proxy_imports::*;"; pub(crate) fn write_header(file: &mut File) { - writeln!(file, "{PREFIX_AUTO_GENERATED}").unwrap(); writeln!(file, r#"{PRELUDE}"#).unwrap(); } diff --git a/framework/scenario/src/facade/result_handlers.rs b/framework/scenario/src/facade/result_handlers.rs index 55f541d8e0..369a390a75 100644 --- a/framework/scenario/src/facade/result_handlers.rs +++ b/framework/scenario/src/facade/result_handlers.rs @@ -1,7 +1,11 @@ +mod expect_message; +mod expect_status; mod returns_message; mod returns_status; mod with_tx_raw_response; +pub use expect_message::ExpectMessage; +pub use expect_status::ExpectStatus; pub use returns_message::ReturnsMessage; pub use returns_status::ReturnsStatus; pub use with_tx_raw_response::WithRawTxResponse; diff --git a/framework/scenario/src/facade/result_handlers/expect_message.rs b/framework/scenario/src/facade/result_handlers/expect_message.rs new file mode 100644 index 0000000000..4f46d05b59 --- /dev/null +++ b/framework/scenario/src/facade/result_handlers/expect_message.rs @@ -0,0 +1,32 @@ +use multiversx_chain_scenario_format::serde_raw::ValueSubTree; +use multiversx_sc::types::{RHListItem, RHListItemExec, TxEnv}; + +use crate::scenario_model::{BytesValue, CheckValue, TxExpect, TxResponse}; + +/// Verifies that transaction result message matches the given one. +/// +/// Can only be used in tests and interactors, not available in contracts. +pub struct ExpectMessage<'a>(pub &'a str); + +impl<'a, Env, Original> RHListItem for ExpectMessage<'a> +where + Env: TxEnv, +{ + type Returns = (); +} + +impl<'a, Env, Original> RHListItemExec for ExpectMessage<'a> +where + Env: TxEnv, +{ + fn item_tx_expect(&self, mut prev: TxExpect) -> TxExpect { + let expect_message_expr = BytesValue { + value: self.0.to_string().into_bytes(), + original: ValueSubTree::Str(format!("str:{}", self.0)), + }; + prev.message = CheckValue::Equal(expect_message_expr); + prev + } + + fn item_process_result(self, _: &TxResponse) -> Self::Returns {} +} diff --git a/framework/scenario/src/facade/result_handlers/expect_status.rs b/framework/scenario/src/facade/result_handlers/expect_status.rs new file mode 100644 index 0000000000..127982739b --- /dev/null +++ b/framework/scenario/src/facade/result_handlers/expect_status.rs @@ -0,0 +1,27 @@ +use multiversx_sc::types::{RHListItem, RHListItemExec, TxEnv}; + +use crate::scenario_model::{CheckValue, TxExpect, TxResponse}; + +/// Verifies that transaction result status matches the given one. +/// +/// Can only be used in tests and interactors, not available in contracts. +pub struct ExpectStatus(pub u64); + +impl RHListItem for ExpectStatus +where + Env: TxEnv, +{ + type Returns = (); +} + +impl RHListItemExec for ExpectStatus +where + Env: TxEnv, +{ + fn item_tx_expect(&self, mut prev: TxExpect) -> TxExpect { + prev.status = CheckValue::Equal(self.0.into()); + prev + } + + fn item_process_result(self, _: &TxResponse) -> Self::Returns {} +} diff --git a/framework/scenario/src/facade/result_handlers/returns_message.rs b/framework/scenario/src/facade/result_handlers/returns_message.rs index c9e9821055..64164e05ef 100644 --- a/framework/scenario/src/facade/result_handlers/returns_message.rs +++ b/framework/scenario/src/facade/result_handlers/returns_message.rs @@ -1,8 +1,10 @@ use multiversx_sc::types::{RHListItem, RHListItemExec, TxEnv}; -use crate::scenario_model::TxResponse; +use crate::scenario_model::{CheckValue, TxExpect, TxResponse}; /// Indicates that the error status will be returned. +/// +/// Can only be used in tests and interactors, not available in contracts. pub struct ReturnsMessage; impl RHListItem for ReturnsMessage @@ -14,10 +16,11 @@ where impl RHListItemExec for ReturnsMessage where - Env: TxEnv, + Env: TxEnv, { - fn is_error_handled(&self) -> bool { - true + fn item_tx_expect(&self, mut prev: TxExpect) -> TxExpect { + prev.message = CheckValue::Star; + prev } fn item_process_result(self, raw_result: &TxResponse) -> Self::Returns { diff --git a/framework/scenario/src/facade/result_handlers/returns_status.rs b/framework/scenario/src/facade/result_handlers/returns_status.rs index 7e81421efb..184163619d 100644 --- a/framework/scenario/src/facade/result_handlers/returns_status.rs +++ b/framework/scenario/src/facade/result_handlers/returns_status.rs @@ -1,8 +1,10 @@ use multiversx_sc::types::{RHListItem, RHListItemExec, TxEnv}; -use crate::scenario_model::TxResponse; +use crate::scenario_model::{CheckValue, TxExpect, TxResponse, U64Value}; /// Indicates that the error status will be returned. +/// +/// Can only be used in tests and interactors, not available in contracts. pub struct ReturnsStatus; impl RHListItem for ReturnsStatus @@ -14,10 +16,18 @@ where impl RHListItemExec for ReturnsStatus where - Env: TxEnv, + Env: TxEnv, { - fn is_error_handled(&self) -> bool { - true + fn item_tx_expect(&self, mut prev: TxExpect) -> TxExpect { + if let CheckValue::Equal(U64Value { + value: 0, + original: _, + }) = prev.status + { + prev.status = CheckValue::Star; + } + + prev } fn item_process_result(self, raw_result: &TxResponse) -> Self::Returns { diff --git a/framework/scenario/src/facade/world_tx/scenario_env.rs b/framework/scenario/src/facade/world_tx/scenario_env.rs index 758cff63f1..4589e36599 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env.rs @@ -2,7 +2,11 @@ use std::path::PathBuf; use multiversx_sc::types::{AnnotatedValue, ManagedAddress, TxBaseWithEnv, TxEnv}; -use crate::{api::StaticApi, scenario_model::TxResponse, ScenarioWorld}; +use crate::{ + api::StaticApi, + scenario_model::{TxExpect, TxResponse}, + ScenarioWorld, +}; /// Designates a tx environment suitable for running scenarios locally. pub trait ScenarioTxEnv: TxEnv { @@ -18,6 +22,8 @@ pub struct ScenarioTxEnvData { impl TxEnv for ScenarioTxEnvData { type Api = StaticApi; + type RHExpect = TxExpect; + fn resolve_sender_address(&self) -> ManagedAddress { panic!("Explicit sender address expected") } diff --git a/framework/scenario/src/facade/world_tx/scenario_env_deploy.rs b/framework/scenario/src/facade/world_tx/scenario_env_deploy.rs index fadd24d78d..ef7b2a243f 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_deploy.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_deploy.rs @@ -41,6 +41,7 @@ where fn run(self) -> Self::Returns { let mut step = tx_to_sc_deploy_step(&self.env, self.from, self.payment, self.gas, self.data); + step.expect = Some(self.result_handler.list_tx_expect()); self.env.world.sc_deploy(&mut step); process_result(step.response, self.result_handler) } @@ -71,6 +72,7 @@ impl ScenarioWorld { let tx = f(tx_base); let mut step = tx_to_sc_deploy_step(&tx.env, tx.from, tx.payment, tx.gas, tx.data); self.sc_deploy(&mut step); + step.expect = Some(tx.result_handler.list_tx_expect()); process_result(step.response, tx.result_handler); self } diff --git a/framework/scenario/src/facade/world_tx/scenario_env_exec.rs b/framework/scenario/src/facade/world_tx/scenario_env_exec.rs index e19c515c0b..25f738f5e4 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_exec.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_exec.rs @@ -12,7 +12,7 @@ use multiversx_sc::{ use crate::{ api::StaticApi, - scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep, TxResponse}, + scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep, TxExpect, TxResponse}, ScenarioTxEnv, ScenarioTxRun, ScenarioWorld, }; @@ -27,6 +27,8 @@ pub struct ScenarioEnvExec<'w> { impl<'w> TxEnv for ScenarioEnvExec<'w> { type Api = StaticApi; + type RHExpect = TxExpect; + fn resolve_sender_address(&self) -> ManagedAddress { panic!("Explicit sender address expected") } @@ -63,6 +65,7 @@ where self.gas, self.data, ); + step.expect = Some(self.result_handler.list_tx_expect()); self.env.world.sc_call(&mut step); process_result(step.response, self.result_handler) } @@ -91,6 +94,7 @@ impl ScenarioWorld { let tx_base = TxBaseWithEnv::new_with_env(env); let tx = f(tx_base); let mut step = tx_to_sc_call_step(&tx.env, tx.from, tx.to, tx.payment, tx.gas, tx.data); + step.expect = Some(tx.result_handler.list_tx_expect()); self.sc_call(&mut step); process_result(step.response, tx.result_handler); self diff --git a/framework/scenario/src/facade/world_tx/scenario_env_query.rs b/framework/scenario/src/facade/world_tx/scenario_env_query.rs index 993b4d9636..c25d0f61db 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_query.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_query.rs @@ -9,8 +9,9 @@ use multiversx_sc::{ }; use crate::{ - api::StaticApi, scenario_model::TxResponse, ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, - ScenarioWorld, + api::StaticApi, + scenario_model::{TxExpect, TxResponse}, + ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, ScenarioWorld, }; use super::scenario_env_util::*; @@ -23,6 +24,8 @@ pub struct ScenarioEnvQuery<'w> { impl<'w> TxEnv for ScenarioEnvQuery<'w> { type Api = StaticApi; + type RHExpect = TxExpect; + fn resolve_sender_address(&self) -> ManagedAddress { panic!("Explicit sender address expected") } @@ -49,6 +52,7 @@ where fn run(self) -> Self::Returns { let mut step = tx_to_sc_query_step(&self.env, self.to, self.data); + step.expect = Some(self.result_handler.list_tx_expect()); self.env.world.sc_query(&mut step); process_result(step.response, self.result_handler) } @@ -74,6 +78,7 @@ impl ScenarioWorld { let tx = f(tx_base); let mut step = tx_to_sc_query_step(&tx.env, tx.to, tx.data); self.sc_query(&mut step); + step.expect = Some(tx.result_handler.list_tx_expect()); process_result(step.response, tx.result_handler); self } diff --git a/framework/scenario/src/scenario/model/transaction/tx_expect.rs b/framework/scenario/src/scenario/model/transaction/tx_expect.rs index 6f64a471f0..d487a10db5 100644 --- a/framework/scenario/src/scenario/model/transaction/tx_expect.rs +++ b/framework/scenario/src/scenario/model/transaction/tx_expect.rs @@ -23,6 +23,12 @@ pub struct TxExpect { pub additional_error_message: String, } +impl Default for TxExpect { + fn default() -> Self { + Self::ok() + } +} + impl TxExpect { pub fn ok() -> Self { TxExpect { diff --git a/framework/snippets/src/itx/interactor_env_deploy.rs b/framework/snippets/src/itx/interactor_env_deploy.rs index d907db498e..6fdd9dfb48 100644 --- a/framework/snippets/src/itx/interactor_env_deploy.rs +++ b/framework/snippets/src/itx/interactor_env_deploy.rs @@ -66,9 +66,10 @@ where RH::ListReturns: NestedTupleFlatten, { pub async fn run(self) -> ::Unpacked { - let mut sc_deploy_step = self.sc_deploy_step; - self.world.sc_deploy(&mut sc_deploy_step).await; - process_result(sc_deploy_step.response, self.result_handler) + let mut step = self.sc_deploy_step; + step.expect = Some(self.result_handler.list_tx_expect()); + self.world.sc_deploy(&mut step).await; + process_result(step.response, self.result_handler) } } @@ -96,6 +97,7 @@ impl Interactor { let tx_base = TxBaseWithEnv::new_with_env(env); let tx = f(tx_base); let mut step = tx_to_sc_deploy_step(&tx.env, tx.from, tx.payment, tx.gas, tx.data); + step.expect = Some(tx.result_handler.list_tx_expect()); self.sc_deploy(&mut step).await; process_result(step.response, tx.result_handler); self @@ -128,6 +130,7 @@ impl Interactor { let tx_base = TxBaseWithEnv::new_with_env(env); let tx = f(tx_base); let mut step = tx_to_sc_deploy_step(&tx.env, tx.from, tx.payment, tx.gas, tx.data); + step.expect = Some(tx.result_handler.list_tx_expect()); self.sc_deploy(&mut step).await; process_result(step.response, tx.result_handler) } diff --git a/framework/snippets/src/itx/interactor_env_exec.rs b/framework/snippets/src/itx/interactor_env_exec.rs index bc2d9d20da..15065c9191 100644 --- a/framework/snippets/src/itx/interactor_env_exec.rs +++ b/framework/snippets/src/itx/interactor_env_exec.rs @@ -11,7 +11,7 @@ use multiversx_sc_scenario::{ }, }, scenario_env_util::*, - scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep, TxResponse}, + scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep, TxExpect, TxResponse}, ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, ScenarioWorld, }; @@ -26,6 +26,8 @@ pub struct InteractorEnvExec<'w> { impl<'w> TxEnv for InteractorEnvExec<'w> { type Api = StaticApi; + type RHExpect = TxExpect; + fn resolve_sender_address(&self) -> ManagedAddress { panic!("Explicit sender address expected") } @@ -86,9 +88,10 @@ where RH::ListReturns: NestedTupleFlatten, { pub async fn run(self) -> ::Unpacked { - let mut sc_call_step = self.sc_call_step; - self.world.sc_call(&mut sc_call_step).await; - process_result(sc_call_step.response, self.result_handler) + let mut step = self.sc_call_step; + step.expect = Some(self.result_handler.list_tx_expect()); + self.world.sc_call(&mut step).await; + process_result(step.response, self.result_handler) } } @@ -115,6 +118,7 @@ impl Interactor { let tx_base = TxBaseWithEnv::new_with_env(env); let tx = f(tx_base); let mut step = tx_to_sc_call_step(&tx.env, tx.from, tx.to, tx.payment, tx.gas, tx.data); + step.expect = Some(tx.result_handler.list_tx_expect()); self.sc_call(&mut step).await; process_result(step.response, tx.result_handler); self diff --git a/framework/snippets/src/itx/interactor_env_query.rs b/framework/snippets/src/itx/interactor_env_query.rs index 1628215992..1ca5be149a 100644 --- a/framework/snippets/src/itx/interactor_env_query.rs +++ b/framework/snippets/src/itx/interactor_env_query.rs @@ -10,7 +10,7 @@ use multiversx_sc_scenario::{ }, }, scenario_env_util::*, - scenario_model::{ScQueryStep, TxResponse}, + scenario_model::{ScQueryStep, TxExpect, TxResponse}, ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, ScenarioWorld, }; @@ -24,6 +24,8 @@ pub struct InteractorEnvQuery<'w> { impl<'w> TxEnv for InteractorEnvQuery<'w> { type Api = StaticApi; + type RHExpect = TxExpect; + fn resolve_sender_address(&self) -> ManagedAddress { panic!("Explicit sender address expected") } @@ -74,9 +76,10 @@ where RH::ListReturns: NestedTupleFlatten, { pub async fn run(self) -> ::Unpacked { - let mut sc_call_step = self.sc_query_step; - self.world.sc_query(&mut sc_call_step).await; - process_result(sc_call_step.response, self.result_handler) + let mut step = self.sc_query_step; + step.expect = Some(self.result_handler.list_tx_expect()); + self.world.sc_query(&mut step).await; + process_result(step.response, self.result_handler) } } @@ -99,6 +102,7 @@ impl Interactor { let tx_base = TxBaseWithEnv::new_with_env(env); let tx = f(tx_base); let mut step = tx_to_sc_query_step(&tx.env, tx.to, tx.data); + step.expect = Some(tx.result_handler.list_tx_expect()); self.sc_query(&mut step).await; process_result(step.response, tx.result_handler); self From 335a54e8a5a93eed59df8e2880f1c842d9c672f2 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 27 Mar 2024 01:05:44 +0200 Subject: [PATCH 190/461] multisig interactor cleanup --- contracts/examples/multisig/interact/config.toml | 2 +- .../multisig/interact/src/multisig_interact.rs | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/contracts/examples/multisig/interact/config.toml b/contracts/examples/multisig/interact/config.toml index 1a1e45429a..a3b733f73d 100644 --- a/contracts/examples/multisig/interact/config.toml +++ b/contracts/examples/multisig/interact/config.toml @@ -1,2 +1,2 @@ -gateway = 'https://testnet-gateway.multiversx.com' +gateway = 'https://devnet-gateway.multiversx.com' quorum = 2 diff --git a/contracts/examples/multisig/interact/src/multisig_interact.rs b/contracts/examples/multisig/interact/src/multisig_interact.rs index 60d4ad2359..c60d0c9fac 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact.rs @@ -13,7 +13,7 @@ use multisig_interact_config::Config; use multisig_interact_state::State; use multiversx_sc_scenario::{ mandos_system::ScenarioRunner, - multiversx_sc::types::{BigUint, ReturnsNewAddress, ReturnsResultConv}, + multiversx_sc::types::{BigUint, ReturnsNewAddress, ReturnsResult}, scenario_format::interpret_trait::InterpretableFrom, standalone::retrieve_account_as_scenario_set_state, test_wallets, @@ -309,7 +309,7 @@ impl MultisigInteract { .to(self.state.multisig().to_address()) .typed(multisig_proxy::MultisigProxy) .quorum_reached(action_id) - .returns(ReturnsResultConv::::new()) + .returns(ReturnsResult) .prepare_async() .run() .await @@ -321,7 +321,7 @@ impl MultisigInteract { .to(self.state.multisig().to_address()) .typed(multisig_proxy::MultisigProxy) .signed(signer, action_id) - .returns(ReturnsResultConv::::new()) + .returns(ReturnsResult) .prepare_async() .run() .await @@ -388,7 +388,7 @@ impl MultisigInteract { .to(self.state.multisig().to_address()) .typed(multisig_proxy::MultisigProxy) .quorum() - .returns(ReturnsResultConv::::new()) + .returns(ReturnsResult) .prepare_async() .run() .await; @@ -403,7 +403,7 @@ impl MultisigInteract { .to(self.state.multisig().to_address()) .typed(multisig_proxy::MultisigProxy) .num_board_members() - .returns(ReturnsResultConv::::new()) + .returns(ReturnsResult) .prepare_async() .run() .await; From f4c6c0c104af78c1b56c7f6eff27ee3016788bb4 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 27 Mar 2024 05:06:00 +0200 Subject: [PATCH 191/461] forwarder cleanup --- .../forwarder/src/contract_deploy.rs | 31 +++++-------------- .../tx_result_handler/returns_result.rs | 19 ++++++++---- 2 files changed, 20 insertions(+), 30 deletions(-) diff --git a/contracts/feature-tests/composability/forwarder/src/contract_deploy.rs b/contracts/feature-tests/composability/forwarder/src/contract_deploy.rs index d3c92f81a7..30bc967665 100644 --- a/contracts/feature-tests/composability/forwarder/src/contract_deploy.rs +++ b/contracts/feature-tests/composability/forwarder/src/contract_deploy.rs @@ -35,22 +35,13 @@ pub trait DeployContractModule { code: &ManagedBuffer, opt_arg: OptionalValue, ) -> (ManagedAddress, OptionalValue) { - let (new_address, response_vec) = self - .tx() + self.tx() .typed(vault_proxy::VaultProxy) .init(opt_arg) .code(code.clone()) .returns(ReturnsNewAddress) - .returns(ReturnsRawResult) - .sync_call(); - - let response = if response_vec.is_empty() { - OptionalValue::None - } else { - OptionalValue::Some(response_vec.get(0).clone_value()) - }; - - (new_address, response) + .returns(ReturnsResult) + .sync_call() } #[endpoint] @@ -59,22 +50,14 @@ pub trait DeployContractModule { source_address: ManagedAddress, opt_arg: OptionalValue, ) -> MultiValue2> { - let (new_address, response_vec) = self - .tx() + self.tx() .typed(vault_proxy::VaultProxy) .init(opt_arg) .code_metadata(CodeMetadata::DEFAULT) .from_source(source_address) .returns(ReturnsNewAddress) - .returns(ReturnsRawResult) - .sync_call(); - - let response = if response_vec.is_empty() { - OptionalValue::None - } else { - OptionalValue::Some(response_vec.get(0).clone_value()) - }; - - MultiValue2::from((new_address, response)) + .returns(ReturnsResult) + .sync_call() + .into() } } diff --git a/framework/base/src/types/interaction/tx_result_handler/returns_result.rs b/framework/base/src/types/interaction/tx_result_handler/returns_result.rs index 71cbd020cf..5082a6bff6 100644 --- a/framework/base/src/types/interaction/tx_result_handler/returns_result.rs +++ b/framework/base/src/types/interaction/tx_result_handler/returns_result.rs @@ -1,11 +1,8 @@ use multiversx_sc_codec::TopDecodeMulti; -use crate::{ - proxy_imports::SyncCallRawResult, - types::{ - interaction::contract_call_exec::decode_result, ManagedBuffer, ManagedVec, RHListItem, - RHListItemExec, TxEnv, - }, +use crate::types::{ + interaction::contract_call_exec::decode_result, DeployRawResult, ManagedBuffer, ManagedVec, + RHListItem, RHListItemExec, SyncCallRawResult, TxEnv, }; /// Indicates that result will be returned. @@ -29,3 +26,13 @@ where decode_result::(raw_result.0.clone()) } } + +impl RHListItemExec, Env, Original> for ReturnsResult +where + Env: TxEnv, + Original: TopDecodeMulti, +{ + fn item_process_result(self, raw_result: &DeployRawResult) -> Original { + decode_result::(raw_result.raw_results.clone()) + } +} From cd557953cb1258428e24d19828b235f8c66f890f Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 27 Mar 2024 05:21:15 +0200 Subject: [PATCH 192/461] vault proxy fix --- .../composability/forwarder/src/vault_proxy.rs | 5 ++++- framework/base/src/abi/type_abi_impl_basic.rs | 11 +++++------ .../contract/generate_proxy/proxy_sc_functions_gen.rs | 2 +- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/contracts/feature-tests/composability/forwarder/src/vault_proxy.rs b/contracts/feature-tests/composability/forwarder/src/vault_proxy.rs index 2d6cb09693..f04735e6a5 100644 --- a/contracts/feature-tests/composability/forwarder/src/vault_proxy.rs +++ b/contracts/feature-tests/composability/forwarder/src/vault_proxy.rs @@ -1,7 +1,10 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + //////////////////////////////////////////////////// ////////////////// AUTO-GENERATED ////////////////// //////////////////////////////////////////////////// +#![allow(dead_code)] #![allow(clippy::all)] use multiversx_sc::proxy_imports::*; @@ -67,7 +70,7 @@ where >( self, opt_arg_to_echo: Arg0, - ) -> TxProxyUpgrade, OptionalValue>>> { + ) -> TxProxyUpgrade>>> { self.wrapped_tx .raw_upgrade() .argument(&opt_arg_to_echo) diff --git a/framework/base/src/abi/type_abi_impl_basic.rs b/framework/base/src/abi/type_abi_impl_basic.rs index c14447b2ba..0487e19392 100644 --- a/framework/base/src/abi/type_abi_impl_basic.rs +++ b/framework/base/src/abi/type_abi_impl_basic.rs @@ -113,24 +113,23 @@ impl TypeAbi for String { } } -impl TypeAbi for &str { +impl TypeAbi for &'static str { fn type_name() -> TypeName { - TypeName::type_name() + String::type_name() } fn type_name_rust() -> TypeName { - // we need to convert to an owned type - "Box".into() + "&'static str".into() } } impl TypeAbi for Box { fn type_name() -> TypeName { - TypeName::type_name() + String::type_name() } fn type_name_rust() -> TypeName { - TypeName::type_name_rust() + "Box".into() } } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs index 54eee5c44a..00ec38b490 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs @@ -167,7 +167,7 @@ fn write_upgrade_constructor_content(file: &mut File, inputs: Vec) { writeln!( file, " self.wrapped_tx - .raw_upgrade()" + .raw_upgrade()" ) .unwrap(); for input in inputs.iter() { From a0beddf1da2449d4ee4bdb3823d4989aae660f44 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 27 Mar 2024 05:37:51 +0200 Subject: [PATCH 193/461] rename: upgrade_async_call_and_exit --- .../forwarder-raw/src/forwarder_raw_deploy_upgrade.rs | 4 ++-- .../composability/forwarder/src/contract_upgrade.rs | 10 ++++------ .../base/src/types/interaction/tx_call_upgrade.rs | 10 ++++++++-- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs index 07ddea1c3a..acd385db2c 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs @@ -52,7 +52,7 @@ pub trait ForwarderRawDeployUpgrade { .code(new_code) .code_metadata(code_metadata) .arguments_raw(args.to_arg_buffer()) - .upgrade_async_call(); + .upgrade_async_call_and_exit(); } #[endpoint] @@ -70,6 +70,6 @@ pub trait ForwarderRawDeployUpgrade { .code_metadata(code_metadata) .arguments_raw(args.to_arg_buffer()) .with_gas_limit(self.blockchain().get_gas_left()) - .upgrade_async_call(); + .upgrade_async_call_and_exit(); } } diff --git a/contracts/feature-tests/composability/forwarder/src/contract_upgrade.rs b/contracts/feature-tests/composability/forwarder/src/contract_upgrade.rs index a1a402c6e7..f4782821e0 100644 --- a/contracts/feature-tests/composability/forwarder/src/contract_upgrade.rs +++ b/contracts/feature-tests/composability/forwarder/src/contract_upgrade.rs @@ -11,14 +11,13 @@ pub trait UpgradeContractModule { new_code: ManagedBuffer, opt_arg: OptionalValue, ) { - let _ = self - .tx() + self.tx() .to(child_sc_address) .typed(vault_proxy::VaultProxy) .upgrade(opt_arg) .code(new_code) .code_metadata(CodeMetadata::UPGRADEABLE) - .upgrade_async_call(); + .upgrade_async_call_and_exit(); } #[endpoint] @@ -28,13 +27,12 @@ pub trait UpgradeContractModule { source_address: ManagedAddress, opt_arg: OptionalValue, ) { - let _ = self - .tx() + self.tx() .to(child_sc_address) .typed(vault_proxy::VaultProxy) .upgrade(opt_arg) .code_metadata(CodeMetadata::UPGRADEABLE) .from_source(source_address) - .upgrade_async_call(); + .upgrade_async_call_and_exit(); } } diff --git a/framework/base/src/types/interaction/tx_call_upgrade.rs b/framework/base/src/types/interaction/tx_call_upgrade.rs index 013c5adf06..93104a0f08 100644 --- a/framework/base/src/types/interaction/tx_call_upgrade.rs +++ b/framework/base/src/types/interaction/tx_call_upgrade.rs @@ -28,7 +28,10 @@ where CodeValue: TxCodeValue>, RH: TxEmptyResultHandler>, { - pub fn upgrade_async_call(self) { + /// Launches the upgrade async call. + /// + /// TODO: change return type to `!`. + pub fn upgrade_async_call_and_exit(self) { let gas = self.gas.explicit_or_gas_left(&self.env); self.payment.with_egld_value(|egld_value| { SendRawWrapper::::new().upgrade_contract( @@ -60,7 +63,10 @@ where FromSourceValue: TxFromSourceValue>, RH: TxEmptyResultHandler>, { - pub fn upgrade_async_call(self) { + /// Launches the upgrade from source async call. + /// + /// TODO: change return type to `!`. + pub fn upgrade_async_call_and_exit(self) { let gas = self.gas.explicit_or_gas_left(&self.env); self.payment.with_egld_value(|egld_value| { SendRawWrapper::::new().upgrade_from_source_contract( From 8a0c266dbaba3a6da22cbcf8b8e647ed0ea17452 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 27 Mar 2024 05:47:13 +0200 Subject: [PATCH 194/461] doc fix --- .../base/src/types/interaction/tx_call_deploy.rs | 12 ++++++++---- .../src/types/interaction/tx_call_upgrade.rs | 16 ++++++++++------ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/framework/base/src/types/interaction/tx_call_deploy.rs b/framework/base/src/types/interaction/tx_call_deploy.rs index 0fd9cedc74..1b41ccb406 100644 --- a/framework/base/src/types/interaction/tx_call_deploy.rs +++ b/framework/base/src/types/interaction/tx_call_deploy.rs @@ -160,8 +160,10 @@ where /// Backwards compatibility, immitates the old API. /// /// Note that the data type (the `DeployCall`) doesn't have the code set. - /// This is because the old API was passing it as paramter, so we do the Apime here. - /// For clarity, we don't want it set twice. + /// This is because the old API was passing it as paramter, so we use it from the `code` argument. + /// + /// Also note that the code metadata is taken from the `code_metadata` argument. + /// If another one was previously set in the `Tx` object, that one will be ignored. pub fn deploy_contract( self, code: &ManagedBuffer, @@ -181,8 +183,10 @@ where /// Backwards compatibility, immitates the old API. /// /// Note that the data type (the `DeployCall`) doesn't have the code set. - /// This is because the old API was passing it as paramter, so we do the Apime here. - /// For clarity, we don't want it set twice. + /// This is because the old API was passing it as paramter, so we use it from the `code` argument. + /// + /// Also note that the code metadata is taken from the `code_metadata` argument. + /// If another one was previously set in the `Tx` object, that one will be ignored. pub fn deploy_from_source( self, source_address: &ManagedAddress, diff --git a/framework/base/src/types/interaction/tx_call_upgrade.rs b/framework/base/src/types/interaction/tx_call_upgrade.rs index 93104a0f08..2d6af25fab 100644 --- a/framework/base/src/types/interaction/tx_call_upgrade.rs +++ b/framework/base/src/types/interaction/tx_call_upgrade.rs @@ -91,9 +91,11 @@ where { /// Backwards compatibility, immitates the old API. /// - /// Note that the data type (the `DeployCall`) doesn't have the code set. - /// This is because the old API was passing it as paramter, so we do the Apime here. - /// For clarity, we don't want it set twice. + /// Note that the data type (the `UpgradeCall`) doesn't have the code set. + /// This is because the old API was passing it as paramter, so we use it from the `code` argument. + /// + /// Also note that the code metadata is taken from the `code_metadata` argument. + /// If another one was previously set in the `Tx` object, that one will be ignored. pub fn upgrade_contract(self, code: &ManagedBuffer, code_metadata: CodeMetadata) { let gas = self.gas.explicit_or_gas_left(&self.env); self.payment.with_egld_value(|egld_value| { @@ -110,9 +112,11 @@ where /// Backwards compatibility, immitates the old API. /// - /// Note that the data type (the `DeployCall`) doesn't have the code set. - /// This is because the old API was passing it as paramter, so we do the Apime here. - /// For clarity, we don't want it set twice. + /// Note that the data type (the `UpgradeCall`) doesn't have the code set. + /// This is because the old API was passing it as paramter, so we use it from the `code` argument. + /// + /// Also note that the code metadata is taken from the `code_metadata` argument. + /// If another one was previously set in the `Tx` object, that one will be ignored. pub fn upgrade_from_source( self, source_address: &ManagedAddress, From 09521e404062b2ee1314be6918f0a766e80fe8ce Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 27 Mar 2024 06:59:20 +0200 Subject: [PATCH 195/461] AnnotatedValue refactor --- .../base/src/types/interaction/annotated.rs | 104 ++++++++++++++++-- .../types/interaction/expr/address_expr.rs | 17 +-- .../src/types/interaction/expr/sc_expr.rs | 17 +-- .../src/types/interaction/tx_call_deploy.rs | 4 +- .../base/src/types/interaction/tx_call_te.rs | 4 +- .../src/types/interaction/tx_call_upgrade.rs | 8 +- .../base/src/types/interaction/tx_payment.rs | 17 ++- .../interaction/tx_payment/tx_payment_egld.rs | 38 +++++-- .../tx_payment/tx_payment_egld_value.rs | 41 +------ .../tx_payment/tx_payment_multi_esdt.rs | 4 +- .../interaction/tx_payment/tx_payment_none.rs | 18 +-- .../tx_payment/tx_payment_other.rs | 4 +- .../tx_payment/tx_payment_single_esdt.rs | 2 +- .../tx_payment/tx_payment_single_esdt_ref.rs | 2 +- framework/base/src/types/interaction/tx_to.rs | 53 ++------- .../types/interaction/tx_to/tx_to_caller.rs | 13 +-- .../src/types/interaction/tx_to/tx_to_self.rs | 13 +-- .../scenario/src/facade/contract_info.rs | 9 +- .../src/facade/world_tx/expr/file_expr.rs | 2 +- .../src/facade/world_tx/expr/mxsc_expr.rs | 2 +- .../scenario/model/value/value_set_bytes.rs | 6 +- 21 files changed, 181 insertions(+), 197 deletions(-) diff --git a/framework/base/src/types/interaction/annotated.rs b/framework/base/src/types/interaction/annotated.rs index 8571b4669b..afaecf184e 100644 --- a/framework/base/src/types/interaction/annotated.rs +++ b/framework/base/src/types/interaction/annotated.rs @@ -2,13 +2,31 @@ use crate::types::{heap::Address, BigUint, ManagedAddress, ManagedBuffer}; use super::TxEnv; -pub trait AnnotatedValue +pub trait AnnotatedValue: Sized where Env: TxEnv, { fn annotation(&self, env: &Env) -> ManagedBuffer; - fn into_value(self, env: &Env) -> T; + /// Produces the value from a reference of the annotated type. Might involve a `.clone()` in some cases. + fn to_value(&self, env: &Env) -> T; + + /// Consumes annotated value to produce actual value. + /// + /// Override whenever it helps to avoid an unnecessary clone. + fn into_value(self, env: &Env) -> T { + self.to_value(env) + } + + /// Can be used when working with references only. + /// + /// Override whenever it helps to avoid an unnecessary clone. + fn with_value_ref(&self, env: &Env, f: F) -> R + where + F: FnOnce(&T) -> R, + { + f(&self.to_value(env)) + } } impl AnnotatedValue> for ManagedAddress @@ -19,9 +37,20 @@ where self.hex_expr() } + fn to_value(&self, env: &Env) -> ManagedAddress { + self.clone() + } + fn into_value(self, _env: &Env) -> ManagedAddress { self } + + fn with_value_ref(&self, env: &Env, f: F) -> R + where + F: FnOnce(&ManagedAddress) -> R, + { + f(self) + } } impl AnnotatedValue> for &ManagedAddress @@ -32,9 +61,20 @@ where self.hex_expr() } + fn to_value(&self, env: &Env) -> ManagedAddress { + (*self).clone() + } + fn into_value(self, _env: &Env) -> ManagedAddress { self.clone() } + + fn with_value_ref(&self, env: &Env, f: F) -> R + where + F: FnOnce(&ManagedAddress) -> R, + { + f(self) + } } impl AnnotatedValue> for Address @@ -45,8 +85,8 @@ where ManagedAddress::from(self).hex_expr() } - fn into_value(self, _env: &Env) -> ManagedAddress { - self.into() + fn to_value(&self, env: &Env) -> ManagedAddress { + ManagedAddress::from(self) } } @@ -58,8 +98,8 @@ where ManagedAddress::from(*self).hex_expr() } - fn into_value(self, _env: &Env) -> ManagedAddress { - self.into() + fn to_value(&self, env: &Env) -> ManagedAddress { + ManagedAddress::from(*self) } } @@ -71,9 +111,20 @@ where self.hex_expr() } + fn to_value(&self, _env: &Env) -> ManagedBuffer { + self.clone() + } + fn into_value(self, _env: &Env) -> ManagedBuffer { self } + + fn with_value_ref(&self, env: &Env, f: F) -> R + where + F: FnOnce(&ManagedBuffer) -> R, + { + f(self) + } } impl AnnotatedValue> for BigUint @@ -84,9 +135,20 @@ where self.to_display() } + fn to_value(&self, _env: &Env) -> BigUint { + self.clone() + } + fn into_value(self, _env: &Env) -> BigUint { self } + + fn with_value_ref(&self, env: &Env, f: F) -> R + where + F: FnOnce(&BigUint) -> R, + { + f(self) + } } impl AnnotatedValue> for &BigUint @@ -97,9 +159,20 @@ where self.to_display() } + fn to_value(&self, _env: &Env) -> BigUint { + (*self).clone() + } + fn into_value(self, _env: &Env) -> BigUint { self.clone() } + + fn with_value_ref(&self, env: &Env, f: F) -> R + where + F: FnOnce(&BigUint) -> R, + { + f(self) + } } impl AnnotatedValue> for u64 @@ -107,10 +180,23 @@ where Env: TxEnv, { fn annotation(&self, env: &Env) -> ManagedBuffer { - self.into_value(env).to_display() + self.to_value(env).to_display() } - fn into_value(self, _env: &Env) -> BigUint { - BigUint::::from(self) + fn to_value(&self, _env: &Env) -> BigUint { + BigUint::from(*self) + } +} + +impl AnnotatedValue> for () +where + Env: TxEnv, +{ + fn annotation(&self, env: &Env) -> ManagedBuffer { + ManagedBuffer::from("0") + } + + fn to_value(&self, _env: &Env) -> BigUint { + BigUint::zero() } } diff --git a/framework/base/src/types/interaction/expr/address_expr.rs b/framework/base/src/types/interaction/expr/address_expr.rs index ce2fa10fb5..dddfa5b53c 100644 --- a/framework/base/src/types/interaction/expr/address_expr.rs +++ b/framework/base/src/types/interaction/expr/address_expr.rs @@ -20,11 +20,12 @@ where result } - fn into_value(self, _env: &Env) -> ManagedAddress { + fn to_value(&self, _env: &Env) -> ManagedAddress { let expr: [u8; 32] = self.eval_to_array(); expr.into() } } + impl TxFrom for AddressExpr where Env: TxEnv, @@ -36,19 +37,7 @@ where } impl TxFromSpecified for AddressExpr where Env: TxEnv {} impl TxTo for AddressExpr where Env: TxEnv {} -impl TxToSpecified for AddressExpr -where - Env: TxEnv, -{ - fn with_address_ref(&self, _env: &Env, f: F) -> R - where - F: FnOnce(&ManagedAddress) -> R, - { - let expr: [u8; 32] = self.eval_to_array(); - let ma = expr.into(); - f(&ma) - } -} +impl TxToSpecified for AddressExpr where Env: TxEnv {} impl AddressExpr { pub const fn eval_to_array(&self) -> [u8; 32] { diff --git a/framework/base/src/types/interaction/expr/sc_expr.rs b/framework/base/src/types/interaction/expr/sc_expr.rs index 1613587402..c84f8df02f 100644 --- a/framework/base/src/types/interaction/expr/sc_expr.rs +++ b/framework/base/src/types/interaction/expr/sc_expr.rs @@ -22,11 +22,12 @@ where result } - fn into_value(self, _env: &Env) -> ManagedAddress { + fn to_value(&self, _env: &Env) -> ManagedAddress { let expr: [u8; 32] = self.eval_to_array(); expr.into() } } + impl<'a, Env> TxFrom for ScExpr<'a> where Env: TxEnv, @@ -38,19 +39,7 @@ where } impl<'a, Env> TxFromSpecified for ScExpr<'a> where Env: TxEnv {} impl<'a, Env> TxTo for ScExpr<'a> where Env: TxEnv {} -impl<'a, Env> TxToSpecified for ScExpr<'a> -where - Env: TxEnv, -{ - fn with_address_ref(&self, _env: &Env, f: F) -> R - where - F: FnOnce(&ManagedAddress) -> R, - { - let expr: [u8; 32] = self.eval_to_array(); - let ma = expr.into(); - f(&ma) - } -} +impl<'a, Env> TxToSpecified for ScExpr<'a> where Env: TxEnv {} impl<'a> ScExpr<'a> { pub const fn eval_to_array(&self) -> [u8; 32] { diff --git a/framework/base/src/types/interaction/tx_call_deploy.rs b/framework/base/src/types/interaction/tx_call_deploy.rs index 1b41ccb406..53814cd128 100644 --- a/framework/base/src/types/interaction/tx_call_deploy.rs +++ b/framework/base/src/types/interaction/tx_call_deploy.rs @@ -33,7 +33,7 @@ where fn execute_deploy_raw(self) -> (ManagedAddress, ManagedVec>, RH) { let gas_limit = self.gas.resolve_gas(&self.env); - let (new_address, raw_results) = self.payment.with_egld_value(|egld_value| { + let (new_address, raw_results) = self.payment.with_egld_value(&self.env, |egld_value| { SendRawWrapper::::new().deploy_contract( gas_limit, egld_value, @@ -71,7 +71,7 @@ where ) -> (ManagedAddress, ManagedVec>, RH) { let gas_limit = self.gas.resolve_gas(&self.env); - let (new_address, raw_results) = self.payment.with_egld_value(|egld_value| { + let (new_address, raw_results) = self.payment.with_egld_value(&self.env, |egld_value| { SendRawWrapper::::new().deploy_from_source_contract( gas_limit, egld_value, diff --git a/framework/base/src/types/interaction/tx_call_te.rs b/framework/base/src/types/interaction/tx_call_te.rs index 5cb81a6f0f..6e81e7b8bb 100644 --- a/framework/base/src/types/interaction/tx_call_te.rs +++ b/framework/base/src/types/interaction/tx_call_te.rs @@ -25,7 +25,7 @@ where pub fn transfer_execute(self) { let gas_limit: u64; if self.data.is_no_call() { - if self.payment.is_no_payment() { + if self.payment.is_no_payment(&self.env) { return; } else { gas_limit = 0; @@ -54,7 +54,7 @@ where /// /// Can only used for simple transfers. pub fn transfer_if_not_empty(self) { - if self.payment.is_no_payment() { + if self.payment.is_no_payment(&self.env) { return; } diff --git a/framework/base/src/types/interaction/tx_call_upgrade.rs b/framework/base/src/types/interaction/tx_call_upgrade.rs index 2d6af25fab..24438da3c3 100644 --- a/framework/base/src/types/interaction/tx_call_upgrade.rs +++ b/framework/base/src/types/interaction/tx_call_upgrade.rs @@ -33,7 +33,7 @@ where /// TODO: change return type to `!`. pub fn upgrade_async_call_and_exit(self) { let gas = self.gas.explicit_or_gas_left(&self.env); - self.payment.with_egld_value(|egld_value| { + self.payment.with_egld_value(&self.env, |egld_value| { SendRawWrapper::::new().upgrade_contract( &self.to, gas, @@ -68,7 +68,7 @@ where /// TODO: change return type to `!`. pub fn upgrade_async_call_and_exit(self) { let gas = self.gas.explicit_or_gas_left(&self.env); - self.payment.with_egld_value(|egld_value| { + self.payment.with_egld_value(&self.env, |egld_value| { SendRawWrapper::::new().upgrade_from_source_contract( &self.to, gas, @@ -98,7 +98,7 @@ where /// If another one was previously set in the `Tx` object, that one will be ignored. pub fn upgrade_contract(self, code: &ManagedBuffer, code_metadata: CodeMetadata) { let gas = self.gas.explicit_or_gas_left(&self.env); - self.payment.with_egld_value(|egld_value| { + self.payment.with_egld_value(&self.env, |egld_value| { SendRawWrapper::::new().upgrade_contract( &self.to, gas, @@ -123,7 +123,7 @@ where code_metadata: CodeMetadata, ) { let gas = self.gas.explicit_or_gas_left(&self.env); - self.payment.with_egld_value(|egld_value| { + self.payment.with_egld_value(&self.env, |egld_value| { SendRawWrapper::::new().upgrade_from_source_contract( &self.to, gas, diff --git a/framework/base/src/types/interaction/tx_payment.rs b/framework/base/src/types/interaction/tx_payment.rs index 4b2f54e29f..978190a67a 100644 --- a/framework/base/src/types/interaction/tx_payment.rs +++ b/framework/base/src/types/interaction/tx_payment.rs @@ -18,7 +18,7 @@ use crate::{ }, }; -use super::{FunctionCall, TxEnv, TxFrom, TxToSpecified}; +use super::{AnnotatedValue, FunctionCall, TxEnv, TxFrom, TxToSpecified}; /// Describes a payment that is part of a transaction. pub trait TxPayment @@ -26,7 +26,7 @@ where Env: TxEnv, { /// Returns true if payment indicates transfer of either non-zero EGLD or ESDT amounts. - fn is_no_payment(&self) -> bool; + fn is_no_payment(&self, env: &Env) -> bool; /// Transfer-execute calls have different APIs for different payments types. /// This method selects between them. @@ -57,15 +57,20 @@ where } /// Marks a payment object that only contains EGLD or nothing at all. -pub trait TxPaymentEgldOnly: TxPayment +pub trait TxPaymentEgldOnly: TxPayment + AnnotatedValue> where Env: TxEnv, { - fn with_egld_value(&self, f: F) -> R + fn with_egld_value(&self, env: &Env, f: F) -> R where - F: FnOnce(&BigUint) -> R; + F: FnOnce(&BigUint) -> R, + { + self.with_value_ref(env, f) + } - fn into_egld_payment(self, env: &Env) -> BigUint; + fn into_egld_payment(self, env: &Env) -> BigUint { + self.into_value(env) + } } #[derive(Clone)] diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_egld.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_egld.rs index a4881bda05..2c730591cd 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_egld.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_egld.rs @@ -1,5 +1,6 @@ use crate::{ contract_base::SendRawWrapper, + proxy_imports::{AnnotatedValue, ManagedBuffer}, types::{BigUint, ManagedAddress, ManagedVec, TxFrom, TxToSpecified}, }; @@ -18,18 +19,18 @@ where Env: TxEnv, EgldValue: TxEgldValue, { - fn is_no_payment(&self) -> bool { - self.0.with_egld_value(|egld_value| egld_value == &0u32) + fn is_no_payment(&self, env: &Env) -> bool { + self.0.with_value_ref(env, |egld_value| egld_value == &0u32) } fn perform_transfer_execute( self, - _env: &Env, + env: &Env, to: &ManagedAddress, gas_limit: u64, fc: FunctionCall, ) { - self.0.with_egld_value(|egld_value| { + self.0.with_value_ref(env, |egld_value| { let _ = SendRawWrapper::::new().direct_egld_execute( to, egld_value, @@ -55,7 +56,7 @@ where { to.with_address_ref(env, |to_addr| { self.0 - .with_egld_value(|egld_value| f(to_addr, egld_value, &fc)) + .with_value_ref(env, |egld_value| f(to_addr, egld_value, &fc)) }) } @@ -67,19 +68,34 @@ where } } -impl TxPaymentEgldOnly for Egld +impl AnnotatedValue> for Egld where Env: TxEnv, EgldValue: TxEgldValue, { - fn with_egld_value(&self, f: F) -> R + fn annotation(&self, env: &Env) -> ManagedBuffer { + self.0.annotation(env) + } + + fn to_value(&self, env: &Env) -> BigUint { + self.0.to_value(env) + } + + fn into_value(self, env: &Env) -> BigUint { + self.0.into_value(env) + } + + fn with_value_ref(&self, env: &Env, f: F) -> R where F: FnOnce(&BigUint) -> R, { - self.0.with_egld_value(f) + self.0.with_value_ref(env, f) } +} - fn into_egld_payment(self, env: &Env) -> BigUint { - self.0.into_value(env) - } +impl TxPaymentEgldOnly for Egld +where + Env: TxEnv, + EgldValue: TxEgldValue, +{ } diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_value.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_value.rs index 561235eef2..8fcaab3ceb 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_value.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_value.rs @@ -6,43 +6,8 @@ pub trait TxEgldValue: AnnotatedValue> where Env: TxEnv, { - fn with_egld_value(&self, f: F) -> R - where - F: FnOnce(&BigUint) -> R; } -impl TxEgldValue for BigUint -where - Env: TxEnv, -{ - fn with_egld_value(&self, f: F) -> R - where - F: FnOnce(&BigUint) -> R, - { - f(self) - } -} - -impl TxEgldValue for &BigUint -where - Env: TxEnv, -{ - fn with_egld_value(&self, f: F) -> R - where - F: FnOnce(&BigUint) -> R, - { - f(*self) - } -} - -impl TxEgldValue for u64 -where - Env: TxEnv, -{ - fn with_egld_value(&self, f: F) -> R - where - F: FnOnce(&BigUint) -> R, - { - f(&BigUint::::from(*self)) - } -} +impl TxEgldValue for BigUint where Env: TxEnv {} +impl TxEgldValue for &BigUint where Env: TxEnv {} +impl TxEgldValue for u64 where Env: TxEnv {} diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs index 39f0e6a64c..78acfd87f7 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs @@ -9,7 +9,7 @@ impl TxPayment for &MultiEsdtPayment where Env: TxEnv, { - fn is_no_payment(&self) -> bool { + fn is_no_payment(&self, _env: &Env) -> bool { self.is_empty() } @@ -64,7 +64,7 @@ impl TxPayment for MultiEsdtPayment where Env: TxEnv, { - fn is_no_payment(&self) -> bool { + fn is_no_payment(&self, _env: &Env) -> bool { self.is_empty() } diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_none.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_none.rs index d97143a2ad..54c82b3a3c 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_none.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_none.rs @@ -12,7 +12,7 @@ impl TxPayment for () where Env: TxEnv, { - fn is_no_payment(&self) -> bool { + fn is_no_payment(&self, _env: &Env) -> bool { true } @@ -47,18 +47,4 @@ where } } -impl TxPaymentEgldOnly for () -where - Env: TxEnv, -{ - fn with_egld_value(&self, f: F) -> R - where - F: FnOnce(&BigUint) -> R, - { - f(&BigUint::zero()) - } - - fn into_egld_payment(self, _env: &Env) -> BigUint { - BigUint::zero() - } -} +impl TxPaymentEgldOnly for () where Env: TxEnv {} diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_other.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_other.rs index 5a28d80902..01d1c3a6bb 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_other.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_other.rs @@ -12,7 +12,7 @@ impl TxPayment for EgldOrEsdtTokenPayment where Env: TxEnv, { - fn is_no_payment(&self) -> bool { + fn is_no_payment(&self, _env: &Env) -> bool { self.amount == 0u32 } @@ -63,7 +63,7 @@ impl TxPayment for EgldOrMultiEsdtPayment where Env: TxEnv, { - fn is_no_payment(&self) -> bool { + fn is_no_payment(&self, _env: &Env) -> bool { self.is_empty() } diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt.rs index f5bf61c0f1..547ff12ba0 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt.rs @@ -12,7 +12,7 @@ impl TxPayment for EsdtTokenPayment where Env: TxEnv, { - fn is_no_payment(&self) -> bool { + fn is_no_payment(&self, _env: &Env) -> bool { self.amount == 0u32 } diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt_ref.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt_ref.rs index c0d568e11b..7128b0fc2b 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt_ref.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt_ref.rs @@ -13,7 +13,7 @@ impl<'a, Env> TxPayment for EsdtTokenPaymentRefs<'a, Env::Api> where Env: TxEnv, { - fn is_no_payment(&self) -> bool { + fn is_no_payment(&self, _env: &Env) -> bool { self.amount == &0u32 } diff --git a/framework/base/src/types/interaction/tx_to.rs b/framework/base/src/types/interaction/tx_to.rs index 6d964bd0b5..03f3105858 100644 --- a/framework/base/src/types/interaction/tx_to.rs +++ b/framework/base/src/types/interaction/tx_to.rs @@ -24,60 +24,21 @@ where /// /// Other than that, does thesame as `AnnotatedValue::into_value`. fn with_address_ref(&self, env: &Env, f: F) -> R - where - F: FnOnce(&ManagedAddress) -> R; -} - -impl TxTo for ManagedAddress where Env: TxEnv {} -impl TxToSpecified for ManagedAddress -where - Env: TxEnv, -{ - fn with_address_ref(&self, _env: &Env, f: F) -> R where F: FnOnce(&ManagedAddress) -> R, { - f(self) + self.with_value_ref(env, f) } } +impl TxTo for ManagedAddress where Env: TxEnv {} +impl TxToSpecified for ManagedAddress where Env: TxEnv {} + impl TxTo for &ManagedAddress where Env: TxEnv {} -impl TxToSpecified for &ManagedAddress -where - Env: TxEnv, -{ - fn with_address_ref(&self, _env: &Env, f: F) -> R - where - F: FnOnce(&ManagedAddress) -> R, - { - f(self) - } -} +impl TxToSpecified for &ManagedAddress where Env: TxEnv {} impl TxTo for Address where Env: TxEnv {} -impl TxToSpecified for Address -where - Env: TxEnv, -{ - fn with_address_ref(&self, _env: &Env, f: F) -> R - where - F: FnOnce(&ManagedAddress) -> R, - { - let managed_address = ManagedAddress::from(self); - f(&managed_address) - } -} +impl TxToSpecified for Address where Env: TxEnv {} impl TxTo for &Address where Env: TxEnv {} -impl TxToSpecified for &Address -where - Env: TxEnv, -{ - fn with_address_ref(&self, _env: &Env, f: F) -> R - where - F: FnOnce(&ManagedAddress) -> R, - { - let managed_address = ManagedAddress::from(*self); - f(&managed_address) - } -} +impl TxToSpecified for &Address where Env: TxEnv {} diff --git a/framework/base/src/types/interaction/tx_to/tx_to_caller.rs b/framework/base/src/types/interaction/tx_to/tx_to_caller.rs index 1e3b59db73..7217f47c8b 100644 --- a/framework/base/src/types/interaction/tx_to/tx_to_caller.rs +++ b/framework/base/src/types/interaction/tx_to/tx_to_caller.rs @@ -17,17 +17,11 @@ where self.with_address_ref(env, |addr_ref| addr_ref.hex_expr()) } - fn into_value(self, _env: &TxScEnv) -> ManagedAddress { + fn to_value(&self, _env: &TxScEnv) -> ManagedAddress { BlockchainWrapper::::new().get_caller() } -} -impl TxTo> for ToCaller where Api: CallTypeApi + BlockchainApi {} -impl TxToSpecified> for ToCaller -where - Api: CallTypeApi + BlockchainApi, -{ - fn with_address_ref(&self, env: &TxScEnv, f: F) -> R + fn with_value_ref(&self, env: &TxScEnv, f: F) -> R where F: FnOnce(&ManagedAddress) -> R, { @@ -36,3 +30,6 @@ where f(&ManagedAddress::from_handle(caller_handle)) } } + +impl TxTo> for ToCaller where Api: CallTypeApi + BlockchainApi {} +impl TxToSpecified> for ToCaller where Api: CallTypeApi + BlockchainApi {} diff --git a/framework/base/src/types/interaction/tx_to/tx_to_self.rs b/framework/base/src/types/interaction/tx_to/tx_to_self.rs index 87e068ae6f..72350c312e 100644 --- a/framework/base/src/types/interaction/tx_to/tx_to_self.rs +++ b/framework/base/src/types/interaction/tx_to/tx_to_self.rs @@ -17,17 +17,11 @@ where self.with_address_ref(env, |addr_ref| addr_ref.hex_expr()) } - fn into_value(self, _env: &TxScEnv) -> ManagedAddress { + fn to_value(&self, _env: &TxScEnv) -> ManagedAddress { BlockchainWrapper::::new().get_sc_address() } -} -impl TxTo> for ToSelf where Api: CallTypeApi + BlockchainApi {} -impl TxToSpecified> for ToSelf -where - Api: CallTypeApi + BlockchainApi, -{ - fn with_address_ref(&self, env: &TxScEnv, f: F) -> R + fn with_value_ref(&self, env: &TxScEnv, f: F) -> R where F: FnOnce(&ManagedAddress) -> R, { @@ -37,3 +31,6 @@ where f(&ManagedAddress::from_handle(sc_address_handle)) } } + +impl TxTo> for ToSelf where Api: CallTypeApi + BlockchainApi {} +impl TxToSpecified> for ToSelf where Api: CallTypeApi + BlockchainApi {} diff --git a/framework/scenario/src/facade/contract_info.rs b/framework/scenario/src/facade/contract_info.rs index 56095208e6..2652732494 100644 --- a/framework/scenario/src/facade/contract_info.rs +++ b/framework/scenario/src/facade/contract_info.rs @@ -117,7 +117,7 @@ where self.scenario_address_expr.original.as_str().into() } - fn into_value(self, _env: &Env) -> ManagedAddress { + fn to_value(&self, _env: &Env) -> ManagedAddress { (&self.scenario_address_expr.value).into() } } @@ -148,11 +148,4 @@ where Env: TxEnv, P: ProxyObjNew, { - fn with_address_ref(&self, _env: &Env, f: F) -> R - where - F: FnOnce(&ManagedAddress) -> R, - { - let ma: ManagedAddress = (&self.scenario_address_expr.value).into(); - f(&ma) - } } diff --git a/framework/scenario/src/facade/world_tx/expr/file_expr.rs b/framework/scenario/src/facade/world_tx/expr/file_expr.rs index f42f6e84e0..d9d3c77756 100644 --- a/framework/scenario/src/facade/world_tx/expr/file_expr.rs +++ b/framework/scenario/src/facade/world_tx/expr/file_expr.rs @@ -23,7 +23,7 @@ impl<'a> AnnotatedValue> for FileExp result } - fn into_value(self, env: &ScenarioTxEnvData) -> ManagedBuffer { + fn to_value(&self, env: &ScenarioTxEnvData) -> ManagedBuffer { let context = InterpreterContext::new().with_dir(env.context_path.clone()); let value = interpret_string(&format!("{FILE_PREFIX}{}", self.0), &context); value.into() diff --git a/framework/scenario/src/facade/world_tx/expr/mxsc_expr.rs b/framework/scenario/src/facade/world_tx/expr/mxsc_expr.rs index 6f95cf2b7a..c0f574e8cd 100644 --- a/framework/scenario/src/facade/world_tx/expr/mxsc_expr.rs +++ b/framework/scenario/src/facade/world_tx/expr/mxsc_expr.rs @@ -26,7 +26,7 @@ where result } - fn into_value(self, env: &Env) -> ManagedBuffer { + fn to_value(&self, env: &Env) -> ManagedBuffer { let context = InterpreterContext::new() .with_dir(env.env_data().context_path.clone()) .with_allowed_missing_files(); diff --git a/framework/scenario/src/scenario/model/value/value_set_bytes.rs b/framework/scenario/src/scenario/model/value/value_set_bytes.rs index eaed19cea0..627f2ace9c 100644 --- a/framework/scenario/src/scenario/model/value/value_set_bytes.rs +++ b/framework/scenario/src/scenario/model/value/value_set_bytes.rs @@ -145,8 +145,8 @@ where self.original.to_concatenated_string().into() } - fn into_value(self, _env: &Env) -> ManagedBuffer { - self.value.into() + fn to_value(&self, _env: &Env) -> ManagedBuffer { + self.value.clone().into() } } @@ -160,7 +160,7 @@ where self.original.to_concatenated_string().into() } - fn into_value(self, _env: &Env) -> ManagedBuffer { + fn to_value(&self, _env: &Env) -> ManagedBuffer { self.value.clone().into() } } From 0b229c24ec75ca89a76ae0d31d849fb3eb83b87f Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 27 Mar 2024 07:11:15 +0200 Subject: [PATCH 196/461] AnnotatedValue & TxEgldValue impl for ManagedRef of BigUint --- .../proxy-test-first/src/proxy-test-first.rs | 2 +- contracts/modules/src/esdt.rs | 2 +- .../base/src/types/interaction/annotated.rs | 29 ++++++++++++++++++- .../tx_payment/tx_payment_egld_value.rs | 6 +++- .../src/types/managed/wrapped/managed_ref.rs | 1 + 5 files changed, 36 insertions(+), 4 deletions(-) diff --git a/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs b/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs index 7d18e22e3b..26cc9eb679 100644 --- a/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs +++ b/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs @@ -81,7 +81,7 @@ pub trait ProxyTestFirst { .to(other_contract) .raw_upgrade() .argument(&456) - .egld(payment.clone_value()) + .egld(payment) .upgrade_contract(&code, CodeMetadata::UPGRADEABLE); } diff --git a/contracts/modules/src/esdt.rs b/contracts/modules/src/esdt.rs index fa02cfd263..f39e5fe650 100644 --- a/contracts/modules/src/esdt.rs +++ b/contracts/modules/src/esdt.rs @@ -66,7 +66,7 @@ pub trait EsdtModule { let egld_returned = self.call_value().egld_value(); self.tx() .to(&initial_caller) - .egld(&*egld_returned) + .egld(egld_returned) .transfer_if_not_empty(); }, } diff --git a/framework/base/src/types/interaction/annotated.rs b/framework/base/src/types/interaction/annotated.rs index afaecf184e..d6b75fc610 100644 --- a/framework/base/src/types/interaction/annotated.rs +++ b/framework/base/src/types/interaction/annotated.rs @@ -1,4 +1,7 @@ -use crate::types::{heap::Address, BigUint, ManagedAddress, ManagedBuffer}; +use crate::{ + proxy_imports::ManagedRef, + types::{heap::Address, BigUint, ManagedAddress, ManagedBuffer}, +}; use super::TxEnv; @@ -175,6 +178,30 @@ where } } +impl<'a, Env> AnnotatedValue> for ManagedRef<'a, Env::Api, BigUint> +where + Env: TxEnv, +{ + fn annotation(&self, _env: &Env) -> ManagedBuffer { + self.to_display() + } + + fn to_value(&self, _env: &Env) -> BigUint { + (*self).clone_value() + } + + fn into_value(self, _env: &Env) -> BigUint { + self.clone_value() + } + + fn with_value_ref(&self, env: &Env, f: F) -> R + where + F: FnOnce(&BigUint) -> R, + { + f(self) + } +} + impl AnnotatedValue> for u64 where Env: TxEnv, diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_value.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_value.rs index 8fcaab3ceb..b047e584b2 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_value.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_value.rs @@ -1,4 +1,7 @@ -use crate::types::{AnnotatedValue, BigUint}; +use crate::{ + proxy_imports::ManagedRef, + types::{AnnotatedValue, BigUint}, +}; use super::TxEnv; @@ -10,4 +13,5 @@ where impl TxEgldValue for BigUint where Env: TxEnv {} impl TxEgldValue for &BigUint where Env: TxEnv {} +impl<'a, Env> TxEgldValue for ManagedRef<'a, Env::Api, BigUint> where Env: TxEnv {} impl TxEgldValue for u64 where Env: TxEnv {} diff --git a/framework/base/src/types/managed/wrapped/managed_ref.rs b/framework/base/src/types/managed/wrapped/managed_ref.rs index 748c704956..143d79e1d4 100644 --- a/framework/base/src/types/managed/wrapped/managed_ref.rs +++ b/framework/base/src/types/managed/wrapped/managed_ref.rs @@ -54,6 +54,7 @@ where M: ManagedTypeApi, T: ManagedType + Clone, { + /// Syntactic sugar for dereferencing and cloning the object. pub fn clone_value(&self) -> T { self.deref().clone() } From dc9c49b4178fdde0f4afedc0786e369c176b86c9 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 27 Mar 2024 07:40:20 +0200 Subject: [PATCH 197/461] AnnotatedValue impl split into several files --- .../base/src/types/interaction/annotated.rs | 200 +----------------- .../annotated/annotated_impl_big_uint.rs | 104 +++++++++ .../annotated_impl_managed_address.rs | 80 +++++++ .../annotated_impl_managed_buffer.rs | 30 +++ 4 files changed, 218 insertions(+), 196 deletions(-) create mode 100644 framework/base/src/types/interaction/annotated/annotated_impl_big_uint.rs create mode 100644 framework/base/src/types/interaction/annotated/annotated_impl_managed_address.rs create mode 100644 framework/base/src/types/interaction/annotated/annotated_impl_managed_buffer.rs diff --git a/framework/base/src/types/interaction/annotated.rs b/framework/base/src/types/interaction/annotated.rs index d6b75fc610..f3187d08ce 100644 --- a/framework/base/src/types/interaction/annotated.rs +++ b/framework/base/src/types/interaction/annotated.rs @@ -1,3 +1,7 @@ +mod annotated_impl_big_uint; +mod annotated_impl_managed_address; +mod annotated_impl_managed_buffer; + use crate::{ proxy_imports::ManagedRef, types::{heap::Address, BigUint, ManagedAddress, ManagedBuffer}, @@ -31,199 +35,3 @@ where f(&self.to_value(env)) } } - -impl AnnotatedValue> for ManagedAddress -where - Env: TxEnv, -{ - fn annotation(&self, _env: &Env) -> ManagedBuffer { - self.hex_expr() - } - - fn to_value(&self, env: &Env) -> ManagedAddress { - self.clone() - } - - fn into_value(self, _env: &Env) -> ManagedAddress { - self - } - - fn with_value_ref(&self, env: &Env, f: F) -> R - where - F: FnOnce(&ManagedAddress) -> R, - { - f(self) - } -} - -impl AnnotatedValue> for &ManagedAddress -where - Env: TxEnv, -{ - fn annotation(&self, _env: &Env) -> ManagedBuffer { - self.hex_expr() - } - - fn to_value(&self, env: &Env) -> ManagedAddress { - (*self).clone() - } - - fn into_value(self, _env: &Env) -> ManagedAddress { - self.clone() - } - - fn with_value_ref(&self, env: &Env, f: F) -> R - where - F: FnOnce(&ManagedAddress) -> R, - { - f(self) - } -} - -impl AnnotatedValue> for Address -where - Env: TxEnv, -{ - fn annotation(&self, _env: &Env) -> ManagedBuffer { - ManagedAddress::from(self).hex_expr() - } - - fn to_value(&self, env: &Env) -> ManagedAddress { - ManagedAddress::from(self) - } -} - -impl AnnotatedValue> for &Address -where - Env: TxEnv, -{ - fn annotation(&self, _env: &Env) -> ManagedBuffer { - ManagedAddress::from(*self).hex_expr() - } - - fn to_value(&self, env: &Env) -> ManagedAddress { - ManagedAddress::from(*self) - } -} - -impl AnnotatedValue> for ManagedBuffer -where - Env: TxEnv, -{ - fn annotation(&self, _env: &Env) -> ManagedBuffer { - self.hex_expr() - } - - fn to_value(&self, _env: &Env) -> ManagedBuffer { - self.clone() - } - - fn into_value(self, _env: &Env) -> ManagedBuffer { - self - } - - fn with_value_ref(&self, env: &Env, f: F) -> R - where - F: FnOnce(&ManagedBuffer) -> R, - { - f(self) - } -} - -impl AnnotatedValue> for BigUint -where - Env: TxEnv, -{ - fn annotation(&self, _env: &Env) -> ManagedBuffer { - self.to_display() - } - - fn to_value(&self, _env: &Env) -> BigUint { - self.clone() - } - - fn into_value(self, _env: &Env) -> BigUint { - self - } - - fn with_value_ref(&self, env: &Env, f: F) -> R - where - F: FnOnce(&BigUint) -> R, - { - f(self) - } -} - -impl AnnotatedValue> for &BigUint -where - Env: TxEnv, -{ - fn annotation(&self, _env: &Env) -> ManagedBuffer { - self.to_display() - } - - fn to_value(&self, _env: &Env) -> BigUint { - (*self).clone() - } - - fn into_value(self, _env: &Env) -> BigUint { - self.clone() - } - - fn with_value_ref(&self, env: &Env, f: F) -> R - where - F: FnOnce(&BigUint) -> R, - { - f(self) - } -} - -impl<'a, Env> AnnotatedValue> for ManagedRef<'a, Env::Api, BigUint> -where - Env: TxEnv, -{ - fn annotation(&self, _env: &Env) -> ManagedBuffer { - self.to_display() - } - - fn to_value(&self, _env: &Env) -> BigUint { - (*self).clone_value() - } - - fn into_value(self, _env: &Env) -> BigUint { - self.clone_value() - } - - fn with_value_ref(&self, env: &Env, f: F) -> R - where - F: FnOnce(&BigUint) -> R, - { - f(self) - } -} - -impl AnnotatedValue> for u64 -where - Env: TxEnv, -{ - fn annotation(&self, env: &Env) -> ManagedBuffer { - self.to_value(env).to_display() - } - - fn to_value(&self, _env: &Env) -> BigUint { - BigUint::from(*self) - } -} - -impl AnnotatedValue> for () -where - Env: TxEnv, -{ - fn annotation(&self, env: &Env) -> ManagedBuffer { - ManagedBuffer::from("0") - } - - fn to_value(&self, _env: &Env) -> BigUint { - BigUint::zero() - } -} diff --git a/framework/base/src/types/interaction/annotated/annotated_impl_big_uint.rs b/framework/base/src/types/interaction/annotated/annotated_impl_big_uint.rs new file mode 100644 index 0000000000..29f41042aa --- /dev/null +++ b/framework/base/src/types/interaction/annotated/annotated_impl_big_uint.rs @@ -0,0 +1,104 @@ +use crate::{ + proxy_imports::ManagedRef, + types::{heap::Address, BigUint, ManagedAddress, ManagedBuffer}, +}; + +use super::{AnnotatedValue, TxEnv}; + +impl AnnotatedValue> for BigUint +where + Env: TxEnv, +{ + fn annotation(&self, _env: &Env) -> ManagedBuffer { + self.to_display() + } + + fn to_value(&self, _env: &Env) -> BigUint { + self.clone() + } + + fn into_value(self, _env: &Env) -> BigUint { + self + } + + fn with_value_ref(&self, env: &Env, f: F) -> R + where + F: FnOnce(&BigUint) -> R, + { + f(self) + } +} + +impl AnnotatedValue> for &BigUint +where + Env: TxEnv, +{ + fn annotation(&self, _env: &Env) -> ManagedBuffer { + self.to_display() + } + + fn to_value(&self, _env: &Env) -> BigUint { + (*self).clone() + } + + fn into_value(self, _env: &Env) -> BigUint { + self.clone() + } + + fn with_value_ref(&self, env: &Env, f: F) -> R + where + F: FnOnce(&BigUint) -> R, + { + f(self) + } +} + +impl<'a, Env> AnnotatedValue> for ManagedRef<'a, Env::Api, BigUint> +where + Env: TxEnv, +{ + fn annotation(&self, _env: &Env) -> ManagedBuffer { + self.to_display() + } + + fn to_value(&self, _env: &Env) -> BigUint { + (*self).clone_value() + } + + fn into_value(self, _env: &Env) -> BigUint { + self.clone_value() + } + + fn with_value_ref(&self, env: &Env, f: F) -> R + where + F: FnOnce(&BigUint) -> R, + { + f(self) + } +} + +impl AnnotatedValue> for u64 +where + Env: TxEnv, +{ + fn annotation(&self, env: &Env) -> ManagedBuffer { + self.to_value(env).to_display() + } + + fn to_value(&self, _env: &Env) -> BigUint { + BigUint::from(*self) + } +} + +impl AnnotatedValue> for () +where + Env: TxEnv, +{ + fn annotation(&self, env: &Env) -> ManagedBuffer { + ManagedBuffer::from("0") + } + + fn to_value(&self, _env: &Env) -> BigUint { + BigUint::zero() + } +} diff --git a/framework/base/src/types/interaction/annotated/annotated_impl_managed_address.rs b/framework/base/src/types/interaction/annotated/annotated_impl_managed_address.rs new file mode 100644 index 0000000000..87aebbb82e --- /dev/null +++ b/framework/base/src/types/interaction/annotated/annotated_impl_managed_address.rs @@ -0,0 +1,80 @@ +use crate::{ + proxy_imports::ManagedRef, + types::{heap::Address, BigUint, ManagedAddress, ManagedBuffer}, +}; + +use super::{AnnotatedValue, TxEnv}; + +impl AnnotatedValue> for ManagedAddress +where + Env: TxEnv, +{ + fn annotation(&self, _env: &Env) -> ManagedBuffer { + self.hex_expr() + } + + fn to_value(&self, env: &Env) -> ManagedAddress { + self.clone() + } + + fn into_value(self, _env: &Env) -> ManagedAddress { + self + } + + fn with_value_ref(&self, env: &Env, f: F) -> R + where + F: FnOnce(&ManagedAddress) -> R, + { + f(self) + } +} + +impl AnnotatedValue> for &ManagedAddress +where + Env: TxEnv, +{ + fn annotation(&self, _env: &Env) -> ManagedBuffer { + self.hex_expr() + } + + fn to_value(&self, env: &Env) -> ManagedAddress { + (*self).clone() + } + + fn into_value(self, _env: &Env) -> ManagedAddress { + self.clone() + } + + fn with_value_ref(&self, env: &Env, f: F) -> R + where + F: FnOnce(&ManagedAddress) -> R, + { + f(self) + } +} + +impl AnnotatedValue> for Address +where + Env: TxEnv, +{ + fn annotation(&self, _env: &Env) -> ManagedBuffer { + ManagedAddress::from(self).hex_expr() + } + + fn to_value(&self, env: &Env) -> ManagedAddress { + ManagedAddress::from(self) + } +} + +impl AnnotatedValue> for &Address +where + Env: TxEnv, +{ + fn annotation(&self, _env: &Env) -> ManagedBuffer { + ManagedAddress::from(*self).hex_expr() + } + + fn to_value(&self, env: &Env) -> ManagedAddress { + ManagedAddress::from(*self) + } +} diff --git a/framework/base/src/types/interaction/annotated/annotated_impl_managed_buffer.rs b/framework/base/src/types/interaction/annotated/annotated_impl_managed_buffer.rs new file mode 100644 index 0000000000..bf15a3a262 --- /dev/null +++ b/framework/base/src/types/interaction/annotated/annotated_impl_managed_buffer.rs @@ -0,0 +1,30 @@ +use crate::{ + proxy_imports::ManagedRef, + types::{heap::Address, BigUint, ManagedAddress, ManagedBuffer}, +}; + +use super::{AnnotatedValue, TxEnv}; + +impl AnnotatedValue> for ManagedBuffer +where + Env: TxEnv, +{ + fn annotation(&self, _env: &Env) -> ManagedBuffer { + self.hex_expr() + } + + fn to_value(&self, _env: &Env) -> ManagedBuffer { + self.clone() + } + + fn into_value(self, _env: &Env) -> ManagedBuffer { + self + } + + fn with_value_ref(&self, env: &Env, f: F) -> R + where + F: FnOnce(&ManagedBuffer) -> R, + { + f(self) + } +} From 45c431a58077562510222ba5952c3f3f41f07e0d Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 27 Mar 2024 08:53:26 +0200 Subject: [PATCH 198/461] unified syntax - gas annotations --- .../base/src/types/interaction/annotated.rs | 1 + .../annotated/annotated_impl_big_uint.rs | 2 +- .../annotated/annotated_impl_u64.rs | 45 +++++++++++++++++++ framework/base/src/types/interaction/tx.rs | 35 ++++++++++++--- .../interaction/tx_call_async_promises.rs | 10 +++-- .../src/types/interaction/tx_call_deploy.rs | 4 +- .../src/types/interaction/tx_call_sync.rs | 2 +- .../base/src/types/interaction/tx_call_te.rs | 2 +- .../base/src/types/interaction/tx_env.rs | 6 ++- .../base/src/types/interaction/tx_env_sc.rs | 12 +++-- .../base/src/types/interaction/tx_gas.rs | 45 ++++++++++++++----- .../src/facade/world_tx/scenario_env.rs | 9 ++-- .../src/facade/world_tx/scenario_env_exec.rs | 8 +++- .../src/facade/world_tx/scenario_env_query.rs | 12 +++-- .../src/facade/world_tx/scenario_env_util.rs | 23 +++++++--- .../snippets/src/itx/interactor_env_exec.rs | 8 +++- .../snippets/src/itx/interactor_env_query.rs | 12 +++-- 17 files changed, 181 insertions(+), 55 deletions(-) create mode 100644 framework/base/src/types/interaction/annotated/annotated_impl_u64.rs diff --git a/framework/base/src/types/interaction/annotated.rs b/framework/base/src/types/interaction/annotated.rs index f3187d08ce..a7f18c6745 100644 --- a/framework/base/src/types/interaction/annotated.rs +++ b/framework/base/src/types/interaction/annotated.rs @@ -1,6 +1,7 @@ mod annotated_impl_big_uint; mod annotated_impl_managed_address; mod annotated_impl_managed_buffer; +mod annotated_impl_u64; use crate::{ proxy_imports::ManagedRef, diff --git a/framework/base/src/types/interaction/annotated/annotated_impl_big_uint.rs b/framework/base/src/types/interaction/annotated/annotated_impl_big_uint.rs index 29f41042aa..823a796348 100644 --- a/framework/base/src/types/interaction/annotated/annotated_impl_big_uint.rs +++ b/framework/base/src/types/interaction/annotated/annotated_impl_big_uint.rs @@ -82,7 +82,7 @@ where Env: TxEnv, { fn annotation(&self, env: &Env) -> ManagedBuffer { - self.to_value(env).to_display() + BigUint::from(*self).to_display() } fn to_value(&self, _env: &Env) -> BigUint { diff --git a/framework/base/src/types/interaction/annotated/annotated_impl_u64.rs b/framework/base/src/types/interaction/annotated/annotated_impl_u64.rs new file mode 100644 index 0000000000..0905710c25 --- /dev/null +++ b/framework/base/src/types/interaction/annotated/annotated_impl_u64.rs @@ -0,0 +1,45 @@ +use crate::{ + formatter::{FormatBuffer, SCDisplay}, + proxy_imports::ManagedTypeApi, + types::{ + heap::Address, BigUint, ManagedAddress, ManagedBuffer, ManagedBufferCachedBuilder, + ManagedRef, + }, +}; + +use super::{AnnotatedValue, TxEnv}; + +pub(crate) fn display_u64(n: u64) -> ManagedBuffer +where + Api: ManagedTypeApi, +{ + let mut result = ManagedBufferCachedBuilder::new_from_slice(&[]); + result.append_display(&n); + result.into_managed_buffer() +} + +impl AnnotatedValue for u64 +where + Env: TxEnv, +{ + fn annotation(&self, env: &Env) -> ManagedBuffer { + display_u64(*self) + } + + fn to_value(&self, _env: &Env) -> u64 { + *self + } +} + +impl AnnotatedValue for i32 +where + Env: TxEnv, +{ + fn annotation(&self, env: &Env) -> ManagedBuffer { + display_u64(*self as u64) + } + + fn to_value(&self, _env: &Env) -> u64 { + *self as u64 + } +} diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 548da703c8..2213380614 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -11,12 +11,13 @@ use crate::{ use multiversx_sc_codec::TopEncodeMulti; use super::{ - contract_call_exec::UNSPECIFIED_GAS_LIMIT, contract_call_trait::ContractCallBase, Code, - ContractCallNoPayment, ContractCallWithEgld, ContractDeploy, DeployCall, Egld, EgldPayment, - ExplicitGas, FromSource, FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, - RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, TxCodeValue, TxData, TxEgldValue, - TxEnv, TxFrom, TxFromSourceValue, TxGas, TxPayment, TxPaymentEgldOnly, TxProxyTrait, - TxResultHandler, TxScEnv, TxTo, TxToSpecified, UpgradeCall, + contract_call_exec::UNSPECIFIED_GAS_LIMIT, contract_call_trait::ContractCallBase, + AnnotatedValue, Code, ContractCallNoPayment, ContractCallWithEgld, ContractDeploy, DeployCall, + Egld, EgldPayment, ExplicitGas, FromSource, FunctionCall, ManagedArgBuffer, + OriginalResultMarker, RHList, RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, + TxCodeValue, TxData, TxEgldValue, TxEnv, TxFrom, TxFromSourceValue, TxGas, TxGasValue, + TxPayment, TxPaymentEgldOnly, TxProxyTrait, TxResultHandler, TxScEnv, TxTo, TxToSpecified, + UpgradeCall, }; #[must_use] @@ -355,10 +356,30 @@ where { /// Sets an explicit gas limit to the call. #[inline] + pub fn gas( + self, + gas_value: GasValue, + ) -> Tx, Data, RH> + where + GasValue: TxGasValue, + { + Tx { + env: self.env, + from: self.from, + to: self.to, + payment: self.payment, + gas: ExplicitGas(gas_value), + data: self.data, + result_handler: self.result_handler, + } + } + + /// Backwards compatibility. + #[inline] pub fn with_gas_limit( self, gas_limit: u64, - ) -> Tx { + ) -> Tx, Data, RH> { Tx { env: self.env, from: self.from, diff --git a/framework/base/src/types/interaction/tx_call_async_promises.rs b/framework/base/src/types/interaction/tx_call_async_promises.rs index f2560451cf..b3b8a1794d 100644 --- a/framework/base/src/types/interaction/tx_call_async_promises.rs +++ b/framework/base/src/types/interaction/tx_call_async_promises.rs @@ -6,7 +6,7 @@ use crate::{ use super::{ callback_closure::CallbackClosureWithGas, ExplicitGas, FunctionCall, OriginalResultMarker, Tx, - TxGas, TxPayment, TxResultHandler, TxScEnv, TxToSpecified, + TxGas, TxGasValue, TxPayment, TxResultHandler, TxScEnv, TxToSpecified, }; pub trait TxPromisesCallback: TxResultHandler> @@ -117,12 +117,13 @@ where } } -impl - Tx, (), To, Payment, ExplicitGas, FunctionCall, Callback> +impl + Tx, (), To, Payment, ExplicitGas, FunctionCall, Callback> where Api: CallTypeApi, To: TxToSpecified>, Payment: TxPayment>, + GasValue: TxGasValue>, Callback: TxPromisesCallback, { pub fn register_promise(self) { @@ -132,6 +133,7 @@ where self.result_handler .overwrite_with_serialized_args(&mut cb_closure_args_serialized); let extra_gas_for_callback = self.result_handler.gas_for_callback(); + let gas = self.gas.gas_value(&self.env); self.payment.with_normalized( &self.env, @@ -146,7 +148,7 @@ where &norm_fc.arg_buffer, callback_name, callback_name, - self.gas.0, + gas, extra_gas_for_callback, &cb_closure_args_serialized, ) diff --git a/framework/base/src/types/interaction/tx_call_deploy.rs b/framework/base/src/types/interaction/tx_call_deploy.rs index 53814cd128..08cd815262 100644 --- a/framework/base/src/types/interaction/tx_call_deploy.rs +++ b/framework/base/src/types/interaction/tx_call_deploy.rs @@ -31,7 +31,7 @@ where RH: TxResultHandler>, { fn execute_deploy_raw(self) -> (ManagedAddress, ManagedVec>, RH) { - let gas_limit = self.gas.resolve_gas(&self.env); + let gas_limit = self.gas.gas_value(&self.env); let (new_address, raw_results) = self.payment.with_egld_value(&self.env, |egld_value| { SendRawWrapper::::new().deploy_contract( @@ -69,7 +69,7 @@ where fn execute_deploy_from_source_raw( self, ) -> (ManagedAddress, ManagedVec>, RH) { - let gas_limit = self.gas.resolve_gas(&self.env); + let gas_limit = self.gas.gas_value(&self.env); let (new_address, raw_results) = self.payment.with_egld_value(&self.env, |egld_value| { SendRawWrapper::::new().deploy_from_source_contract( diff --git a/framework/base/src/types/interaction/tx_call_sync.rs b/framework/base/src/types/interaction/tx_call_sync.rs index 9e45d09875..7b35b07a6a 100644 --- a/framework/base/src/types/interaction/tx_call_sync.rs +++ b/framework/base/src/types/interaction/tx_call_sync.rs @@ -28,7 +28,7 @@ where RH::ListReturns: NestedTupleFlatten, { fn execute_sync_call_raw(self) -> (ManagedVec>, RH) { - let gas_limit = self.gas.resolve_gas(&self.env); + let gas_limit = self.gas.gas_value(&self.env); let raw_result = self.payment.with_normalized( &self.env, diff --git a/framework/base/src/types/interaction/tx_call_te.rs b/framework/base/src/types/interaction/tx_call_te.rs index 6e81e7b8bb..8a62ca2bf8 100644 --- a/framework/base/src/types/interaction/tx_call_te.rs +++ b/framework/base/src/types/interaction/tx_call_te.rs @@ -31,7 +31,7 @@ where gas_limit = 0; } } else { - gas_limit = self.gas.resolve_gas(&self.env); + gas_limit = self.gas.gas_value(&self.env); } self.transfer_execute_with_gas(gas_limit); diff --git a/framework/base/src/types/interaction/tx_env.rs b/framework/base/src/types/interaction/tx_env.rs index 482b0a0e8e..3ba108f788 100644 --- a/framework/base/src/types/interaction/tx_env.rs +++ b/framework/base/src/types/interaction/tx_env.rs @@ -1,4 +1,4 @@ -use crate::{api::CallTypeApi, types::ManagedAddress}; +use crate::{api::CallTypeApi, proxy_imports::ManagedBuffer, types::ManagedAddress}; pub trait TxEnv: Sized { type Api: CallTypeApi; @@ -8,5 +8,7 @@ pub trait TxEnv: Sized { fn resolve_sender_address(&self) -> ManagedAddress; - fn default_gas(&self) -> u64; + fn default_gas_annotation(&self) -> ManagedBuffer; + + fn default_gas_value(&self) -> u64; } diff --git a/framework/base/src/types/interaction/tx_env_sc.rs b/framework/base/src/types/interaction/tx_env_sc.rs index f22c4a3dee..f4387275d2 100644 --- a/framework/base/src/types/interaction/tx_env_sc.rs +++ b/framework/base/src/types/interaction/tx_env_sc.rs @@ -3,10 +3,12 @@ use core::marker::PhantomData; use crate::{ api::{BlockchainApiImpl, CallTypeApi}, contract_base::BlockchainWrapper, - types::ManagedAddress, + types::{ManagedAddress, ManagedBuffer}, }; -use super::{contract_call_exec::TRANSFER_EXECUTE_DEFAULT_LEFTOVER, Tx, TxBaseWithEnv, TxEnv}; +use super::{ + contract_call_exec::TRANSFER_EXECUTE_DEFAULT_LEFTOVER, AnnotatedValue, Tx, TxBaseWithEnv, TxEnv, +}; pub struct TxScEnv where @@ -47,7 +49,11 @@ where BlockchainWrapper::::new().get_sc_address() } - fn default_gas(&self) -> u64 { + fn default_gas_annotation(&self) -> ManagedBuffer { + >::annotation(&self.default_gas_value(), self) + } + + fn default_gas_value(&self) -> u64 { let mut gas_left = Api::blockchain_api_impl().get_gas_left(); if gas_left > TRANSFER_EXECUTE_DEFAULT_LEFTOVER { gas_left -= TRANSFER_EXECUTE_DEFAULT_LEFTOVER; diff --git a/framework/base/src/types/interaction/tx_gas.rs b/framework/base/src/types/interaction/tx_gas.rs index eec1c19e4b..986361e473 100644 --- a/framework/base/src/types/interaction/tx_gas.rs +++ b/framework/base/src/types/interaction/tx_gas.rs @@ -1,11 +1,16 @@ -use super::TxEnv; -use crate::api::{BlockchainApi, BlockchainApiImpl}; +use super::{AnnotatedValue, TxEnv}; +use crate::{ + api::{BlockchainApi, BlockchainApiImpl}, + types::ManagedBuffer, +}; pub trait TxGas where Env: TxEnv, { - fn resolve_gas(&self, env: &Env) -> u64; + fn gas_annotation(&self, env: &Env) -> ManagedBuffer; + + fn gas_value(&self, env: &Env) -> u64; fn explicit_or_gas_left(&self, env: &Env) -> u64; } @@ -14,8 +19,12 @@ impl TxGas for () where Env: TxEnv, { - fn resolve_gas(&self, env: &Env) -> u64 { - env.default_gas() + fn gas_annotation(&self, env: &Env) -> ManagedBuffer<::Api> { + env.default_gas_annotation() + } + + fn gas_value(&self, env: &Env) -> u64 { + env.default_gas_value() } fn explicit_or_gas_left(&self, _env: &Env) -> u64 { @@ -23,18 +32,30 @@ where } } -pub struct ExplicitGas(pub u64); +pub trait TxGasValue: AnnotatedValue +where + Env: TxEnv, +{ +} + +impl TxGasValue for u64 where Env: TxEnv {} + +pub struct ExplicitGas(pub GasValue); -impl TxGas for ExplicitGas +impl TxGas for ExplicitGas where Env: TxEnv, + GasValue: TxGasValue, { - #[inline] - fn resolve_gas(&self, _env: &Env) -> u64 { - self.0 + fn gas_value(&self, env: &Env) -> u64 { + self.0.to_value(env) } - fn explicit_or_gas_left(&self, _env: &Env) -> u64 { - self.0 + fn gas_annotation(&self, env: &Env) -> ManagedBuffer<::Api> { + self.0.annotation(env) + } + + fn explicit_or_gas_left(&self, env: &Env) -> u64 { + self.gas_value(env) } } diff --git a/framework/scenario/src/facade/world_tx/scenario_env.rs b/framework/scenario/src/facade/world_tx/scenario_env.rs index 4589e36599..aac1952a34 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env.rs @@ -1,6 +1,6 @@ use std::path::PathBuf; -use multiversx_sc::types::{AnnotatedValue, ManagedAddress, TxBaseWithEnv, TxEnv}; +use multiversx_sc::types::{AnnotatedValue, ManagedAddress, ManagedBuffer, TxBaseWithEnv, TxEnv}; use crate::{ api::StaticApi, @@ -28,8 +28,11 @@ impl TxEnv for ScenarioTxEnvData { panic!("Explicit sender address expected") } - fn default_gas(&self) -> u64 { - // TODO: annotate + fn default_gas_annotation(&self) -> multiversx_sc::types::ManagedBuffer { + ManagedBuffer::from("5,000,000") + } + + fn default_gas_value(&self) -> u64 { 5_000_000 } } diff --git a/framework/scenario/src/facade/world_tx/scenario_env_exec.rs b/framework/scenario/src/facade/world_tx/scenario_env_exec.rs index 25f738f5e4..8ea522c410 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_exec.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_exec.rs @@ -33,8 +33,12 @@ impl<'w> TxEnv for ScenarioEnvExec<'w> { panic!("Explicit sender address expected") } - fn default_gas(&self) -> u64 { - self.data.default_gas() + fn default_gas_annotation(&self) -> ManagedBuffer { + self.data.default_gas_annotation() + } + + fn default_gas_value(&self) -> u64 { + self.data.default_gas_value() } } diff --git a/framework/scenario/src/facade/world_tx/scenario_env_query.rs b/framework/scenario/src/facade/world_tx/scenario_env_query.rs index c25d0f61db..dac9e68d83 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_query.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_query.rs @@ -3,8 +3,8 @@ use std::path::PathBuf; use multiversx_sc::{ tuple_util::NestedTupleFlatten, types::{ - AnnotatedValue, FunctionCall, ManagedAddress, RHListExec, Tx, TxBaseWithEnv, TxEnv, - TxFromSpecified, TxGas, TxPayment, TxToSpecified, + AnnotatedValue, FunctionCall, ManagedAddress, ManagedBuffer, RHListExec, Tx, TxBaseWithEnv, + TxEnv, TxFromSpecified, TxGas, TxPayment, TxToSpecified, }, }; @@ -30,8 +30,12 @@ impl<'w> TxEnv for ScenarioEnvQuery<'w> { panic!("Explicit sender address expected") } - fn default_gas(&self) -> u64 { - self.data.default_gas() + fn default_gas_annotation(&self) -> ManagedBuffer { + self.data.default_gas_annotation() + } + + fn default_gas_value(&self) -> u64 { + self.data.default_gas_value() } } diff --git a/framework/scenario/src/facade/world_tx/scenario_env_util.rs b/framework/scenario/src/facade/world_tx/scenario_env_util.rs index ffee5d5aea..8334b22cfb 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_util.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_util.rs @@ -4,7 +4,7 @@ use multiversx_sc::{ types::{ AnnotatedValue, Code, DeployCall, FunctionCall, ManagedAddress, ManagedBuffer, RHListExec, Tx, TxBaseWithEnv, TxCodeSource, TxCodeSourceSpecified, TxCodeValue, TxEnv, - TxFromSpecified, TxGas, TxPayment, TxToSpecified, + TxFromSpecified, TxGas, TxGasValue, TxPayment, TxToSpecified, }, }; @@ -41,6 +41,18 @@ where } } +pub fn gas_annotated(env: &Env, gas: Gas) -> U64Value +where + Env: TxEnv, + Gas: TxGas, +{ + let annotation = gas.gas_annotation(env).to_string(); + U64Value { + value: gas.gas_value(env), + original: ValueSubTree::Str(annotation), + } +} + pub fn tx_to_sc_call_step( env: &Env, from: From, @@ -64,8 +76,7 @@ where step.tx.arguments.push(arg.to_vec().into()); } - let explicit_gas = gas.resolve_gas(env); - step.tx.gas_limit = U64Value::from(explicit_gas); + step.tx.gas_limit = gas_annotated(env, gas); let full_payment_data = payment.into_full_payment_data(env); if let Some(annotated_egld_payment) = full_payment_data.egld { @@ -96,8 +107,7 @@ where step.tx.arguments.push(arg.to_vec().into()); } - let explicit_gas = gas.resolve_gas(env); - step.tx.gas_limit = U64Value::from(explicit_gas); + step.tx.gas_limit = gas_annotated(env, gas); let full_payment_data = payment.into_full_payment_data(env); if let Some(annotated_egld_payment) = full_payment_data.egld { @@ -140,8 +150,7 @@ where .from(address_annotated(env, from)) .to(address_annotated(env, to)); - let explicit_gas = gas.resolve_gas(env); - step.tx.gas_limit = U64Value::from(explicit_gas); + step.tx.gas_limit = gas_annotated(env, gas); let full_payment_data = payment.into_full_payment_data(env); if let Some(annotated_egld_payment) = full_payment_data.egld { diff --git a/framework/snippets/src/itx/interactor_env_exec.rs b/framework/snippets/src/itx/interactor_env_exec.rs index 15065c9191..235a580853 100644 --- a/framework/snippets/src/itx/interactor_env_exec.rs +++ b/framework/snippets/src/itx/interactor_env_exec.rs @@ -32,8 +32,12 @@ impl<'w> TxEnv for InteractorEnvExec<'w> { panic!("Explicit sender address expected") } - fn default_gas(&self) -> u64 { - self.data.default_gas() + fn default_gas_annotation(&self) -> ManagedBuffer { + self.data.default_gas_annotation() + } + + fn default_gas_value(&self) -> u64 { + self.data.default_gas_value() } } diff --git a/framework/snippets/src/itx/interactor_env_query.rs b/framework/snippets/src/itx/interactor_env_query.rs index 1ca5be149a..052fc8cc12 100644 --- a/framework/snippets/src/itx/interactor_env_query.rs +++ b/framework/snippets/src/itx/interactor_env_query.rs @@ -5,8 +5,8 @@ use multiversx_sc_scenario::{ multiversx_sc::{ tuple_util::NestedTupleFlatten, types::{ - AnnotatedValue, FunctionCall, ManagedAddress, RHListExec, Tx, TxBaseWithEnv, TxEnv, - TxFromSpecified, TxGas, TxPayment, TxToSpecified, + AnnotatedValue, FunctionCall, ManagedAddress, ManagedBuffer, RHListExec, Tx, + TxBaseWithEnv, TxEnv, TxFromSpecified, TxGas, TxPayment, TxToSpecified, }, }, scenario_env_util::*, @@ -30,8 +30,12 @@ impl<'w> TxEnv for InteractorEnvQuery<'w> { panic!("Explicit sender address expected") } - fn default_gas(&self) -> u64 { - self.data.default_gas() + fn default_gas_annotation(&self) -> ManagedBuffer { + self.data.default_gas_annotation() + } + + fn default_gas_value(&self) -> u64 { + self.data.default_gas_value() } } From 9b7c228ec28efcee4c1f396177ed6bcd7f1d73db Mon Sep 17 00:00:00 2001 From: Alin Cruceat Date: Wed, 27 Mar 2024 10:41:08 +0200 Subject: [PATCH 199/461] import FixedSupplyToken & Mergeable --- .../base/src/types/managed/wrapped/mod.rs | 6 ++ .../wrapped/traits/fixed_token_supply.rs | 31 ++++++++++ .../types/managed/wrapped/traits/mergeable.rs | 62 +++++++++++++++++++ .../src/types/managed/wrapped/traits/mod.rs | 2 + 4 files changed, 101 insertions(+) create mode 100644 framework/base/src/types/managed/wrapped/traits/fixed_token_supply.rs create mode 100644 framework/base/src/types/managed/wrapped/traits/mergeable.rs create mode 100644 framework/base/src/types/managed/wrapped/traits/mod.rs diff --git a/framework/base/src/types/managed/wrapped/mod.rs b/framework/base/src/types/managed/wrapped/mod.rs index 8ac485fa38..d87389a87a 100644 --- a/framework/base/src/types/managed/wrapped/mod.rs +++ b/framework/base/src/types/managed/wrapped/mod.rs @@ -17,6 +17,7 @@ mod managed_vec_ref_iter; pub(crate) mod preloaded_managed_buffer; mod randomness_source; mod token_identifier; +mod traits; pub use egld_or_esdt_token_identifier::EgldOrEsdtTokenIdentifier; pub use egld_or_esdt_token_payment::EgldOrEsdtTokenPayment; @@ -37,3 +38,8 @@ pub use managed_vec_ref::ManagedVecRef; pub use managed_vec_ref_iter::ManagedVecRefIterator; pub use randomness_source::RandomnessSource; pub use token_identifier::TokenIdentifier; + +pub use self::traits::{ + fixed_token_supply::FixedSupplyToken, + mergeable::{ExternallyMergeable, Mergeable}, +}; diff --git a/framework/base/src/types/managed/wrapped/traits/fixed_token_supply.rs b/framework/base/src/types/managed/wrapped/traits/fixed_token_supply.rs new file mode 100644 index 0000000000..838486c203 --- /dev/null +++ b/framework/base/src/types/managed/wrapped/traits/fixed_token_supply.rs @@ -0,0 +1,31 @@ +use crate::imports::{BigUint, ErrorApiImpl, ManagedTypeApi}; + +pub trait FixedSupplyToken { + fn get_total_supply(&self) -> BigUint; + + fn into_part(self, payment_amount: &BigUint) -> Self; + + /// full_value * current_supply / total_supply + fn rule_of_three(&self, current_supply: &BigUint, full_value: &BigUint) -> BigUint { + let total_supply = self.get_total_supply(); + if current_supply == &total_supply { + return full_value.clone(); + } + + (full_value * current_supply) / total_supply + } + + /// full_value * current_supply / total_supply + fn rule_of_three_non_zero_result( + &self, + current_supply: &BigUint, + full_value: &BigUint, + ) -> BigUint { + let result = self.rule_of_three(current_supply, full_value); + if result == 0 { + M::error_api_impl().signal_error(b"Zero amount"); + } + + result + } +} diff --git a/framework/base/src/types/managed/wrapped/traits/mergeable.rs b/framework/base/src/types/managed/wrapped/traits/mergeable.rs new file mode 100644 index 0000000000..2ed714973a --- /dev/null +++ b/framework/base/src/types/managed/wrapped/traits/mergeable.rs @@ -0,0 +1,62 @@ +use crate::imports::{ErrorApiImpl, EsdtTokenPayment, ManagedTypeApi, ManagedVec, ManagedVecItem}; + +pub static CANNOT_MERGE_ERR_MSG: &[u8] = b"Cannot merge"; + +/// Used for types that can be merged locally. +pub trait Mergeable { + fn error_if_not_mergeable(&self, other: &Self) { + if !self.can_merge_with(other) { + throw_not_mergeable_error::(); + } + } + + fn can_merge_with(&self, other: &Self) -> bool; + + fn merge_with(&mut self, other: Self); + + fn merge_with_multiple(&mut self, others: ManagedVec) + where + Self: Sized + ManagedVecItem, + { + for item in &others { + self.merge_with(item); + } + } +} + +/// Used when merging is done through an external SC call. +/// Generally, these only need to have the same token ID, with different nonces. +pub trait ExternallyMergeable { + fn error_if_not_externally_mergeable(&self, other: &Self) { + if !self.can_be_merged_externally_with(other) { + throw_not_mergeable_error::(); + } + } + + fn can_be_merged_externally_with(&self, other: &Self) -> bool; +} + +pub fn throw_not_mergeable_error() -> ! { + M::error_api_impl().signal_error(CANNOT_MERGE_ERR_MSG); +} + +impl Mergeable for EsdtTokenPayment { + fn can_merge_with(&self, other: &Self) -> bool { + let same_token_id = self.token_identifier == other.token_identifier; + let same_token_nonce = self.token_nonce == other.token_nonce; + + same_token_id && same_token_nonce + } + + fn merge_with(&mut self, other: Self) { + self.error_if_not_mergeable(&other); + + self.amount += other.amount; + } +} + +impl ExternallyMergeable for EsdtTokenPayment { + fn can_be_merged_externally_with(&self, other: &Self) -> bool { + self.token_identifier == other.token_identifier + } +} diff --git a/framework/base/src/types/managed/wrapped/traits/mod.rs b/framework/base/src/types/managed/wrapped/traits/mod.rs new file mode 100644 index 0000000000..2a9f147fdc --- /dev/null +++ b/framework/base/src/types/managed/wrapped/traits/mod.rs @@ -0,0 +1,2 @@ +pub(crate) mod fixed_token_supply; +pub(crate) mod mergeable; From 928ca501e0e461d322d954f75589ed6ba0bb5a6d Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 27 Mar 2024 12:26:36 +0200 Subject: [PATCH 200/461] NumExpr & GasLeft --- .../adder/interact/src/basic_interact.rs | 4 +- .../interact/src/multisig_interact.rs | 8 +-- .../interact/src/multisig_interact_nfts.rs | 12 ++--- .../interact/src/multisig_interact_wegld.rs | 9 ++-- .../contract_base/wrappers/send_wrapper.rs | 6 +-- .../base/src/types/interaction/annotated.rs | 13 ++++- .../annotated/annotated_impl_u64.rs | 11 +--- .../base/src/types/interaction/markers.rs | 7 +++ .../src/types/interaction/markers/gas_left.rs | 29 ++++++++++ .../tx_to_caller.rs => markers/to_caller.rs} | 6 +-- .../tx_to_self.rs => markers/to_self.rs} | 6 +-- framework/base/src/types/interaction/mod.rs | 2 + framework/base/src/types/interaction/tx_to.rs | 6 --- .../scenario/src/facade/world_tx/expr.rs | 2 + .../src/facade/world_tx/expr/num_expr.rs | 53 +++++++++++++++++++ 15 files changed, 133 insertions(+), 41 deletions(-) create mode 100644 framework/base/src/types/interaction/markers.rs create mode 100644 framework/base/src/types/interaction/markers/gas_left.rs rename framework/base/src/types/interaction/{tx_to/tx_to_caller.rs => markers/to_caller.rs} (91%) rename framework/base/src/types/interaction/{tx_to/tx_to_self.rs => markers/to_self.rs} (90%) create mode 100644 framework/scenario/src/facade/world_tx/expr/num_expr.rs diff --git a/contracts/examples/adder/interact/src/basic_interact.rs b/contracts/examples/adder/interact/src/basic_interact.rs index 7941bd7626..6664d030ba 100644 --- a/contracts/examples/adder/interact/src/basic_interact.rs +++ b/contracts/examples/adder/interact/src/basic_interact.rs @@ -17,7 +17,7 @@ use multiversx_sc_snippets::{ scenario_format::interpret_trait::{InterpretableFrom, InterpreterContext}, scenario_model::{BytesValue, ScDeployStep, Scenario}, standalone::retrieve_account_as_scenario_set_state, - test_wallets, ContractInfo, WithRawTxResponse, + test_wallets, ContractInfo, NumExpr, WithRawTxResponse, }, tokio, Interactor, InteractorPrepareAsync, StepBuffer, }; @@ -170,7 +170,7 @@ impl AdderInteract { .tx() .from(&self.wallet_address) .to(self.state.adder().to_address()) - .egld(50000000000000000u64) // TODO: annotate "0,050000000000000000" + .egld(NumExpr("0,050000000000000000")) .prepare_async() .run() .await; diff --git a/contracts/examples/multisig/interact/src/multisig_interact.rs b/contracts/examples/multisig/interact/src/multisig_interact.rs index c60d0c9fac..83295c0b3e 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact.rs @@ -16,7 +16,7 @@ use multiversx_sc_scenario::{ multiversx_sc::types::{BigUint, ReturnsNewAddress, ReturnsResult}, scenario_format::interpret_trait::InterpretableFrom, standalone::retrieve_account_as_scenario_set_state, - test_wallets, + test_wallets, NumExpr, }; use multiversx_sc_snippets::{ dns_address_for_name, env_logger, @@ -167,7 +167,7 @@ impl MultisigInteract { .typed(multisig_proxy::MultisigProxy) .init(&Config::load_config().quorum(), board) .code(&self.multisig_code) - .with_gas_limit(100_000_000u64) + .gas(NumExpr("100,000,000")) .returns(ReturnsNewAddress) .prepare_async() .run() @@ -260,7 +260,7 @@ impl MultisigInteract { .tx() .from(&self.wallet_address) .to(self.state.multisig().to_address()) - .with_gas_limit(gas_expr) + .gas(gas_expr) .typed(multisig_proxy::MultisigProxy) .perform_action_endpoint(action_id) .prepare_async() @@ -371,7 +371,7 @@ impl MultisigInteract { .tx() .from(&self.wallet_address) .to(self.state.multisig().to_address()) - .with_gas_limit(30_000_000u64) + .gas(NumExpr("30,000,000")) .typed(multisig_proxy::MultisigProxy) .dns_register(dns_address, name) .prepare_async() diff --git a/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs b/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs index e1d48158fd..62314ef63c 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs @@ -5,7 +5,7 @@ use multiversx_sc_scenario::{ codec::Empty, types::{FunctionCall, ReturnsResult}, }, - ReturnsNewTokenIdentifier, + NumExpr, ReturnsNewTokenIdentifier, }; use super::*; @@ -45,7 +45,7 @@ impl MultisigInteract { .tx() .from(&self.wallet_address) .to(self.state.multisig().to_address()) - .with_gas_limit(10_000_000u64) + .gas(NumExpr("10,000,000")) .typed(multisig_proxy::MultisigProxy) .propose_async_call( system_sc_address, @@ -81,7 +81,7 @@ impl MultisigInteract { .tx() .from(&self.wallet_address) .to(&self.state.multisig().to_address()) - .with_gas_limit(80_000_000u64) + .gas(NumExpr("80,000,000")) .typed(multisig_proxy::MultisigProxy) .perform_action_endpoint(action_id) .returns(ReturnsNewTokenIdentifier) @@ -103,7 +103,7 @@ impl MultisigInteract { .tx() .from(&self.wallet_address) .to(&self.state.multisig().to_address()) - .with_gas_limit(10_000_000u64) + .gas(NumExpr("10,000,000")) .typed(multisig_proxy::MultisigProxy) .propose_async_call( system_sc_address, @@ -136,7 +136,7 @@ impl MultisigInteract { .tx() .from(&self.wallet_address) .to(&self.state.multisig().to_address()) - .with_gas_limit(80_000_000u64) + .gas(NumExpr("80,000,000")) .typed(multisig_proxy::MultisigProxy) .perform_action_endpoint(action_id) .returns(ReturnsNewTokenIdentifier) @@ -158,7 +158,7 @@ impl MultisigInteract { .tx() .from(&self.wallet_address) .to(&self.state.multisig().to_address()) - .with_gas_limit(10_000_000u64) + .gas(NumExpr("10,000,000")) .typed(multisig_proxy::MultisigProxy) .propose_async_call( &self.system_sc_address, diff --git a/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs b/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs index 92efedc86e..6e3c10563e 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs @@ -1,6 +1,9 @@ use std::time::Duration; -use multiversx_sc_scenario::multiversx_sc::types::{ContractCallBase, FunctionCall, ReturnsResult}; +use multiversx_sc_scenario::{ + multiversx_sc::types::{ContractCallBase, FunctionCall, ReturnsResult}, + NumExpr, +}; #[allow(unused_imports)] use multiversx_sc_snippets::multiversx_sc::types::{ EsdtTokenPayment, MultiValueEncoded, TokenIdentifier, @@ -65,7 +68,7 @@ impl MultisigInteract { .tx() .from(&self.wallet_address) .to(&self.state.multisig().to_address()) - .with_gas_limit(10_000_000u64) + .gas(NumExpr("10,000,000")) .typed(multisig_proxy::MultisigProxy) .propose_async_call( bech32::decode(WEGLD_SWAP_SC_BECH32), @@ -98,7 +101,7 @@ impl MultisigInteract { .tx() .from(&self.wallet_address) .to(&self.state.multisig().to_address()) - .with_gas_limit(10_000_000u64) + .gas(NumExpr("10,000,000")) .typed(multisig_proxy::MultisigProxy) .propose_async_call( contract_call.basic.to, diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index 6083b7b92a..dc63932e22 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -12,7 +12,7 @@ use crate::{ }, codec, esdt::ESDTSystemSmartContractProxy, - proxy_imports::{ReturnsRawResult, ToSelf}, + proxy_imports::{GasLeft, ReturnsRawResult, ToSelf}, types::{ BigUint, ContractCall, ContractCallNoPayment, EgldOrEsdtTokenIdentifier, EsdtTokenPayment, ManagedAddress, ManagedArgBuffer, ManagedBuffer, ManagedType, ManagedVec, TokenIdentifier, @@ -386,7 +386,7 @@ where ) -> ManagedVec> { Tx::new_tx_from_sc() .to(ToSelf) - .with_gas_limit(gas) + .gas(gas) .raw_call() .function_name(endpoint_name) .arguments_raw(arg_buffer) @@ -401,7 +401,7 @@ where ) { Tx::new_tx_from_sc() .to(ToSelf) - .with_gas_limit(A::blockchain_api_impl().get_gas_left()) + .gas(GasLeft) .raw_call() .function_name(function_name) .arguments_raw(arg_buffer) diff --git a/framework/base/src/types/interaction/annotated.rs b/framework/base/src/types/interaction/annotated.rs index a7f18c6745..ab2953b4fb 100644 --- a/framework/base/src/types/interaction/annotated.rs +++ b/framework/base/src/types/interaction/annotated.rs @@ -4,7 +4,8 @@ mod annotated_impl_managed_buffer; mod annotated_impl_u64; use crate::{ - proxy_imports::ManagedRef, + formatter::FormatBuffer, + proxy_imports::{ManagedBufferCachedBuilder, ManagedRef, ManagedTypeApi}, types::{heap::Address, BigUint, ManagedAddress, ManagedBuffer}, }; @@ -36,3 +37,13 @@ where f(&self.to_value(env)) } } + +/// Useful for u64 display in several places. +pub(super) fn display_u64(n: u64) -> ManagedBuffer +where + Api: ManagedTypeApi, +{ + let mut result = ManagedBufferCachedBuilder::new_from_slice(&[]); + result.append_display(&n); + result.into_managed_buffer() +} diff --git a/framework/base/src/types/interaction/annotated/annotated_impl_u64.rs b/framework/base/src/types/interaction/annotated/annotated_impl_u64.rs index 0905710c25..9c1435c581 100644 --- a/framework/base/src/types/interaction/annotated/annotated_impl_u64.rs +++ b/framework/base/src/types/interaction/annotated/annotated_impl_u64.rs @@ -7,16 +7,7 @@ use crate::{ }, }; -use super::{AnnotatedValue, TxEnv}; - -pub(crate) fn display_u64(n: u64) -> ManagedBuffer -where - Api: ManagedTypeApi, -{ - let mut result = ManagedBufferCachedBuilder::new_from_slice(&[]); - result.append_display(&n); - result.into_managed_buffer() -} +use super::{display_u64, AnnotatedValue, TxEnv}; impl AnnotatedValue for u64 where diff --git a/framework/base/src/types/interaction/markers.rs b/framework/base/src/types/interaction/markers.rs new file mode 100644 index 0000000000..10ccdea5d0 --- /dev/null +++ b/framework/base/src/types/interaction/markers.rs @@ -0,0 +1,7 @@ +mod gas_left; +mod to_caller; +mod to_self; + +pub use gas_left::GasLeft; +pub use to_caller::ToCaller; +pub use to_self::ToSelf; diff --git a/framework/base/src/types/interaction/markers/gas_left.rs b/framework/base/src/types/interaction/markers/gas_left.rs new file mode 100644 index 0000000000..69f43753f6 --- /dev/null +++ b/framework/base/src/types/interaction/markers/gas_left.rs @@ -0,0 +1,29 @@ +use crate::{ + api::{BlockchainApi, BlockchainApiImpl, ManagedTypeApi}, + formatter::FormatBuffer, + types::{ + interaction::display_u64, AnnotatedValue, BigUint, ManagedAddress, ManagedBuffer, + ManagedBufferCachedBuilder, TxCodeValue, TxEgldValue, TxEnv, TxFrom, TxFromSpecified, + TxGasValue, TxTo, TxToSpecified, + }, +}; + +/// Indicates that all remaining gas should be sent to a transaction. +/// +/// Usually unwise, other than for synchronous calls, you always want to have some gas left in the contract after the call. +pub struct GasLeft; + +impl AnnotatedValue for GasLeft +where + Env: TxEnv, +{ + fn annotation(&self, env: &Env) -> ManagedBuffer { + display_u64(self.to_value(env)) + } + + fn to_value(&self, env: &Env) -> u64 { + Env::Api::blockchain_api_impl().get_gas_left() + } +} + +impl TxGasValue for GasLeft where Env: TxEnv {} diff --git a/framework/base/src/types/interaction/tx_to/tx_to_caller.rs b/framework/base/src/types/interaction/markers/to_caller.rs similarity index 91% rename from framework/base/src/types/interaction/tx_to/tx_to_caller.rs rename to framework/base/src/types/interaction/markers/to_caller.rs index 7217f47c8b..7d311438b9 100644 --- a/framework/base/src/types/interaction/tx_to/tx_to_caller.rs +++ b/framework/base/src/types/interaction/markers/to_caller.rs @@ -1,11 +1,11 @@ use crate::{ api::{const_handles, use_raw_handle, BlockchainApi, BlockchainApiImpl, CallTypeApi}, contract_base::BlockchainWrapper, - types::{AnnotatedValue, ManagedAddress, ManagedBuffer, ManagedType, TxScEnv}, + types::{ + AnnotatedValue, ManagedAddress, ManagedBuffer, ManagedType, TxScEnv, TxTo, TxToSpecified, + }, }; -use super::{TxTo, TxToSpecified}; - /// Indicates that transaction should be sent to the caller (the sender of the current transaction). pub struct ToCaller; diff --git a/framework/base/src/types/interaction/tx_to/tx_to_self.rs b/framework/base/src/types/interaction/markers/to_self.rs similarity index 90% rename from framework/base/src/types/interaction/tx_to/tx_to_self.rs rename to framework/base/src/types/interaction/markers/to_self.rs index 72350c312e..7b8115b38e 100644 --- a/framework/base/src/types/interaction/tx_to/tx_to_self.rs +++ b/framework/base/src/types/interaction/markers/to_self.rs @@ -1,11 +1,11 @@ use crate::{ api::{const_handles, use_raw_handle, BlockchainApi, BlockchainApiImpl, CallTypeApi}, contract_base::BlockchainWrapper, - types::{AnnotatedValue, ManagedAddress, ManagedBuffer, ManagedType, TxScEnv}, + types::{ + AnnotatedValue, ManagedAddress, ManagedBuffer, ManagedType, TxScEnv, TxTo, TxToSpecified, + }, }; -use super::{TxTo, TxToSpecified}; - /// Indicates that transaction should be sent to itself. pub struct ToSelf; diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index 125f16150b..ffe4cec68f 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -19,6 +19,7 @@ mod deploy_call; mod expr; mod function_call; mod managed_arg_buffer; +mod markers; mod tx; mod tx_call_async; mod tx_call_async_promises; @@ -60,6 +61,7 @@ pub use deploy_call::*; pub use expr::*; pub use function_call::FunctionCall; pub use managed_arg_buffer::ManagedArgBuffer; +pub use markers::*; pub use tx::*; pub use tx_call_async::*; pub use tx_call_async_promises::*; diff --git a/framework/base/src/types/interaction/tx_to.rs b/framework/base/src/types/interaction/tx_to.rs index 03f3105858..6ba0f6eec8 100644 --- a/framework/base/src/types/interaction/tx_to.rs +++ b/framework/base/src/types/interaction/tx_to.rs @@ -1,9 +1,3 @@ -mod tx_to_caller; -mod tx_to_self; - -pub use tx_to_caller::ToCaller; -pub use tx_to_self::ToSelf; - use crate::types::{heap::Address, ManagedAddress}; use super::{AnnotatedValue, TxEnv}; diff --git a/framework/scenario/src/facade/world_tx/expr.rs b/framework/scenario/src/facade/world_tx/expr.rs index 2d28c5bdbd..37750ee973 100644 --- a/framework/scenario/src/facade/world_tx/expr.rs +++ b/framework/scenario/src/facade/world_tx/expr.rs @@ -1,5 +1,7 @@ mod file_expr; mod mxsc_expr; +mod num_expr; pub use file_expr::FileExpr; pub use mxsc_expr::MxscExpr; +pub use num_expr::NumExpr; diff --git a/framework/scenario/src/facade/world_tx/expr/num_expr.rs b/framework/scenario/src/facade/world_tx/expr/num_expr.rs new file mode 100644 index 0000000000..de9137b8fc --- /dev/null +++ b/framework/scenario/src/facade/world_tx/expr/num_expr.rs @@ -0,0 +1,53 @@ +use crate::{api::StaticApi, ScenarioEnvExec, ScenarioTxEnv, ScenarioTxEnvData}; +use core::ptr; +use multiversx_chain_scenario_format::{ + interpret_trait::InterpreterContext, value_interpreter::interpret_string, +}; +use multiversx_sc::{ + api::ManagedTypeApi, + types::{ + AnnotatedValue, BigUint, ManagedAddress, ManagedBuffer, TxCodeValue, TxEgldValue, TxEnv, + TxFrom, TxFromSpecified, TxGasValue, TxTo, TxToSpecified, + }, +}; +use std::path::PathBuf; + +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub struct NumExpr<'a>(pub &'a str); + +fn interpret_big_uint(s: &str) -> BigUint +where + Api: ManagedTypeApi, +{ + let bytes = interpret_string(s, &InterpreterContext::new()); + BigUint::from_bytes_be(&bytes) +} + +impl<'a, Env> AnnotatedValue> for NumExpr<'a> +where + Env: ScenarioTxEnv, +{ + fn annotation(&self, _env: &Env) -> ManagedBuffer { + self.0.into() + } + + fn to_value(&self, env: &Env) -> BigUint { + interpret_big_uint(self.0) + } +} + +impl<'a, Env> AnnotatedValue for NumExpr<'a> +where + Env: ScenarioTxEnv, +{ + fn annotation(&self, _env: &Env) -> ManagedBuffer { + self.0.into() + } + + fn to_value(&self, env: &Env) -> u64 { + interpret_big_uint::(self.0).to_u64().unwrap() + } +} + +impl<'a, Env> TxEgldValue for NumExpr<'a> where Env: ScenarioTxEnv {} +impl<'a, Env> TxGasValue for NumExpr<'a> where Env: ScenarioTxEnv {} From d3437bf78fa2a87e1468615d8cfb559421037b27 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 27 Mar 2024 12:33:21 +0200 Subject: [PATCH 201/461] cleanup --- framework/base/src/contract_base/wrappers/send_wrapper.rs | 5 ++--- framework/base/src/types/interaction/annotated.rs | 7 +++++-- .../types/interaction/annotated/annotated_impl_big_uint.rs | 5 +---- .../annotated/annotated_impl_managed_address.rs | 5 +---- .../interaction/annotated/annotated_impl_managed_buffer.rs | 5 +---- .../src/types/interaction/annotated/annotated_impl_u64.rs | 2 +- framework/base/src/types/interaction/tx.rs | 6 +++--- framework/base/src/types/interaction/tx_call_upgrade.rs | 2 +- framework/base/src/types/interaction/tx_env.rs | 5 ++++- framework/base/src/types/interaction/tx_env_sc.rs | 5 +++-- .../src/types/interaction/tx_payment/tx_payment_egld.rs | 5 +++-- .../types/interaction/tx_payment/tx_payment_egld_value.rs | 5 +---- .../src/types/interaction/tx_rh_list/tx_rh_list_exec.rs | 3 +-- 13 files changed, 27 insertions(+), 33 deletions(-) diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index dc63932e22..f761f1cb04 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -12,11 +12,10 @@ use crate::{ }, codec, esdt::ESDTSystemSmartContractProxy, - proxy_imports::{GasLeft, ReturnsRawResult, ToSelf}, types::{ BigUint, ContractCall, ContractCallNoPayment, EgldOrEsdtTokenIdentifier, EsdtTokenPayment, - ManagedAddress, ManagedArgBuffer, ManagedBuffer, ManagedType, ManagedVec, TokenIdentifier, - Tx, + GasLeft, ManagedAddress, ManagedArgBuffer, ManagedBuffer, ManagedType, ManagedVec, + ReturnsRawResult, ToSelf, TokenIdentifier, Tx, }, }; diff --git a/framework/base/src/types/interaction/annotated.rs b/framework/base/src/types/interaction/annotated.rs index ab2953b4fb..dc9e117e7e 100644 --- a/framework/base/src/types/interaction/annotated.rs +++ b/framework/base/src/types/interaction/annotated.rs @@ -4,9 +4,12 @@ mod annotated_impl_managed_buffer; mod annotated_impl_u64; use crate::{ + api::ManagedTypeApi, formatter::FormatBuffer, - proxy_imports::{ManagedBufferCachedBuilder, ManagedRef, ManagedTypeApi}, - types::{heap::Address, BigUint, ManagedAddress, ManagedBuffer}, + types::{ + heap::Address, BigUint, ManagedAddress, ManagedBuffer, ManagedBufferCachedBuilder, + ManagedRef, + }, }; use super::TxEnv; diff --git a/framework/base/src/types/interaction/annotated/annotated_impl_big_uint.rs b/framework/base/src/types/interaction/annotated/annotated_impl_big_uint.rs index 823a796348..36c11f1c70 100644 --- a/framework/base/src/types/interaction/annotated/annotated_impl_big_uint.rs +++ b/framework/base/src/types/interaction/annotated/annotated_impl_big_uint.rs @@ -1,7 +1,4 @@ -use crate::{ - proxy_imports::ManagedRef, - types::{heap::Address, BigUint, ManagedAddress, ManagedBuffer}, -}; +use crate::types::{heap::Address, BigUint, ManagedAddress, ManagedBuffer, ManagedRef}; use super::{AnnotatedValue, TxEnv}; diff --git a/framework/base/src/types/interaction/annotated/annotated_impl_managed_address.rs b/framework/base/src/types/interaction/annotated/annotated_impl_managed_address.rs index 87aebbb82e..3d08368c53 100644 --- a/framework/base/src/types/interaction/annotated/annotated_impl_managed_address.rs +++ b/framework/base/src/types/interaction/annotated/annotated_impl_managed_address.rs @@ -1,7 +1,4 @@ -use crate::{ - proxy_imports::ManagedRef, - types::{heap::Address, BigUint, ManagedAddress, ManagedBuffer}, -}; +use crate::types::{heap::Address, BigUint, ManagedAddress, ManagedBuffer, ManagedRef}; use super::{AnnotatedValue, TxEnv}; diff --git a/framework/base/src/types/interaction/annotated/annotated_impl_managed_buffer.rs b/framework/base/src/types/interaction/annotated/annotated_impl_managed_buffer.rs index bf15a3a262..433cf431af 100644 --- a/framework/base/src/types/interaction/annotated/annotated_impl_managed_buffer.rs +++ b/framework/base/src/types/interaction/annotated/annotated_impl_managed_buffer.rs @@ -1,7 +1,4 @@ -use crate::{ - proxy_imports::ManagedRef, - types::{heap::Address, BigUint, ManagedAddress, ManagedBuffer}, -}; +use crate::types::{heap::Address, BigUint, ManagedAddress, ManagedBuffer, ManagedRef}; use super::{AnnotatedValue, TxEnv}; diff --git a/framework/base/src/types/interaction/annotated/annotated_impl_u64.rs b/framework/base/src/types/interaction/annotated/annotated_impl_u64.rs index 9c1435c581..04ad3fd7c0 100644 --- a/framework/base/src/types/interaction/annotated/annotated_impl_u64.rs +++ b/framework/base/src/types/interaction/annotated/annotated_impl_u64.rs @@ -1,6 +1,6 @@ use crate::{ + api::ManagedTypeApi, formatter::{FormatBuffer, SCDisplay}, - proxy_imports::ManagedTypeApi, types::{ heap::Address, BigUint, ManagedAddress, ManagedBuffer, ManagedBufferCachedBuilder, ManagedRef, diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 2213380614..5c964746c2 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -1,10 +1,10 @@ use crate::{ api::CallTypeApi, contract_base::BlockchainWrapper, - proxy_imports::{EsdtTokenPaymentRefs, TokenIdentifier}, types::{ - BigUint, CodeMetadata, EgldOrEsdtTokenPayment, EsdtTokenPayment, ManagedAddress, - ManagedBuffer, ManagedOption, ManagedVec, MultiEsdtPayment, + BigUint, CodeMetadata, EgldOrEsdtTokenPayment, EsdtTokenPayment, EsdtTokenPaymentRefs, + ManagedAddress, ManagedBuffer, ManagedOption, ManagedVec, MultiEsdtPayment, + TokenIdentifier, }, }; diff --git a/framework/base/src/types/interaction/tx_call_upgrade.rs b/framework/base/src/types/interaction/tx_call_upgrade.rs index 24438da3c3..db56b8a230 100644 --- a/framework/base/src/types/interaction/tx_call_upgrade.rs +++ b/framework/base/src/types/interaction/tx_call_upgrade.rs @@ -1,8 +1,8 @@ use crate::{ api::CallTypeApi, contract_base::SendRawWrapper, - proxy_imports::{CodeMetadata, ManagedAddress, ManagedBuffer, ManagedVec}, tuple_util::NestedTupleFlatten, + types::{CodeMetadata, ManagedAddress, ManagedBuffer, ManagedVec}, }; use super::{ diff --git a/framework/base/src/types/interaction/tx_env.rs b/framework/base/src/types/interaction/tx_env.rs index 3ba108f788..16fd0da683 100644 --- a/framework/base/src/types/interaction/tx_env.rs +++ b/framework/base/src/types/interaction/tx_env.rs @@ -1,4 +1,7 @@ -use crate::{api::CallTypeApi, proxy_imports::ManagedBuffer, types::ManagedAddress}; +use crate::{ + api::CallTypeApi, + types::{ManagedAddress, ManagedBuffer}, +}; pub trait TxEnv: Sized { type Api: CallTypeApi; diff --git a/framework/base/src/types/interaction/tx_env_sc.rs b/framework/base/src/types/interaction/tx_env_sc.rs index f4387275d2..8186b6b4b4 100644 --- a/framework/base/src/types/interaction/tx_env_sc.rs +++ b/framework/base/src/types/interaction/tx_env_sc.rs @@ -7,7 +7,8 @@ use crate::{ }; use super::{ - contract_call_exec::TRANSFER_EXECUTE_DEFAULT_LEFTOVER, AnnotatedValue, Tx, TxBaseWithEnv, TxEnv, + contract_call_exec::TRANSFER_EXECUTE_DEFAULT_LEFTOVER, display_u64, AnnotatedValue, Tx, + TxBaseWithEnv, TxEnv, }; pub struct TxScEnv @@ -50,7 +51,7 @@ where } fn default_gas_annotation(&self) -> ManagedBuffer { - >::annotation(&self.default_gas_value(), self) + display_u64(self.default_gas_value()) } fn default_gas_value(&self) -> u64 { diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_egld.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_egld.rs index 2c730591cd..ad0969aca1 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_egld.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_egld.rs @@ -1,7 +1,8 @@ use crate::{ contract_base::SendRawWrapper, - proxy_imports::{AnnotatedValue, ManagedBuffer}, - types::{BigUint, ManagedAddress, ManagedVec, TxFrom, TxToSpecified}, + types::{ + AnnotatedValue, BigUint, ManagedAddress, ManagedBuffer, ManagedVec, TxFrom, TxToSpecified, + }, }; use super::{ diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_value.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_value.rs index b047e584b2..99d91b618f 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_value.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_value.rs @@ -1,7 +1,4 @@ -use crate::{ - proxy_imports::ManagedRef, - types::{AnnotatedValue, BigUint}, -}; +use crate::types::{AnnotatedValue, BigUint, ManagedRef}; use super::TxEnv; diff --git a/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_exec.rs b/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_exec.rs index 06b2184366..3773d58629 100644 --- a/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_exec.rs +++ b/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_exec.rs @@ -1,7 +1,6 @@ use crate::{ api::CallTypeApi, - proxy_imports::{ManagedBuffer, OriginalResultMarker}, - types::TxEnv, + types::{ManagedBuffer, OriginalResultMarker, TxEnv}, }; use super::{ConsNoRet, ConsRet, RHList, RHListItem}; From 2fb3dde749d6390b52033314631860197678d7e0 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 27 Mar 2024 06:06:28 +0200 Subject: [PATCH 202/461] sc 0.48.0-alpha.1 --- CHANGELOG.md | 3 +++ Cargo.lock | 18 +++++++++--------- 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 ++-- .../mappers/linked-list-repeat/meta/Cargo.toml | 2 +- .../mappers/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 +- .../benchmarks/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 +- contracts/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 +- .../examples/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 +++--- contracts/examples/check-pause/meta/Cargo.toml | 2 +- contracts/examples/check-pause/wasm/Cargo.toml | 2 +- .../examples/crowdfunding-esdt/Cargo.toml | 4 ++-- .../examples/crowdfunding-esdt/meta/Cargo.toml | 2 +- .../examples/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 +- .../examples/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 +- contracts/examples/nft-subscription/Cargo.toml | 6 +++--- .../examples/nft-subscription/meta/Cargo.toml | 2 +- .../examples/nft-subscription/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 ++-- contracts/examples/proxy-pause/meta/Cargo.toml | 2 +- contracts/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 +- .../wasm-alloc-mem-fail/Cargo.toml | 2 +- .../wasm-alloc-mem-leaking/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 | 4 ++-- .../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 +- .../composability/promises-features/Cargo.toml | 2 +- .../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 +- .../composability/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 +- .../vault/wasm-vault-upgrade/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 ++-- .../erc-style-contracts/erc721/meta/Cargo.toml | 2 +- .../erc-style-contracts/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 ++-- .../formatted-message-features/meta/Cargo.toml | 2 +- .../formatted-message-features/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 +- .../use-module/wasm-use-module-view/Cargo.toml | 2 +- .../feature-tests/use-module/wasm/Cargo.toml | 2 +- contracts/modules/Cargo.toml | 4 ++-- framework/base/Cargo.toml | 4 ++-- framework/derive/Cargo.toml | 2 +- framework/meta/Cargo.toml | 4 ++-- framework/scenario/Cargo.toml | 6 +++--- 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 | 4 ++-- 259 files changed, 380 insertions(+), 377 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index db5a580558..334f2d476e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,9 @@ They are: - `multiversx-chain-scenario-format`, in short `scenario-format`, scenario JSON serializer/deserializer, 1 crate. - `multiversx-sdk`, in short `sdk`, allows communication with the chain(s), 1 crate. +## [sc 0.48.0-alpha.1] - 2024-03-27 +First pre-release of the unified syntax. Syntax not yet stabilized, should only be used for experimenting with various smart contracts. + ## [sc 0.47.8] - 2024-03-22 - Test coverage functionality in sc-meta. - Removed deprecation from legacy whitebox testing framework, since it is still used extensively. diff --git a/Cargo.lock b/Cargo.lock index 0362d5974b..9fd01b92b0 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -1782,7 +1782,7 @@ checksum = "b59072fa0624b55ae5ae3fa6bfa91515bbeb4ac440214bc4a509e2c8806d6e9f" [[package]] name = "multiversx-price-aggregator-sc" -version = "0.47.8" +version = "0.48.0-alpha.1" dependencies = [ "arrayvec", "getrandom 0.2.12", @@ -1803,7 +1803,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0-alpha.1" dependencies = [ "bitflags 2.4.2", "hex-literal", @@ -1833,7 +1833,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0-alpha.1" dependencies = [ "hex", "proc-macro2", @@ -1844,7 +1844,7 @@ dependencies = [ [[package]] name = "multiversx-sc-meta" -version = "0.47.8" +version = "0.48.0-alpha.1" dependencies = [ "clap", "colored", @@ -1870,14 +1870,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.8" +version = "0.48.0-alpha.1" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-scenario" -version = "0.47.8" +version = "0.48.0-alpha.1" dependencies = [ "base64", "bech32", @@ -1903,7 +1903,7 @@ dependencies = [ [[package]] name = "multiversx-sc-snippets" -version = "0.47.8" +version = "0.48.0-alpha.1" dependencies = [ "base64", "env_logger", @@ -1917,7 +1917,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0-alpha.1" dependencies = [ "multiversx-sc", ] @@ -1948,7 +1948,7 @@ dependencies = [ [[package]] name = "multiversx-wegld-swap-sc" -version = "0.47.8" +version = "0.48.0-alpha.1" dependencies = [ "multiversx-sc", "multiversx-sc-modules", diff --git a/contracts/benchmarks/large-storage/Cargo.toml b/contracts/benchmarks/large-storage/Cargo.toml index d8d51ae966..76d7afedeb 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/large-storage/meta/Cargo.toml b/contracts/benchmarks/large-storage/meta/Cargo.toml index fc26387f50..2254c4420c 100644 --- a/contracts/benchmarks/large-storage/meta/Cargo.toml +++ b/contracts/benchmarks/large-storage/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/large-storage/wasm/Cargo.toml b/contracts/benchmarks/large-storage/wasm/Cargo.toml index 43578fbca6..230e56af0d 100644 --- a/contracts/benchmarks/large-storage/wasm/Cargo.toml +++ b/contracts/benchmarks/large-storage/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/benchmark-common/Cargo.toml b/contracts/benchmarks/mappers/benchmark-common/Cargo.toml index 8677e1dc01..c1bbf5e83e 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/linked-list-repeat/Cargo.toml b/contracts/benchmarks/mappers/linked-list-repeat/Cargo.toml index af3d114fd2..061048a6df 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 3c360bd518..b624e75086 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/linked-list-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml index bb1eb11323..ace678f712 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/map-repeat/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/Cargo.toml index 18ff68251c..db9daa1423 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml index 2ef4df4850..546eae9b5f 100644 --- a/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml index c49b4cfb90..712981fb56 100644 --- a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/queue-repeat/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/Cargo.toml index 82615c61e9..c82d290d6e 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml index 6c017510da..c316ce1ffd 100644 --- a/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml index ca9077b541..0d80a14323 100644 --- a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/set-repeat/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/Cargo.toml index cfabe4e46d..3b3cd16b75 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml index c722ed9b9e..3b521eb613 100644 --- a/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml index 8737881c35..5b58aaf06a 100644 --- a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 456e49050c..55ec5ca196 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 efb702f58c..a697fed55e 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/single-value-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml index 1373a98a29..8b2277fd26 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/vec-repeat/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/Cargo.toml index 66a7f34c1e..62133b16bf 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml index 12c7a4952d..4e282f6b3f 100644 --- a/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml index 71308601eb..fa3c8776b7 100644 --- a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/send-tx-repeat/Cargo.toml b/contracts/benchmarks/send-tx-repeat/Cargo.toml index 7284596303..c54ceceffd 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml b/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml index 0bc84fbdc2..347a13daa3 100644 --- a/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml index c0c13946cc..fdb1d747bd 100644 --- a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/str-repeat/Cargo.toml b/contracts/benchmarks/str-repeat/Cargo.toml index 116327da15..fe6f028e79 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/str-repeat/meta/Cargo.toml b/contracts/benchmarks/str-repeat/meta/Cargo.toml index 6792de337f..352057cbf6 100644 --- a/contracts/benchmarks/str-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/str-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/str-repeat/wasm/Cargo.toml b/contracts/benchmarks/str-repeat/wasm/Cargo.toml index a36fe3ee2c..d6925a89b2 100644 --- a/contracts/benchmarks/str-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/str-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/core/price-aggregator/Cargo.toml b/contracts/core/price-aggregator/Cargo.toml index ed988e0663..3c3798ff7b 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.47.8" +version = "0.48.0-alpha.1" authors = [ "Claudiu-Marcel Bruda ", "MultiversX ", @@ -19,15 +19,15 @@ edition = "2021" path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" [dependencies] diff --git a/contracts/core/price-aggregator/meta/Cargo.toml b/contracts/core/price-aggregator/meta/Cargo.toml index 2cd9bbab1a..5afc4b38ca 100644 --- a/contracts/core/price-aggregator/meta/Cargo.toml +++ b/contracts/core/price-aggregator/meta/Cargo.toml @@ -8,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/core/price-aggregator/wasm/Cargo.toml b/contracts/core/price-aggregator/wasm/Cargo.toml index b553602e97..efd3544255 100644 --- a/contracts/core/price-aggregator/wasm/Cargo.toml +++ b/contracts/core/price-aggregator/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/core/wegld-swap/Cargo.toml b/contracts/core/wegld-swap/Cargo.toml index 64157bb652..349888dde6 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.47.8" +version = "0.48.0-alpha.1" authors = [ "Dorin Iancu ", @@ -20,13 +20,13 @@ edition = "2021" path = "src/wegld.rs" [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" diff --git a/contracts/core/wegld-swap/meta/Cargo.toml b/contracts/core/wegld-swap/meta/Cargo.toml index 213dfa0c5e..2f450b3e11 100644 --- a/contracts/core/wegld-swap/meta/Cargo.toml +++ b/contracts/core/wegld-swap/meta/Cargo.toml @@ -11,10 +11,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/core/wegld-swap/wasm/Cargo.toml b/contracts/core/wegld-swap/wasm/Cargo.toml index 3dee2153c4..c80d11696e 100644 --- a/contracts/core/wegld-swap/wasm/Cargo.toml +++ b/contracts/core/wegld-swap/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/adder/Cargo.toml b/contracts/examples/adder/Cargo.toml index f5a121ae40..08d2726ed0 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" diff --git a/contracts/examples/adder/interact/Cargo.toml b/contracts/examples/adder/interact/Cargo.toml index 142f39c28c..631be0f14f 100644 --- a/contracts/examples/adder/interact/Cargo.toml +++ b/contracts/examples/adder/interact/Cargo.toml @@ -18,5 +18,5 @@ toml = "0.8.6" path = ".." [dependencies.multiversx-sc-snippets] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/snippets" diff --git a/contracts/examples/adder/meta/Cargo.toml b/contracts/examples/adder/meta/Cargo.toml index dfe91b3e7d..d8680ef04e 100644 --- a/contracts/examples/adder/meta/Cargo.toml +++ b/contracts/examples/adder/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/adder/wasm/Cargo.toml b/contracts/examples/adder/wasm/Cargo.toml index 21d0226bb2..52a8bdaa52 100644 --- a/contracts/examples/adder/wasm/Cargo.toml +++ b/contracts/examples/adder/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/bonding-curve-contract/Cargo.toml b/contracts/examples/bonding-curve-contract/Cargo.toml index 214b810a7f..ea7d233a07 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" diff --git a/contracts/examples/bonding-curve-contract/meta/Cargo.toml b/contracts/examples/bonding-curve-contract/meta/Cargo.toml index 531d3b0113..1e68dd7026 100644 --- a/contracts/examples/bonding-curve-contract/meta/Cargo.toml +++ b/contracts/examples/bonding-curve-contract/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/bonding-curve-contract/wasm/Cargo.toml b/contracts/examples/bonding-curve-contract/wasm/Cargo.toml index f575a2ff9f..a66c323a82 100644 --- a/contracts/examples/bonding-curve-contract/wasm/Cargo.toml +++ b/contracts/examples/bonding-curve-contract/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/check-pause/Cargo.toml b/contracts/examples/check-pause/Cargo.toml index 008b308b83..200624dc5f 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" [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" diff --git a/contracts/examples/check-pause/meta/Cargo.toml b/contracts/examples/check-pause/meta/Cargo.toml index c4b5f792f1..cc827958db 100644 --- a/contracts/examples/check-pause/meta/Cargo.toml +++ b/contracts/examples/check-pause/meta/Cargo.toml @@ -9,6 +9,6 @@ authors = ["Alin Cruceat "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/check-pause/wasm/Cargo.toml b/contracts/examples/check-pause/wasm/Cargo.toml index 1c40a1c120..080134a090 100644 --- a/contracts/examples/check-pause/wasm/Cargo.toml +++ b/contracts/examples/check-pause/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crowdfunding-esdt/Cargo.toml b/contracts/examples/crowdfunding-esdt/Cargo.toml index e5a85e92fb..7572f709b4 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" [dev-dependencies] diff --git a/contracts/examples/crowdfunding-esdt/meta/Cargo.toml b/contracts/examples/crowdfunding-esdt/meta/Cargo.toml index 100c48ff0b..38a87c8b3f 100644 --- a/contracts/examples/crowdfunding-esdt/meta/Cargo.toml +++ b/contracts/examples/crowdfunding-esdt/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml b/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml index 2202fb5bf2..e1dacf90ee 100644 --- a/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml +++ b/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-bubbles/Cargo.toml b/contracts/examples/crypto-bubbles/Cargo.toml index 2e3590429a..21598a91cd 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" diff --git a/contracts/examples/crypto-bubbles/meta/Cargo.toml b/contracts/examples/crypto-bubbles/meta/Cargo.toml index a1f11927a9..e9320b4dc1 100644 --- a/contracts/examples/crypto-bubbles/meta/Cargo.toml +++ b/contracts/examples/crypto-bubbles/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-bubbles/wasm/Cargo.toml b/contracts/examples/crypto-bubbles/wasm/Cargo.toml index 7075fe64da..e360e8b7e5 100644 --- a/contracts/examples/crypto-bubbles/wasm/Cargo.toml +++ b/contracts/examples/crypto-bubbles/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 23eaa019f3..b2d8319c3d 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.47.8" +version = "0.48.0-alpha.1" 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 cca99947d8..24109bcb9c 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/base" diff --git a/contracts/examples/crypto-kitties/kitty-auction/Cargo.toml b/contracts/examples/crypto-kitties/kitty-auction/Cargo.toml index 9ee13ed08d..55b09c7d21 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 aaf92d9d1d..8e8c9610d6 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-auction/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml index fd1bc05228..b537f4d0f0 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-kitties/kitty-genetic-alg/Cargo.toml b/contracts/examples/crypto-kitties/kitty-genetic-alg/Cargo.toml index 75ffc5989c..f28f89a1a5 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 17514bb97f..15da5dfffd 100644 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false 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 ad70a987be..991b4e18be 100644 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-kitties/kitty-ownership/Cargo.toml b/contracts/examples/crypto-kitties/kitty-ownership/Cargo.toml index 9d7e08a9cf..2fa49433d0 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 582fa4313f..706cd065e9 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-ownership/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml index 6c7f572232..e325fb57e0 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-zombies/Cargo.toml b/contracts/examples/crypto-zombies/Cargo.toml index 63d67d258b..7cb4431e16 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" diff --git a/contracts/examples/crypto-zombies/meta/Cargo.toml b/contracts/examples/crypto-zombies/meta/Cargo.toml index 8a3ac45fa8..c8db30c9e1 100644 --- a/contracts/examples/crypto-zombies/meta/Cargo.toml +++ b/contracts/examples/crypto-zombies/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-zombies/wasm/Cargo.toml b/contracts/examples/crypto-zombies/wasm/Cargo.toml index fd7179dea8..8454eeeb29 100644 --- a/contracts/examples/crypto-zombies/wasm/Cargo.toml +++ b/contracts/examples/crypto-zombies/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/digital-cash/Cargo.toml b/contracts/examples/digital-cash/Cargo.toml index d9bdd6b52c..73ca72b72b 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" diff --git a/contracts/examples/digital-cash/meta/Cargo.toml b/contracts/examples/digital-cash/meta/Cargo.toml index 5692d13296..5231e4aeeb 100644 --- a/contracts/examples/digital-cash/meta/Cargo.toml +++ b/contracts/examples/digital-cash/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/digital-cash/wasm/Cargo.toml b/contracts/examples/digital-cash/wasm/Cargo.toml index 1a990dca60..2c775046d8 100644 --- a/contracts/examples/digital-cash/wasm/Cargo.toml +++ b/contracts/examples/digital-cash/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/empty/Cargo.toml b/contracts/examples/empty/Cargo.toml index 5ed6cf966f..4fc343c152 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" [dev-dependencies] diff --git a/contracts/examples/empty/meta/Cargo.toml b/contracts/examples/empty/meta/Cargo.toml index c27adb6ad1..eb68c21f83 100644 --- a/contracts/examples/empty/meta/Cargo.toml +++ b/contracts/examples/empty/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/empty/wasm/Cargo.toml b/contracts/examples/empty/wasm/Cargo.toml index 1c3cae4528..2f8bd45e1f 100644 --- a/contracts/examples/empty/wasm/Cargo.toml +++ b/contracts/examples/empty/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 e56c0ace06..33b47ff4fa 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 b774dd1607..76e2d7ae12 100644 --- a/contracts/examples/esdt-transfer-with-fee/meta/Cargo.toml +++ b/contracts/examples/esdt-transfer-with-fee/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml index 1c81968938..75c659fbe4 100644 --- a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml +++ b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/factorial/Cargo.toml b/contracts/examples/factorial/Cargo.toml index bec69a21be..17d5602157 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" diff --git a/contracts/examples/factorial/meta/Cargo.toml b/contracts/examples/factorial/meta/Cargo.toml index 746a2c9143..676ae8b802 100644 --- a/contracts/examples/factorial/meta/Cargo.toml +++ b/contracts/examples/factorial/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/factorial/wasm/Cargo.toml b/contracts/examples/factorial/wasm/Cargo.toml index 550140a626..b3bcafb132 100644 --- a/contracts/examples/factorial/wasm/Cargo.toml +++ b/contracts/examples/factorial/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/fractional-nfts/Cargo.toml b/contracts/examples/fractional-nfts/Cargo.toml index 0709e73516..5224be8678 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" diff --git a/contracts/examples/fractional-nfts/meta/Cargo.toml b/contracts/examples/fractional-nfts/meta/Cargo.toml index 9026904365..751ddf0965 100644 --- a/contracts/examples/fractional-nfts/meta/Cargo.toml +++ b/contracts/examples/fractional-nfts/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/fractional-nfts/wasm/Cargo.toml b/contracts/examples/fractional-nfts/wasm/Cargo.toml index 26ca3dc694..27c1d05a44 100644 --- a/contracts/examples/fractional-nfts/wasm/Cargo.toml +++ b/contracts/examples/fractional-nfts/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/lottery-esdt/Cargo.toml b/contracts/examples/lottery-esdt/Cargo.toml index 51341883a4..8b6c7349c5 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" diff --git a/contracts/examples/lottery-esdt/meta/Cargo.toml b/contracts/examples/lottery-esdt/meta/Cargo.toml index f528e0359d..4b83c85037 100644 --- a/contracts/examples/lottery-esdt/meta/Cargo.toml +++ b/contracts/examples/lottery-esdt/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/lottery-esdt/wasm/Cargo.toml b/contracts/examples/lottery-esdt/wasm/Cargo.toml index c780b8253f..390ef7505b 100644 --- a/contracts/examples/lottery-esdt/wasm/Cargo.toml +++ b/contracts/examples/lottery-esdt/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/multisig/Cargo.toml b/contracts/examples/multisig/Cargo.toml index 5a4ac52971..e8ec49e74f 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" [dev-dependencies.adder] @@ -27,7 +27,7 @@ path = "../adder" path = "../factorial" [dev-dependencies.multiversx-wegld-swap-sc] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../core/wegld-swap" [dev-dependencies] diff --git a/contracts/examples/multisig/interact/Cargo.toml b/contracts/examples/multisig/interact/Cargo.toml index 06f7debcdc..dfeb1d6879 100644 --- a/contracts/examples/multisig/interact/Cargo.toml +++ b/contracts/examples/multisig/interact/Cargo.toml @@ -18,13 +18,13 @@ toml = "0.8.6" path = ".." [dependencies.multiversx-sc-modules] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../contracts/modules" [dependencies.multiversx-sc-snippets] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/snippets" [dependencies.multiversx-sc-scenario] -version = "=0.47.8" +version = "=0.48.0-alpha.1" path = "../../../../framework/scenario" diff --git a/contracts/examples/multisig/meta/Cargo.toml b/contracts/examples/multisig/meta/Cargo.toml index 67b228a5dd..3ea34912ef 100644 --- a/contracts/examples/multisig/meta/Cargo.toml +++ b/contracts/examples/multisig/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/multisig/wasm-multisig-full/Cargo.toml b/contracts/examples/multisig/wasm-multisig-full/Cargo.toml index 004b0e97f5..9077af3ff4 100644 --- a/contracts/examples/multisig/wasm-multisig-full/Cargo.toml +++ b/contracts/examples/multisig/wasm-multisig-full/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 28b230710b..61bc9017ed 100644 --- a/contracts/examples/multisig/wasm-multisig-view/Cargo.toml +++ b/contracts/examples/multisig/wasm-multisig-view/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/multisig/wasm/Cargo.toml b/contracts/examples/multisig/wasm/Cargo.toml index 3a2268d369..2519fe66ab 100644 --- a/contracts/examples/multisig/wasm/Cargo.toml +++ b/contracts/examples/multisig/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-minter/Cargo.toml b/contracts/examples/nft-minter/Cargo.toml index 89ee1e27f1..4ffe7159c1 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-minter/meta/Cargo.toml b/contracts/examples/nft-minter/meta/Cargo.toml index 6e3b2dfc81..fe7c2f84c0 100644 --- a/contracts/examples/nft-minter/meta/Cargo.toml +++ b/contracts/examples/nft-minter/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-minter/wasm/Cargo.toml b/contracts/examples/nft-minter/wasm/Cargo.toml index d9001e8b30..23384b01e3 100644 --- a/contracts/examples/nft-minter/wasm/Cargo.toml +++ b/contracts/examples/nft-minter/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-storage-prepay/Cargo.toml b/contracts/examples/nft-storage-prepay/Cargo.toml index ee4e7cbf03..b27ec8aa94 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-storage-prepay/meta/Cargo.toml b/contracts/examples/nft-storage-prepay/meta/Cargo.toml index faa27e4d8b..d3aa98a2da 100644 --- a/contracts/examples/nft-storage-prepay/meta/Cargo.toml +++ b/contracts/examples/nft-storage-prepay/meta/Cargo.toml @@ -11,6 +11,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-storage-prepay/wasm/Cargo.toml b/contracts/examples/nft-storage-prepay/wasm/Cargo.toml index 1e5478ddae..7781448eca 100644 --- a/contracts/examples/nft-storage-prepay/wasm/Cargo.toml +++ b/contracts/examples/nft-storage-prepay/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-subscription/Cargo.toml b/contracts/examples/nft-subscription/Cargo.toml index deb7f32494..bac7decd50 100644 --- a/contracts/examples/nft-subscription/Cargo.toml +++ b/contracts/examples/nft-subscription/Cargo.toml @@ -9,13 +9,13 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-subscription/meta/Cargo.toml b/contracts/examples/nft-subscription/meta/Cargo.toml index 2d002e2afb..f735998859 100644 --- a/contracts/examples/nft-subscription/meta/Cargo.toml +++ b/contracts/examples/nft-subscription/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-subscription/wasm/Cargo.toml b/contracts/examples/nft-subscription/wasm/Cargo.toml index 9d6afb20b4..3d3963ddf6 100644 --- a/contracts/examples/nft-subscription/wasm/Cargo.toml +++ b/contracts/examples/nft-subscription/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/order-book/factory/Cargo.toml b/contracts/examples/order-book/factory/Cargo.toml index 89c01440da..3ac8bce8cc 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/scenario" diff --git a/contracts/examples/order-book/factory/meta/Cargo.toml b/contracts/examples/order-book/factory/meta/Cargo.toml index 9854915232..14474ac90b 100644 --- a/contracts/examples/order-book/factory/meta/Cargo.toml +++ b/contracts/examples/order-book/factory/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/order-book/factory/wasm/Cargo.toml b/contracts/examples/order-book/factory/wasm/Cargo.toml index 1d66994d44..5605781d5e 100644 --- a/contracts/examples/order-book/factory/wasm/Cargo.toml +++ b/contracts/examples/order-book/factory/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/order-book/pair/Cargo.toml b/contracts/examples/order-book/pair/Cargo.toml index 0063356649..52b6054c35 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/scenario" diff --git a/contracts/examples/order-book/pair/meta/Cargo.toml b/contracts/examples/order-book/pair/meta/Cargo.toml index b71a025162..903619b8dd 100644 --- a/contracts/examples/order-book/pair/meta/Cargo.toml +++ b/contracts/examples/order-book/pair/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/order-book/pair/wasm/Cargo.toml b/contracts/examples/order-book/pair/wasm/Cargo.toml index 08d0fb2c86..8a9be6d6d8 100644 --- a/contracts/examples/order-book/pair/wasm/Cargo.toml +++ b/contracts/examples/order-book/pair/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/ping-pong-egld/Cargo.toml b/contracts/examples/ping-pong-egld/Cargo.toml index ed353384c1..844dc3e629 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" diff --git a/contracts/examples/ping-pong-egld/meta/Cargo.toml b/contracts/examples/ping-pong-egld/meta/Cargo.toml index 627ba0bf33..a32f9f3835 100644 --- a/contracts/examples/ping-pong-egld/meta/Cargo.toml +++ b/contracts/examples/ping-pong-egld/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/ping-pong-egld/wasm/Cargo.toml b/contracts/examples/ping-pong-egld/wasm/Cargo.toml index ca2420cd15..54aedf5a07 100644 --- a/contracts/examples/ping-pong-egld/wasm/Cargo.toml +++ b/contracts/examples/ping-pong-egld/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/proxy-pause/Cargo.toml b/contracts/examples/proxy-pause/Cargo.toml index 8f185a46a3..69ade59d6c 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 13a900ebe5..f1375cfebf 100644 --- a/contracts/examples/proxy-pause/meta/Cargo.toml +++ b/contracts/examples/proxy-pause/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = [ "you",] path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/proxy-pause/wasm/Cargo.toml b/contracts/examples/proxy-pause/wasm/Cargo.toml index 214e9930eb..a05ff88ae4 100644 --- a/contracts/examples/proxy-pause/wasm/Cargo.toml +++ b/contracts/examples/proxy-pause/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/rewards-distribution/Cargo.toml b/contracts/examples/rewards-distribution/Cargo.toml index 6addeb95a8..a564a47312 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" diff --git a/contracts/examples/rewards-distribution/meta/Cargo.toml b/contracts/examples/rewards-distribution/meta/Cargo.toml index 92c25000a7..0a4427819b 100644 --- a/contracts/examples/rewards-distribution/meta/Cargo.toml +++ b/contracts/examples/rewards-distribution/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = ["Claudiu-Marcel Bruda "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/rewards-distribution/wasm/Cargo.toml b/contracts/examples/rewards-distribution/wasm/Cargo.toml index e095d7be11..78f5ed1c1f 100644 --- a/contracts/examples/rewards-distribution/wasm/Cargo.toml +++ b/contracts/examples/rewards-distribution/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/seed-nft-minter/Cargo.toml b/contracts/examples/seed-nft-minter/Cargo.toml index f544ddebf2..314d73d3aa 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" diff --git a/contracts/examples/seed-nft-minter/meta/Cargo.toml b/contracts/examples/seed-nft-minter/meta/Cargo.toml index c9f4fb9159..ebc7b407da 100644 --- a/contracts/examples/seed-nft-minter/meta/Cargo.toml +++ b/contracts/examples/seed-nft-minter/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = ["Claudiu-Marcel Bruda "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/seed-nft-minter/wasm/Cargo.toml b/contracts/examples/seed-nft-minter/wasm/Cargo.toml index d32e1ba149..f51d8880e2 100644 --- a/contracts/examples/seed-nft-minter/wasm/Cargo.toml +++ b/contracts/examples/seed-nft-minter/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/token-release/Cargo.toml b/contracts/examples/token-release/Cargo.toml index 4909074ab7..b51a77c5ca 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" diff --git a/contracts/examples/token-release/meta/Cargo.toml b/contracts/examples/token-release/meta/Cargo.toml index 2b61364559..5fe39835b4 100644 --- a/contracts/examples/token-release/meta/Cargo.toml +++ b/contracts/examples/token-release/meta/Cargo.toml @@ -10,7 +10,7 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/token-release/wasm/Cargo.toml b/contracts/examples/token-release/wasm/Cargo.toml index 48ca0061b0..d2dc6ba436 100644 --- a/contracts/examples/token-release/wasm/Cargo.toml +++ b/contracts/examples/token-release/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/abi-tester/Cargo.toml b/contracts/feature-tests/abi-tester/Cargo.toml index d2335a15b8..cabba294ae 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" [dev-dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 05ba923af6..40cc9a90b8 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.47.8" + "version": "0.48.0-alpha.1" } }, "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 5d1bde1cfa..a2f68b31a8 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.47.8" + "version": "0.48.0-alpha.1" } }, "docs": [ diff --git a/contracts/feature-tests/abi-tester/meta/Cargo.toml b/contracts/feature-tests/abi-tester/meta/Cargo.toml index f8070e33ff..b431521f53 100644 --- a/contracts/feature-tests/abi-tester/meta/Cargo.toml +++ b/contracts/feature-tests/abi-tester/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false 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 64cdfb6c85..456932b4b5 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 a8952129d6..4eb67ed424 100644 --- a/contracts/feature-tests/abi-tester/wasm/Cargo.toml +++ b/contracts/feature-tests/abi-tester/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/Cargo.toml b/contracts/feature-tests/alloc-features/Cargo.toml index 814c55b656..5a143b2f63 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 62255e15fa..7acab627bc 100644 --- a/contracts/feature-tests/alloc-features/meta/Cargo.toml +++ b/contracts/feature-tests/alloc-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml index 52c6563e32..26e7a2003c 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml index 1fac4d058d..7f9d0c84a3 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/wasm/Cargo.toml b/contracts/feature-tests/alloc-features/wasm/Cargo.toml index ab5fb829ca..2d4b3fc731 100644 --- a/contracts/feature-tests/alloc-features/wasm/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/basic-features/Cargo.toml b/contracts/feature-tests/basic-features/Cargo.toml index 5529ecea8d..8dd2f6ffc6 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" [dependencies.multiversx-sc-modules] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 89b7ac2add..087c2d7e38 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.8.6" path = ".." [dependencies.multiversx-sc-snippets] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/snippets" diff --git a/contracts/feature-tests/basic-features/meta/Cargo.toml b/contracts/feature-tests/basic-features/meta/Cargo.toml index 327f8c74a4..b3104ee1e8 100644 --- a/contracts/feature-tests/basic-features/meta/Cargo.toml +++ b/contracts/feature-tests/basic-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false 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 661bc1146e..1aa4834c45 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 3973b0842c..b1a386759a 100644 --- a/contracts/feature-tests/basic-features/wasm/Cargo.toml +++ b/contracts/feature-tests/basic-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = true path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 8ac9cfb28a..b72c34fd8c 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 ae56a96cbe..28401f7191 100644 --- a/contracts/feature-tests/big-float-features/meta/Cargo.toml +++ b/contracts/feature-tests/big-float-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/big-float-features/wasm/Cargo.toml b/contracts/feature-tests/big-float-features/wasm/Cargo.toml index 6f693347c9..ea456bd0cd 100644 --- a/contracts/feature-tests/big-float-features/wasm/Cargo.toml +++ b/contracts/feature-tests/big-float-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/Cargo.toml b/contracts/feature-tests/composability/Cargo.toml index 72b9f9f248..b314421afc 100644 --- a/contracts/feature-tests/composability/Cargo.toml +++ b/contracts/feature-tests/composability/Cargo.toml @@ -33,9 +33,9 @@ path = "recursive-caller" path = "vault" [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 ffa3071ea0..cae8c1d0dc 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 8ad49c4ae9..91b368c842 100644 --- a/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false 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 5e5e2253c2..05b78da5f1 100644 --- a/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 7e9bdb354b..5459d9b52f 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 96088fcc89..bb9e6930c9 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 83d74291d0..88a844be6d 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../../framework/meta" default-features = false 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 3d060317d0..a66af7a97c 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 158aae66f8..f45d0999b9 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 9d5bce7286..be0b399902 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../../framework/meta" default-features = false 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 ce110829f3..9b7d638276 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 bcd33e4734..f52da32975 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 3b8cfb5174..c6ca99bdcb 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 850924c2d7..c4664ea131 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../../framework/meta" default-features = false 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 894f1e4a4b..6feb6c6d56 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 f338b5dece..d099f933d3 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 571de47a23..09816573cc 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../../framework/meta" default-features = false 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 5efabe6632..dbf9a8623b 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 45d7fd86c0..7d835d70ed 100644 --- a/contracts/feature-tests/composability/forwarder-queue/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/Cargo.toml @@ -12,14 +12,14 @@ path = "src/forwarder_queue.rs" path = "../vault" [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" optional = true [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 9683e7d49b..ccea52c3a0 100644 --- a/contracts/feature-tests/composability/forwarder-queue/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false 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 3b33f8dedc..3b46c1b3c7 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 e50bec1684..4939e97e54 100644 --- a/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 63f7f1d1f9..b6abc588ae 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 f10e13d7dd..2b5bf43099 100644 --- a/contracts/feature-tests/composability/forwarder-raw/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-raw/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false 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 3e70d341d7..812df9a2f4 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 028cc4f9c8..bd7f6cfb9d 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 82fdd0688b..1f0406d626 100644 --- a/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/forwarder/Cargo.toml b/contracts/feature-tests/composability/forwarder/Cargo.toml index 92b1504a59..ef7808ab90 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/forwarder/meta/Cargo.toml b/contracts/feature-tests/composability/forwarder/meta/Cargo.toml index 613c92b16e..83666be0ad 100644 --- a/contracts/feature-tests/composability/forwarder/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml b/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml index 5bb46d0307..d8d2afabb2 100644 --- a/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/interact/Cargo.toml b/contracts/feature-tests/composability/interact/Cargo.toml index b3721732fd..1732bca1cf 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../contracts/modules" [dependencies.multiversx-sc-snippets] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 46f7436547..ec0374b708 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 999999a718..6d46d0c011 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,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false 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 bfca51da3a..7215f4f6b0 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 342c5b1456..827049e51b 100644 --- a/contracts/feature-tests/composability/promises-features/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/Cargo.toml @@ -12,6 +12,6 @@ path = "src/promises_main.rs" path = "../vault" [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" diff --git a/contracts/feature-tests/composability/promises-features/meta/Cargo.toml b/contracts/feature-tests/composability/promises-features/meta/Cargo.toml index c0375d049f..614e156c4e 100644 --- a/contracts/feature-tests/composability/promises-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml b/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml index 557e5818c2..e12230090c 100644 --- a/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 f3629b7af5..2cfed0aa33 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.4.1" [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 68f5e3fce2..f9f6ef508b 100644 --- a/contracts/feature-tests/composability/proxy-test-first/meta/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-first/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false 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 44d547460f..d419435c8c 100644 --- a/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 3f985bf59b..28501a5005 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 da932e6e3e..9207fe931b 100644 --- a/contracts/feature-tests/composability/proxy-test-second/meta/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-second/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false 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 883b4ca57e..5ab1dcdf0d 100644 --- a/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 edf1153a21..93d1eee649 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 b7d04141e7..2ab709419b 100644 --- a/contracts/feature-tests/composability/recursive-caller/meta/Cargo.toml +++ b/contracts/feature-tests/composability/recursive-caller/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml index e4b324558a..f0f985fd86 100644 --- a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 f8b73bd1ed..9b02e37f68 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 838f62ec07..900365c6a0 100644 --- a/contracts/feature-tests/composability/transfer-role-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/transfer-role-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false 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 7b4e0119bd..055f0918a1 100644 --- a/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/vault/Cargo.toml b/contracts/feature-tests/composability/vault/Cargo.toml index 4ffd03f581..f11a37fc3c 100644 --- a/contracts/feature-tests/composability/vault/Cargo.toml +++ b/contracts/feature-tests/composability/vault/Cargo.toml @@ -10,9 +10,9 @@ path = "src/vault.rs" [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/vault/meta/Cargo.toml b/contracts/feature-tests/composability/vault/meta/Cargo.toml index 0f93896e19..e116e46158 100644 --- a/contracts/feature-tests/composability/vault/meta/Cargo.toml +++ b/contracts/feature-tests/composability/vault/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false 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 2693692ecb..6ed938bf1f 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml index 9a3472c495..e3657522f8 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 13fd270b33..be501de22a 100644 --- a/contracts/feature-tests/composability/vault/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 8927b8f85e..3a8e039ab5 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 0450a2b95d..227fc64b2a 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false 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 7d42a6b0c3..f9c458d83b 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 52e5e2a3d1..3bc9ac772b 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 f6a0e60410..ff7f3d8d1c 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false 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 d8fe625b1d..8de0fb1f91 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 4827e78bf8..8232fe3035 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 1162ceb5ba..ea1fa444be 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false 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 ae8a024f7d..a19a42fc1d 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 3fb1f66765..9d56ab0f6c 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 73652ff74a..746f4a29e3 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false 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 6ecc47676f..25081bfe5b 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 b7406f877d..cc0cf4ba7e 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 e823cd155d..9516045226 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc20/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false 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 101d4d596f..ee4ccfc5ec 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 d1a58ed741..34e579a3b7 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 bd511266c5..04cb2b9829 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc721/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false 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 d76eb68fd8..07b2b77316 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/wasm-adapter" [workspace] 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 464c79efd7..650ed830ee 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.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 40901de7a7..15e1a719bc 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/meta" default-features = false 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 ec4f4653ac..791fc68492 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/esdt-system-sc-mock/Cargo.toml b/contracts/feature-tests/esdt-system-sc-mock/Cargo.toml index 6cdb6d9217..813a94abd9 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 d66c92f437..e382f5b6f1 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/meta/Cargo.toml +++ b/contracts/feature-tests/esdt-system-sc-mock/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false 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 910198734b..aed078c742 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.toml +++ b/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 13c5d9ec32..0c577093e6 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 6059435514..2ac13a08f9 100644 --- a/contracts/feature-tests/formatted-message-features/meta/Cargo.toml +++ b/contracts/feature-tests/formatted-message-features/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = [ "you",] path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml b/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml index 0ada82ca9b..16c05bc7e7 100644 --- a/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml +++ b/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/managed-map-features/Cargo.toml b/contracts/feature-tests/managed-map-features/Cargo.toml index cf64d6b26b..8315e238a3 100644 --- a/contracts/feature-tests/managed-map-features/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/Cargo.toml @@ -9,11 +9,11 @@ publish = false path = "src/mmap_features.rs" [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 022e576282..4c3a538c61 100644 --- a/contracts/feature-tests/managed-map-features/meta/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/managed-map-features/wasm/Cargo.toml b/contracts/feature-tests/managed-map-features/wasm/Cargo.toml index b01e83de22..8defa0d9c5 100644 --- a/contracts/feature-tests/managed-map-features/wasm/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 55b238d90f..660f6d59f0 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 7a30e9f032..084d63047b 100644 --- a/contracts/feature-tests/multi-contract-features/meta/Cargo.toml +++ b/contracts/feature-tests/multi-contract-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false 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 9e59c8cf59..01712bb698 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 e455698505..a9ebd01d66 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 @@ -26,7 +26,7 @@ path = ".." features = ["example_feature"] [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 c57395bee3..649efd91b3 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 a4ccad2d0a..b7901f7525 100644 --- a/contracts/feature-tests/multi-contract-features/wasm/Cargo.toml +++ b/contracts/feature-tests/multi-contract-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 3c6eb639a6..1fa204ca02 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 b5b6de2443..68ef9a1a0a 100644 --- a/contracts/feature-tests/panic-message-features/meta/Cargo.toml +++ b/contracts/feature-tests/panic-message-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/panic-message-features/wasm/Cargo.toml b/contracts/feature-tests/panic-message-features/wasm/Cargo.toml index 0df3393018..1ab11a8f36 100644 --- a/contracts/feature-tests/panic-message-features/wasm/Cargo.toml +++ b/contracts/feature-tests/panic-message-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/payable-features/Cargo.toml b/contracts/feature-tests/payable-features/Cargo.toml index bcb27446c2..51536a65ec 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/payable-features/meta/Cargo.toml b/contracts/feature-tests/payable-features/meta/Cargo.toml index baced24321..4b24111581 100644 --- a/contracts/feature-tests/payable-features/meta/Cargo.toml +++ b/contracts/feature-tests/payable-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/payable-features/wasm/Cargo.toml b/contracts/feature-tests/payable-features/wasm/Cargo.toml index 58274256ad..26422dbb5e 100644 --- a/contracts/feature-tests/payable-features/wasm/Cargo.toml +++ b/contracts/feature-tests/payable-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 21ff7ba5f7..79ad57c40b 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 7415ce614c..ab9b991352 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.47.8" +version = "0.48.0-alpha.1" 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 a134a77263..547004c6cd 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/meta/Cargo.toml +++ b/contracts/feature-tests/rust-snippets-generator-test/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false 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 deb116da19..b67c3480b9 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.47.8" +// version = "0.48.0-alpha.1" // 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 62dc6c73a4..03a640b1e2 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.toml +++ b/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 1a5fa9375d..102e815b23 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.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" features = [ "alloc" ] @@ -17,7 +17,7 @@ path = "../../examples/adder" path = "../../feature-tests/basic-features" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 d9601c6185..e46f3de4b8 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/meta/Cargo.toml +++ b/contracts/feature-tests/rust-testing-framework-tester/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false 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 aa6193531a..f2ddb2a432 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.toml +++ b/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/use-module/Cargo.toml b/contracts/feature-tests/use-module/Cargo.toml index f0dd37e380..f6ef5f596c 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.47.8" +version = "0.48.0-alpha.1" path = "../../../contracts/modules" [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" [dev-dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/meta" diff --git a/contracts/feature-tests/use-module/meta/Cargo.toml b/contracts/feature-tests/use-module/meta/Cargo.toml index c23e5696aa..cd44f99dc9 100644 --- a/contracts/feature-tests/use-module/meta/Cargo.toml +++ b/contracts/feature-tests/use-module/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/use-module/meta/abi/Cargo.toml b/contracts/feature-tests/use-module/meta/abi/Cargo.toml index 41b204dcd7..576a8ff440 100644 --- a/contracts/feature-tests/use-module/meta/abi/Cargo.toml +++ b/contracts/feature-tests/use-module/meta/abi/Cargo.toml @@ -9,10 +9,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false 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 b40f0e911c..c5951dfbcd 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.47.8" + "version": "0.48.0-alpha.1" } }, "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 a2e1621128..0bb0abafea 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.47.8" + "version": "0.48.0-alpha.1" } }, "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 55ded78fe6..c380f5082c 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" 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 571611596c..cc138543a1 100644 --- a/contracts/feature-tests/use-module/wasm/Cargo.toml +++ b/contracts/feature-tests/use-module/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/modules/Cargo.toml b/contracts/modules/Cargo.toml index b7df46cac1..b54d610b1f 100644 --- a/contracts/modules/Cargo.toml +++ b/contracts/modules/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-modules" -version = "0.47.8" +version = "0.48.0-alpha.1" edition = "2021" authors = ["MultiversX "] @@ -17,5 +17,5 @@ categories = ["no-std", "wasm", "cryptography::cryptocurrencies"] alloc = ["multiversx-sc/alloc"] [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../framework/base" diff --git a/framework/base/Cargo.toml b/framework/base/Cargo.toml index 9edc7414d7..89b821b545 100644 --- a/framework/base/Cargo.toml +++ b/framework/base/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0-alpha.1" edition = "2021" authors = ["Andrei Marinica ", "MultiversX "] @@ -27,7 +27,7 @@ bitflags = "=2.4.2" num-traits = { version = "=0.2.17", default-features = false } [dependencies.multiversx-sc-derive] -version = "=0.47.8" +version = "=0.48.0-alpha.1" path = "../derive" [dependencies.multiversx-sc-codec] diff --git a/framework/derive/Cargo.toml b/framework/derive/Cargo.toml index c615da8563..3330eca649 100644 --- a/framework/derive/Cargo.toml +++ b/framework/derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0-alpha.1" edition = "2021" authors = ["Andrei Marinica ", "MultiversX "] diff --git a/framework/meta/Cargo.toml b/framework/meta/Cargo.toml index a8775be7a2..3122ecb04c 100644 --- a/framework/meta/Cargo.toml +++ b/framework/meta/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-meta" -version = "0.47.8" +version = "0.48.0-alpha.1" edition = "2021" authors = [ @@ -52,7 +52,7 @@ pathdiff = { version = "0.2.1", optional = true } common-path = { version = "1.0.0", optional = true } [dependencies.multiversx-sc] -version = "=0.47.8" +version = "=0.48.0-alpha.1" path = "../base" features = ["alloc", "num-bigint"] diff --git a/framework/scenario/Cargo.toml b/framework/scenario/Cargo.toml index 0e138752e6..1b18eac149 100644 --- a/framework/scenario/Cargo.toml +++ b/framework/scenario/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-scenario" -version = "0.47.8" +version = "0.48.0-alpha.1" edition = "2021" authors = [ @@ -40,12 +40,12 @@ path = "src/main.rs" run-go-tests = [] [dependencies.multiversx-sc] -version = "=0.47.8" +version = "=0.48.0-alpha.1" features = ["alloc", "num-bigint"] path = "../base" [dependencies.multiversx-sc-meta] -version = "=0.47.8" +version = "=0.48.0-alpha.1" path = "../meta" [dependencies.multiversx-chain-scenario-format] diff --git a/framework/snippets/Cargo.toml b/framework/snippets/Cargo.toml index 14426e25fe..4d3e307d2b 100644 --- a/framework/snippets/Cargo.toml +++ b/framework/snippets/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-snippets" -version = "0.47.8" +version = "0.48.0-alpha.1" edition = "2021" authors = ["MultiversX "] @@ -22,7 +22,7 @@ env_logger = "0.11" futures = "0.3" [dependencies.multiversx-sc-scenario] -version = "=0.47.8" +version = "=0.48.0-alpha.1" path = "../scenario" [dependencies.multiversx-sdk] diff --git a/framework/wasm-adapter/Cargo.toml b/framework/wasm-adapter/Cargo.toml index b75da45633..f74067f123 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.47.8" +version = "0.48.0-alpha.1" edition = "2021" authors = [ @@ -22,5 +22,5 @@ categories = [ ] [dependencies.multiversx-sc] -version = "=0.47.8" +version = "=0.48.0-alpha.1" path = "../base" diff --git a/tools/mxpy-snippet-generator/Cargo.toml b/tools/mxpy-snippet-generator/Cargo.toml index 4253ef6872..738aabebe6 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.47.8" +version = "0.48.0-alpha.1" path = "../../framework/base" [dependencies] diff --git a/tools/rust-debugger/format-tests/Cargo.toml b/tools/rust-debugger/format-tests/Cargo.toml index c838a1d924..ab720903f5 100644 --- a/tools/rust-debugger/format-tests/Cargo.toml +++ b/tools/rust-debugger/format-tests/Cargo.toml @@ -9,11 +9,11 @@ name = "format-tests" path = "src/format_tests.rs" [dependencies.multiversx-sc] -version = "=0.47.8" +version = "=0.48.0-alpha.1" path = "../../../framework/base" [dependencies.multiversx-sc-scenario] -version = "=0.47.8" +version = "=0.48.0-alpha.1" path = "../../../framework/scenario" [dependencies.multiversx-chain-vm] From 3d13acf947ef0863ec187dc042a1fdfbf947c574 Mon Sep 17 00:00:00 2001 From: Laurentiu Ciobanu Date: Wed, 27 Mar 2024 13:50:03 +0200 Subject: [PATCH 203/461] use shared sc-actions test-coverage job --- .github/workflows/actions.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index 278e4e30df..eb494e8342 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -15,7 +15,7 @@ jobs: contracts: name: Contracts # uses: multiversx/mx-sc-actions/.github/workflows/contracts.yml@v3.0.0 - uses: multiversx/mx-sc-actions/.github/workflows/contracts.yml@3c37e52a9de8f4111f823da0b2412f1fc55b7d30 + uses: multiversx/mx-sc-actions/.github/workflows/contracts.yml@v3.1.0 with: rust-toolchain: nightly-2023-12-11 path-to-sc-meta: framework/meta From 493c865ac8dcd915d6a70c839cd5e07f906e62f0 Mon Sep 17 00:00:00 2001 From: Laurentiu Ciobanu Date: Wed, 27 Mar 2024 13:50:14 +0200 Subject: [PATCH 204/461] use shared sc-actions test-coverage job --- .github/workflows/actions.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index eb494e8342..d9d598ab33 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -14,7 +14,6 @@ permissions: jobs: contracts: name: Contracts - # uses: multiversx/mx-sc-actions/.github/workflows/contracts.yml@v3.0.0 uses: multiversx/mx-sc-actions/.github/workflows/contracts.yml@v3.1.0 with: rust-toolchain: nightly-2023-12-11 From e8c3c3fe41672b1b972ad7c9a98d40e3b4e29c2a Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Wed, 27 Mar 2024 18:23:20 +0100 Subject: [PATCH 205/461] migration to unified syntax --- .../src/builtin_func_features.rs | 15 +-- .../src/builtin_func_proxy.rs | 107 ++++++++++++++++-- 2 files changed, 108 insertions(+), 14 deletions(-) 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 index 81df199e68..dd4183bb94 100644 --- 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 @@ -7,25 +7,26 @@ 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) + self.tx() + .to(&address) + .typed(builtin_func_proxy::UserBuiltinProxy) + .set_user_name(name) .async_call() .call_and_exit() } #[endpoint] fn call_delete_user_name(&self, address: ManagedAddress) { - self.builtin_func_proxy(address) + self.tx() + .to(&address) + .typed(builtin_func_proxy::UserBuiltinProxy) .delete_user_name() .async_call() - .call_and_exit(); + .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 index 5499deee5e..66ed7a8fdf 100644 --- 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 @@ -1,10 +1,103 @@ -multiversx_sc::imports!(); +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. -#[multiversx_sc::derive::proxy] -pub trait UserBuiltin { - #[endpoint(SetUserName)] - fn set_user_name(&self, name: &ManagedBuffer); +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// - #[endpoint(DeleteUserName)] - fn delete_user_name(&self); +#![allow(dead_code)] +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +pub struct UserBuiltinProxy; + +impl TxProxyTrait for UserBuiltinProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = UserBuiltinProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + UserBuiltinProxyMethods { wrapped_tx: tx } + } +} + +pub struct UserBuiltinProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl UserBuiltinProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init( + self, + ) -> TxProxyDeploy { + self.wrapped_tx + .raw_deploy() + .original_result() + } +} + +#[rustfmt::skip] +impl UserBuiltinProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn upgrade( + self, + ) -> TxProxyUpgrade { + self.wrapped_tx + .raw_upgrade() + .original_result() + } +} + +#[rustfmt::skip] +impl UserBuiltinProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn set_user_name< + Arg0: CodecInto>, + >( + self, + name: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("SetUserName") + .argument(&name) + .original_result() + } + + pub fn delete_user_name( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("DeleteUserName") + .original_result() + } } From e626ba6a2cf1b8e1df9f559a7f6564d20fcdc18c Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Wed, 27 Mar 2024 18:39:18 +0100 Subject: [PATCH 206/461] proxy pause sc migration to new proxy and unified syntax --- .../proxy-pause/src/pause_sc_proxy.rs | 99 +++++++++++++++++++ .../examples/proxy-pause/src/proxy_pause.rs | 26 ++--- 2 files changed, 107 insertions(+), 18 deletions(-) create mode 100644 contracts/examples/proxy-pause/src/pause_sc_proxy.rs diff --git a/contracts/examples/proxy-pause/src/pause_sc_proxy.rs b/contracts/examples/proxy-pause/src/pause_sc_proxy.rs new file mode 100644 index 0000000000..0984e09ea1 --- /dev/null +++ b/contracts/examples/proxy-pause/src/pause_sc_proxy.rs @@ -0,0 +1,99 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(dead_code)] +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +pub struct PausableProxy; + +impl TxProxyTrait for PausableProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = PausableProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + PausableProxyMethods { wrapped_tx: tx } + } +} + +pub struct PausableProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl PausableProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init( + self, + ) -> TxProxyDeploy { + self.wrapped_tx + .raw_deploy() + .original_result() + } +} + +#[rustfmt::skip] +impl PausableProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn upgrade( + self, + ) -> TxProxyUpgrade { + self.wrapped_tx + .raw_upgrade() + .original_result() + } +} + +#[rustfmt::skip] +impl PausableProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn pause( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("pause") + .original_result() + } + + pub fn unpause( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("unpause") + .original_result() + } +} diff --git a/contracts/examples/proxy-pause/src/proxy_pause.rs b/contracts/examples/proxy-pause/src/proxy_pause.rs index 01dbfbf449..aa5f07e7d6 100644 --- a/contracts/examples/proxy-pause/src/proxy_pause.rs +++ b/contracts/examples/proxy-pause/src/proxy_pause.rs @@ -1,17 +1,7 @@ #![no_std] use multiversx_sc::imports::*; - -mod pause_proxy { - #[multiversx_sc::proxy] - pub trait Pausable { - #[endpoint] - fn pause(&self); - - #[endpoint] - fn unpause(&self); - } -} +pub mod pause_sc_proxy; #[multiversx_sc::contract] pub trait PauseProxy { @@ -46,23 +36,26 @@ pub trait PauseProxy { fn for_each_contract(&self, f: F) where - F: Fn(pause_proxy::ProxyTo), + F: Fn(pause_sc_proxy::PausableProxyMethods, (), &ManagedAddress, ()>), { for contract_address in self.contracts().iter() { - f(self.pausable_contract().contract(contract_address)); + f(self + .tx() + .to(&contract_address) + .typed(pause_sc_proxy::PausableProxy)); } } #[endpoint] fn pause(&self) { self.require_owner(); - self.for_each_contract(|mut contract| contract.pause().execute_on_dest_context()); + self.for_each_contract(|contract| contract.pause().sync_call()); } #[endpoint] fn unpause(&self) { self.require_owner(); - self.for_each_contract(|mut contract| contract.unpause().execute_on_dest_context()); + self.for_each_contract(|contract| contract.unpause().sync_call()); } fn require_owner(&self) { @@ -79,7 +72,4 @@ pub trait PauseProxy { #[view] #[storage_mapper("contracts")] fn contracts(&self) -> SetMapper; - - #[proxy] - fn pausable_contract(&self) -> pause_proxy::Proxy; } From c924c4986ac6516acdfcb195eed7c18e70490d5f Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Wed, 27 Mar 2024 18:58:21 +0100 Subject: [PATCH 207/461] encode error from basic features migration to new proxy and unified syntax --- .../basic-features/src/basic_features_main.rs | 1 + .../basic-features/src/codec_err_test.rs | 30 ++---- .../basic-features/src/encode_error_proxy.rs | 100 ++++++++++++++++++ 3 files changed, 109 insertions(+), 22 deletions(-) create mode 100644 contracts/feature-tests/basic-features/src/encode_error_proxy.rs diff --git a/contracts/feature-tests/basic-features/src/basic_features_main.rs b/contracts/feature-tests/basic-features/src/basic_features_main.rs index 2be5e1a535..1d3485b3f1 100644 --- a/contracts/feature-tests/basic-features/src/basic_features_main.rs +++ b/contracts/feature-tests/basic-features/src/basic_features_main.rs @@ -12,6 +12,7 @@ pub mod crypto_features; pub mod echo; pub mod echo_managed; pub mod elliptic_curve_features; +pub mod encode_error_proxy; pub mod event_features; pub mod macro_features; pub mod managed_address_features; diff --git a/contracts/feature-tests/basic-features/src/codec_err_test.rs b/contracts/feature-tests/basic-features/src/codec_err_test.rs index 4fa4da2258..e72f71b44b 100644 --- a/contracts/feature-tests/basic-features/src/codec_err_test.rs +++ b/contracts/feature-tests/basic-features/src/codec_err_test.rs @@ -1,19 +1,5 @@ multiversx_sc::imports!(); -use crate::types::CodecErrorTestType; - -mod encode_err_proxy { - multiversx_sc::imports!(); - use crate::types::CodecErrorTestType; - - #[multiversx_sc::proxy] - pub trait EncodeErrorProxy { - #[init] - fn init(&self, error_arg: CodecErrorTestType); - - #[endpoint] - fn encode_error_method(&self, error_arg: CodecErrorTestType); - } -} +use crate::{encode_error_proxy, types::CodecErrorTestType}; /// Test various serialization errors. #[multiversx_sc::module] @@ -62,15 +48,14 @@ pub trait CodecErrorTest { fn codec_err_event_data(&self) { self.event_err_data(CodecErrorTestType); } - - #[proxy] - fn encode_err_proxy(&self) -> encode_err_proxy::Proxy; - /// Never actually calls any deploy/upgrade, so it is appropriate in this contract. /// It just covers contract init serialization errors. #[endpoint] fn codec_err_contract_init(&self) { - let _ = self.encode_err_proxy().init(CodecErrorTestType); + let _ = self + .tx() + .typed(encode_error_proxy::EncodeErrorProxy) + .init(CodecErrorTestType); } /// Never actually calls any async/sync call, so it is appropriate in this contract. @@ -78,8 +63,9 @@ pub trait CodecErrorTest { #[endpoint] fn codec_err_contract_call(&self) { let _ = self - .encode_err_proxy() - .contract(ManagedAddress::zero()) + .tx() + .to(&ManagedAddress::zero()) + .typed(encode_error_proxy::EncodeErrorProxy) .encode_error_method(CodecErrorTestType); } } diff --git a/contracts/feature-tests/basic-features/src/encode_error_proxy.rs b/contracts/feature-tests/basic-features/src/encode_error_proxy.rs new file mode 100644 index 0000000000..eee70b6ae2 --- /dev/null +++ b/contracts/feature-tests/basic-features/src/encode_error_proxy.rs @@ -0,0 +1,100 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(dead_code)] +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +use crate::types::CodecErrorTestType; + +pub struct EncodeErrorProxy; + +impl TxProxyTrait for EncodeErrorProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = EncodeErrorProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + EncodeErrorProxyMethods { wrapped_tx: tx } + } +} + +pub struct EncodeErrorProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl EncodeErrorProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init< + Arg0: CodecInto, + >( + self, + error_arg: Arg0, + ) -> TxProxyDeploy { + self.wrapped_tx + .raw_deploy() + .argument(&error_arg) + .original_result() + } +} + +#[rustfmt::skip] +impl EncodeErrorProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn upgrade( + self, + ) -> TxProxyUpgrade { + self.wrapped_tx + .raw_upgrade() + .original_result() + } +} + +#[rustfmt::skip] +impl EncodeErrorProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn encode_error_method< + Arg0: CodecInto, + >( + self, + error_arg: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("encode_error_method") + .argument(&error_arg) + .original_result() + } +} From c4627e7efee7e5f2acf27582bc53d2b565ae6e48 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Thu, 28 Mar 2024 10:36:49 +0100 Subject: [PATCH 208/461] parent child migration and new proxy --- .../child/sc-config.toml | 2 + .../parent/src/child_proxy.rs | 102 ++++++++++++++++++ .../parent/src/lib.rs | 30 +++--- 3 files changed, 120 insertions(+), 14 deletions(-) create mode 100644 contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/child/sc-config.toml create mode 100644 contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/child_proxy.rs diff --git a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/child/sc-config.toml b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/child/sc-config.toml new file mode 100644 index 0000000000..a80372b407 --- /dev/null +++ b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/child/sc-config.toml @@ -0,0 +1,2 @@ +[settings] +proxy-paths = ["../parent/src/child_proxy.rs"] \ No newline at end of file diff --git a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/child_proxy.rs b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/child_proxy.rs new file mode 100644 index 0000000000..0c28cb1f96 --- /dev/null +++ b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/child_proxy.rs @@ -0,0 +1,102 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(dead_code)] +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +pub struct ChildProxy; + +impl TxProxyTrait for ChildProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = ChildProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + ChildProxyMethods { wrapped_tx: tx } + } +} + +pub struct ChildProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl ChildProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init( + self, + ) -> TxProxyDeploy { + self.wrapped_tx + .raw_deploy() + .original_result() + } +} + +#[rustfmt::skip] +impl ChildProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ +} + +#[rustfmt::skip] +impl ChildProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn issue_wrapped_egld< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>, + >( + self, + token_display_name: Arg0, + token_ticker: Arg1, + initial_supply: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("issueWrappedEgld") + .argument(&token_display_name) + .argument(&token_ticker) + .argument(&initial_supply) + .original_result() + } + + pub fn wrapped_egld_token_identifier( + self, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call() + .function_name("getWrappedEgldTokenIdentifier") + .original_result() + } +} diff --git a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/lib.rs b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/lib.rs index ddb8a09a09..f334c393f6 100644 --- a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/lib.rs +++ b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/lib.rs @@ -2,14 +2,13 @@ multiversx_sc::imports!(); +pub mod child_proxy; + // Base cost for standalone + estimate cost of actual sc call const ISSUE_EXPECTED_GAS_COST: u64 = 90_000_000 + 25_000_000; #[multiversx_sc::contract] pub trait Parent { - #[proxy] - fn child_proxy(&self, to: ManagedAddress) -> child::Proxy; - #[init] fn init(&self) {} @@ -19,13 +18,14 @@ pub trait Parent { #[endpoint(deployChildContract)] fn deploy_child_contract(&self, code: ManagedBuffer) { - let (child_contract_address, _) = self.send_raw().deploy_contract( - self.blockchain().get_gas_left(), - &BigUint::zero(), - &code, - CodeMetadata::DEFAULT, - &ManagedArgBuffer::new(), - ); + let gas_left = self.blockchain().get_gas_left(); + let child_contract_address = self + .tx() + .raw_deploy() + .code(code) + .with_gas_limit(gas_left) + .returns(ReturnsNewAddress) + .sync_call(); self.child_contract_address().set(&child_contract_address); } @@ -40,12 +40,14 @@ pub trait Parent { ) { let issue_cost = self.call_value().egld_value(); let child_contract_adress = self.child_contract_address().get(); - let _: IgnoreValue = self - .child_proxy(child_contract_adress) + + self.tx() + .to(&child_contract_adress) + .typed(child_proxy::ChildProxy) .issue_wrapped_egld(token_display_name, token_ticker, initial_supply) - .with_egld_transfer(issue_cost.clone_value()) + .egld(issue_cost) .with_gas_limit(ISSUE_EXPECTED_GAS_COST) - .execute_on_dest_context(); + .sync_call(); } // storage From d15172e2056466c725933caa94cdd6944cec85b2 Mon Sep 17 00:00:00 2001 From: Alin Cruceat Date: Thu, 28 Mar 2024 12:15:53 +0200 Subject: [PATCH 209/461] exchange_features contract for testing the traits --- Cargo.lock | 16 ++ Cargo.toml | 3 + .../exchange-features/Cargo.toml | 17 ++ .../exchange-features/meta/Cargo.toml | 13 ++ .../exchange-features/meta/src/main.rs | 3 + .../exchange-features/multiversx.json | 3 + .../src/exchange_features.rs | 77 ++++++++ .../tests/exchange_features_blackbox_test.rs | 83 +++++++++ .../exchange-features/wasm/Cargo.lock | 170 ++++++++++++++++++ .../exchange-features/wasm/Cargo.toml | 32 ++++ .../exchange-features/wasm/src/lib.rs | 29 +++ .../base/src/types/managed/wrapped/mod.rs | 2 +- 12 files changed, 447 insertions(+), 1 deletion(-) create mode 100644 contracts/feature-tests/exchange-features/Cargo.toml create mode 100644 contracts/feature-tests/exchange-features/meta/Cargo.toml create mode 100644 contracts/feature-tests/exchange-features/meta/src/main.rs create mode 100644 contracts/feature-tests/exchange-features/multiversx.json create mode 100644 contracts/feature-tests/exchange-features/src/exchange_features.rs create mode 100644 contracts/feature-tests/exchange-features/tests/exchange_features_blackbox_test.rs create mode 100644 contracts/feature-tests/exchange-features/wasm/Cargo.lock create mode 100644 contracts/feature-tests/exchange-features/wasm/Cargo.toml create mode 100644 contracts/feature-tests/exchange-features/wasm/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 0362d5974b..031c4b0647 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -908,6 +908,22 @@ dependencies = [ "multiversx-sc-meta", ] +[[package]] +name = "exchange-features" +version = "0.0.0" +dependencies = [ + "multiversx-sc", + "multiversx-sc-scenario", +] + +[[package]] +name = "exchange-features-meta" +version = "0.0.0" +dependencies = [ + "exchange-features", + "multiversx-sc-meta", +] + [[package]] name = "factorial" version = "0.0.0" diff --git a/Cargo.toml b/Cargo.toml index ef92a8a7b9..d97f1292e0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -175,4 +175,7 @@ members = [ "contracts/feature-tests/rust-testing-framework-tester/meta", "contracts/feature-tests/use-module", "contracts/feature-tests/use-module/meta", + "contracts/feature-tests/exchange-features", + "contracts/feature-tests/exchange-features/meta", + ] diff --git a/contracts/feature-tests/exchange-features/Cargo.toml b/contracts/feature-tests/exchange-features/Cargo.toml new file mode 100644 index 0000000000..eaf84b2a99 --- /dev/null +++ b/contracts/feature-tests/exchange-features/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "exchange-features" +version = "0.0.0" +authors = ["you"] +edition = "2021" +publish = false + +[lib] +path = "src/exchange_features.rs" + +[dependencies.multiversx-sc] +version = "0.47.8" +path = "../../../framework/base" + +[dev-dependencies.multiversx-sc-scenario] +version = "0.47.8" +path = "../../../framework/scenario" diff --git a/contracts/feature-tests/exchange-features/meta/Cargo.toml b/contracts/feature-tests/exchange-features/meta/Cargo.toml new file mode 100644 index 0000000000..ca186c0ec1 --- /dev/null +++ b/contracts/feature-tests/exchange-features/meta/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "exchange-features-meta" +version = "0.0.0" +edition = "2021" +publish = false + +[dependencies.exchange-features] +path = ".." + +[dependencies.multiversx-sc-meta] +version = "0.47.8" +path = "../../../../framework/meta" +default-features = false diff --git a/contracts/feature-tests/exchange-features/meta/src/main.rs b/contracts/feature-tests/exchange-features/meta/src/main.rs new file mode 100644 index 0000000000..f9a8d31e06 --- /dev/null +++ b/contracts/feature-tests/exchange-features/meta/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + multiversx_sc_meta::cli_main::(); +} diff --git a/contracts/feature-tests/exchange-features/multiversx.json b/contracts/feature-tests/exchange-features/multiversx.json new file mode 100644 index 0000000000..7365539625 --- /dev/null +++ b/contracts/feature-tests/exchange-features/multiversx.json @@ -0,0 +1,3 @@ +{ + "language": "rust" +} \ No newline at end of file diff --git a/contracts/feature-tests/exchange-features/src/exchange_features.rs b/contracts/feature-tests/exchange-features/src/exchange_features.rs new file mode 100644 index 0000000000..430e33840b --- /dev/null +++ b/contracts/feature-tests/exchange-features/src/exchange_features.rs @@ -0,0 +1,77 @@ +#![no_std] + +multiversx_sc::imports!(); +multiversx_sc::derive_imports!(); + +pub const FULL_VALUE_SUPPLY: u64 = 16; + +#[derive( + ManagedVecItem, + TopEncode, + TopDecode, + NestedEncode, + NestedDecode, + TypeAbi, + Clone, + PartialEq, + Debug, +)] +pub struct TokenAttributes { + pub amount: BigUint, +} + +impl FixedSupplyToken for TokenAttributes { + fn get_total_supply(&self) -> BigUint { + self.amount.clone() + } + + fn into_part(self, payment_amount: &BigUint) -> Self { + let new_amount = + self.rule_of_three_non_zero_result(payment_amount, &BigUint::from(FULL_VALUE_SUPPLY)); + TokenAttributes { + amount: new_amount.clone(), + } + } +} +impl Mergeable for TokenAttributes { + #[inline] + fn can_merge_with(&self, other: &Self) -> bool { + other.amount > 0u64 + } + + fn merge_with(&mut self, other: Self) { + self.error_if_not_mergeable(&other); + + self.amount += other.amount + } +} + +#[multiversx_sc::contract] +pub trait ExchangeFeatures { + #[storage_mapper("supply")] + fn supply(&self) -> SingleValueMapper>; + + #[init] + fn init(&self, initial_value: BigUint) { + self.supply().set(TokenAttributes { + amount: initial_value, + }); + } + + #[upgrade] + fn upgrade(&self, value: BigUint) { + let token = self.supply().get(); + self.supply().set(token.into_part(&value)); + } + + #[endpoint] + fn merge(&self, value: BigUint) { + self.supply() + .update(|token| token.merge_with(TokenAttributes { amount: value })); + } + + #[endpoint] + fn get_supply(&self) -> BigUint { + self.supply().get().get_total_supply() + } +} diff --git a/contracts/feature-tests/exchange-features/tests/exchange_features_blackbox_test.rs b/contracts/feature-tests/exchange-features/tests/exchange_features_blackbox_test.rs new file mode 100644 index 0000000000..82bca1794b --- /dev/null +++ b/contracts/feature-tests/exchange-features/tests/exchange_features_blackbox_test.rs @@ -0,0 +1,83 @@ +use multiversx_sc_scenario::{scenario_model::*, *}; + +const EXCHANGE_FEATURES_PATH_EXPR: &str = "mxsc:output/exchange-features.mxsc.json"; + +fn world() -> ScenarioWorld { + let mut blockchain = ScenarioWorld::new(); + blockchain.set_current_dir_from_workspace("contracts/feature-tests/exchange-features"); + + blockchain.register_contract( + EXCHANGE_FEATURES_PATH_EXPR, + exchange_features::ContractBuilder, + ); + blockchain +} + +#[test] +fn exchange_features_blackbox_raw() { + let mut world = world(); + let exchange_features_code = world.code_expression(EXCHANGE_FEATURES_PATH_EXPR); + + world + .set_state_step( + SetStateStep::new() + .put_account("address:owner", Account::new().nonce(1)) + .new_address("address:owner", 1, "sc:exchange-features"), + ) + .sc_deploy( + ScDeployStep::new() + .from("address:owner") + .code(&exchange_features_code) + .argument("5") + .expect(TxExpect::ok().no_result()), + ) + .sc_call( + ScCallStep::new() + .from("address:owner") + .to("sc:exchange-features") + .function("get_supply") + .expect(TxExpect::ok().result("5")), + ) + .sc_call( + ScCallStep::new() + .from("address:owner") + .to("sc:exchange-features") + .function("merge") + .argument("3") + .expect(TxExpect::ok().no_result()), + ) + .sc_call( + ScCallStep::new() + .from("address:owner") + .to("sc:exchange-features") + .function("get_supply") + .expect(TxExpect::ok().result("8")), + ) + .sc_call( + ScCallStep::new() + .from("address:owner") + .to("sc:exchange-features") + .function("upgradeContract") + .argument(&exchange_features_code) + .argument("0x0502") // codeMetadata + .argument("0") // contract argument + .expect(TxExpect::user_error("str:Zero amount")), + ) + .sc_call( + ScCallStep::new() + .from("address:owner") + .to("sc:exchange-features") + .function("upgradeContract") + .argument(exchange_features_code) + .argument("0x0502") // codeMetadata + .argument("3") // contract argument + .expect(TxExpect::ok().no_result()), + ) + .sc_call( + ScCallStep::new() + .from("address:owner") + .to("sc:exchange-features") + .function("get_supply") + .expect(TxExpect::ok().result("6")), + ); +} diff --git a/contracts/feature-tests/exchange-features/wasm/Cargo.lock b/contracts/feature-tests/exchange-features/wasm/Cargo.lock new file mode 100644 index 0000000000..e9ffb74f36 --- /dev/null +++ b/contracts/feature-tests/exchange-features/wasm/Cargo.lock @@ -0,0 +1,170 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "autocfg" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" + +[[package]] +name = "bitflags" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" + +[[package]] +name = "endian-type" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" + +[[package]] +name = "exchange-features" +version = "0.0.0" +dependencies = [ + "multiversx-sc", +] + +[[package]] +name = "exchange-features-wasm" +version = "0.0.0" +dependencies = [ + "exchange-features", + "multiversx-sc-wasm-adapter", +] + +[[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.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "multiversx-sc" +version = "0.47.8" +dependencies = [ + "bitflags", + "hex-literal", + "multiversx-sc-codec", + "multiversx-sc-derive", + "num-traits", +] + +[[package]] +name = "multiversx-sc-codec" +version = "0.18.6" +dependencies = [ + "arrayvec", + "multiversx-sc-codec-derive", +] + +[[package]] +name = "multiversx-sc-codec-derive" +version = "0.18.6" +dependencies = [ + "hex", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "multiversx-sc-derive" +version = "0.47.8" +dependencies = [ + "hex", + "proc-macro2", + "quote", + "radix_trie", + "syn", +] + +[[package]] +name = "multiversx-sc-wasm-adapter" +version = "0.47.8" +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.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "proc-macro2" +version = "1.0.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +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.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "syn" +version = "2.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" diff --git a/contracts/feature-tests/exchange-features/wasm/Cargo.toml b/contracts/feature-tests/exchange-features/wasm/Cargo.toml new file mode 100644 index 0000000000..977914cedf --- /dev/null +++ b/contracts/feature-tests/exchange-features/wasm/Cargo.toml @@ -0,0 +1,32 @@ +# Code generated by the multiversx-sc build system. DO NOT EDIT. + +# ########################################## +# ############## AUTO-GENERATED ############# +# ########################################## + +[package] +name = "exchange-features-wasm" +version = "0.0.0" +edition = "2021" +publish = false + +[lib] +crate-type = ["cdylib"] + +[profile.release] +codegen-units = 1 +opt-level = "z" +lto = true +debug = false +panic = "abort" +overflow-checks = false + +[dependencies.exchange-features] +path = ".." + +[dependencies.multiversx-sc-wasm-adapter] +version = "0.47.8" +path = "../../../../framework/wasm-adapter" + +[workspace] +members = ["."] diff --git a/contracts/feature-tests/exchange-features/wasm/src/lib.rs b/contracts/feature-tests/exchange-features/wasm/src/lib.rs new file mode 100644 index 0000000000..b0842b89d6 --- /dev/null +++ b/contracts/feature-tests/exchange-features/wasm/src/lib.rs @@ -0,0 +1,29 @@ +// Code generated by the multiversx-sc build system. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +// Init: 1 +// Endpoints: 3 +// Async Callback (empty): 1 +// Total number of exported functions: 5 + +#![no_std] +#![allow(internal_features)] +#![feature(lang_items)] + +multiversx_sc_wasm_adapter::allocator!(); +multiversx_sc_wasm_adapter::panic_handler!(); + +multiversx_sc_wasm_adapter::endpoints! { + exchange_features + ( + init => init + upgrade => upgrade + merge => merge + get_supply => get_supply + ) +} + +multiversx_sc_wasm_adapter::async_callback_empty! {} diff --git a/framework/base/src/types/managed/wrapped/mod.rs b/framework/base/src/types/managed/wrapped/mod.rs index d87389a87a..7ead89e3a0 100644 --- a/framework/base/src/types/managed/wrapped/mod.rs +++ b/framework/base/src/types/managed/wrapped/mod.rs @@ -39,7 +39,7 @@ pub use managed_vec_ref_iter::ManagedVecRefIterator; pub use randomness_source::RandomnessSource; pub use token_identifier::TokenIdentifier; -pub use self::traits::{ +pub use traits::{ fixed_token_supply::FixedSupplyToken, mergeable::{ExternallyMergeable, Mergeable}, }; From 6dfc61e74f3173d61a70b2797e60eedd2413f92a Mon Sep 17 00:00:00 2001 From: Alin Cruceat Date: Thu, 28 Mar 2024 12:18:28 +0200 Subject: [PATCH 210/461] update Cargo.toml --- contracts/feature-tests/exchange-features/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/feature-tests/exchange-features/Cargo.toml b/contracts/feature-tests/exchange-features/Cargo.toml index eaf84b2a99..bdb1a7dd66 100644 --- a/contracts/feature-tests/exchange-features/Cargo.toml +++ b/contracts/feature-tests/exchange-features/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "exchange-features" version = "0.0.0" -authors = ["you"] +authors = ["Alin-Marius Cruceat "] edition = "2021" publish = false From 18524321fc842200f7a5c9b5969cd02cff0eacb0 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Thu, 28 Mar 2024 11:55:37 +0100 Subject: [PATCH 211/461] promises-features migration to new proxy --- .../src/call_promise_direct.rs | 3 - .../promises-features/src/call_promises.rs | 30 +- .../promises-features/src/call_promises_bt.rs | 18 +- .../promises-features/src/call_sync_bt.rs | 20 +- .../promises-features/src/promises_main.rs | 1 + .../promises-features/src/vault_proxy.rs | 278 ++++++++++++++++++ .../composability/vault/sc-config.toml | 5 +- 7 files changed, 320 insertions(+), 35 deletions(-) create mode 100644 contracts/feature-tests/composability/promises-features/src/vault_proxy.rs diff --git a/contracts/feature-tests/composability/promises-features/src/call_promise_direct.rs b/contracts/feature-tests/composability/promises-features/src/call_promise_direct.rs index 8ce47a10c3..7ae949e214 100644 --- a/contracts/feature-tests/composability/promises-features/src/call_promise_direct.rs +++ b/contracts/feature-tests/composability/promises-features/src/call_promise_direct.rs @@ -3,9 +3,6 @@ multiversx_sc::imports!(); /// Test contract for investigating the new async call framework. #[multiversx_sc::module] pub trait CallPromisesDirectModule { - #[proxy] - fn vault_proxy(&self) -> vault::Proxy; - #[endpoint] #[payable("*")] fn promise_raw_single_token( diff --git a/contracts/feature-tests/composability/promises-features/src/call_promises.rs b/contracts/feature-tests/composability/promises-features/src/call_promises.rs index 616d8c5cb0..6f2dc17287 100644 --- a/contracts/feature-tests/composability/promises-features/src/call_promises.rs +++ b/contracts/feature-tests/composability/promises-features/src/call_promises.rs @@ -1,24 +1,26 @@ multiversx_sc::imports!(); -use crate::common::{self, CallbackData}; +use crate::{ + common::{self, CallbackData}, + vault_proxy, +}; #[multiversx_sc::module] pub trait CallPromisesModule: common::CommonModule { - #[proxy] - fn vault_proxy(&self) -> vault::Proxy; - #[endpoint] #[payable("*")] fn forward_promise_accept_funds(&self, to: ManagedAddress) { let payment = self.call_value().egld_or_single_esdt(); let gas_limit = self.blockchain().get_gas_left() / 2; - self.vault_proxy() - .contract(to) + + self.tx() + .to(&to) + .typed(vault_proxy::VaultProxy) .accept_funds() - .with_egld_or_single_esdt_transfer(payment) .with_gas_limit(gas_limit) - .async_call_promise() - .register_promise() + .with_egld_or_single_esdt_transfer(payment) + .async_call() + .register_promise(); } #[endpoint] @@ -30,14 +32,16 @@ pub trait CallPromisesModule: common::CommonModule { amount: BigUint, ) { let gas_limit = self.blockchain().get_gas_left() - 20_000_000; - self.vault_proxy() - .contract(to) + + self.tx() + .to(&to) + .typed(vault_proxy::VaultProxy) .retrieve_funds(token, token_nonce, amount) .with_gas_limit(gas_limit) - .async_call_promise() + .async_call() .with_callback(self.callbacks().retrieve_funds_callback()) .with_extra_gas_for_callback(10_000_000) - .register_promise() + .register_promise(); } #[promises_callback] diff --git a/contracts/feature-tests/composability/promises-features/src/call_promises_bt.rs b/contracts/feature-tests/composability/promises-features/src/call_promises_bt.rs index e1e2188852..6f5d85179e 100644 --- a/contracts/feature-tests/composability/promises-features/src/call_promises_bt.rs +++ b/contracts/feature-tests/composability/promises-features/src/call_promises_bt.rs @@ -1,13 +1,12 @@ multiversx_sc::imports!(); multiversx_sc::derive_imports!(); -use crate::common::{self, CallbackData}; - +use crate::{ + common::{self, CallbackData}, + vault_proxy, +}; #[multiversx_sc::module] pub trait CallPromisesBackTransfersModule: common::CommonModule { - #[proxy] - fn vault_proxy(&self) -> vault::Proxy; - #[endpoint] fn forward_promise_retrieve_funds_back_transfers( &self, @@ -17,14 +16,15 @@ pub trait CallPromisesBackTransfersModule: common::CommonModule { amount: BigUint, ) { let gas_limit = self.blockchain().get_gas_left() - 20_000_000; - self.vault_proxy() - .contract(to) + self.tx() + .to(&to) + .typed(vault_proxy::VaultProxy) .retrieve_funds(token, token_nonce, amount) .with_gas_limit(gas_limit) - .async_call_promise() + .async_call() .with_callback(self.callbacks().retrieve_funds_back_transfers_callback()) .with_extra_gas_for_callback(10_000_000) - .register_promise() + .register_promise(); } #[promises_callback] diff --git a/contracts/feature-tests/composability/promises-features/src/call_sync_bt.rs b/contracts/feature-tests/composability/promises-features/src/call_sync_bt.rs index d3cc048ccc..1d228d30cd 100644 --- a/contracts/feature-tests/composability/promises-features/src/call_sync_bt.rs +++ b/contracts/feature-tests/composability/promises-features/src/call_sync_bt.rs @@ -1,11 +1,10 @@ +use crate::vault_proxy; + multiversx_sc::imports!(); /// Not directly related to promises, but this contract already has the setup for VM 1.5. #[multiversx_sc::module] pub trait BackTransfersFeatureModule { - #[proxy] - fn vault_proxy(&self) -> vault::Proxy; - #[endpoint] fn forward_sync_retrieve_funds_bt( &self, @@ -15,8 +14,9 @@ pub trait BackTransfersFeatureModule { amount: BigUint, ) { let ((), back_transfers) = self - .vault_proxy() - .contract(to) + .tx() + .to(&to) + .typed(vault_proxy::VaultProxy) .retrieve_funds(token, token_nonce, amount) .execute_on_dest_context_with_back_transfers::<()>(); @@ -40,8 +40,9 @@ pub trait BackTransfersFeatureModule { amount: BigUint, ) { let ((), back_transfers) = self - .vault_proxy() - .contract(to.clone()) + .tx() + .to(&to) + .typed(vault_proxy::VaultProxy) .retrieve_funds(token.clone(), token_nonce, amount.clone()) .execute_on_dest_context_with_back_transfers::<()>(); @@ -56,8 +57,9 @@ pub trait BackTransfersFeatureModule { ); let ((), back_transfers) = self - .vault_proxy() - .contract(to) + .tx() + .to(&to) + .typed(vault_proxy::VaultProxy) .retrieve_funds(token, token_nonce, amount) .execute_on_dest_context_with_back_transfers::<()>(); diff --git a/contracts/feature-tests/composability/promises-features/src/promises_main.rs b/contracts/feature-tests/composability/promises-features/src/promises_main.rs index 11eb5d3935..ddcc00d965 100644 --- a/contracts/feature-tests/composability/promises-features/src/promises_main.rs +++ b/contracts/feature-tests/composability/promises-features/src/promises_main.rs @@ -6,6 +6,7 @@ mod call_promises; mod call_promises_bt; pub mod call_sync_bt; mod common; +pub mod vault_proxy; multiversx_sc::imports!(); diff --git a/contracts/feature-tests/composability/promises-features/src/vault_proxy.rs b/contracts/feature-tests/composability/promises-features/src/vault_proxy.rs new file mode 100644 index 0000000000..f04735e6a5 --- /dev/null +++ b/contracts/feature-tests/composability/promises-features/src/vault_proxy.rs @@ -0,0 +1,278 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(dead_code)] +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +pub struct VaultProxy; + +impl TxProxyTrait for VaultProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = VaultProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + VaultProxyMethods { wrapped_tx: tx } + } +} + +pub struct VaultProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl VaultProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init< + Arg0: CodecInto>>, + >( + self, + opt_arg_to_echo: Arg0, + ) -> TxProxyDeploy>> { + self.wrapped_tx + .raw_deploy() + .argument(&opt_arg_to_echo) + .original_result() + } +} + +#[rustfmt::skip] +impl VaultProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn upgrade< + Arg0: CodecInto>>, + >( + self, + opt_arg_to_echo: Arg0, + ) -> TxProxyUpgrade>>> { + self.wrapped_tx + .raw_upgrade() + .argument(&opt_arg_to_echo) + .original_result() + } +} + +#[rustfmt::skip] +impl VaultProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn echo_arguments< + Arg0: CodecInto>>, + >( + self, + args: Arg0, + ) -> TxProxyCall>> { + self.wrapped_tx + .raw_call() + .function_name("echo_arguments") + .argument(&args) + .original_result() + } + + pub fn echo_arguments_without_storage< + Arg0: CodecInto>>, + >( + self, + args: Arg0, + ) -> TxProxyCall>> { + self.wrapped_tx + .raw_call() + .function_name("echo_arguments_without_storage") + .argument(&args) + .original_result() + } + + pub fn echo_caller( + self, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call() + .function_name("echo_caller") + .original_result() + } + + pub fn accept_funds( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("accept_funds") + .original_result() + } + + pub fn accept_funds_echo_payment( + self, + ) -> TxProxyCall, MultiValueEncoded>>> { + self.wrapped_tx + .raw_call() + .function_name("accept_funds_echo_payment") + .original_result() + } + + pub fn accept_funds_single_esdt_transfer( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("accept_funds_single_esdt_transfer") + .original_result() + } + + pub fn reject_funds( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("reject_funds") + .original_result() + } + + pub fn retrieve_funds_with_transfer_exec< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>>, + >( + self, + token: Arg0, + amount: Arg1, + opt_receive_func: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("retrieve_funds_with_transfer_exec") + .argument(&token) + .argument(&amount) + .argument(&opt_receive_func) + .original_result() + } + + pub fn retrieve_funds_promises< + Arg0: CodecInto>, + Arg1: CodecInto>>, + >( + self, + back_transfers: Arg0, + back_transfer_value: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("retrieve_funds_promises") + .argument(&back_transfers) + .argument(&back_transfer_value) + .original_result() + } + + pub fn retrieve_funds< + Arg0: CodecInto>, + Arg1: CodecInto, + Arg2: CodecInto>, + >( + self, + token: Arg0, + nonce: Arg1, + amount: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("retrieve_funds") + .argument(&token) + .argument(&nonce) + .argument(&amount) + .original_result() + } + + pub fn retrieve_multi_funds_async< + Arg0: CodecInto, u64, BigUint>>>, + >( + self, + token_payments: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("retrieve_multi_funds_async") + .argument(&token_payments) + .original_result() + } + + pub fn burn_and_create_retrive_async( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("burn_and_create_retrive_async") + .original_result() + } + + pub fn get_owner_address( + self, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call() + .function_name("get_owner_address") + .original_result() + } + + /// We already leave a trace of the calls using the event logs; + /// this additional counter has the role of showing that storage also gets saved correctly. + pub fn call_counts< + Arg0: CodecInto>, + >( + self, + endpoint: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("call_counts") + .argument(&endpoint) + .original_result() + } + + pub fn num_called_retrieve_funds_promises( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("num_called_retrieve_funds_promises") + .original_result() + } + + pub fn num_async_calls_sent_from_child( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("num_async_calls_sent_from_child") + .original_result() + } +} diff --git a/contracts/feature-tests/composability/vault/sc-config.toml b/contracts/feature-tests/composability/vault/sc-config.toml index 33b8945873..969ed9c2a3 100644 --- a/contracts/feature-tests/composability/vault/sc-config.toml +++ b/contracts/feature-tests/composability/vault/sc-config.toml @@ -1,6 +1,9 @@ [settings] main = "main" -proxy-paths = ["../forwarder/src/vault_proxy.rs"] +proxy-paths = [ + "../forwarder/src/vault_proxy.rs", + "../promises-features/src/vault_proxy.rs", +] [contracts.main] name = "vault" From d710bb91615b084dbdaae901cddc61ee96b1b7f3 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 28 Mar 2024 13:08:10 +0200 Subject: [PATCH 212/461] proxy gen - add path to struct and enums from different crates than proxy --- .../feature-tests/abi-tester/src/abi_proxy.rs | 115 ++++++++----- framework/derive/src/type_abi_derive.rs | 20 +-- .../contract/generate_proxy/proxy_gen_main.rs | 6 +- .../generate_proxy/proxy_gen_struct_enum.rs | 156 ++++++++++++++---- .../generate_proxy/proxy_sc_functions_gen.rs | 84 ++++++---- 5 files changed, 253 insertions(+), 128 deletions(-) diff --git a/contracts/feature-tests/abi-tester/src/abi_proxy.rs b/contracts/feature-tests/abi-tester/src/abi_proxy.rs index 8759f224d8..c9c878010d 100644 --- a/contracts/feature-tests/abi-tester/src/abi_proxy.rs +++ b/contracts/feature-tests/abi-tester/src/abi_proxy.rs @@ -1,7 +1,10 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + //////////////////////////////////////////////////// ////////////////// AUTO-GENERATED ////////////////// //////////////////////////////////////////////////// +#![allow(dead_code)] #![allow(clippy::all)] use multiversx_sc::proxy_imports::*; @@ -57,6 +60,32 @@ where } } +#[rustfmt::skip] +impl AbiTesterProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + /// Upgrade constructor. + pub fn upgrade< + Arg0: CodecInto, + Arg1: CodecInto, + >( + self, + _constructor_arg_1: Arg0, + _constructor_arg_2: Arg1, + ) -> TxProxyUpgrade { + self.wrapped_tx + .raw_upgrade() + .argument(&_constructor_arg_1) + .argument(&_constructor_arg_2) + .original_result() + } +} + #[rustfmt::skip] impl AbiTesterProxyMethods where @@ -403,7 +432,8 @@ pub struct AbiTestType { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested01 {} +pub struct OnlyShowsUpAsNested01 { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested02 { @@ -415,14 +445,19 @@ pub enum AbiEnum { Nothing, Something(i32), SomethingMore(u8, OnlyShowsUpAsNested08), - SomeStruct { a: u16, b: OnlyShowsUpAsNested09 }, + SomeStruct { + a: u16, + b: OnlyShowsUpAsNested09, + }, } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested08 {} +pub struct OnlyShowsUpAsNested08 { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested09 {} +pub struct OnlyShowsUpAsNested09 { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct AbiManagedType @@ -435,52 +470,36 @@ where } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested03 {} +pub struct OnlyShowsUpAsNested03 { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested04 {} +pub struct OnlyShowsUpAsNested04 { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested05 {} +pub struct OnlyShowsUpAsNested05 { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested06 {} +pub struct OnlyShowsUpAsNested06 { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested07 {} - -#[derive(TopDecode, TopEncode, NestedDecode, NestedEncode, Clone, PartialEq, Eq, Debug, Copy)] -pub enum EsdtLocalRole { - None, - Mint, - Burn, - NftCreate, - NftAddQuantity, - NftBurn, - NftAddUri, - NftUpdateAttributes, - Transfer, -} - -#[derive( - TopDecode, TopEncode, NestedDecode, NestedEncode, Clone, PartialEq, Eq, Debug, ManagedVecItem, -)] -pub enum EsdtTokenType { - Fungible, - NonFungible, - SemiFungible, - Meta, - Invalid, +pub struct OnlyShowsUpAsNested07 { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInSingleValueMapper {} +pub struct OnlyShowsUpAsNestedInSingleValueMapper { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInVec {} +pub struct OnlyShowsUpAsNestedInVec { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInArrayVec {} +pub struct OnlyShowsUpAsNestedInArrayVec { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, ManagedVecItem)] pub struct AbiManagedVecItem { @@ -489,22 +508,28 @@ pub struct AbiManagedVecItem { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInArray {} +pub struct OnlyShowsUpAsNestedInArray { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInBox {} +pub struct OnlyShowsUpAsNestedInBox { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInBoxedSlice {} +pub struct OnlyShowsUpAsNestedInBoxedSlice { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInRef {} +pub struct OnlyShowsUpAsNestedInRef { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInSlice {} +pub struct OnlyShowsUpAsNestedInSlice { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInOption {} +pub struct OnlyShowsUpAsNestedInOption { +} #[derive(TopEncode, TopDecode)] pub struct OnlyShowsUpInEsdtAttr { @@ -512,7 +537,8 @@ pub struct OnlyShowsUpInEsdtAttr { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested10 {} +pub struct OnlyShowsUpAsNested10 { +} #[derive(TopEncode, TopDecode)] pub enum ExplicitDiscriminant { @@ -529,5 +555,8 @@ pub enum ExplicitDiscriminantMixed { Unit, Tuple(u16), Five, - Struct { a: u8, b: u16 }, + Struct { + a: u8, + b: u16, + }, } diff --git a/framework/derive/src/type_abi_derive.rs b/framework/derive/src/type_abi_derive.rs index 56bd71d600..6799aac9d2 100644 --- a/framework/derive/src/type_abi_derive.rs +++ b/framework/derive/src/type_abi_derive.rs @@ -1,7 +1,7 @@ use crate::parse::attributes::extract_macro_attributes; use super::parse::attributes::extract_doc; -use quote::{quote, ToTokens}; +use quote::quote; pub struct ExplicitDiscriminant { pub variant_index: usize, @@ -122,17 +122,11 @@ pub fn type_abi_derive(input: proc_macro::TokenStream) -> proc_macro2::TokenStre let name = &ast.ident; let name_str = name.to_string(); let (impl_generics, ty_generics, where_clause) = &ast.generics.split_for_impl(); - let name_rust = extract_rust_type(ty_generics, name_str.clone()); quote! { impl #impl_generics multiversx_sc::abi::TypeAbi for #name #ty_generics #where_clause { fn type_name() -> multiversx_sc::abi::TypeName { #name_str.into() } - - fn type_name_rust() -> multiversx_sc::abi::TypeName { - #name_rust.into() - } - #type_description_impl } } @@ -189,15 +183,3 @@ pub fn get_discriminant( quote! { #next_value} } - -fn extract_rust_type(ty_generics: &syn::TypeGenerics<'_>, mut output_name: String) -> String { - let mut ty_generics_tokens = proc_macro2::TokenStream::new(); - ty_generics.to_tokens(&mut ty_generics_tokens); - - if ty_generics_tokens.to_string().is_empty() { - return output_name; - } - - output_name.push_str("<$API>"); - output_name -} diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs index 2c0f730eca..dfac04fd8f 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs @@ -35,5 +35,9 @@ fn write_proxy_to_file(mut file: File, abi: &ContractAbi) { write_impl_for_tx_proxy(&mut file, &abi.name); write_struct_tx_proxy_methods(&mut file, &abi.name); write_content(&mut file, abi.clone()); - write_types(&mut file, &abi.type_descriptions); + write_types( + &mut file, + &abi.type_descriptions, + abi.build_info.contract_crate.name, + ); } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs index b82b071e16..0d07cb4985 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs @@ -5,43 +5,79 @@ use multiversx_sc::abi::{ TypeDescriptionContainerImpl, }; +use crate::cmd::contract::generate_proxy::proxy_sc_functions_gen::adjust_type_name; + const ZERO: &str = "0"; +const UNCALLABLE_API: &str = "multiversx_sc::api::uncallable::UncallableApi"; /// Types defined in the framework don't need to be generated again in the proxy. const TYPES_FROM_FRAMEWORK: &[&str] = &[ - "EsdtTokenPayment<$API>", - "EgldOrEsdtTokenPayment<$API>", - "EsdtTokenData<$API>", - "EgldOrEsdtTokenIdentifier<$API>", - "EgldOrEsdtTokenPayment<$API>", - "EgldOrMultiEsdtPayment<$API>", - "EsdtTokenData<$API>", + "EsdtTokenPayment", + "EgldOrEsdtTokenPayment", + "EsdtTokenData", + "EgldOrEsdtTokenIdentifier", + "EgldOrEsdtTokenPayment", + "EgldOrMultiEsdtPayment", + "EsdtTokenData", + "EsdtLocalRole", ]; -pub(crate) fn write_types(file: &mut File, types: &TypeDescriptionContainerImpl) { +pub(crate) fn write_types( + file: &mut File, + types: &TypeDescriptionContainerImpl, + proxy_crate: &str, +) { for (_, type_description) in &types.0 { - if TYPES_FROM_FRAMEWORK.contains(&type_description.names.rust.as_str()) { + let type_rust_name = type_description.names.rust.replace(UNCALLABLE_API, "Api"); + let type_name = type_rust_name.split("::").last().unwrap(); + + println!( + "1. inital {} | 2. altered {}", + type_description.names.rust, + adjust_type_name(&type_description.names.rust, proxy_crate) + ); + + if TYPES_FROM_FRAMEWORK.contains(&type_name) { + continue; + } + + if proxy_crate != extract_struct_crate(type_description.names.rust.as_str()) { continue; } match &type_description.contents { - TypeContents::Enum(enum_variants) => write_enum(file, enum_variants, type_description), - TypeContents::Struct(struct_fields) => { - write_struct(file, struct_fields, type_description) - }, + TypeContents::Enum(enum_variants) => write_enum( + file, + enum_variants, + type_description, + type_name, + proxy_crate, + ), + TypeContents::Struct(struct_fields) => write_struct( + file, + struct_fields, + type_description, + type_name, + proxy_crate, + ), TypeContents::NotSpecified => {}, TypeContents::ExplicitEnum(_) => {}, } } } -fn start_write_type(file: &mut File, type_type: &str, type_description: &TypeDescription) { +fn start_write_type( + file: &mut File, + type_type: &str, + type_description: &TypeDescription, + name: &str, +) { writeln!(file).unwrap(); - let type_name = type_description.names.rust.replace("$API", "Api"); + // let type_name = name.replace("multiversx_sc::api::uncallable::UncallableApi", "Api"); write_macro_attributes(file, &type_description.macro_attributes); - write!(file, r#"pub {type_type} {type_name}"#).unwrap(); + write!(file, r#"pub {type_type} {name}"#).unwrap(); - if type_name.contains("") { + if name.contains("") { writeln!( file, r#" @@ -60,17 +96,24 @@ fn write_struct( file: &mut File, struct_fields: &Vec, type_description: &TypeDescription, + name: &str, + proxy_crate: &str, ) { - start_write_type(file, "struct", type_description); + start_write_type(file, "struct", type_description, name); for field in struct_fields { - writeln!( - file, - " pub {}: {},", - field.name, - field.field_type.rust.replace("$API", "Api") - ) - .unwrap(); + let field_rust_type = field.field_type.rust.replace("$API", "Api"); + if proxy_crate != extract_struct_crate(type_description.names.rust.as_str()) { + writeln!(file, " pub {}: {},", field.name, field_rust_type).unwrap() + } else { + writeln!( + file, + " pub {}: {},", + field.name, + clean_paths(proxy_crate, &field_rust_type) + ) + .unwrap(); + } } writeln!(file, "}}").unwrap(); @@ -80,8 +123,10 @@ fn write_enum( file: &mut File, enum_variants: &Vec, type_description: &TypeDescription, + name: &str, + proxy_crate: &str, ) { - start_write_type(file, "enum", type_description); + start_write_type(file, "enum", type_description, name); for variant in enum_variants { write!(file, " {}", variant.name).unwrap(); @@ -91,9 +136,9 @@ fn write_enum( } if variant.fields[0].name == ZERO { - write_tuple_in_variant(file, &variant.fields); + write_tuple_in_variant(file, &variant.fields, proxy_crate); } else { - write_struct_in_variant(file, &variant.fields); + write_struct_in_variant(file, &variant.fields, proxy_crate); } } writeln!(file, "}}").unwrap(); @@ -107,7 +152,7 @@ fn write_macro_attributes(file: &mut File, macro_attributes: &[String]) { } } -fn write_struct_in_variant(file: &mut File, fields: &[StructFieldDescription]) { +fn write_struct_in_variant(file: &mut File, fields: &[StructFieldDescription], proxy_crate: &str) { writeln!(file, " {{").unwrap(); for field in fields { @@ -115,7 +160,7 @@ fn write_struct_in_variant(file: &mut File, fields: &[StructFieldDescription]) { file, " {}: {},", field.name, - field.field_type.rust.replace("$API", "Api") + adjust_type_name(&field.field_type.rust.replace("$API", "Api"), proxy_crate) ) .unwrap(); } @@ -123,13 +168,60 @@ fn write_struct_in_variant(file: &mut File, fields: &[StructFieldDescription]) { writeln!(file, " }},").unwrap(); } -fn write_tuple_in_variant(file: &mut File, fields: &[StructFieldDescription]) { +fn write_tuple_in_variant(file: &mut File, fields: &[StructFieldDescription], proxy_crate: &str) { write!(file, "(").unwrap(); write!(file, "{}", fields[0].field_type.rust.replace("$API", "Api")).unwrap(); for field in &fields[1..] { - write!(file, ", {}", field.field_type.rust.replace("$API", "Api")).unwrap(); + write!( + file, + ", {}", + adjust_type_name(&field.field_type.rust.replace("$API", "Api"), proxy_crate) + ) + .unwrap(); } writeln!(file, "),").unwrap(); } + +fn extract_struct_crate(struct_path: &str) -> String { + let struct_crate_name = struct_path + .replace('_', "-") + .replace(UNCALLABLE_API, "Api") + .to_string(); + let crate_name = struct_crate_name + .split("::") + .next() + .unwrap_or_else(|| &struct_crate_name); + crate_name.to_string() +} + +pub(crate) fn clean_paths(proxy_crate: &str, rust_type: &str) -> String { + let delimiters = "<>,()[] "; + let words: Vec<&str> = rust_type + .split(|c| delimiters.contains(c)) + .filter(|s| !s.is_empty()) + .collect(); + let mut words_replacer: Vec = Vec::new(); + for word in &words { + let type_rust_name = word.split("::").last().unwrap().to_string(); + // println!("###### {}", type_rust_name); + if proxy_crate == extract_struct_crate(word) + || TYPES_FROM_FRAMEWORK.contains(&type_rust_name.as_str()) + { + words_replacer.push(type_rust_name); + } else { + words_replacer.push(word.to_string()); + } + } + + let mut rust_type_with_cleaned_path: String = rust_type.to_string().clone(); + for index in 0..words.len() { + rust_type_with_cleaned_path = rust_type_with_cleaned_path.replace( + words.get(index).unwrap(), + words_replacer.get(index).unwrap(), + ); + } + + rust_type_with_cleaned_path +} diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs index 00ec38b490..5029e8790c 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs @@ -2,7 +2,7 @@ use std::{fs::File, io::Write}; use multiversx_sc::abi::{ContractAbi, EndpointAbi, InputAbi, OutputAbi}; -use super::proxy_naming::proxy_methods_type_name; +use super::{proxy_gen_struct_enum::clean_paths, proxy_naming::proxy_methods_type_name}; pub(crate) fn write_content(file: &mut File, abi: ContractAbi) { write_header_impl_constructor(file, &abi.name); @@ -10,7 +10,11 @@ pub(crate) fn write_content(file: &mut File, abi: ContractAbi) { if i > 0 { writeln!(file).unwrap(); } - write_constructor_header(file, constructor_abi.clone()); + write_constructor_header( + file, + constructor_abi.clone(), + abi.build_info.contract_crate.name, + ); write_constructor_content(file, constructor_abi.inputs); write_end_of_function(file); } @@ -22,7 +26,11 @@ pub(crate) fn write_content(file: &mut File, abi: ContractAbi) { if i > 0 { writeln!(file).unwrap(); } - write_upgrade_constructor_header(file, upgrade_abi.clone()); + write_upgrade_constructor_header( + file, + upgrade_abi.clone(), + abi.build_info.contract_crate.name, + ); write_upgrade_constructor_content(file, upgrade_abi.inputs); write_end_of_function(file); } @@ -34,7 +42,11 @@ pub(crate) fn write_content(file: &mut File, abi: ContractAbi) { if i > 0 { writeln!(file).unwrap(); } - write_endpoint_header(file, endpoint_abi.clone()); + write_endpoint_header( + file, + endpoint_abi.clone(), + abi.build_info.contract_crate.name, + ); write_endpoint_content(file, endpoint_abi.name, endpoint_abi.inputs); write_end_of_function(file); } @@ -95,25 +107,29 @@ where .unwrap(); } -fn write_constructor_header(file: &mut File, constructor_abi: EndpointAbi) { - write_fn_signature(file, constructor_abi.clone()); - write_constructor_output(file, constructor_abi.outputs); +fn write_constructor_header(file: &mut File, constructor_abi: EndpointAbi, proxy_crate: &str) { + write_fn_signature(file, constructor_abi.clone(), proxy_crate); + write_constructor_output(file, constructor_abi.outputs, proxy_crate); } -fn write_upgrade_constructor_header(file: &mut File, upgrade_constructor_abi: EndpointAbi) { - write_fn_signature(file, upgrade_constructor_abi.clone()); - write_upgrade_constructor_output(file, upgrade_constructor_abi.outputs); +fn write_upgrade_constructor_header( + file: &mut File, + upgrade_constructor_abi: EndpointAbi, + proxy_crate: &str, +) { + write_fn_signature(file, upgrade_constructor_abi.clone(), proxy_crate); + write_upgrade_constructor_output(file, upgrade_constructor_abi.outputs, proxy_crate); } -fn write_endpoint_header(file: &mut File, constructor_abi: EndpointAbi) { - write_fn_signature(file, constructor_abi.clone()); - write_endpoint_output(file, constructor_abi.outputs); +fn write_endpoint_header(file: &mut File, constructor_abi: EndpointAbi, proxy_crate: &str) { + write_fn_signature(file, constructor_abi.clone(), proxy_crate); + write_endpoint_output(file, constructor_abi.outputs, proxy_crate); } -fn write_fn_signature(file: &mut File, endpoint_abi: EndpointAbi) { +fn write_fn_signature(file: &mut File, endpoint_abi: EndpointAbi, proxy_crate: &str) { write_endpoint_docs(file, endpoint_abi.docs); write_function_header_endpoint(file, endpoint_abi.rust_method_name); - write_args(file, endpoint_abi.inputs.clone()); + write_args(file, endpoint_abi.inputs.clone(), proxy_crate); write_parameters(file, endpoint_abi.inputs); } @@ -126,26 +142,26 @@ fn write_parameters(file: &mut File, inputs: Vec) { write!(file, " ) ").unwrap(); } -fn write_constructor_output(file: &mut File, outputs: Vec) { +fn write_constructor_output(file: &mut File, outputs: Vec, proxy_crate: &str) { write!(file, "-> TxProxyDeploy {{").unwrap(); } -fn write_upgrade_constructor_output(file: &mut File, outputs: Vec) { +fn write_upgrade_constructor_output(file: &mut File, outputs: Vec, proxy_crate: &str) { write!(file, "-> TxProxyUpgrade {{").unwrap(); } -fn write_endpoint_output(file: &mut File, outputs: Vec) { +fn write_endpoint_output(file: &mut File, outputs: Vec, proxy_crate: &str) { write!(file, "-> TxProxyCall {{").unwrap(); } @@ -203,7 +219,7 @@ fn write_endpoint_docs(file: &mut File, docs: Vec) { } } -fn write_args(file: &mut File, inputs: Vec) { +fn write_args(file: &mut File, inputs: Vec, proxy_crate: &str) { if inputs.is_empty() { return; } @@ -211,14 +227,14 @@ fn write_args(file: &mut File, inputs: Vec) { writeln!(file, "<").unwrap(); for (index, input) in inputs.iter().enumerate() { - write_argument(file, index, &input.type_names.rust); + write_argument(file, index, &input.type_names.rust, proxy_crate); } write!(file, " >").unwrap(); } -fn write_argument(file: &mut File, index: usize, rust_name: &str) { - let adjusted = adjust_type_name(rust_name); +fn write_argument(file: &mut File, index: usize, rust_name: &str, proxy_crate: &str) { + let adjusted = adjust_type_name(rust_name, proxy_crate); writeln!(file, " Arg{index}: CodecInto<{adjusted}>,").unwrap(); } @@ -226,20 +242,22 @@ fn write_end_of_function(file: &mut File) { writeln!(file, " }}").unwrap(); } -fn adjust_type_name(original_rust_name: &str) -> String { - original_rust_name - .replace("multiversx_sc::api::uncallable::UncallableApi", "Env::Api") - .replace("$API", "Env::Api") - .to_string() +pub fn adjust_type_name(original_rust_name: &str, proxy_crate: &str) -> String { + clean_paths( + proxy_crate, + &original_rust_name + .replace("multiversx_sc::api::uncallable::UncallableApi", "Env::Api") + .replace("$API", "Env::Api"), + ) } -fn parse_and_write_outputs(file: &mut File, outputs: Vec) { +fn parse_and_write_outputs(file: &mut File, outputs: Vec, proxy_crate: &str) { match outputs.len() { 0 => { write!(file, "()").unwrap(); }, 1 => { - let adjusted = adjust_type_name(&outputs[0].type_names.rust); + let adjusted = adjust_type_name(&outputs[0].type_names.rust, proxy_crate); write!(file, "{adjusted}").unwrap(); }, _ => { @@ -248,7 +266,7 @@ fn parse_and_write_outputs(file: &mut File, outputs: Vec) { if i > 0 { write!(file, ", ").unwrap(); } - let adjusted = adjust_type_name(&output.type_names.rust); + let adjusted = adjust_type_name(&output.type_names.rust, proxy_crate); write!(file, "{adjusted}").unwrap(); } write!(file, ">").unwrap(); From 2c455bf9027b19df39a9205984b3fc1ef7daa6de Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 28 Mar 2024 14:43:51 +0200 Subject: [PATCH 213/461] proxy gen - cleanup --- .../generate_proxy/proxy_gen_struct_enum.rs | 65 +++++++++---------- 1 file changed, 31 insertions(+), 34 deletions(-) diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs index 0d07cb4985..7b32115081 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs @@ -5,10 +5,7 @@ use multiversx_sc::abi::{ TypeDescriptionContainerImpl, }; -use crate::cmd::contract::generate_proxy::proxy_sc_functions_gen::adjust_type_name; - const ZERO: &str = "0"; -const UNCALLABLE_API: &str = "multiversx_sc::api::uncallable::UncallableApi"; /// Types defined in the framework don't need to be generated again in the proxy. const TYPES_FROM_FRAMEWORK: &[&str] = &[ @@ -28,20 +25,12 @@ pub(crate) fn write_types( proxy_crate: &str, ) { for (_, type_description) in &types.0 { - let type_rust_name = type_description.names.rust.replace(UNCALLABLE_API, "Api"); - let type_name = type_rust_name.split("::").last().unwrap(); - - println!( - "1. inital {} | 2. altered {}", - type_description.names.rust, - adjust_type_name(&type_description.names.rust, proxy_crate) - ); - - if TYPES_FROM_FRAMEWORK.contains(&type_name) { + if proxy_crate != extract_struct_crate(type_description.names.rust.as_str()) { continue; } - if proxy_crate != extract_struct_crate(type_description.names.rust.as_str()) { + let type_name = adjust_type_name(&type_description.names.rust, proxy_crate); + if TYPES_FROM_FRAMEWORK.contains(&type_name.as_str()) { continue; } @@ -50,14 +39,14 @@ pub(crate) fn write_types( file, enum_variants, type_description, - type_name, + &type_name, proxy_crate, ), TypeContents::Struct(struct_fields) => write_struct( file, struct_fields, type_description, - type_name, + &type_name, proxy_crate, ), TypeContents::NotSpecified => {}, @@ -73,7 +62,6 @@ fn start_write_type( name: &str, ) { writeln!(file).unwrap(); - // let type_name = name.replace("multiversx_sc::api::uncallable::UncallableApi", "Api"); write_macro_attributes(file, &type_description.macro_attributes); write!(file, r#"pub {type_type} {name}"#).unwrap(); @@ -102,18 +90,13 @@ fn write_struct( start_write_type(file, "struct", type_description, name); for field in struct_fields { - let field_rust_type = field.field_type.rust.replace("$API", "Api"); - if proxy_crate != extract_struct_crate(type_description.names.rust.as_str()) { - writeln!(file, " pub {}: {},", field.name, field_rust_type).unwrap() - } else { - writeln!( - file, - " pub {}: {},", - field.name, - clean_paths(proxy_crate, &field_rust_type) - ) - .unwrap(); - } + writeln!( + file, + " pub {}: {},", + field.name, + adjust_type_name(&field.field_type.rust, proxy_crate) + ) + .unwrap(); } writeln!(file, "}}").unwrap(); @@ -160,7 +143,7 @@ fn write_struct_in_variant(file: &mut File, fields: &[StructFieldDescription], p file, " {}: {},", field.name, - adjust_type_name(&field.field_type.rust.replace("$API", "Api"), proxy_crate) + adjust_type_name(&field.field_type.rust, proxy_crate) ) .unwrap(); } @@ -170,13 +153,18 @@ fn write_struct_in_variant(file: &mut File, fields: &[StructFieldDescription], p fn write_tuple_in_variant(file: &mut File, fields: &[StructFieldDescription], proxy_crate: &str) { write!(file, "(").unwrap(); - write!(file, "{}", fields[0].field_type.rust.replace("$API", "Api")).unwrap(); + write!( + file, + "{}", + adjust_type_name(&fields[0].field_type.rust, proxy_crate) + ) + .unwrap(); for field in &fields[1..] { write!( file, ", {}", - adjust_type_name(&field.field_type.rust.replace("$API", "Api"), proxy_crate) + adjust_type_name(&field.field_type.rust, proxy_crate) ) .unwrap(); } @@ -187,7 +175,7 @@ fn write_tuple_in_variant(file: &mut File, fields: &[StructFieldDescription], pr fn extract_struct_crate(struct_path: &str) -> String { let struct_crate_name = struct_path .replace('_', "-") - .replace(UNCALLABLE_API, "Api") + .replace("multiversx_sc::api::uncallable::UncallableApi", "Api") .to_string(); let crate_name = struct_crate_name .split("::") @@ -202,10 +190,10 @@ pub(crate) fn clean_paths(proxy_crate: &str, rust_type: &str) -> String { .split(|c| delimiters.contains(c)) .filter(|s| !s.is_empty()) .collect(); + let mut words_replacer: Vec = Vec::new(); for word in &words { let type_rust_name = word.split("::").last().unwrap().to_string(); - // println!("###### {}", type_rust_name); if proxy_crate == extract_struct_crate(word) || TYPES_FROM_FRAMEWORK.contains(&type_rust_name.as_str()) { @@ -225,3 +213,12 @@ pub(crate) fn clean_paths(proxy_crate: &str, rust_type: &str) -> String { rust_type_with_cleaned_path } + +pub fn adjust_type_name(original_rust_name: &str, proxy_crate: &str) -> String { + clean_paths( + proxy_crate, + &original_rust_name + .replace("multiversx_sc::api::uncallable::UncallableApi", "Api") + .replace("$API", "Api"), + ) +} From f5c4a4d239b09277b85a1a1aebf79a7e99716e95 Mon Sep 17 00:00:00 2001 From: Alin Cruceat Date: Thu, 28 Mar 2024 15:03:28 +0200 Subject: [PATCH 214/461] fix after review --- .../exchange-features/src/exchange_features.rs | 13 ++++--------- .../tests/exchange_features_blackbox_test.rs | 2 +- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/contracts/feature-tests/exchange-features/src/exchange_features.rs b/contracts/feature-tests/exchange-features/src/exchange_features.rs index 430e33840b..fd048e72c8 100644 --- a/contracts/feature-tests/exchange-features/src/exchange_features.rs +++ b/contracts/feature-tests/exchange-features/src/exchange_features.rs @@ -3,8 +3,6 @@ multiversx_sc::imports!(); multiversx_sc::derive_imports!(); -pub const FULL_VALUE_SUPPLY: u64 = 16; - #[derive( ManagedVecItem, TopEncode, @@ -26,17 +24,14 @@ impl FixedSupplyToken for TokenAttributes { } fn into_part(self, payment_amount: &BigUint) -> Self { - let new_amount = - self.rule_of_three_non_zero_result(payment_amount, &BigUint::from(FULL_VALUE_SUPPLY)); - TokenAttributes { - amount: new_amount.clone(), - } + let new_amount = self.rule_of_three_non_zero_result(payment_amount, &self.amount); + TokenAttributes { amount: new_amount } } } impl Mergeable for TokenAttributes { #[inline] - fn can_merge_with(&self, other: &Self) -> bool { - other.amount > 0u64 + fn can_merge_with(&self, _other: &Self) -> bool { + true } fn merge_with(&mut self, other: Self) { diff --git a/contracts/feature-tests/exchange-features/tests/exchange_features_blackbox_test.rs b/contracts/feature-tests/exchange-features/tests/exchange_features_blackbox_test.rs index 82bca1794b..6ea73fb3a6 100644 --- a/contracts/feature-tests/exchange-features/tests/exchange_features_blackbox_test.rs +++ b/contracts/feature-tests/exchange-features/tests/exchange_features_blackbox_test.rs @@ -78,6 +78,6 @@ fn exchange_features_blackbox_raw() { .from("address:owner") .to("sc:exchange-features") .function("get_supply") - .expect(TxExpect::ok().result("6")), + .expect(TxExpect::ok().result("3")), ); } From c4ae9765d3751deb4ac97d7162f8fdd88458edc8 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Thu, 28 Mar 2024 14:09:39 +0100 Subject: [PATCH 215/461] fix after review --- .../promises-features/src/call_promises.rs | 2 -- .../promises-features/src/call_sync_bt.rs | 15 +++++++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/contracts/feature-tests/composability/promises-features/src/call_promises.rs b/contracts/feature-tests/composability/promises-features/src/call_promises.rs index 6f2dc17287..2b116215cc 100644 --- a/contracts/feature-tests/composability/promises-features/src/call_promises.rs +++ b/contracts/feature-tests/composability/promises-features/src/call_promises.rs @@ -19,7 +19,6 @@ pub trait CallPromisesModule: common::CommonModule { .accept_funds() .with_gas_limit(gas_limit) .with_egld_or_single_esdt_transfer(payment) - .async_call() .register_promise(); } @@ -38,7 +37,6 @@ pub trait CallPromisesModule: common::CommonModule { .typed(vault_proxy::VaultProxy) .retrieve_funds(token, token_nonce, amount) .with_gas_limit(gas_limit) - .async_call() .with_callback(self.callbacks().retrieve_funds_callback()) .with_extra_gas_for_callback(10_000_000) .register_promise(); diff --git a/contracts/feature-tests/composability/promises-features/src/call_sync_bt.rs b/contracts/feature-tests/composability/promises-features/src/call_sync_bt.rs index 1d228d30cd..d31ac022dc 100644 --- a/contracts/feature-tests/composability/promises-features/src/call_sync_bt.rs +++ b/contracts/feature-tests/composability/promises-features/src/call_sync_bt.rs @@ -13,12 +13,13 @@ pub trait BackTransfersFeatureModule { token_nonce: u64, amount: BigUint, ) { - let ((), back_transfers) = self + let back_transfers = self .tx() .to(&to) .typed(vault_proxy::VaultProxy) .retrieve_funds(token, token_nonce, amount) - .execute_on_dest_context_with_back_transfers::<()>(); + .returns(ReturnsBackTransfers) + .sync_call(); require!( back_transfers.esdt_payments.len() == 1 || back_transfers.total_egld_amount != 0, @@ -39,12 +40,13 @@ pub trait BackTransfersFeatureModule { token_nonce: u64, amount: BigUint, ) { - let ((), back_transfers) = self + let back_transfers = self .tx() .to(&to) .typed(vault_proxy::VaultProxy) .retrieve_funds(token.clone(), token_nonce, amount.clone()) - .execute_on_dest_context_with_back_transfers::<()>(); + .returns(ReturnsBackTransfers) + .sync_call(); require!( back_transfers.esdt_payments.len() == 1 || back_transfers.total_egld_amount != 0, @@ -56,12 +58,13 @@ pub trait BackTransfersFeatureModule { &back_transfers.esdt_payments.into_multi_value(), ); - let ((), back_transfers) = self + let back_transfers = self .tx() .to(&to) .typed(vault_proxy::VaultProxy) .retrieve_funds(token, token_nonce, amount) - .execute_on_dest_context_with_back_transfers::<()>(); + .returns(ReturnsBackTransfers) + .sync_call(); require!( back_transfers.esdt_payments.len() == 1 || back_transfers.total_egld_amount != 0, From ccaa7abaf4c26224af9a15c7aceb08aafe4d6018 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Thu, 28 Mar 2024 15:09:51 +0100 Subject: [PATCH 216/461] proxy test first new proxy and migration to unified --- .../proxy-test-first/src/message_me_proxy.rs | 107 ++++++++++++++++++ .../proxy-test-first/src/pay_me_proxy.rs | 107 ++++++++++++++++++ .../proxy-test-first/src/proxy-test-first.rs | 87 ++++++-------- 3 files changed, 251 insertions(+), 50 deletions(-) create mode 100644 contracts/feature-tests/composability/proxy-test-first/src/message_me_proxy.rs create mode 100644 contracts/feature-tests/composability/proxy-test-first/src/pay_me_proxy.rs diff --git a/contracts/feature-tests/composability/proxy-test-first/src/message_me_proxy.rs b/contracts/feature-tests/composability/proxy-test-first/src/message_me_proxy.rs new file mode 100644 index 0000000000..ea01aa79d5 --- /dev/null +++ b/contracts/feature-tests/composability/proxy-test-first/src/message_me_proxy.rs @@ -0,0 +1,107 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(dead_code)] +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +pub struct MessageMeProxy; + +impl TxProxyTrait for MessageMeProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = MessageMeProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + MessageMeProxyMethods { wrapped_tx: tx } + } +} + +pub struct MessageMeProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl MessageMeProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init< + Arg0: CodecInto, + >( + self, + init_arg: Arg0, + ) -> TxProxyDeploy { + self.wrapped_tx + .raw_deploy() + .argument(&init_arg) + .original_result() + } +} + +#[rustfmt::skip] +impl MessageMeProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn upgrade( + self, + ) -> TxProxyUpgrade { + self.wrapped_tx + .raw_upgrade() + .original_result() + } +} + +#[rustfmt::skip] +impl MessageMeProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn message_me< + Arg0: CodecInto, + Arg1: CodecInto>, + Arg2: CodecInto>, + Arg3: CodecInto>, + >( + self, + arg1: Arg0, + arg2: Arg1, + arg3: Arg2, + arg4: Arg3, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("messageMe") + .argument(&arg1) + .argument(&arg2) + .argument(&arg3) + .argument(&arg4) + .original_result() + } +} diff --git a/contracts/feature-tests/composability/proxy-test-first/src/pay_me_proxy.rs b/contracts/feature-tests/composability/proxy-test-first/src/pay_me_proxy.rs new file mode 100644 index 0000000000..8cf9369cf9 --- /dev/null +++ b/contracts/feature-tests/composability/proxy-test-first/src/pay_me_proxy.rs @@ -0,0 +1,107 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(dead_code)] +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +pub struct PayMeProxy; + +impl TxProxyTrait for PayMeProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = PayMeProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + PayMeProxyMethods { wrapped_tx: tx } + } +} + +pub struct PayMeProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl PayMeProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init( + self, + ) -> TxProxyDeploy { + self.wrapped_tx + .raw_deploy() + .original_result() + } +} + +#[rustfmt::skip] +impl PayMeProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn upgrade( + self, + ) -> TxProxyUpgrade { + self.wrapped_tx + .raw_upgrade() + .original_result() + } +} + +#[rustfmt::skip] +impl PayMeProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn pay_me< + Arg0: CodecInto, + >( + self, + arg1: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("payMe") + .argument(&arg1) + .original_result() + } + + pub fn pay_me_with_result< + Arg0: CodecInto, + >( + self, + arg1: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("payMeWithResult") + .argument(&arg1) + .original_result() + } +} diff --git a/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs b/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs index 26cc9eb679..b3ddbf6d5e 100644 --- a/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs +++ b/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs @@ -4,46 +4,14 @@ multiversx_sc::imports!(); use hex_literal::hex; +pub mod message_me_proxy; +pub mod pay_me_proxy; + static HARDCODED_ADDRESS: [u8; 32] = hex!("fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe"); -mod pay_me_proxy { - multiversx_sc::imports!(); - - #[multiversx_sc::proxy] - pub trait PayMe { - #[payable("EGLD")] - #[endpoint(payMe)] - fn pay_me(&self, arg1: i64); - - #[payable("EGLD")] - #[endpoint(payMeWithResult)] - fn pay_me_with_result(&self, arg1: i64); - } -} - -mod message_me_proxy { - multiversx_sc::imports!(); - - #[multiversx_sc::proxy] - pub trait MessageMe { - #[init] - #[payable("EGLD")] - fn init(&self, init_arg: i32) -> i32; - - #[endpoint(messageMe)] - fn message_me(&self, arg1: i64, arg2: &BigUint, arg3: Vec, arg4: &ManagedAddress); - } -} - #[multiversx_sc::contract] pub trait ProxyTestFirst { - #[proxy] - fn pay_me_proxy(&self) -> pay_me_proxy::Proxy; - - #[proxy] - fn message_me_proxy(&self) -> message_me_proxy::Proxy; - #[storage_get("other_contract")] fn get_other_contract(&self) -> ManagedAddress; @@ -62,11 +30,26 @@ pub trait ProxyTestFirst { #[endpoint(deploySecondContract)] fn deploy_second_contract(&self, code: ManagedBuffer) -> i32 { let payment = self.call_value().egld_value(); + // let (address, init_result) = self + // .tx() + // .egld(payment) + // .raw_deploy() + // .code(code) + // .code_metadata(CodeMetadata::UPGRADEABLE) + // .argument(&123) + // .returns(ReturnsNewAddress) + // .returns(ReturnsResult) + // .sync_call(); + let (address, init_result) = self - .message_me_proxy() + .tx() + .typed(message_me_proxy::MessageMeProxy) .init(123) - .with_egld_transfer(payment.clone_value()) - .deploy_contract::(&code, CodeMetadata::UPGRADEABLE); + .returns(ReturnsNewAddress) + .returns(ReturnsResult) + .egld(payment) + .sync_call(); + self.set_other_contract(&address); init_result + 1 } @@ -90,12 +73,13 @@ pub trait ProxyTestFirst { fn forward_to_other_contract(&self) { let payment = self.call_value().egld_value(); let other_contract = self.get_other_contract(); - self.pay_me_proxy() - .contract(other_contract) + self.tx() + .to(&other_contract) + .typed(pay_me_proxy::PayMeProxy) .pay_me(0x56) - .with_egld_transfer(payment.clone_value()) + .egld(payment) .async_call() - .call_and_exit() + .call_and_exit(); } #[payable("EGLD")] @@ -103,20 +87,22 @@ pub trait ProxyTestFirst { fn forward_to_other_contract_with_callback(&self) { let payment = self.call_value().egld_value(); let other_contract = self.get_other_contract(); - self.pay_me_proxy() - .contract(other_contract) + self.tx() + .to(&other_contract) + .typed(pay_me_proxy::PayMeProxy) .pay_me_with_result(0x56) - .with_egld_transfer(payment.clone_value()) + .egld(payment) .async_call() .with_callback(self.callbacks().pay_callback()) - .call_and_exit() + .call_and_exit(); } #[endpoint(messageOtherContract)] fn message_other_contract(&self) { let other_contract = self.get_other_contract(); - self.message_me_proxy() - .contract(other_contract) + self.tx() + .to(&other_contract) + .typed(message_me_proxy::MessageMeProxy) .message_me( 0x01, &BigUint::from(2u32), @@ -130,8 +116,9 @@ pub trait ProxyTestFirst { #[endpoint(messageOtherContractWithCallback)] fn message_other_contract_with_callback(&self) { let other_contract = self.get_other_contract(); - self.message_me_proxy() - .contract(other_contract) + self.tx() + .to(&other_contract) + .typed(message_me_proxy::MessageMeProxy) .message_me( 0x01, &BigUint::from(2u32), From 956112d586813c3fcb38a56b72a991dc6e6d2e63 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 28 Mar 2024 16:29:50 +0200 Subject: [PATCH 217/461] unified syntax - reorg legacy types & tx sc execution --- .../types/interaction/contract_call_legacy.rs | 15 ++++++++ .../contract_call_convert.rs | 0 .../contract_call_exec.rs | 33 +++------------- .../contract_call_no_payment.rs | 10 ++--- .../contract_call_trait.rs | 8 ++-- .../contract_call_with_any_payment.rs | 0 .../contract_call_with_egld.rs | 0 .../contract_call_with_egld_or_single_esdt.rs | 0 .../contract_call_with_multi_esdt.rs | 0 .../src/types/interaction/contract_deploy.rs | 2 +- framework/base/src/types/interaction/mod.rs | 31 ++------------- framework/base/src/types/interaction/tx.rs | 13 +++---- .../base/src/types/interaction/tx_exec.rs | 38 +++++++++++++++++++ .../interaction/{ => tx_exec}/tx_env_sc.rs | 10 ++--- .../tx_exec_async.rs} | 10 ++--- .../tx_exec_async_promises.rs} | 11 +++--- .../tx_exec_deploy.rs} | 13 +++---- .../tx_exec_sync.rs} | 12 +++--- .../{tx_call_te.rs => tx_exec/tx_exec_te.rs} | 2 +- .../tx_exec_upgrade.rs} | 12 +++--- .../tx_result_handler/returns_result.rs | 4 +- .../tx_result_handler/returns_result_conv.rs | 4 +- .../tx_result_handler/with_result.rs | 4 +- .../tx_result_handler/with_result_conv.rs | 4 +- 24 files changed, 117 insertions(+), 119 deletions(-) create mode 100644 framework/base/src/types/interaction/contract_call_legacy.rs rename framework/base/src/types/interaction/{ => contract_call_legacy}/contract_call_convert.rs (100%) rename framework/base/src/types/interaction/{ => contract_call_legacy}/contract_call_exec.rs (86%) rename framework/base/src/types/interaction/{ => contract_call_legacy}/contract_call_no_payment.rs (95%) rename framework/base/src/types/interaction/{ => contract_call_legacy}/contract_call_trait.rs (95%) rename framework/base/src/types/interaction/{ => contract_call_legacy}/contract_call_with_any_payment.rs (100%) rename framework/base/src/types/interaction/{ => contract_call_legacy}/contract_call_with_egld.rs (100%) rename framework/base/src/types/interaction/{ => contract_call_legacy}/contract_call_with_egld_or_single_esdt.rs (100%) rename framework/base/src/types/interaction/{ => contract_call_legacy}/contract_call_with_multi_esdt.rs (100%) create mode 100644 framework/base/src/types/interaction/tx_exec.rs rename framework/base/src/types/interaction/{ => tx_exec}/tx_env_sc.rs (86%) rename framework/base/src/types/interaction/{tx_call_async.rs => tx_exec/tx_exec_async.rs} (95%) rename framework/base/src/types/interaction/{tx_call_async_promises.rs => tx_exec/tx_exec_async_promises.rs} (94%) rename framework/base/src/types/interaction/{tx_call_deploy.rs => tx_exec/tx_exec_deploy.rs} (94%) rename framework/base/src/types/interaction/{tx_call_sync.rs => tx_exec/tx_exec_sync.rs} (91%) rename framework/base/src/types/interaction/{tx_call_te.rs => tx_exec/tx_exec_te.rs} (98%) rename framework/base/src/types/interaction/{tx_call_upgrade.rs => tx_exec/tx_exec_upgrade.rs} (93%) diff --git a/framework/base/src/types/interaction/contract_call_legacy.rs b/framework/base/src/types/interaction/contract_call_legacy.rs new file mode 100644 index 0000000000..d5ae5e04ed --- /dev/null +++ b/framework/base/src/types/interaction/contract_call_legacy.rs @@ -0,0 +1,15 @@ +mod contract_call_convert; +mod contract_call_exec; +mod contract_call_no_payment; +mod contract_call_trait; +mod contract_call_with_any_payment; +mod contract_call_with_egld; +mod contract_call_with_egld_or_single_esdt; +mod contract_call_with_multi_esdt; + +pub use contract_call_no_payment::ContractCallNoPayment; +pub use contract_call_trait::{ContractCall, ContractCallBase}; +pub use contract_call_with_any_payment::ContractCallWithAnyPayment; +pub use contract_call_with_egld::ContractCallWithEgld; +pub use contract_call_with_egld_or_single_esdt::ContractCallWithEgldOrSingleEsdt; +pub use contract_call_with_multi_esdt::ContractCallWithMultiEsdt; diff --git a/framework/base/src/types/interaction/contract_call_convert.rs b/framework/base/src/types/interaction/contract_call_legacy/contract_call_convert.rs similarity index 100% rename from framework/base/src/types/interaction/contract_call_convert.rs rename to framework/base/src/types/interaction/contract_call_legacy/contract_call_convert.rs diff --git a/framework/base/src/types/interaction/contract_call_exec.rs b/framework/base/src/types/interaction/contract_call_legacy/contract_call_exec.rs similarity index 86% rename from framework/base/src/types/interaction/contract_call_exec.rs rename to framework/base/src/types/interaction/contract_call_legacy/contract_call_exec.rs index 29a1a0587c..d33083d2bb 100644 --- a/framework/base/src/types/interaction/contract_call_exec.rs +++ b/framework/base/src/types/interaction/contract_call_legacy/contract_call_exec.rs @@ -1,20 +1,16 @@ use crate::{ - api::{use_raw_handle, StaticVarApiImpl, StorageWriteApi}, + api::{use_raw_handle, BlockchainApiImpl, CallTypeApi, StaticVarApiImpl, StorageWriteApi}, codec::TopDecodeMulti, -}; - -use crate::{ - api::{BlockchainApiImpl, CallTypeApi}, contract_base::SendRawWrapper, formatter::SCLowerHex, io::{ArgErrorHandler, ArgId, ManagedResultArgLoader}, types::{ - BigUint, EsdtTokenPayment, ManagedBuffer, ManagedBufferCachedBuilder, ManagedType, - ManagedVec, + decode_result, AsyncCall, AsyncCallPromises, BigUint, EsdtTokenPayment, ManagedBuffer, + ManagedBufferCachedBuilder, ManagedType, ManagedVec, Tx, TRANSFER_EXECUTE_DEFAULT_LEFTOVER, }, }; -use super::{AsyncCall, ContractCallNoPayment, ContractCallWithEgld, Tx}; +use super::{ContractCallNoPayment, ContractCallWithEgld}; use crate::api::managed_types::handles::HandleConstraints; /// Using max u64 to represent maximum possible gas, @@ -22,9 +18,6 @@ use crate::api::managed_types::handles::HandleConstraints; /// Leaving the gas limit unspecified will replace it with `api.get_gas_left()`. pub(super) const UNSPECIFIED_GAS_LIMIT: u64 = u64::MAX; -/// In case of `transfer_execute`, we leave by default a little gas for the calling transaction to finish. -pub(super) const TRANSFER_EXECUTE_DEFAULT_LEFTOVER: u64 = 100_000; - impl ContractCallWithEgld where SA: CallTypeApi + 'static, @@ -83,8 +76,8 @@ impl ContractCallWithEgld where SA: CallTypeApi + 'static, { - pub(super) fn build_async_call_promise(self) -> super::AsyncCallPromises { - super::AsyncCallPromises { + pub(super) fn build_async_call_promise(self) -> AsyncCallPromises { + AsyncCallPromises { to: self.basic.to, egld_payment: self.egld_payment, function_call: self.basic.function_call, @@ -224,17 +217,3 @@ where } } } - -pub(super) fn decode_result( - raw_result: ManagedVec>, -) -> RequestedResult -where - SA: CallTypeApi + 'static, - RequestedResult: TopDecodeMulti, -{ - let mut loader = ManagedResultArgLoader::new(raw_result); - let arg_id = ArgId::from(&b"sync result"[..]); - let h: ArgErrorHandler = ArgErrorHandler::::from(arg_id); - let Ok(result) = RequestedResult::multi_decode_or_handle_err(&mut loader, h); - result -} diff --git a/framework/base/src/types/interaction/contract_call_no_payment.rs b/framework/base/src/types/interaction/contract_call_legacy/contract_call_no_payment.rs similarity index 95% rename from framework/base/src/types/interaction/contract_call_no_payment.rs rename to framework/base/src/types/interaction/contract_call_legacy/contract_call_no_payment.rs index 75e03d9d07..2f39ff78f9 100644 --- a/framework/base/src/types/interaction/contract_call_no_payment.rs +++ b/framework/base/src/types/interaction/contract_call_legacy/contract_call_no_payment.rs @@ -6,7 +6,8 @@ use crate::{ api::CallTypeApi, types::{ BigUint, EgldOrEsdtTokenIdentifier, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, - EsdtTokenPayment, ManagedAddress, ManagedBuffer, ManagedVec, TokenIdentifier, + EsdtTokenPayment, FunctionCall, ManagedAddress, ManagedArgBuffer, ManagedBuffer, + ManagedVec, TokenIdentifier, Tx, TxScEnv, }, }; @@ -14,8 +15,7 @@ use super::{ contract_call_exec::UNSPECIFIED_GAS_LIMIT, contract_call_trait::ContractCallBase, contract_call_with_egld::ContractCallWithEgld, contract_call_with_multi_esdt::ContractCallWithMultiEsdt, ContractCall, - ContractCallWithAnyPayment, ContractCallWithEgldOrSingleEsdt, FunctionCall, ManagedArgBuffer, - Tx, TxScEnv, + ContractCallWithAnyPayment, ContractCallWithEgldOrSingleEsdt, }; /// Holds metadata for calling another contract, without payments. @@ -29,11 +29,11 @@ pub struct ContractCallNoPayment where SA: CallTypeApi + 'static, { - pub(super) _phantom: PhantomData, + pub(crate) _phantom: PhantomData, pub to: ManagedAddress, pub function_call: FunctionCall, pub explicit_gas_limit: u64, - pub(super) _return_type: PhantomData, + pub(crate) _return_type: PhantomData, } impl ContractCallBase for ContractCallNoPayment diff --git a/framework/base/src/types/interaction/contract_call_trait.rs b/framework/base/src/types/interaction/contract_call_legacy/contract_call_trait.rs similarity index 95% rename from framework/base/src/types/interaction/contract_call_trait.rs rename to framework/base/src/types/interaction/contract_call_legacy/contract_call_trait.rs index 3a3e034008..07b5b86868 100644 --- a/framework/base/src/types/interaction/contract_call_trait.rs +++ b/framework/base/src/types/interaction/contract_call_legacy/contract_call_trait.rs @@ -1,10 +1,10 @@ use crate::{ api::CallTypeApi, codec::{multi_types::IgnoreValue, TopDecodeMulti, TopEncodeMulti}, - types::ManagedBuffer, + types::{AsyncCall, AsyncCallPromises, BackTransfers, ManagedArgBuffer, ManagedBuffer}, }; -use super::{AsyncCall, ContractCallNoPayment, ContractCallWithEgld, ManagedArgBuffer}; +use super::{ContractCallNoPayment, ContractCallWithEgld}; pub trait ContractCallBase where @@ -85,7 +85,7 @@ where /// Converts to an async promise. #[inline] - fn async_call_promise(self) -> super::AsyncCallPromises { + fn async_call_promise(self) -> AsyncCallPromises { self.into_normalized().build_async_call_promise() } @@ -104,7 +104,7 @@ where #[inline] fn execute_on_dest_context_with_back_transfers( self, - ) -> (RequestedResult, super::BackTransfers) + ) -> (RequestedResult, BackTransfers) where RequestedResult: TopDecodeMulti, { diff --git a/framework/base/src/types/interaction/contract_call_with_any_payment.rs b/framework/base/src/types/interaction/contract_call_legacy/contract_call_with_any_payment.rs similarity index 100% rename from framework/base/src/types/interaction/contract_call_with_any_payment.rs rename to framework/base/src/types/interaction/contract_call_legacy/contract_call_with_any_payment.rs diff --git a/framework/base/src/types/interaction/contract_call_with_egld.rs b/framework/base/src/types/interaction/contract_call_legacy/contract_call_with_egld.rs similarity index 100% rename from framework/base/src/types/interaction/contract_call_with_egld.rs rename to framework/base/src/types/interaction/contract_call_legacy/contract_call_with_egld.rs diff --git a/framework/base/src/types/interaction/contract_call_with_egld_or_single_esdt.rs b/framework/base/src/types/interaction/contract_call_legacy/contract_call_with_egld_or_single_esdt.rs similarity index 100% rename from framework/base/src/types/interaction/contract_call_with_egld_or_single_esdt.rs rename to framework/base/src/types/interaction/contract_call_legacy/contract_call_with_egld_or_single_esdt.rs diff --git a/framework/base/src/types/interaction/contract_call_with_multi_esdt.rs b/framework/base/src/types/interaction/contract_call_legacy/contract_call_with_multi_esdt.rs similarity index 100% rename from framework/base/src/types/interaction/contract_call_with_multi_esdt.rs rename to framework/base/src/types/interaction/contract_call_legacy/contract_call_with_multi_esdt.rs diff --git a/framework/base/src/types/interaction/contract_deploy.rs b/framework/base/src/types/interaction/contract_deploy.rs index 448d9f4684..1fbfa1f017 100644 --- a/framework/base/src/types/interaction/contract_deploy.rs +++ b/framework/base/src/types/interaction/contract_deploy.rs @@ -15,7 +15,7 @@ use super::ManagedArgBuffer; /// Using max u64 to represent maximum possible gas, /// so that the value zero is not reserved and can be specified explicitly. /// Leaving the gas limit unspecified will replace it with `api.get_gas_left()`. -const UNSPECIFIED_GAS_LIMIT: u64 = u64::MAX; +pub(crate) const UNSPECIFIED_GAS_LIMIT: u64 = u64::MAX; #[must_use] pub struct ContractDeploy diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index ffe4cec68f..809bb0726c 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -6,14 +6,7 @@ mod async_call_promises; mod back_transfers; mod callback_closure; mod callback_selector_result; -mod contract_call_convert; -mod contract_call_exec; -mod contract_call_no_payment; -mod contract_call_trait; -mod contract_call_with_any_payment; -mod contract_call_with_egld; -mod contract_call_with_egld_or_single_esdt; -mod contract_call_with_multi_esdt; +mod contract_call_legacy; mod contract_deploy; mod deploy_call; mod expr; @@ -21,16 +14,10 @@ mod function_call; mod managed_arg_buffer; mod markers; mod tx; -mod tx_call_async; -mod tx_call_async_promises; -mod tx_call_deploy; -mod tx_call_sync; -mod tx_call_te; -mod tx_call_upgrade; mod tx_code_source; mod tx_data; mod tx_env; -mod tx_env_sc; +mod tx_exec; mod tx_from; mod tx_gas; mod tx_payment; @@ -50,12 +37,7 @@ pub use callback_closure::{ new_callback_call, CallbackClosure, CallbackClosureForDeser, CallbackClosureMatcher, }; pub use callback_selector_result::CallbackSelectorResult; -pub use contract_call_no_payment::ContractCallNoPayment; -pub use contract_call_trait::{ContractCall, ContractCallBase}; -pub use contract_call_with_any_payment::ContractCallWithAnyPayment; -pub use contract_call_with_egld::ContractCallWithEgld; -pub use contract_call_with_egld_or_single_esdt::ContractCallWithEgldOrSingleEsdt; -pub use contract_call_with_multi_esdt::ContractCallWithMultiEsdt; +pub use contract_call_legacy::*; pub use contract_deploy::{new_contract_deploy, ContractDeploy}; pub use deploy_call::*; pub use expr::*; @@ -63,15 +45,10 @@ pub use function_call::FunctionCall; pub use managed_arg_buffer::ManagedArgBuffer; pub use markers::*; pub use tx::*; -pub use tx_call_async::*; -pub use tx_call_async_promises::*; -pub use tx_call_deploy::*; -pub use tx_call_sync::*; -pub use tx_call_upgrade::*; pub use tx_code_source::*; pub use tx_data::*; pub use tx_env::*; -pub use tx_env_sc::*; +pub use tx_exec::*; pub use tx_from::*; pub use tx_gas::*; pub use tx_payment::*; diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 5c964746c2..cb2945ff39 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -11,13 +11,12 @@ use crate::{ use multiversx_sc_codec::TopEncodeMulti; use super::{ - contract_call_exec::UNSPECIFIED_GAS_LIMIT, contract_call_trait::ContractCallBase, - AnnotatedValue, Code, ContractCallNoPayment, ContractCallWithEgld, ContractDeploy, DeployCall, - Egld, EgldPayment, ExplicitGas, FromSource, FunctionCall, ManagedArgBuffer, - OriginalResultMarker, RHList, RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, - TxCodeValue, TxData, TxEgldValue, TxEnv, TxFrom, TxFromSourceValue, TxGas, TxGasValue, - TxPayment, TxPaymentEgldOnly, TxProxyTrait, TxResultHandler, TxScEnv, TxTo, TxToSpecified, - UpgradeCall, + contract_deploy::UNSPECIFIED_GAS_LIMIT, AnnotatedValue, Code, ContractCallBase, + ContractCallNoPayment, ContractCallWithEgld, ContractDeploy, DeployCall, Egld, EgldPayment, + ExplicitGas, FromSource, FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, + RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, TxCodeValue, TxData, TxEgldValue, + TxEnv, TxFrom, TxFromSourceValue, TxGas, TxGasValue, TxPayment, TxPaymentEgldOnly, + TxProxyTrait, TxResultHandler, TxScEnv, TxTo, TxToSpecified, UpgradeCall, }; #[must_use] diff --git a/framework/base/src/types/interaction/tx_exec.rs b/framework/base/src/types/interaction/tx_exec.rs new file mode 100644 index 0000000000..3bf35975ed --- /dev/null +++ b/framework/base/src/types/interaction/tx_exec.rs @@ -0,0 +1,38 @@ +mod tx_env_sc; +mod tx_exec_async; +mod tx_exec_async_promises; +mod tx_exec_deploy; +mod tx_exec_sync; +mod tx_exec_te; +mod tx_exec_upgrade; + +pub use tx_env_sc::*; +pub use tx_exec_async::*; +pub use tx_exec_async_promises::*; +pub use tx_exec_deploy::*; +pub use tx_exec_sync::*; +pub use tx_exec_upgrade::*; + +use crate::{ + api::CallTypeApi, + io::{ArgErrorHandler, ArgId, ManagedResultArgLoader}, + types::{ManagedBuffer, ManagedVec}, +}; +use multiversx_sc_codec::TopDecodeMulti; + +/// In case of `transfer_execute`, we leave by default a little gas for the calling transaction to finish. +pub(crate) const TRANSFER_EXECUTE_DEFAULT_LEFTOVER: u64 = 100_000; + +pub(crate) fn decode_result( + raw_result: ManagedVec>, +) -> RequestedResult +where + SA: CallTypeApi + 'static, + RequestedResult: TopDecodeMulti, +{ + let mut loader = ManagedResultArgLoader::new(raw_result); + let arg_id = ArgId::from(&b"sync result"[..]); + let h: ArgErrorHandler = ArgErrorHandler::::from(arg_id); + let Ok(result) = RequestedResult::multi_decode_or_handle_err(&mut loader, h); + result +} diff --git a/framework/base/src/types/interaction/tx_env_sc.rs b/framework/base/src/types/interaction/tx_exec/tx_env_sc.rs similarity index 86% rename from framework/base/src/types/interaction/tx_env_sc.rs rename to framework/base/src/types/interaction/tx_exec/tx_env_sc.rs index 8186b6b4b4..cbbcc35dc2 100644 --- a/framework/base/src/types/interaction/tx_env_sc.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_env_sc.rs @@ -3,12 +3,10 @@ use core::marker::PhantomData; use crate::{ api::{BlockchainApiImpl, CallTypeApi}, contract_base::BlockchainWrapper, - types::{ManagedAddress, ManagedBuffer}, -}; - -use super::{ - contract_call_exec::TRANSFER_EXECUTE_DEFAULT_LEFTOVER, display_u64, AnnotatedValue, Tx, - TxBaseWithEnv, TxEnv, + types::{ + interaction::display_u64, AnnotatedValue, ManagedAddress, ManagedBuffer, Tx, TxBaseWithEnv, + TxEnv, TRANSFER_EXECUTE_DEFAULT_LEFTOVER, + }, }; pub struct TxScEnv diff --git a/framework/base/src/types/interaction/tx_call_async.rs b/framework/base/src/types/interaction/tx_exec/tx_exec_async.rs similarity index 95% rename from framework/base/src/types/interaction/tx_call_async.rs rename to framework/base/src/types/interaction/tx_exec/tx_exec_async.rs index daa69013cf..02f145f635 100644 --- a/framework/base/src/types/interaction/tx_call_async.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_exec_async.rs @@ -1,12 +1,10 @@ use crate::{ api::{CallTypeApi, StorageWriteApi}, contract_base::SendRawWrapper, - types::CallbackClosure, -}; - -use super::{ - OriginalResultMarker, Tx, TxData, TxDataFunctionCall, TxEnv, TxFrom, TxGas, TxPayment, - TxResultHandler, TxScEnv, TxTo, TxToSpecified, + types::{ + CallbackClosure, OriginalResultMarker, Tx, TxData, TxDataFunctionCall, TxEnv, TxFrom, + TxGas, TxPayment, TxResultHandler, TxScEnv, TxTo, TxToSpecified, + }, }; pub trait TxAsyncCallCallback: TxResultHandler> diff --git a/framework/base/src/types/interaction/tx_call_async_promises.rs b/framework/base/src/types/interaction/tx_exec/tx_exec_async_promises.rs similarity index 94% rename from framework/base/src/types/interaction/tx_call_async_promises.rs rename to framework/base/src/types/interaction/tx_exec/tx_exec_async_promises.rs index b3b8a1794d..48bf520b05 100644 --- a/framework/base/src/types/interaction/tx_call_async_promises.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_exec_async_promises.rs @@ -1,12 +1,11 @@ use crate::{ api::{const_handles, CallTypeApi}, contract_base::SendRawWrapper, - types::{CallbackClosure, ManagedBuffer, ManagedType}, -}; - -use super::{ - callback_closure::CallbackClosureWithGas, ExplicitGas, FunctionCall, OriginalResultMarker, Tx, - TxGas, TxGasValue, TxPayment, TxResultHandler, TxScEnv, TxToSpecified, + types::{ + interaction::callback_closure::CallbackClosureWithGas, CallbackClosure, ExplicitGas, + FunctionCall, ManagedBuffer, ManagedType, OriginalResultMarker, Tx, TxGas, TxGasValue, + TxPayment, TxResultHandler, TxScEnv, TxToSpecified, + }, }; pub trait TxPromisesCallback: TxResultHandler> diff --git a/framework/base/src/types/interaction/tx_call_deploy.rs b/framework/base/src/types/interaction/tx_exec/tx_exec_deploy.rs similarity index 94% rename from framework/base/src/types/interaction/tx_call_deploy.rs rename to framework/base/src/types/interaction/tx_exec/tx_exec_deploy.rs index 08cd815262..b9a77119ed 100644 --- a/framework/base/src/types/interaction/tx_call_deploy.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_exec_deploy.rs @@ -4,13 +4,12 @@ use crate::{ api::CallTypeApi, contract_base::SendRawWrapper, tuple_util::NestedTupleFlatten, - types::{CodeMetadata, ManagedAddress, ManagedBuffer, ManagedVec}, -}; - -use super::{ - contract_call_exec::decode_result, Code, ConsNoRet, ConsRet, DeployCall, FromSource, - OriginalResultMarker, RHList, RHListExec, RHListItem, Tx, TxCodeValue, TxEmptyResultHandler, - TxEnv, TxFromSourceValue, TxGas, TxPaymentEgldOnly, TxResultHandler, TxScEnv, UpgradeCall, + types::{ + decode_result, Code, CodeMetadata, ConsNoRet, ConsRet, DeployCall, FromSource, + ManagedAddress, ManagedBuffer, ManagedVec, OriginalResultMarker, RHList, RHListExec, + RHListItem, Tx, TxCodeValue, TxEmptyResultHandler, TxEnv, TxFromSourceValue, TxGas, + TxPaymentEgldOnly, TxResultHandler, TxScEnv, UpgradeCall, + }, }; pub struct DeployRawResult diff --git a/framework/base/src/types/interaction/tx_call_sync.rs b/framework/base/src/types/interaction/tx_exec/tx_exec_sync.rs similarity index 91% rename from framework/base/src/types/interaction/tx_call_sync.rs rename to framework/base/src/types/interaction/tx_exec/tx_exec_sync.rs index 7b35b07a6a..adb102d6fa 100644 --- a/framework/base/src/types/interaction/tx_call_sync.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_exec_sync.rs @@ -4,13 +4,11 @@ use crate::{ api::CallTypeApi, contract_base::SendRawWrapper, tuple_util::NestedTupleFlatten, - types::{ManagedBuffer, ManagedVec}, -}; - -use super::{ - contract_call_exec::decode_result, BackTransfers, ConsNoRet, ConsRet, OriginalResultMarker, - RHList, RHListExec, RHListItem, Tx, TxDataFunctionCall, TxEnv, TxGas, TxPayment, TxScEnv, - TxToSpecified, + types::{ + decode_result, BackTransfers, ConsNoRet, ConsRet, ManagedBuffer, ManagedVec, + OriginalResultMarker, RHList, RHListExec, RHListItem, Tx, TxDataFunctionCall, TxEnv, TxGas, + TxPayment, TxScEnv, TxToSpecified, + }, }; pub struct SyncCallRawResult(pub ManagedVec>) diff --git a/framework/base/src/types/interaction/tx_call_te.rs b/framework/base/src/types/interaction/tx_exec/tx_exec_te.rs similarity index 98% rename from framework/base/src/types/interaction/tx_call_te.rs rename to framework/base/src/types/interaction/tx_exec/tx_exec_te.rs index 8a62ca2bf8..a484dd2fdb 100644 --- a/framework/base/src/types/interaction/tx_call_te.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_exec_te.rs @@ -1,6 +1,6 @@ use crate::api::CallTypeApi; -use super::{ +use crate::types::{ FunctionCall, Tx, TxData, TxEmptyResultHandler, TxFrom, TxGas, TxPayment, TxScEnv, TxToSpecified, }; diff --git a/framework/base/src/types/interaction/tx_call_upgrade.rs b/framework/base/src/types/interaction/tx_exec/tx_exec_upgrade.rs similarity index 93% rename from framework/base/src/types/interaction/tx_call_upgrade.rs rename to framework/base/src/types/interaction/tx_exec/tx_exec_upgrade.rs index db56b8a230..5a08481640 100644 --- a/framework/base/src/types/interaction/tx_call_upgrade.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_exec_upgrade.rs @@ -2,13 +2,11 @@ use crate::{ api::CallTypeApi, contract_base::SendRawWrapper, tuple_util::NestedTupleFlatten, - types::{CodeMetadata, ManagedAddress, ManagedBuffer, ManagedVec}, -}; - -use super::{ - tx_from, Code, DeployRawResult, FromSource, RHListExec, Tx, TxCodeValue, TxEmptyResultHandler, - TxFrom, TxFromSourceValue, TxGas, TxPaymentEgldOnly, TxResultHandler, TxScEnv, TxTo, - UpgradeCall, + types::{ + Code, CodeMetadata, DeployRawResult, FromSource, ManagedAddress, ManagedBuffer, ManagedVec, + RHListExec, Tx, TxCodeValue, TxEmptyResultHandler, TxFrom, TxFromSourceValue, TxGas, + TxPaymentEgldOnly, TxResultHandler, TxScEnv, TxTo, UpgradeCall, + }, }; impl diff --git a/framework/base/src/types/interaction/tx_result_handler/returns_result.rs b/framework/base/src/types/interaction/tx_result_handler/returns_result.rs index 5082a6bff6..27c547c19e 100644 --- a/framework/base/src/types/interaction/tx_result_handler/returns_result.rs +++ b/framework/base/src/types/interaction/tx_result_handler/returns_result.rs @@ -1,8 +1,8 @@ use multiversx_sc_codec::TopDecodeMulti; use crate::types::{ - interaction::contract_call_exec::decode_result, DeployRawResult, ManagedBuffer, ManagedVec, - RHListItem, RHListItemExec, SyncCallRawResult, TxEnv, + interaction::decode_result, DeployRawResult, ManagedBuffer, ManagedVec, RHListItem, + RHListItemExec, SyncCallRawResult, TxEnv, }; /// Indicates that result will be returned. diff --git a/framework/base/src/types/interaction/tx_result_handler/returns_result_conv.rs b/framework/base/src/types/interaction/tx_result_handler/returns_result_conv.rs index 1dbabc0bf1..e0f8cd3df1 100644 --- a/framework/base/src/types/interaction/tx_result_handler/returns_result_conv.rs +++ b/framework/base/src/types/interaction/tx_result_handler/returns_result_conv.rs @@ -3,8 +3,8 @@ use core::marker::PhantomData; use multiversx_sc_codec::{CodecFrom, TopEncodeMulti}; use crate::types::{ - interaction::contract_call_exec::decode_result, ManagedBuffer, ManagedVec, RHListItem, - RHListItemExec, SyncCallRawResult, TxEnv, + interaction::decode_result, ManagedBuffer, ManagedVec, RHListItem, RHListItemExec, + SyncCallRawResult, TxEnv, }; /// Indicates that result will be returned. diff --git a/framework/base/src/types/interaction/tx_result_handler/with_result.rs b/framework/base/src/types/interaction/tx_result_handler/with_result.rs index 800ac30a7a..d9f11aed14 100644 --- a/framework/base/src/types/interaction/tx_result_handler/with_result.rs +++ b/framework/base/src/types/interaction/tx_result_handler/with_result.rs @@ -3,8 +3,8 @@ use core::marker::PhantomData; use multiversx_sc_codec::TopDecodeMulti; use crate::types::{ - interaction::contract_call_exec::decode_result, ManagedBuffer, ManagedVec, RHListItem, - RHListItemExec, SyncCallRawResult, TxEnv, + interaction::decode_result, ManagedBuffer, ManagedVec, RHListItem, RHListItemExec, + SyncCallRawResult, TxEnv, }; /// Defines a lambda function to be called on the decoded result. diff --git a/framework/base/src/types/interaction/tx_result_handler/with_result_conv.rs b/framework/base/src/types/interaction/tx_result_handler/with_result_conv.rs index 89831e8283..772bd9acd9 100644 --- a/framework/base/src/types/interaction/tx_result_handler/with_result_conv.rs +++ b/framework/base/src/types/interaction/tx_result_handler/with_result_conv.rs @@ -3,8 +3,8 @@ use core::marker::PhantomData; use multiversx_sc_codec::{CodecFrom, TopEncodeMulti}; use crate::types::{ - interaction::contract_call_exec::decode_result, ManagedBuffer, ManagedVec, RHListItem, - RHListItemExec, SyncCallRawResult, TxEnv, + interaction::decode_result, ManagedBuffer, ManagedVec, RHListItem, RHListItemExec, + SyncCallRawResult, TxEnv, }; /// Defines a lambda function to be called on the decoded result. From 9ecb3ecc5495a3a58f8b452e954cc48811afe731 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Thu, 28 Mar 2024 15:40:05 +0100 Subject: [PATCH 218/461] new proxy and migration for recursive caller --- .../recursive-caller/sc-config.toml | 2 + .../recursive-caller/src/recursive_caller.rs | 24 +- .../recursive-caller/src/self_proxy.rs | 96 ++++++ .../recursive-caller/src/vault_proxy.rs | 278 ++++++++++++++++++ .../composability/vault/sc-config.toml | 1 + 5 files changed, 389 insertions(+), 12 deletions(-) create mode 100644 contracts/feature-tests/composability/recursive-caller/sc-config.toml create mode 100644 contracts/feature-tests/composability/recursive-caller/src/self_proxy.rs create mode 100644 contracts/feature-tests/composability/recursive-caller/src/vault_proxy.rs diff --git a/contracts/feature-tests/composability/recursive-caller/sc-config.toml b/contracts/feature-tests/composability/recursive-caller/sc-config.toml new file mode 100644 index 0000000000..7b21858e3c --- /dev/null +++ b/contracts/feature-tests/composability/recursive-caller/sc-config.toml @@ -0,0 +1,2 @@ +[settings] +proxy-paths = ["src/self_proxy.rs"] diff --git a/contracts/feature-tests/composability/recursive-caller/src/recursive_caller.rs b/contracts/feature-tests/composability/recursive-caller/src/recursive_caller.rs index 617f29e901..407a681927 100644 --- a/contracts/feature-tests/composability/recursive-caller/src/recursive_caller.rs +++ b/contracts/feature-tests/composability/recursive-caller/src/recursive_caller.rs @@ -2,15 +2,12 @@ multiversx_sc::imports!(); +pub mod self_proxy; +pub mod vault_proxy; + /// Test contract for investigating async calls. #[multiversx_sc::contract] pub trait RecursiveCaller { - #[proxy] - fn vault_proxy(&self) -> vault::Proxy; - - #[proxy] - fn self_proxy(&self) -> self::Proxy; - #[init] fn init(&self) {} @@ -24,10 +21,11 @@ pub trait RecursiveCaller { ) { self.recursive_send_funds_event(to, token_identifier, amount, counter); - self.vault_proxy() - .contract(to.clone()) + self.tx() + .to(to) + .typed(vault_proxy::VaultProxy) .accept_funds() - .with_egld_or_single_esdt_transfer((token_identifier.clone(), 0, amount.clone())) + .egld_or_single_esdt((token_identifier.clone(), 0, amount.clone())) .async_call() .with_callback(self.callbacks().recursive_send_funds_callback( to, @@ -35,7 +33,7 @@ pub trait RecursiveCaller { amount, counter, )) - .call_and_exit() + .call_and_exit(); } #[callback] @@ -49,8 +47,10 @@ pub trait RecursiveCaller { self.recursive_send_funds_callback_event(to, token_identifier, amount, counter); if counter > 1 { - self.self_proxy() - .contract(self.blockchain().get_sc_address()) + let self_address = self.blockchain().get_sc_address(); + self.tx() + .to(&self_address) + .typed(self_proxy::RecursiveCallerProxy) .recursive_send_funds(to, token_identifier, amount, counter - 1) .async_call() .call_and_exit() diff --git a/contracts/feature-tests/composability/recursive-caller/src/self_proxy.rs b/contracts/feature-tests/composability/recursive-caller/src/self_proxy.rs new file mode 100644 index 0000000000..8aa039e203 --- /dev/null +++ b/contracts/feature-tests/composability/recursive-caller/src/self_proxy.rs @@ -0,0 +1,96 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(dead_code)] +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +pub struct RecursiveCallerProxy; + +impl TxProxyTrait for RecursiveCallerProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = RecursiveCallerProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + RecursiveCallerProxyMethods { wrapped_tx: tx } + } +} + +pub struct RecursiveCallerProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl RecursiveCallerProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init( + self, + ) -> TxProxyDeploy { + self.wrapped_tx + .raw_deploy() + .original_result() + } +} + +#[rustfmt::skip] +impl RecursiveCallerProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ +} + +#[rustfmt::skip] +impl RecursiveCallerProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn recursive_send_funds< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>, + Arg3: CodecInto, + >( + self, + to: Arg0, + token_identifier: Arg1, + amount: Arg2, + counter: Arg3, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("recursive_send_funds") + .argument(&to) + .argument(&token_identifier) + .argument(&amount) + .argument(&counter) + .original_result() + } +} diff --git a/contracts/feature-tests/composability/recursive-caller/src/vault_proxy.rs b/contracts/feature-tests/composability/recursive-caller/src/vault_proxy.rs new file mode 100644 index 0000000000..f04735e6a5 --- /dev/null +++ b/contracts/feature-tests/composability/recursive-caller/src/vault_proxy.rs @@ -0,0 +1,278 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(dead_code)] +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +pub struct VaultProxy; + +impl TxProxyTrait for VaultProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = VaultProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + VaultProxyMethods { wrapped_tx: tx } + } +} + +pub struct VaultProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl VaultProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init< + Arg0: CodecInto>>, + >( + self, + opt_arg_to_echo: Arg0, + ) -> TxProxyDeploy>> { + self.wrapped_tx + .raw_deploy() + .argument(&opt_arg_to_echo) + .original_result() + } +} + +#[rustfmt::skip] +impl VaultProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn upgrade< + Arg0: CodecInto>>, + >( + self, + opt_arg_to_echo: Arg0, + ) -> TxProxyUpgrade>>> { + self.wrapped_tx + .raw_upgrade() + .argument(&opt_arg_to_echo) + .original_result() + } +} + +#[rustfmt::skip] +impl VaultProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn echo_arguments< + Arg0: CodecInto>>, + >( + self, + args: Arg0, + ) -> TxProxyCall>> { + self.wrapped_tx + .raw_call() + .function_name("echo_arguments") + .argument(&args) + .original_result() + } + + pub fn echo_arguments_without_storage< + Arg0: CodecInto>>, + >( + self, + args: Arg0, + ) -> TxProxyCall>> { + self.wrapped_tx + .raw_call() + .function_name("echo_arguments_without_storage") + .argument(&args) + .original_result() + } + + pub fn echo_caller( + self, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call() + .function_name("echo_caller") + .original_result() + } + + pub fn accept_funds( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("accept_funds") + .original_result() + } + + pub fn accept_funds_echo_payment( + self, + ) -> TxProxyCall, MultiValueEncoded>>> { + self.wrapped_tx + .raw_call() + .function_name("accept_funds_echo_payment") + .original_result() + } + + pub fn accept_funds_single_esdt_transfer( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("accept_funds_single_esdt_transfer") + .original_result() + } + + pub fn reject_funds( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("reject_funds") + .original_result() + } + + pub fn retrieve_funds_with_transfer_exec< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>>, + >( + self, + token: Arg0, + amount: Arg1, + opt_receive_func: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("retrieve_funds_with_transfer_exec") + .argument(&token) + .argument(&amount) + .argument(&opt_receive_func) + .original_result() + } + + pub fn retrieve_funds_promises< + Arg0: CodecInto>, + Arg1: CodecInto>>, + >( + self, + back_transfers: Arg0, + back_transfer_value: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("retrieve_funds_promises") + .argument(&back_transfers) + .argument(&back_transfer_value) + .original_result() + } + + pub fn retrieve_funds< + Arg0: CodecInto>, + Arg1: CodecInto, + Arg2: CodecInto>, + >( + self, + token: Arg0, + nonce: Arg1, + amount: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("retrieve_funds") + .argument(&token) + .argument(&nonce) + .argument(&amount) + .original_result() + } + + pub fn retrieve_multi_funds_async< + Arg0: CodecInto, u64, BigUint>>>, + >( + self, + token_payments: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("retrieve_multi_funds_async") + .argument(&token_payments) + .original_result() + } + + pub fn burn_and_create_retrive_async( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("burn_and_create_retrive_async") + .original_result() + } + + pub fn get_owner_address( + self, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call() + .function_name("get_owner_address") + .original_result() + } + + /// We already leave a trace of the calls using the event logs; + /// this additional counter has the role of showing that storage also gets saved correctly. + pub fn call_counts< + Arg0: CodecInto>, + >( + self, + endpoint: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("call_counts") + .argument(&endpoint) + .original_result() + } + + pub fn num_called_retrieve_funds_promises( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("num_called_retrieve_funds_promises") + .original_result() + } + + pub fn num_async_calls_sent_from_child( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("num_async_calls_sent_from_child") + .original_result() + } +} diff --git a/contracts/feature-tests/composability/vault/sc-config.toml b/contracts/feature-tests/composability/vault/sc-config.toml index 969ed9c2a3..107694e4fe 100644 --- a/contracts/feature-tests/composability/vault/sc-config.toml +++ b/contracts/feature-tests/composability/vault/sc-config.toml @@ -3,6 +3,7 @@ main = "main" proxy-paths = [ "../forwarder/src/vault_proxy.rs", "../promises-features/src/vault_proxy.rs", + "../recursive-caller/src/vault_proxy.rs" ] [contracts.main] From 3bb6cec953461bfd4eaefff96dac8f2bed5e493c Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 28 Mar 2024 16:48:08 +0200 Subject: [PATCH 219/461] proxy test first fix --- .../proxy-test-first/src/proxy-test-first.rs | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs b/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs index b3ddbf6d5e..58a2dd2684 100644 --- a/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs +++ b/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs @@ -30,21 +30,13 @@ pub trait ProxyTestFirst { #[endpoint(deploySecondContract)] fn deploy_second_contract(&self, code: ManagedBuffer) -> i32 { let payment = self.call_value().egld_value(); - // let (address, init_result) = self - // .tx() - // .egld(payment) - // .raw_deploy() - // .code(code) - // .code_metadata(CodeMetadata::UPGRADEABLE) - // .argument(&123) - // .returns(ReturnsNewAddress) - // .returns(ReturnsResult) - // .sync_call(); let (address, init_result) = self .tx() .typed(message_me_proxy::MessageMeProxy) .init(123) + .code(code) + .code_metadata(CodeMetadata::UPGRADEABLE) .returns(ReturnsNewAddress) .returns(ReturnsResult) .egld(payment) From 588574b6383d62f6f0580e586d555b3a3823ada2 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 28 Mar 2024 13:47:15 +0200 Subject: [PATCH 220/461] MultiValueManagedVec ABI fix --- .../types/managed/multi_value/multi_value_managed_vec.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/framework/base/src/types/managed/multi_value/multi_value_managed_vec.rs b/framework/base/src/types/managed/multi_value/multi_value_managed_vec.rs index a00042ed5b..6779df703b 100644 --- a/framework/base/src/types/managed/multi_value/multi_value_managed_vec.rs +++ b/framework/base/src/types/managed/multi_value/multi_value_managed_vec.rs @@ -216,10 +216,11 @@ where T: ManagedVecItem, { fn type_name() -> TypeName { - let mut repr = TypeName::from("variadic<"); - repr.push_str(T::type_name().as_str()); - repr.push('>'); - repr + crate::abi::type_name_variadic::() + } + + fn type_name_rust() -> TypeName { + alloc::format!("MultiValueManagedVec<$API, {}>", T::type_name_rust()) } fn provide_type_descriptions(accumulator: &mut TDC) { From 9fd738335c3a453e57e94b0ba1dcd52406e5d5a4 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Thu, 28 Mar 2024 16:11:12 +0100 Subject: [PATCH 221/461] removed init and upgrade from builtin proxy functions --- .../src/builtin_func_proxy.rs | 35 ------------------- 1 file changed, 35 deletions(-) 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 index 66ed7a8fdf..8d7d106f66 100644 --- 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 @@ -35,41 +35,6 @@ where wrapped_tx: Tx, } -#[rustfmt::skip] -impl UserBuiltinProxyMethods -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - Gas: TxGas, -{ - pub fn init( - self, - ) -> TxProxyDeploy { - self.wrapped_tx - .raw_deploy() - .original_result() - } -} - -#[rustfmt::skip] -impl UserBuiltinProxyMethods -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ - pub fn upgrade( - self, - ) -> TxProxyUpgrade { - self.wrapped_tx - .raw_upgrade() - .original_result() - } -} - #[rustfmt::skip] impl UserBuiltinProxyMethods where From c6c9bd10dc7c61e580a9aed3219ba8e9696a1c9d Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 28 Mar 2024 17:25:45 +0200 Subject: [PATCH 222/461] unified syntax - multi esdt reference cleanup --- .../examples/digital-cash/src/digital_cash.rs | 2 +- .../digital-cash/src/signature_operations.rs | 2 +- .../src/esdt_transfer_with_fee.rs | 2 +- .../forwarder-raw/src/forwarder_raw_async.rs | 2 +- contracts/modules/src/token_merge/mod.rs | 4 +- .../contract_base/wrappers/send_wrapper.rs | 5 +- framework/base/src/types/interaction/tx.rs | 26 ++------- .../base/src/types/interaction/tx_payment.rs | 1 + .../tx_payment/tx_payment_multi_esdt.rs | 57 +++++++++++++++++++ 9 files changed, 70 insertions(+), 31 deletions(-) diff --git a/contracts/examples/digital-cash/src/digital_cash.rs b/contracts/examples/digital-cash/src/digital_cash.rs index 97875a1a15..c631256545 100644 --- a/contracts/examples/digital-cash/src/digital_cash.rs +++ b/contracts/examples/digital-cash/src/digital_cash.rs @@ -64,7 +64,7 @@ pub trait DigitalCash: if !collected_esdt_fees.is_empty() { self.tx() .to(&caller_address) - .multi_esdt_ref(&collected_esdt_fees) + .multi_esdt(&collected_esdt_fees) .transfer(); } } diff --git a/contracts/examples/digital-cash/src/signature_operations.rs b/contracts/examples/digital-cash/src/signature_operations.rs index f729cb6061..fd69a91ef2 100644 --- a/contracts/examples/digital-cash/src/signature_operations.rs +++ b/contracts/examples/digital-cash/src/signature_operations.rs @@ -83,7 +83,7 @@ pub trait SignatureOperationsModule: storage::StorageModule + helpers::HelpersMo if !deposit.esdt_funds.is_empty() { self.tx() .to(&caller_address) - .multi_esdt_ref(&deposit.esdt_funds) + .multi_esdt(&deposit.esdt_funds) .transfer(); } if deposited_fee.amount > 0 { diff --git a/contracts/examples/esdt-transfer-with-fee/src/esdt_transfer_with_fee.rs b/contracts/examples/esdt-transfer-with-fee/src/esdt_transfer_with_fee.rs index fc47ed9acd..495e8bb57e 100644 --- a/contracts/examples/esdt-transfer-with-fee/src/esdt_transfer_with_fee.rs +++ b/contracts/examples/esdt-transfer-with-fee/src/esdt_transfer_with_fee.rs @@ -40,7 +40,7 @@ pub trait EsdtTransferWithFee { } self.paid_fees().clear(); - self.tx().to(ToCaller).multi_esdt_ref(&fees).transfer(); + self.tx().to(ToCaller).multi_esdt(&fees).transfer(); } #[payable("*")] diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs index cdf3c8f42c..c25b6730f4 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs @@ -23,7 +23,7 @@ pub trait ForwarderRawAsync: super::forwarder_raw_common::ForwarderRawCommon { #[payable("*")] fn forward_direct_esdt_multi(&self, to: ManagedAddress) { let payments = self.call_value().all_esdt_transfers(); - self.tx().to(&to).multi_esdt_ref(&payments).transfer(); + self.tx().to(&to).multi_esdt(payments).transfer(); } fn forward_contract_call( diff --git a/contracts/modules/src/token_merge/mod.rs b/contracts/modules/src/token_merge/mod.rs index 0acdce1af8..1164a44a45 100644 --- a/contracts/modules/src/token_merge/mod.rs +++ b/contracts/modules/src/token_merge/mod.rs @@ -120,7 +120,7 @@ pub trait TokenMergeModule: self.tx() .to(ToCaller) - .multi_esdt_ref(&output_payments) + .multi_esdt(&output_payments) .transfer(); output_payments @@ -169,7 +169,7 @@ pub trait TokenMergeModule: self.tx() .to(ToCaller) - .multi_esdt_ref(&tokens_to_remove) + .multi_esdt(&tokens_to_remove) .transfer(); tokens_to_remove diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index f761f1cb04..b1de9d7ab9 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -291,10 +291,7 @@ where to: &ManagedAddress, payments: &ManagedVec>, ) { - Tx::new_tx_from_sc() - .to(to) - .multi_esdt_ref(payments) - .transfer(); + Tx::new_tx_from_sc().to(to).multi_esdt(payments).transfer(); } /// Performs a simple ESDT/NFT transfer, but via async call. diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index cb2945ff39..1126481bcc 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -16,7 +16,7 @@ use super::{ ExplicitGas, FromSource, FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, TxCodeValue, TxData, TxEgldValue, TxEnv, TxFrom, TxFromSourceValue, TxGas, TxGasValue, TxPayment, TxPaymentEgldOnly, - TxProxyTrait, TxResultHandler, TxScEnv, TxTo, TxToSpecified, UpgradeCall, + TxPaymentMultiEsdt, TxProxyTrait, TxResultHandler, TxScEnv, TxTo, TxToSpecified, UpgradeCall, }; #[must_use] @@ -229,26 +229,10 @@ where } /// Adds a collection of ESDT payments to a transaction. - pub fn multi_esdt( - self, - payments: MultiEsdtPayment, // TODO: references - ) -> Tx, Gas, Data, RH> { - Tx { - env: self.env, - from: self.from, - to: self.to, - payment: payments, - gas: self.gas, - data: self.data, - result_handler: self.result_handler, - } - } - - /// Sets a reference to multiple ESDT payments. - pub fn multi_esdt_ref( - self, - payments: &MultiEsdtPayment, - ) -> Tx, Gas, Data, RH> { + pub fn multi_esdt(self, payments: Payment) -> Tx + where + Payment: TxPaymentMultiEsdt, + { Tx { env: self.env, from: self.from, diff --git a/framework/base/src/types/interaction/tx_payment.rs b/framework/base/src/types/interaction/tx_payment.rs index 978190a67a..953b3e4e3c 100644 --- a/framework/base/src/types/interaction/tx_payment.rs +++ b/framework/base/src/types/interaction/tx_payment.rs @@ -8,6 +8,7 @@ mod tx_payment_single_esdt_ref; pub use tx_payment_egld::{Egld, EgldPayment}; pub use tx_payment_egld_value::TxEgldValue; +pub use tx_payment_multi_esdt::TxPaymentMultiEsdt; use crate::{ api::ManagedTypeApi, diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs index 78acfd87f7..fe0b23ef02 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs @@ -1,10 +1,27 @@ +use core::ops::Deref; + use crate::{ contract_base::SendRawWrapper, + proxy_imports::ManagedRef, types::{BigUint, ManagedAddress, ManagedVec, MultiEsdtPayment, TxFrom, TxToSpecified}, }; use super::{AnnotatedEgldPayment, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment}; +/// Indicates that a payment object contains a multi-ESDT payment. +pub trait TxPaymentMultiEsdt: TxPayment +where + Env: TxEnv, +{ +} + +impl TxPaymentMultiEsdt for MultiEsdtPayment where Env: TxEnv {} +impl TxPaymentMultiEsdt for &MultiEsdtPayment where Env: TxEnv {} +impl<'a, Env> TxPaymentMultiEsdt for ManagedRef<'a, Env::Api, MultiEsdtPayment> where + Env: TxEnv +{ +} + impl TxPayment for &MultiEsdtPayment where Env: TxEnv, @@ -60,6 +77,46 @@ where } } +impl<'a, Env> TxPayment for ManagedRef<'a, Env::Api, MultiEsdtPayment> +where + Env: TxEnv, +{ + fn is_no_payment(&self, _env: &Env) -> bool { + self.deref().is_empty() + } + + fn perform_transfer_execute( + self, + env: &Env, + to: &ManagedAddress, + gas_limit: u64, + fc: FunctionCall, + ) { + self.deref() + .perform_transfer_execute(env, to, gas_limit, fc) + } + + fn with_normalized( + self, + env: &Env, + from: &From, + to: To, + fc: FunctionCall, + f: F, + ) -> R + where + From: TxFrom, + To: TxToSpecified, + F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, + { + self.deref().with_normalized(env, from, to, fc, f) + } + + fn into_full_payment_data(self, env: &Env) -> FullPaymentData { + self.deref().into_full_payment_data(env) + } +} + impl TxPayment for MultiEsdtPayment where Env: TxEnv, From 2665c3a37f88be4abca57abdc48bad8fdd9fedfc Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Thu, 28 Mar 2024 17:05:49 +0100 Subject: [PATCH 223/461] removed init and upgrade from proxy --- .../proxy-pause/src/pause_sc_proxy.rs | 35 ------------------- 1 file changed, 35 deletions(-) diff --git a/contracts/examples/proxy-pause/src/pause_sc_proxy.rs b/contracts/examples/proxy-pause/src/pause_sc_proxy.rs index 0984e09ea1..addb769ed0 100644 --- a/contracts/examples/proxy-pause/src/pause_sc_proxy.rs +++ b/contracts/examples/proxy-pause/src/pause_sc_proxy.rs @@ -35,41 +35,6 @@ where wrapped_tx: Tx, } -#[rustfmt::skip] -impl PausableProxyMethods -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - Gas: TxGas, -{ - pub fn init( - self, - ) -> TxProxyDeploy { - self.wrapped_tx - .raw_deploy() - .original_result() - } -} - -#[rustfmt::skip] -impl PausableProxyMethods -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ - pub fn upgrade( - self, - ) -> TxProxyUpgrade { - self.wrapped_tx - .raw_upgrade() - .original_result() - } -} - #[rustfmt::skip] impl PausableProxyMethods where From 25fd2ae97196b84305a870b1ff38738df3decb61 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Thu, 28 Mar 2024 17:12:37 +0100 Subject: [PATCH 224/461] removed encode error proxy --- .../basic-features/src/basic_features_main.rs | 1 - .../basic-features/src/codec_err_test.rs | 13 +-- .../basic-features/src/encode_error_proxy.rs | 100 ------------------ 3 files changed, 3 insertions(+), 111 deletions(-) delete mode 100644 contracts/feature-tests/basic-features/src/encode_error_proxy.rs diff --git a/contracts/feature-tests/basic-features/src/basic_features_main.rs b/contracts/feature-tests/basic-features/src/basic_features_main.rs index 1d3485b3f1..2be5e1a535 100644 --- a/contracts/feature-tests/basic-features/src/basic_features_main.rs +++ b/contracts/feature-tests/basic-features/src/basic_features_main.rs @@ -12,7 +12,6 @@ pub mod crypto_features; pub mod echo; pub mod echo_managed; pub mod elliptic_curve_features; -pub mod encode_error_proxy; pub mod event_features; pub mod macro_features; pub mod managed_address_features; diff --git a/contracts/feature-tests/basic-features/src/codec_err_test.rs b/contracts/feature-tests/basic-features/src/codec_err_test.rs index e72f71b44b..1e2a2d4719 100644 --- a/contracts/feature-tests/basic-features/src/codec_err_test.rs +++ b/contracts/feature-tests/basic-features/src/codec_err_test.rs @@ -1,5 +1,5 @@ multiversx_sc::imports!(); -use crate::{encode_error_proxy, types::CodecErrorTestType}; +use crate::types::CodecErrorTestType; /// Test various serialization errors. #[multiversx_sc::module] @@ -52,20 +52,13 @@ pub trait CodecErrorTest { /// It just covers contract init serialization errors. #[endpoint] fn codec_err_contract_init(&self) { - let _ = self - .tx() - .typed(encode_error_proxy::EncodeErrorProxy) - .init(CodecErrorTestType); + let _ = self.tx().raw_call().argument(&CodecErrorTestType); } /// Never actually calls any async/sync call, so it is appropriate in this contract. /// It just covers contract call serialization errors. #[endpoint] fn codec_err_contract_call(&self) { - let _ = self - .tx() - .to(&ManagedAddress::zero()) - .typed(encode_error_proxy::EncodeErrorProxy) - .encode_error_method(CodecErrorTestType); + let _ = self.tx().raw_call().argument(&CodecErrorTestType); } } diff --git a/contracts/feature-tests/basic-features/src/encode_error_proxy.rs b/contracts/feature-tests/basic-features/src/encode_error_proxy.rs deleted file mode 100644 index eee70b6ae2..0000000000 --- a/contracts/feature-tests/basic-features/src/encode_error_proxy.rs +++ /dev/null @@ -1,100 +0,0 @@ -// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. - -//////////////////////////////////////////////////// -////////////////// AUTO-GENERATED ////////////////// -//////////////////////////////////////////////////// - -#![allow(dead_code)] -#![allow(clippy::all)] - -use multiversx_sc::proxy_imports::*; - -use crate::types::CodecErrorTestType; - -pub struct EncodeErrorProxy; - -impl TxProxyTrait for EncodeErrorProxy -where - Env: TxEnv, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ - type TxProxyMethods = EncodeErrorProxyMethods; - - fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { - EncodeErrorProxyMethods { wrapped_tx: tx } - } -} - -pub struct EncodeErrorProxyMethods -where - Env: TxEnv, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ - wrapped_tx: Tx, -} - -#[rustfmt::skip] -impl EncodeErrorProxyMethods -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - Gas: TxGas, -{ - pub fn init< - Arg0: CodecInto, - >( - self, - error_arg: Arg0, - ) -> TxProxyDeploy { - self.wrapped_tx - .raw_deploy() - .argument(&error_arg) - .original_result() - } -} - -#[rustfmt::skip] -impl EncodeErrorProxyMethods -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ - pub fn upgrade( - self, - ) -> TxProxyUpgrade { - self.wrapped_tx - .raw_upgrade() - .original_result() - } -} - -#[rustfmt::skip] -impl EncodeErrorProxyMethods -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ - pub fn encode_error_method< - Arg0: CodecInto, - >( - self, - error_arg: Arg0, - ) -> TxProxyCall { - self.wrapped_tx - .raw_call() - .function_name("encode_error_method") - .argument(&error_arg) - .original_result() - } -} From 0419ce4ec55f108e8b4d4c7d954f2009effe4b28 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 28 Mar 2024 18:38:51 +0200 Subject: [PATCH 225/461] egld or esdt payment types cleanup --- framework/base/src/types/interaction/tx.rs | 143 +++++++----------- .../base/src/types/interaction/tx_payment.rs | 3 +- .../tx_payment/tx_payment_egld_or_esdt.rs | 60 ++++++++ .../tx_payment_egld_or_multi_esdt.rs | 52 +++---- .../tx_payment_egld_or_multi_esdt_ref.rs | 77 ++++++++++ .../tx_payment/tx_payment_other.rs | 120 --------------- 6 files changed, 211 insertions(+), 244 deletions(-) create mode 100644 framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt.rs create mode 100644 framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt_ref.rs delete mode 100644 framework/base/src/types/interaction/tx_payment/tx_payment_other.rs diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 5f0ef2260e..72da11014b 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -1,6 +1,7 @@ use crate::{ api::CallTypeApi, contract_base::BlockchainWrapper, + proxy_imports::EgldOrMultiEsdtPayment, types::{ BigUint, CodeMetadata, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPaymentRefs, EsdtTokenPayment, EsdtTokenPaymentRefs, ManagedAddress, ManagedBuffer, ManagedOption, @@ -151,41 +152,43 @@ where Data: TxData, RH: TxResultHandler, { - pub fn egld( - self, - egld_value: EgldValue, - ) -> Tx, Gas, Data, RH> + /// Adds any payment to a transaction, if no payment has been added before. + pub fn payment(self, payment: Payment) -> Tx where - EgldValue: TxEgldValue, + Payment: TxPayment, { Tx { env: self.env, from: self.from, to: self.to, - payment: Egld(egld_value), + payment: payment, gas: self.gas, data: self.data, result_handler: self.result_handler, } } + /// Adds EGLD value to a transaction. + /// + /// Accepts any type that can represent and EGLD amount: BigUint, &BigUint, etc. + pub fn egld( + self, + egld_value: EgldValue, + ) -> Tx, Gas, Data, RH> + where + EgldValue: TxEgldValue, + { + self.payment(Egld(egld_value)) + } + + /// Backwards compatibility. Use method `egld` instead. pub fn with_egld_transfer( self, egld_amount: BigUint, ) -> Tx, Gas, Data, RH> { self.egld(egld_amount) } -} -impl Tx -where - Env: TxEnv, - From: TxFrom, - To: TxTo, - Gas: TxGas, - Data: TxData, - RH: TxResultHandler, -{ /// Adds a single ESDT token transfer to a transaction. /// /// Since this is the first ESDT payment, a single payment tx is produced. Can be called again for multiple payments. @@ -193,15 +196,7 @@ where self, payment: P, ) -> Tx, Gas, Data, RH> { - Tx { - env: self.env, - from: self.from, - to: self.to, - payment: payment.into(), - gas: self.gas, - data: self.data, - result_handler: self.result_handler, - } + self.payment(payment.into()) } /// Sets a single token payment, with the token identifier and amount kept as references. @@ -213,65 +208,21 @@ where token_nonce: u64, amount: &'a BigUint, ) -> Tx, Gas, Data, RH> { - Tx { - env: self.env, - from: self.from, - to: self.to, - payment: EsdtTokenPaymentRefs { - token_identifier, - token_nonce, - amount, - }, - gas: self.gas, - data: self.data, - result_handler: self.result_handler, - } + self.payment(EsdtTokenPaymentRefs { + token_identifier, + token_nonce, + amount, + }) } - /// Adds a collection of ESDT payments to a transaction. + /// Sets a collection of ESDT transfers as the payment of the transaction. + /// + /// Equivalend to just ``.payment(payments)`, but only accepts the multi-esdt types. pub fn multi_esdt(self, payments: Payment) -> Tx where Payment: TxPaymentMultiEsdt, { - Tx { - env: self.env, - from: self.from, - to: self.to, - payment: payments, - gas: self.gas, - data: self.data, - result_handler: self.result_handler, - } - } - - pub fn egld_ref( - self, - amount: &BigUint, - ) -> Tx, Gas, Data, RH> { - Tx { - env: self.env, - from: self.from, - to: self.to, - payment: EgldOrMultiEsdtPaymentRefs::Egld(amount), - gas: self.gas, - data: self.data, - result_handler: self.result_handler, - } - } - - pub fn mult_esdt_payment_ref( - self, - amount: &ManagedVec>, - ) -> Tx, Gas, Data, RH> { - Tx { - env: self.env, - from: self.from, - to: self.to, - payment: EgldOrMultiEsdtPaymentRefs::MultiEsdt(amount), - gas: self.gas, - data: self.data, - result_handler: self.result_handler, - } + self.payment(payments) } /// Backwards compatibility. @@ -286,15 +237,7 @@ where self, payment: P, ) -> Tx, Gas, Data, RH> { - Tx { - env: self.env, - from: self.from, - to: self.to, - payment: payment.into(), - gas: self.gas, - data: self.data, - result_handler: self.result_handler, - } + self.payment(payment.into()) } /// Backwards compatibility. @@ -304,6 +247,13 @@ where ) -> Tx, Gas, Data, RH> { self.egld_or_single_esdt(payment) } + + pub fn egld_or_multi_esdt>>( + self, + payment: P, + ) -> Tx, Gas, Data, RH> { + self.payment(payment.into()) + } } impl Tx, Gas, Data, RH> @@ -318,7 +268,7 @@ where /// Adds a single ESDT token transfer to a contract call. /// /// Can be called multiple times on the same call. - pub fn with_esdt_transfer>>( + pub fn esdt>>( self, payment: P, ) -> Tx, Gas, Data, RH> { @@ -335,6 +285,14 @@ where result_handler: self.result_handler, } } + + /// Backwards compatibility. + pub fn with_esdt_transfer>>( + self, + payment: P, + ) -> Tx, Gas, Data, RH> { + self.esdt(payment) + } } impl Tx, Gas, Data, RH> @@ -349,6 +307,15 @@ where /// Adds a single ESDT token transfer to a contract call. /// /// Can be called multiple times on the same call. + pub fn esdt>>( + mut self, + payment: P, + ) -> Tx, Gas, Data, RH> { + self.payment.push(payment.into()); + self + } + + /// Backwards compatibility. pub fn with_esdt_transfer>>( mut self, payment: P, diff --git a/framework/base/src/types/interaction/tx_payment.rs b/framework/base/src/types/interaction/tx_payment.rs index 12a217e243..4e3c560bcb 100644 --- a/framework/base/src/types/interaction/tx_payment.rs +++ b/framework/base/src/types/interaction/tx_payment.rs @@ -1,9 +1,10 @@ mod tx_payment_egld; +mod tx_payment_egld_or_esdt; mod tx_payment_egld_or_multi_esdt; +mod tx_payment_egld_or_multi_esdt_ref; mod tx_payment_egld_value; mod tx_payment_multi_esdt; mod tx_payment_none; -mod tx_payment_other; mod tx_payment_single_esdt; mod tx_payment_single_esdt_ref; diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt.rs new file mode 100644 index 0000000000..adc5ef36f9 --- /dev/null +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt.rs @@ -0,0 +1,60 @@ +use crate::{ + contract_base::SendRawWrapper, + types::{ + BigUint, Egld, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, ManagedAddress, ManagedVec, + TxFrom, TxToSpecified, + }, +}; + +use super::{AnnotatedEgldPayment, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment}; + +impl TxPayment for EgldOrEsdtTokenPayment +where + Env: TxEnv, +{ + fn is_no_payment(&self, _env: &Env) -> bool { + self.amount == 0u32 + } + + fn perform_transfer_execute( + self, + env: &Env, + to: &ManagedAddress, + gas_limit: u64, + fc: FunctionCall, + ) { + self.map_egld_or_esdt( + (to, fc), + |(to, fc), amount| Egld(amount).perform_transfer_execute(env, to, gas_limit, fc), + |(to, fc), esdt_payment| esdt_payment.perform_transfer_execute(env, to, gas_limit, fc), + ) + } + + fn with_normalized( + self, + env: &Env, + from: &From, + to: To, + fc: FunctionCall, + f: F, + ) -> R + where + From: TxFrom, + To: TxToSpecified, + F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, + { + self.map_egld_or_esdt( + (to, fc, f), + |(to, fc, f), amount| Egld(amount).with_normalized(env, from, to, fc, f), + |(to, fc, f), esdt_payment| esdt_payment.with_normalized(env, from, to, fc, f), + ) + } + + fn into_full_payment_data(self, env: &Env) -> FullPaymentData { + self.map_egld_or_esdt( + (), + |(), amount| TxPayment::::into_full_payment_data(Egld(amount), env), + |(), esdt_payment| TxPayment::::into_full_payment_data(esdt_payment, env), + ) + } +} diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt.rs index d5cd9a1a24..6cfcbb4a3c 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt.rs @@ -3,18 +3,18 @@ use alloc::borrow::ToOwned; use crate::{ api::ManagedTypeApi, contract_base::SendRawWrapper, - proxy_imports::{ - AnnotatedValue, EgldOrMultiEsdtPayment, EgldOrMultiEsdtPaymentRefs, ManagedType, - }, + proxy_imports::{AnnotatedValue, EgldOrMultiEsdtPayment, ManagedType}, types::{ BigUint, EsdtTokenPayment, EsdtTokenPaymentRefs, ManagedAddress, ManagedVec, MultiEsdtPayment, TxFrom, TxToSpecified, }, }; -use super::{AnnotatedEgldPayment, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment}; +use super::{ + AnnotatedEgldPayment, Egld, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment, +}; -impl<'a, Env> TxPayment for EgldOrMultiEsdtPaymentRefs<'a, Env::Api> +impl TxPayment for EgldOrMultiEsdtPayment where Env: TxEnv, { @@ -30,23 +30,11 @@ where fc: FunctionCall, ) { match self { - EgldOrMultiEsdtPaymentRefs::Egld(egld_amount) => { - let _ = SendRawWrapper::::new().direct_egld_execute( - to, - egld_amount, - gas_limit, - &fc.function_name, - &fc.arg_buffer, - ); + EgldOrMultiEsdtPayment::Egld(egld_amount) => { + Egld(egld_amount).perform_transfer_execute(env, to, gas_limit, fc) }, - EgldOrMultiEsdtPaymentRefs::MultiEsdt(multi_esdt_payment) => { - let _ = SendRawWrapper::::new().multi_esdt_transfer_execute( - to, - multi_esdt_payment, - gas_limit, - &fc.function_name, - &fc.arg_buffer, - ); + EgldOrMultiEsdtPayment::MultiEsdt(multi_esdt_payment) => { + multi_esdt_payment.perform_transfer_execute(env, to, gas_limit, fc) }, } } @@ -65,28 +53,22 @@ where F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, { match self { - EgldOrMultiEsdtPaymentRefs::Egld(egld_amount) => { - to.with_address_ref(env, |to_addr| f(to_addr, &BigUint::zero(), &fc)) + EgldOrMultiEsdtPayment::Egld(egld_amount) => { + Egld(egld_amount).with_normalized(env, from, to, fc, f) }, - EgldOrMultiEsdtPaymentRefs::MultiEsdt(multi_esdt_payment) => { - to.with_address_ref(env, |to_addr| { - let fc_conv = - fc.convert_to_multi_transfer_esdt_call(to_addr, multi_esdt_payment); - f(to_addr, &BigUint::zero(), &fc_conv) - }) + EgldOrMultiEsdtPayment::MultiEsdt(multi_esdt_payment) => { + multi_esdt_payment.with_normalized(env, from, to, fc, f) }, } } fn into_full_payment_data(self, env: &Env) -> FullPaymentData { match self { - EgldOrMultiEsdtPaymentRefs::Egld(egld_amount) => FullPaymentData { - egld: Some(AnnotatedEgldPayment::new_egld(egld_amount.into_value(env))), - multi_esdt: ManagedVec::new(), + EgldOrMultiEsdtPayment::Egld(egld_amount) => { + TxPayment::::into_full_payment_data(Egld(egld_amount), env) }, - EgldOrMultiEsdtPaymentRefs::MultiEsdt(multi_esdt_payment) => FullPaymentData { - egld: None, - multi_esdt: multi_esdt_payment.clone(), + EgldOrMultiEsdtPayment::MultiEsdt(multi_esdt_payment) => { + TxPayment::::into_full_payment_data(multi_esdt_payment, env) }, } } diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt_ref.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt_ref.rs new file mode 100644 index 0000000000..2c587cd448 --- /dev/null +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt_ref.rs @@ -0,0 +1,77 @@ +use alloc::borrow::ToOwned; + +use crate::{ + api::ManagedTypeApi, + contract_base::SendRawWrapper, + proxy_imports::{ + AnnotatedValue, EgldOrMultiEsdtPayment, EgldOrMultiEsdtPaymentRefs, ManagedType, + }, + types::{ + BigUint, EsdtTokenPayment, EsdtTokenPaymentRefs, ManagedAddress, ManagedVec, + MultiEsdtPayment, TxFrom, TxToSpecified, + }, +}; + +use super::{ + AnnotatedEgldPayment, Egld, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment, +}; + +impl<'a, Env> TxPayment for EgldOrMultiEsdtPaymentRefs<'a, Env::Api> +where + Env: TxEnv, +{ + fn is_no_payment(&self, _env: &Env) -> bool { + self.is_empty() + } + + fn perform_transfer_execute( + self, + env: &Env, + to: &ManagedAddress, + gas_limit: u64, + fc: FunctionCall, + ) { + match self { + EgldOrMultiEsdtPaymentRefs::Egld(egld_amount) => { + Egld(egld_amount).perform_transfer_execute(env, to, gas_limit, fc); + }, + EgldOrMultiEsdtPaymentRefs::MultiEsdt(multi_esdt_payment) => { + multi_esdt_payment.perform_transfer_execute(env, to, gas_limit, fc); + }, + } + } + + fn with_normalized( + self, + env: &Env, + from: &From, + to: To, + fc: FunctionCall, + f: F, + ) -> R + where + From: TxFrom, + To: TxToSpecified, + F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, + { + match self { + EgldOrMultiEsdtPaymentRefs::Egld(egld_amount) => { + Egld(egld_amount).with_normalized(env, from, to, fc, f) + }, + EgldOrMultiEsdtPaymentRefs::MultiEsdt(multi_esdt_payment) => { + multi_esdt_payment.with_normalized(env, from, to, fc, f) + }, + } + } + + fn into_full_payment_data(self, env: &Env) -> FullPaymentData { + match self { + EgldOrMultiEsdtPaymentRefs::Egld(egld_amount) => { + Egld(egld_amount).into_full_payment_data(env) + }, + EgldOrMultiEsdtPaymentRefs::MultiEsdt(multi_esdt_payment) => { + multi_esdt_payment.into_full_payment_data(env) + }, + } + } +} diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_other.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_other.rs deleted file mode 100644 index 01d1c3a6bb..0000000000 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_other.rs +++ /dev/null @@ -1,120 +0,0 @@ -use crate::{ - contract_base::SendRawWrapper, - types::{ - BigUint, Egld, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, ManagedAddress, ManagedVec, - TxFrom, TxToSpecified, - }, -}; - -use super::{AnnotatedEgldPayment, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment}; - -impl TxPayment for EgldOrEsdtTokenPayment -where - Env: TxEnv, -{ - fn is_no_payment(&self, _env: &Env) -> bool { - self.amount == 0u32 - } - - fn perform_transfer_execute( - self, - env: &Env, - to: &ManagedAddress, - gas_limit: u64, - fc: FunctionCall, - ) { - self.map_egld_or_esdt( - (to, fc), - |(to, fc), amount| Egld(amount).perform_transfer_execute(env, to, gas_limit, fc), - |(to, fc), esdt_payment| esdt_payment.perform_transfer_execute(env, to, gas_limit, fc), - ) - } - - fn with_normalized( - self, - env: &Env, - from: &From, - to: To, - fc: FunctionCall, - f: F, - ) -> R - where - From: TxFrom, - To: TxToSpecified, - F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, - { - self.map_egld_or_esdt( - (to, fc, f), - |(to, fc, f), amount| Egld(amount).with_normalized(env, from, to, fc, f), - |(to, fc, f), esdt_payment| esdt_payment.with_normalized(env, from, to, fc, f), - ) - } - - fn into_full_payment_data(self, env: &Env) -> FullPaymentData { - self.map_egld_or_esdt( - (), - |(), amount| TxPayment::::into_full_payment_data(Egld(amount), env), - |(), esdt_payment| TxPayment::::into_full_payment_data(esdt_payment, env), - ) - } -} - -impl TxPayment for EgldOrMultiEsdtPayment -where - Env: TxEnv, -{ - fn is_no_payment(&self, _env: &Env) -> bool { - self.is_empty() - } - - fn perform_transfer_execute( - self, - env: &Env, - to: &ManagedAddress, - gas_limit: u64, - fc: FunctionCall, - ) { - match self { - EgldOrMultiEsdtPayment::Egld(egld_amount) => { - Egld(egld_amount).perform_transfer_execute(env, to, gas_limit, fc) - }, - EgldOrMultiEsdtPayment::MultiEsdt(multi_esdt_payment) => { - multi_esdt_payment.perform_transfer_execute(env, to, gas_limit, fc) - }, - } - } - - fn with_normalized( - self, - env: &Env, - from: &From, - to: To, - fc: FunctionCall, - f: F, - ) -> R - where - From: TxFrom, - To: TxToSpecified, - F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, - { - match self { - EgldOrMultiEsdtPayment::Egld(egld_amount) => { - Egld(egld_amount).with_normalized(env, from, to, fc, f) - }, - EgldOrMultiEsdtPayment::MultiEsdt(multi_esdt_payment) => { - multi_esdt_payment.with_normalized(env, from, to, fc, f) - }, - } - } - - fn into_full_payment_data(self, env: &Env) -> FullPaymentData { - match self { - EgldOrMultiEsdtPayment::Egld(egld_amount) => { - TxPayment::::into_full_payment_data(Egld(egld_amount), env) - }, - EgldOrMultiEsdtPayment::MultiEsdt(multi_esdt_payment) => { - TxPayment::::into_full_payment_data(multi_esdt_payment, env) - }, - } - } -} From 744cb59d3b084321b3b18a36f4af522ea5f1c71f Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 28 Mar 2024 18:41:35 +0200 Subject: [PATCH 226/461] clippy fix --- framework/base/src/types/interaction/tx.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 72da11014b..04f101347c 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -161,7 +161,7 @@ where env: self.env, from: self.from, to: self.to, - payment: payment, + payment, gas: self.gas, data: self.data, result_handler: self.result_handler, From a320dca1e2345f1d90d2f92b4f870c2916c6b23a Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Thu, 28 Mar 2024 18:50:53 +0100 Subject: [PATCH 227/461] fix after review --- contracts/feature-tests/basic-features/src/codec_err_test.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/feature-tests/basic-features/src/codec_err_test.rs b/contracts/feature-tests/basic-features/src/codec_err_test.rs index 1e2a2d4719..cbe8f470b5 100644 --- a/contracts/feature-tests/basic-features/src/codec_err_test.rs +++ b/contracts/feature-tests/basic-features/src/codec_err_test.rs @@ -52,7 +52,7 @@ pub trait CodecErrorTest { /// It just covers contract init serialization errors. #[endpoint] fn codec_err_contract_init(&self) { - let _ = self.tx().raw_call().argument(&CodecErrorTestType); + let _ = self.tx().raw_deploy().argument(&CodecErrorTestType); } /// Never actually calls any async/sync call, so it is appropriate in this contract. From e3f758a2d55565e8f305f9133416a145f6a41040 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Fri, 29 Mar 2024 09:54:24 +0100 Subject: [PATCH 228/461] removed generated tag and allows --- contracts/examples/proxy-pause/src/pause_sc_proxy.rs | 9 --------- 1 file changed, 9 deletions(-) diff --git a/contracts/examples/proxy-pause/src/pause_sc_proxy.rs b/contracts/examples/proxy-pause/src/pause_sc_proxy.rs index addb769ed0..441b9b17c5 100644 --- a/contracts/examples/proxy-pause/src/pause_sc_proxy.rs +++ b/contracts/examples/proxy-pause/src/pause_sc_proxy.rs @@ -1,12 +1,3 @@ -// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. - -//////////////////////////////////////////////////// -////////////////// AUTO-GENERATED ////////////////// -//////////////////////////////////////////////////// - -#![allow(dead_code)] -#![allow(clippy::all)] - use multiversx_sc::proxy_imports::*; pub struct PausableProxy; From f08c0127c2938a6d911eb438892dbadcf0a3e5f2 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Fri, 29 Mar 2024 13:04:09 +0100 Subject: [PATCH 229/461] more migrations for seed nft minter, fractional nfts, rewards distribution scs --- .../fractional-nfts/src/fractional_nfts.rs | 29 +-- .../src/nft_marketplace_proxy.rs | 56 +++++ contracts/examples/nft-minter/src/lib.rs | 27 +-- .../nft-minter/src/nft_marketplace_proxy.rs | 56 +++++ .../src/rewards_distribution.rs | 41 ++-- .../src/seed_nft_minter_proxy.rs | 203 ++++++++++++++++++ .../examples/seed-nft-minter/sc-config.toml | 2 + .../src/distribution_module.rs | 3 +- .../src/nft_marketplace_proxy.rs | 73 +++++++ .../seed-nft-minter/src/seed_nft_minter.rs | 31 +-- 10 files changed, 428 insertions(+), 93 deletions(-) create mode 100644 contracts/examples/fractional-nfts/src/nft_marketplace_proxy.rs create mode 100644 contracts/examples/nft-minter/src/nft_marketplace_proxy.rs create mode 100644 contracts/examples/rewards-distribution/src/seed_nft_minter_proxy.rs create mode 100644 contracts/examples/seed-nft-minter/sc-config.toml create mode 100644 contracts/examples/seed-nft-minter/src/nft_marketplace_proxy.rs diff --git a/contracts/examples/fractional-nfts/src/fractional_nfts.rs b/contracts/examples/fractional-nfts/src/fractional_nfts.rs index 761eb1ec68..16f1c87aed 100644 --- a/contracts/examples/fractional-nfts/src/fractional_nfts.rs +++ b/contracts/examples/fractional-nfts/src/fractional_nfts.rs @@ -5,6 +5,7 @@ use multiversx_sc::imports::*; use multiversx_sc_modules::default_issue_callbacks; mod fractional_uri_info; use fractional_uri_info::FractionalUriInfo; +pub mod nft_marketplace_proxy; #[multiversx_sc::contract] pub trait FractionalNfts: default_issue_callbacks::DefaultIssueCallbacksModule { @@ -39,10 +40,11 @@ pub trait FractionalNfts: default_issue_callbacks::DefaultIssueCallbacksModule { token_nonce: u64, ) { let caller = self.blockchain().get_caller(); - self.marketplace_proxy(marketplace_address) + self.tx() + .to(&marketplace_address) + .typed(nft_marketplace_proxy::NftMarketplaceProxy) .claim_tokens(caller, token_id, token_nonce) - .async_call() - .call_and_exit() + .async_call_and_exit(); } #[payable("*")] @@ -138,25 +140,4 @@ pub trait FractionalNfts: default_issue_callbacks::DefaultIssueCallbacksModule { #[view(getFractionalToken)] #[storage_mapper("fractional_token")] fn fractional_token(&self) -> NonFungibleTokenMapper; - - #[proxy] - fn marketplace_proxy( - &self, - sc_address: ManagedAddress, - ) -> nft_marketplace_proxy::Proxy; -} - -mod nft_marketplace_proxy { - use multiversx_sc::imports::*; - - #[multiversx_sc::proxy] - pub trait NftMarketplace { - #[endpoint(claimTokens)] - fn claim_tokens( - &self, - claim_destination: &ManagedAddress, - token_id: &EgldOrEsdtTokenIdentifier, - token_nonce: u64, - ) -> MultiValue2>; - } } diff --git a/contracts/examples/fractional-nfts/src/nft_marketplace_proxy.rs b/contracts/examples/fractional-nfts/src/nft_marketplace_proxy.rs new file mode 100644 index 0000000000..563e40b7af --- /dev/null +++ b/contracts/examples/fractional-nfts/src/nft_marketplace_proxy.rs @@ -0,0 +1,56 @@ +use multiversx_sc::proxy_imports::*; + +pub struct NftMarketplaceProxy; + +impl TxProxyTrait for NftMarketplaceProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = NftMarketplaceProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + NftMarketplaceProxyMethods { wrapped_tx: tx } + } +} + +pub struct NftMarketplaceProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl NftMarketplaceProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn claim_tokens< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto, + >( + self, + claim_destination: Arg0, + token_id: Arg1, + token_nonce: Arg2, + ) -> TxProxyCall, ManagedVec>>> { + self.wrapped_tx + .raw_call() + .function_name("claimTokens") + .argument(&claim_destination) + .argument(&token_id) + .argument(&token_nonce) + .original_result() + } +} diff --git a/contracts/examples/nft-minter/src/lib.rs b/contracts/examples/nft-minter/src/lib.rs index 5f0a8b3f01..4148f368c2 100644 --- a/contracts/examples/nft-minter/src/lib.rs +++ b/contracts/examples/nft-minter/src/lib.rs @@ -2,6 +2,7 @@ use multiversx_sc::{derive_imports::*, imports::*}; +pub mod nft_marketplace_proxy; mod nft_module; #[derive(TypeAbi, TopEncode, TopDecode)] @@ -72,28 +73,10 @@ pub trait NftMinter: nft_module::NftModule { token_nonce: u64, ) { let caller = self.blockchain().get_caller(); - self.marketplace_proxy(marketplace_address) + self.tx() + .to(&marketplace_address) + .typed(nft_marketplace_proxy::NftMarketplaceProxy) .claim_tokens(token_id, token_nonce, caller) - .async_call() - .call_and_exit() - } - - #[proxy] - fn marketplace_proxy( - &self, - sc_address: ManagedAddress, - ) -> nft_marketplace_proxy::Proxy; -} - -mod nft_marketplace_proxy { - #[multiversx_sc::proxy] - pub trait NftMarketplace { - #[endpoint(claimTokens)] - fn claim_tokens( - &self, - token_id: TokenIdentifier, - token_nonce: u64, - claim_destination: ManagedAddress, - ); + .async_call_and_exit(); } } diff --git a/contracts/examples/nft-minter/src/nft_marketplace_proxy.rs b/contracts/examples/nft-minter/src/nft_marketplace_proxy.rs new file mode 100644 index 0000000000..6c01ca3e1f --- /dev/null +++ b/contracts/examples/nft-minter/src/nft_marketplace_proxy.rs @@ -0,0 +1,56 @@ +use multiversx_sc::proxy_imports::*; + +pub struct NftMarketplaceProxy; + +impl TxProxyTrait for NftMarketplaceProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = NftMarketplaceProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + NftMarketplaceProxyMethods { wrapped_tx: tx } + } +} + +pub struct NftMarketplaceProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl NftMarketplaceProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn claim_tokens< + Arg0: CodecInto>, + Arg1: CodecInto, + Arg2: CodecInto>, + >( + self, + token_id: Arg0, + token_nonce: Arg1, + claim_destination: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("claimTokens") + .argument(&token_id) + .argument(&token_nonce) + .argument(&claim_destination) + .original_result() + } +} diff --git a/contracts/examples/rewards-distribution/src/rewards_distribution.rs b/contracts/examples/rewards-distribution/src/rewards_distribution.rs index cd4b01038c..c669b651f4 100644 --- a/contracts/examples/rewards-distribution/src/rewards_distribution.rs +++ b/contracts/examples/rewards-distribution/src/rewards_distribution.rs @@ -5,6 +5,8 @@ use multiversx_sc_modules::ongoing_operation::{ CONTINUE_OP, DEFAULT_MIN_GAS_TO_SAVE_PROGRESS, STOP_OP, }; +pub mod seed_nft_minter_proxy; + type Epoch = u64; pub const EPOCHS_IN_WEEK: Epoch = 7; @@ -39,10 +41,14 @@ pub trait RewardsDistribution: fn init(&self, seed_nft_minter_address: ManagedAddress, brackets: ManagedVec) { self.seed_nft_minter_address().set(&seed_nft_minter_address); - let nft_token_id: TokenIdentifier = self - .seed_nft_minter_proxy(seed_nft_minter_address) - .get_nft_token_id() - .execute_on_dest_context(); + let nft_token_id = self + .tx() + .to(&seed_nft_minter_address) + .typed(seed_nft_minter_proxy::SeedNftMinterProxy) + .nft_token_id() + .returns(ReturnsResult) + .sync_call(); + self.nft_token_id().set(nft_token_id); self.validate_brackets(&brackets); @@ -175,10 +181,15 @@ pub trait RewardsDistribution: }); let seed_nft_minter_address = self.seed_nft_minter_address().get(); - let ticket_count: u64 = self - .seed_nft_minter_proxy(seed_nft_minter_address) - .get_nft_count() - .execute_on_dest_context(); + + let ticket_count = self + .tx() + .to(&seed_nft_minter_address) + .typed(seed_nft_minter_proxy::SeedNftMinterProxy) + .nft_count() + .returns(ReturnsResult) + .sync_call(); + let brackets = self.brackets().get(); let computed_brackets = self.compute_brackets(brackets, ticket_count); @@ -419,9 +430,6 @@ pub trait RewardsDistribution: #[storage_mapper("raffleProgress")] fn raffle_progress(&self) -> SingleValueMapper>>; - - #[proxy] - fn seed_nft_minter_proxy(&self, address: ManagedAddress) -> seed_nft_minter::Proxy; } fn ticket_to_storage(position: u64, ticket_id: u64) -> u64 { @@ -439,14 +447,3 @@ fn ticket_from_storage(position: u64, ticket_id: u64) -> u64 { ticket_id } } - -mod seed_nft_minter { - #[multiversx_sc::proxy] - pub trait SeedNftMinter { - #[endpoint(getNftCount)] - fn get_nft_count(&self) -> u64; - - #[endpoint(getNftTokenId)] - fn get_nft_token_id(&self) -> TokenIdentifier; - } -} diff --git a/contracts/examples/rewards-distribution/src/seed_nft_minter_proxy.rs b/contracts/examples/rewards-distribution/src/seed_nft_minter_proxy.rs new file mode 100644 index 0000000000..23c1f71e97 --- /dev/null +++ b/contracts/examples/rewards-distribution/src/seed_nft_minter_proxy.rs @@ -0,0 +1,203 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(dead_code)] +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +pub struct SeedNftMinterProxy; + +impl TxProxyTrait for SeedNftMinterProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = SeedNftMinterProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + SeedNftMinterProxyMethods { wrapped_tx: tx } + } +} + +pub struct SeedNftMinterProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl SeedNftMinterProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init< + Arg0: CodecInto>>, + Arg1: CodecInto>>, + >( + self, + marketplaces: Arg0, + distribution: Arg1, + ) -> TxProxyDeploy { + self.wrapped_tx + .raw_deploy() + .argument(&marketplaces) + .argument(&distribution) + .original_result() + } +} + +#[rustfmt::skip] +impl SeedNftMinterProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn create_nft< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>, + Arg3: CodecInto>, + Arg4: CodecInto>>, + Arg5: CodecInto>, + >( + self, + name: Arg0, + royalties: Arg1, + uri: Arg2, + selling_price: Arg3, + opt_token_used_as_payment: Arg4, + opt_token_used_as_payment_nonce: Arg5, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("createNft") + .argument(&name) + .argument(&royalties) + .argument(&uri) + .argument(&selling_price) + .argument(&opt_token_used_as_payment) + .argument(&opt_token_used_as_payment_nonce) + .original_result() + } + + pub fn claim_and_distribute< + Arg0: CodecInto>, + Arg1: CodecInto, + >( + self, + token_id: Arg0, + token_nonce: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("claimAndDistribute") + .argument(&token_id) + .argument(&token_nonce) + .original_result() + } + + pub fn marketplaces( + self, + ) -> TxProxyCall>> { + self.wrapped_tx + .raw_call() + .function_name("getMarketplaces") + .original_result() + } + + pub fn nft_count( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("getNftCount") + .original_result() + } + + pub fn distribution_rules( + self, + ) -> TxProxyCall>> { + self.wrapped_tx + .raw_call() + .function_name("getDistributionRules") + .original_result() + } + + pub fn issue_token< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + token_display_name: Arg0, + token_ticker: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("issueToken") + .argument(&token_display_name) + .argument(&token_ticker) + .original_result() + } + + pub fn buy_nft< + Arg0: CodecInto, + >( + self, + nft_nonce: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("buyNft") + .argument(&nft_nonce) + .original_result() + } + + pub fn get_nft_price< + Arg0: CodecInto, + >( + self, + nft_nonce: Arg0, + ) -> TxProxyCall, u64, BigUint>>> { + self.wrapped_tx + .raw_call() + .function_name("getNftPrice") + .argument(&nft_nonce) + .original_result() + } + + pub fn nft_token_id( + self, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call() + .function_name("getNftTokenId") + .original_result() + } +} + +#[derive(ManagedVecItem, NestedEncode, NestedDecode)] +pub struct Distribution +where + Api: ManagedTypeApi, +{ + pub address: ManagedAddress, + pub percentage: u64, + pub endpoint: ManagedBuffer, + pub gas_limit: u64, +} diff --git a/contracts/examples/seed-nft-minter/sc-config.toml b/contracts/examples/seed-nft-minter/sc-config.toml new file mode 100644 index 0000000000..03b009a5fa --- /dev/null +++ b/contracts/examples/seed-nft-minter/sc-config.toml @@ -0,0 +1,2 @@ +[settings] +proxy-paths = ["../rewards-distribution/src/seed_nft_minter_proxy.rs"] diff --git a/contracts/examples/seed-nft-minter/src/distribution_module.rs b/contracts/examples/seed-nft-minter/src/distribution_module.rs index 9b3bb6d507..5190ba5505 100644 --- a/contracts/examples/seed-nft-minter/src/distribution_module.rs +++ b/contracts/examples/seed-nft-minter/src/distribution_module.rs @@ -2,7 +2,8 @@ use multiversx_sc::{derive_imports::*, imports::*}; pub const MAX_DISTRIBUTION_PERCENTAGE: u64 = 100_000; // 100% -#[derive(ManagedVecItem, NestedEncode, NestedDecode, TypeAbi)] +#[type_abi] +#[derive(ManagedVecItem, NestedEncode, NestedDecode)] pub struct Distribution { pub address: ManagedAddress, pub percentage: u64, diff --git a/contracts/examples/seed-nft-minter/src/nft_marketplace_proxy.rs b/contracts/examples/seed-nft-minter/src/nft_marketplace_proxy.rs new file mode 100644 index 0000000000..4b523c3828 --- /dev/null +++ b/contracts/examples/seed-nft-minter/src/nft_marketplace_proxy.rs @@ -0,0 +1,73 @@ +use multiversx_sc::proxy_imports::*; + +pub struct NftMarketplaceProxy; + +impl TxProxyTrait for NftMarketplaceProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = NftMarketplaceProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + NftMarketplaceProxyMethods { wrapped_tx: tx } + } +} + +pub struct NftMarketplaceProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl NftMarketplaceProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init( + self, + ) -> TxProxyDeploy { + self.wrapped_tx + .raw_deploy() + .original_result() + } +} + +#[rustfmt::skip] +impl NftMarketplaceProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn claim_tokens< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto, + >( + self, + claim_destination: Arg0, + token_id: Arg1, + token_nonce: Arg2, + ) -> TxProxyCall, ManagedVec>>> { + self.wrapped_tx + .raw_call() + .function_name("claimTokens") + .argument(&claim_destination) + .argument(&token_id) + .argument(&token_nonce) + .original_result() + } +} diff --git a/contracts/examples/seed-nft-minter/src/seed_nft_minter.rs b/contracts/examples/seed-nft-minter/src/seed_nft_minter.rs index 42b064e5cd..1a6ac5ffe2 100644 --- a/contracts/examples/seed-nft-minter/src/seed_nft_minter.rs +++ b/contracts/examples/seed-nft-minter/src/seed_nft_minter.rs @@ -3,6 +3,7 @@ use multiversx_sc::{derive_imports::*, imports::*}; mod distribution_module; +pub mod nft_marketplace_proxy; mod nft_module; use distribution_module::Distribution; @@ -86,10 +87,13 @@ pub trait SeedNftMinter: let claim_destination = self.blockchain().get_sc_address(); let mut total_amount = BigUint::zero(); for address in self.marketplaces().iter() { - let results: MultiValue2> = self - .marketplace_proxy(address) + let results = self + .tx() + .to(&address) + .typed(nft_marketplace_proxy::NftMarketplaceProxy) .claim_tokens(&claim_destination, token_id, token_nonce) - .execute_on_dest_context(); + .returns(ReturnsResult) + .sync_call(); let (egld_amount, esdt_payments) = results.into_tuple(); let amount = if token_id.is_egld() { @@ -113,25 +117,4 @@ pub trait SeedNftMinter: #[view(getNftCount)] #[storage_mapper("nftCount")] fn nft_count(&self) -> SingleValueMapper; - - #[proxy] - fn marketplace_proxy( - &self, - sc_address: ManagedAddress, - ) -> nft_marketplace_proxy::Proxy; -} - -mod nft_marketplace_proxy { - use multiversx_sc::imports::*; - - #[multiversx_sc::proxy] - pub trait NftMarketplace { - #[endpoint(claimTokens)] - fn claim_tokens( - &self, - claim_destination: &ManagedAddress, - token_id: &EgldOrEsdtTokenIdentifier, - token_nonce: u64, - ) -> MultiValue2>; - } } From 230c1dd5033ba8121c37e7397caef9408b80c75a Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Fri, 29 Mar 2024 14:59:10 +0100 Subject: [PATCH 230/461] clippy --- contracts/examples/fractional-nfts/src/nft_marketplace_proxy.rs | 2 ++ contracts/examples/seed-nft-minter/src/nft_marketplace_proxy.rs | 2 ++ 2 files changed, 4 insertions(+) diff --git a/contracts/examples/fractional-nfts/src/nft_marketplace_proxy.rs b/contracts/examples/fractional-nfts/src/nft_marketplace_proxy.rs index 563e40b7af..78df59231f 100644 --- a/contracts/examples/fractional-nfts/src/nft_marketplace_proxy.rs +++ b/contracts/examples/fractional-nfts/src/nft_marketplace_proxy.rs @@ -1,3 +1,5 @@ +#![allow(clippy::all)] + use multiversx_sc::proxy_imports::*; pub struct NftMarketplaceProxy; diff --git a/contracts/examples/seed-nft-minter/src/nft_marketplace_proxy.rs b/contracts/examples/seed-nft-minter/src/nft_marketplace_proxy.rs index 4b523c3828..d62c326542 100644 --- a/contracts/examples/seed-nft-minter/src/nft_marketplace_proxy.rs +++ b/contracts/examples/seed-nft-minter/src/nft_marketplace_proxy.rs @@ -1,3 +1,5 @@ +#![allow(clippy::all)] + use multiversx_sc::proxy_imports::*; pub struct NftMarketplaceProxy; From 6904d2b3841dd549ef87c46b2fabcf965f9eee63 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Fri, 29 Mar 2024 16:52:11 +0200 Subject: [PATCH 231/461] proxy gen - create struct ProxyGenerator --- .../meta/src/cmd/contract/generate_proxy.rs | 3 +- .../contract/generate_proxy/proxy_gen_main.rs | 35 +- .../generate_proxy/proxy_gen_struct_enum.rs | 224 -------- .../generate_proxy/proxy_generator.rs | 496 ++++++++++++++++++ .../generate_proxy/proxy_sc_functions_gen.rs | 275 ---------- .../generate_proxy/proxy_template_gen.rs | 128 +++-- 6 files changed, 597 insertions(+), 564 deletions(-) delete mode 100644 framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs create mode 100644 framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs delete mode 100644 framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs diff --git a/framework/meta/src/cmd/contract/generate_proxy.rs b/framework/meta/src/cmd/contract/generate_proxy.rs index 2aa854bc2e..0da27327c2 100644 --- a/framework/meta/src/cmd/contract/generate_proxy.rs +++ b/framework/meta/src/cmd/contract/generate_proxy.rs @@ -1,6 +1,5 @@ pub mod proxy_crate_gen; pub mod proxy_gen_main; -pub mod proxy_gen_struct_enum; +mod proxy_generator; mod proxy_naming; -pub mod proxy_sc_functions_gen; pub mod proxy_template_gen; diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs index dfac04fd8f..63a8d7e757 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs @@ -1,43 +1,20 @@ -use std::fs::File; - -use multiversx_sc::abi::ContractAbi; - use super::{ - super::meta_config::MetaConfig, - proxy_crate_gen::create_file, - proxy_gen_struct_enum::write_types, - proxy_sc_functions_gen::write_content, - proxy_template_gen::{ - write_header, write_impl_for_tx_proxy, write_struct_tx_proxy_methods, - write_tx_proxy_type_def, - }, + super::meta_config::MetaConfig, proxy_crate_gen::create_file, proxy_generator::ProxyGenerator, }; const OUTPUT_PROXY_PATH: &str = "/output/proxy.rs"; impl MetaConfig { pub fn generate_proxy(&self) { - write_proxy_with_explicit_path(OUTPUT_PROXY_PATH, &self.original_contract_abi); + write_proxy_with_explicit_path(OUTPUT_PROXY_PATH, self); for path in &self.sc_config.proxy_paths { - write_proxy_with_explicit_path(path, &self.original_contract_abi); + write_proxy_with_explicit_path(path, self); } } } -fn write_proxy_with_explicit_path(path: &str, abi: &ContractAbi) { +fn write_proxy_with_explicit_path(path: &str, meta_config: &MetaConfig) { let file = create_file(path); - write_proxy_to_file(file, abi); -} - -fn write_proxy_to_file(mut file: File, abi: &ContractAbi) { - write_header(&mut file); - write_tx_proxy_type_def(&mut file, &abi.name); - write_impl_for_tx_proxy(&mut file, &abi.name); - write_struct_tx_proxy_methods(&mut file, &abi.name); - write_content(&mut file, abi.clone()); - write_types( - &mut file, - &abi.type_descriptions, - abi.build_info.contract_crate.name, - ); + let proxy_generator = ProxyGenerator::new(meta_config); + proxy_generator.write_proxy_to_file(file); } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs deleted file mode 100644 index 7b32115081..0000000000 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_struct_enum.rs +++ /dev/null @@ -1,224 +0,0 @@ -use std::{fs::File, io::Write}; - -use multiversx_sc::abi::{ - EnumVariantDescription, StructFieldDescription, TypeContents, TypeDescription, - TypeDescriptionContainerImpl, -}; - -const ZERO: &str = "0"; - -/// Types defined in the framework don't need to be generated again in the proxy. -const TYPES_FROM_FRAMEWORK: &[&str] = &[ - "EsdtTokenPayment", - "EgldOrEsdtTokenPayment", - "EsdtTokenData", - "EgldOrEsdtTokenIdentifier", - "EgldOrEsdtTokenPayment", - "EgldOrMultiEsdtPayment", - "EsdtTokenData", - "EsdtLocalRole", -]; - -pub(crate) fn write_types( - file: &mut File, - types: &TypeDescriptionContainerImpl, - proxy_crate: &str, -) { - for (_, type_description) in &types.0 { - if proxy_crate != extract_struct_crate(type_description.names.rust.as_str()) { - continue; - } - - let type_name = adjust_type_name(&type_description.names.rust, proxy_crate); - if TYPES_FROM_FRAMEWORK.contains(&type_name.as_str()) { - continue; - } - - match &type_description.contents { - TypeContents::Enum(enum_variants) => write_enum( - file, - enum_variants, - type_description, - &type_name, - proxy_crate, - ), - TypeContents::Struct(struct_fields) => write_struct( - file, - struct_fields, - type_description, - &type_name, - proxy_crate, - ), - TypeContents::NotSpecified => {}, - TypeContents::ExplicitEnum(_) => {}, - } - } -} - -fn start_write_type( - file: &mut File, - type_type: &str, - type_description: &TypeDescription, - name: &str, -) { - writeln!(file).unwrap(); - write_macro_attributes(file, &type_description.macro_attributes); - write!(file, r#"pub {type_type} {name}"#).unwrap(); - - if name.contains("") { - writeln!( - file, - r#" -where - Api: ManagedTypeApi,"# - ) - .unwrap(); - } else { - write!(file, " ").unwrap(); - } - - writeln!(file, r#"{{"#).unwrap(); -} - -fn write_struct( - file: &mut File, - struct_fields: &Vec, - type_description: &TypeDescription, - name: &str, - proxy_crate: &str, -) { - start_write_type(file, "struct", type_description, name); - - for field in struct_fields { - writeln!( - file, - " pub {}: {},", - field.name, - adjust_type_name(&field.field_type.rust, proxy_crate) - ) - .unwrap(); - } - - writeln!(file, "}}").unwrap(); -} - -fn write_enum( - file: &mut File, - enum_variants: &Vec, - type_description: &TypeDescription, - name: &str, - proxy_crate: &str, -) { - start_write_type(file, "enum", type_description, name); - - for variant in enum_variants { - write!(file, " {}", variant.name).unwrap(); - if variant.fields.is_empty() { - writeln!(file, ",").unwrap(); - continue; - } - - if variant.fields[0].name == ZERO { - write_tuple_in_variant(file, &variant.fields, proxy_crate); - } else { - write_struct_in_variant(file, &variant.fields, proxy_crate); - } - } - writeln!(file, "}}").unwrap(); -} - -fn write_macro_attributes(file: &mut File, macro_attributes: &[String]) { - if macro_attributes.is_empty() { - writeln!(file, "#[derive(TopEncode, TopDecode)]").unwrap(); - } else { - writeln!(file, "#[derive({})]", macro_attributes.join(", ")).unwrap(); - } -} - -fn write_struct_in_variant(file: &mut File, fields: &[StructFieldDescription], proxy_crate: &str) { - writeln!(file, " {{").unwrap(); - - for field in fields { - writeln!( - file, - " {}: {},", - field.name, - adjust_type_name(&field.field_type.rust, proxy_crate) - ) - .unwrap(); - } - - writeln!(file, " }},").unwrap(); -} - -fn write_tuple_in_variant(file: &mut File, fields: &[StructFieldDescription], proxy_crate: &str) { - write!(file, "(").unwrap(); - write!( - file, - "{}", - adjust_type_name(&fields[0].field_type.rust, proxy_crate) - ) - .unwrap(); - - for field in &fields[1..] { - write!( - file, - ", {}", - adjust_type_name(&field.field_type.rust, proxy_crate) - ) - .unwrap(); - } - - writeln!(file, "),").unwrap(); -} - -fn extract_struct_crate(struct_path: &str) -> String { - let struct_crate_name = struct_path - .replace('_', "-") - .replace("multiversx_sc::api::uncallable::UncallableApi", "Api") - .to_string(); - let crate_name = struct_crate_name - .split("::") - .next() - .unwrap_or_else(|| &struct_crate_name); - crate_name.to_string() -} - -pub(crate) fn clean_paths(proxy_crate: &str, rust_type: &str) -> String { - let delimiters = "<>,()[] "; - let words: Vec<&str> = rust_type - .split(|c| delimiters.contains(c)) - .filter(|s| !s.is_empty()) - .collect(); - - let mut words_replacer: Vec = Vec::new(); - for word in &words { - let type_rust_name = word.split("::").last().unwrap().to_string(); - if proxy_crate == extract_struct_crate(word) - || TYPES_FROM_FRAMEWORK.contains(&type_rust_name.as_str()) - { - words_replacer.push(type_rust_name); - } else { - words_replacer.push(word.to_string()); - } - } - - let mut rust_type_with_cleaned_path: String = rust_type.to_string().clone(); - for index in 0..words.len() { - rust_type_with_cleaned_path = rust_type_with_cleaned_path.replace( - words.get(index).unwrap(), - words_replacer.get(index).unwrap(), - ); - } - - rust_type_with_cleaned_path -} - -pub fn adjust_type_name(original_rust_name: &str, proxy_crate: &str) -> String { - clean_paths( - proxy_crate, - &original_rust_name - .replace("multiversx_sc::api::uncallable::UncallableApi", "Api") - .replace("$API", "Api"), - ) -} diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs new file mode 100644 index 0000000000..bd58f028ef --- /dev/null +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs @@ -0,0 +1,496 @@ +use std::{fs::File, io::Write}; + +use multiversx_sc::abi::{ + EndpointAbi, EnumVariantDescription, InputAbi, OutputAbi, StructFieldDescription, TypeContents, + TypeDescription, +}; + +use crate::cmd::contract::meta_config::MetaConfig; + +use super::{ + proxy_naming::{proxy_methods_type_name, proxy_type_name}, + proxy_template_gen::{ + extract_struct_crate, start_write_type, write_constructor_content, write_end_of_function, + write_endpoint_content, write_endpoint_docs, write_function_header_endpoint, write_header, + write_parameters, write_upgrade_content, + }, +}; + +const ZERO: &str = "0"; + +/// Types defined in the framework don't need to be generated again in the proxy. +const TYPES_FROM_FRAMEWORK: &[&str] = &[ + "EsdtTokenPayment", + "EgldOrEsdtTokenPayment", + "EsdtTokenData", + "EgldOrEsdtTokenIdentifier", + "EgldOrEsdtTokenPayment", + "EgldOrMultiEsdtPayment", + "EsdtTokenData", + "EsdtLocalRole", +]; + +pub struct ProxyGenerator<'a> { + pub meta_config: &'a MetaConfig, +} + +impl<'a> ProxyGenerator<'a> { + pub const fn new(meta_config: &'a MetaConfig) -> Self { + ProxyGenerator { meta_config } + } + + pub fn write_proxy_to_file(&self, mut file: File) { + write_header(&mut file); + self.write_tx_proxy_type_def(&mut file); + self.write_impl_for_tx_proxy(&mut file); + self.write_struct_tx_proxy_methods(&mut file); + self.write_content(&mut file); + self.write_types(&mut file); + } + + fn write_tx_proxy_type_def(&self, file: &mut File) { + let proxy_type_name = proxy_type_name(&self.meta_config.original_contract_abi.name); + writeln!( + file, + r#" +pub struct {proxy_type_name};"# + ) + .unwrap(); + } + + fn write_impl_for_tx_proxy(&self, file: &mut File) { + let proxy_type_name = proxy_type_name(&self.meta_config.original_contract_abi.name); + let proxy_methods_type_name = + proxy_methods_type_name(&self.meta_config.original_contract_abi.name); + writeln!( + file, + r#" +impl TxProxyTrait for {proxy_type_name} +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{{ + type TxProxyMethods = {proxy_methods_type_name}; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods {{ + {proxy_methods_type_name} {{ wrapped_tx: tx }} + }} +}}"# + ) + .unwrap(); + } + + fn write_struct_tx_proxy_methods(&self, file: &mut File) { + let proxy_methods_type_name = + proxy_methods_type_name(&self.meta_config.original_contract_abi.name); + writeln!( + file, + r#" +pub struct {proxy_methods_type_name} +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{{ + wrapped_tx: Tx, +}}"# + ) + .unwrap(); + } + + fn write_content(&self, file: &mut File) { + if !self + .meta_config + .original_contract_abi + .constructors + .is_empty() + { + self.write_constructors(file); + } + + if !self + .meta_config + .original_contract_abi + .upgrade_constructors + .is_empty() + { + self.write_upgrades(file); + } + + if !self.meta_config.original_contract_abi.endpoints.is_empty() { + self.write_endpoints(file); + } + } + + fn write_types(&self, file: &mut File) { + for (_, type_description) in &self.meta_config.original_contract_abi.type_descriptions.0 { + if self + .meta_config + .original_contract_abi + .build_info + .contract_crate + .name + != extract_struct_crate(type_description.names.rust.as_str()) + { + continue; + } + + let type_name = self.adjust_type_name_with_api(&type_description.names.rust); + if TYPES_FROM_FRAMEWORK.contains(&type_name.as_str()) { + continue; + } + + match &type_description.contents { + TypeContents::Enum(enum_variants) => { + self.write_enum(file, enum_variants, type_description, &type_name) + }, + TypeContents::Struct(struct_fields) => { + self.write_struct(file, struct_fields, type_description, &type_name) + }, + TypeContents::NotSpecified => {}, + TypeContents::ExplicitEnum(_) => {}, + } + } + } + + fn write_constructors(&self, file: &mut File) { + let constructors: Vec = + self.meta_config.original_contract_abi.constructors.clone(); + + self.write_header_impl_constructor(file); + for (i, constructor_abi) in constructors.into_iter().enumerate() { + if i > 0 { + writeln!(file).unwrap(); + } + self.write_constructor_header(file, &constructor_abi); + write_constructor_content(file, constructor_abi.inputs); + write_end_of_function(file); + } + + writeln!(file, "}}").unwrap(); + } + + fn write_upgrades(&self, file: &mut File) { + self.write_header_impl_upgrade(file); + for (i, upgrade) in self + .meta_config + .original_contract_abi + .upgrade_constructors + .clone() + .into_iter() + .enumerate() + { + if i > 0 { + writeln!(file).unwrap(); + } + self.write_upgrade_header(file, &upgrade); + write_upgrade_content(file, upgrade.inputs); + write_end_of_function(file); + } + + writeln!(file, "}}").unwrap(); + } + + fn write_endpoints(&self, file: &mut File) { + let endpoints: Vec = self.meta_config.original_contract_abi.endpoints.clone(); + + self.write_header_impl_endpoints(file); + for (i, endpoint_abi) in endpoints.into_iter().enumerate() { + if i > 0 { + writeln!(file).unwrap(); + } + self.write_endpoint_header(file, &endpoint_abi); + write_endpoint_content(file, &endpoint_abi); + write_end_of_function(file); + } + + writeln!(file, "}}").unwrap(); + } + + fn write_header_impl_constructor(&self, file: &mut File) { + let proxy_methods_type_name = + proxy_methods_type_name(&self.meta_config.original_contract_abi.name); + writeln!( + file, + r#" +#[rustfmt::skip] +impl {proxy_methods_type_name} +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{{"# + ) + .unwrap(); + } + + fn write_header_impl_upgrade(&self, file: &mut File) { + let proxy_methods_type_name = + proxy_methods_type_name(&self.meta_config.original_contract_abi.name); + writeln!( + file, + r#" +#[rustfmt::skip] +impl {proxy_methods_type_name} +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{{"# + ) + .unwrap(); + } + + fn write_header_impl_endpoints(&self, file: &mut File) { + let proxy_methods_type_name = + proxy_methods_type_name(&self.meta_config.original_contract_abi.name); + writeln!( + file, + r#" +#[rustfmt::skip] +impl {proxy_methods_type_name} +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{{"# + ) + .unwrap(); + } + + fn write_constructor_header(&self, file: &mut File, constructor_abi: &EndpointAbi) { + self.write_fn_signature(file, constructor_abi); + self.write_constructor_output(file, &constructor_abi.outputs); + } + + fn write_upgrade_header(&self, file: &mut File, constructor_abi: &EndpointAbi) { + self.write_fn_signature(file, constructor_abi); + self.write_upgrade_output(file, &constructor_abi.outputs); + } + + fn write_endpoint_header(&self, file: &mut File, constructor_abi: &EndpointAbi) { + self.write_fn_signature(file, constructor_abi); + self.write_endpoint_output(file, &constructor_abi.outputs); + } + + fn write_fn_signature(&self, file: &mut File, endpoint: &EndpointAbi) { + write_endpoint_docs(file, &endpoint.docs); + write_function_header_endpoint(file, &endpoint.rust_method_name); + self.write_args(file, &endpoint.inputs); + write_parameters(file, &endpoint.inputs); + } + + fn write_args(&self, file: &mut File, inputs: &[InputAbi]) { + if inputs.is_empty() { + return; + } + + writeln!(file, "<").unwrap(); + + for (index, input) in inputs.iter().enumerate() { + self.write_argument(file, index, &input.type_names.rust); + } + + write!(file, " >").unwrap(); + } + + fn write_argument(&self, file: &mut File, index: usize, rust_name: &str) { + let adjusted = self.adjust_type_name_with_env_api(rust_name); + writeln!(file, " Arg{index}: CodecInto<{adjusted}>,").unwrap(); + } + + fn write_constructor_output(&self, file: &mut File, outputs: &[OutputAbi]) { + write!(file, "-> TxProxyDeploy {{").unwrap(); + } + + fn write_upgrade_output(&self, file: &mut File, outputs: &[OutputAbi]) { + write!(file, "-> TxProxyUpgrade {{").unwrap(); + } + + fn write_endpoint_output(&self, file: &mut File, outputs: &[OutputAbi]) { + write!(file, "-> TxProxyCall {{").unwrap(); + } + + fn parse_and_write_outputs(&self, file: &mut File, outputs: &[OutputAbi]) { + match outputs.len() { + 0 => { + write!(file, "()").unwrap(); + }, + 1 => { + let adjusted = self.adjust_type_name_with_env_api(&outputs[0].type_names.rust); + write!(file, "{adjusted}").unwrap(); + }, + _ => { + write!(file, "MultiValue{}<", outputs.len()).unwrap(); + for (i, output) in outputs.iter().enumerate() { + if i > 0 { + write!(file, ", ").unwrap(); + } + let adjusted = self.adjust_type_name_with_env_api(&output.type_names.rust); + write!(file, "{adjusted}").unwrap(); + } + write!(file, ">").unwrap(); + }, + } + } + + fn write_enum( + &self, + file: &mut File, + enum_variants: &Vec, + type_description: &TypeDescription, + name: &str, + ) { + start_write_type(file, "enum", type_description, name); + + for variant in enum_variants { + write!(file, " {}", variant.name).unwrap(); + if variant.fields.is_empty() { + writeln!(file, ",").unwrap(); + continue; + } + + if variant.fields[0].name == ZERO { + self.write_tuple_in_variant(file, &variant.fields); + } else { + self.write_struct_in_variant(file, &variant.fields); + } + } + writeln!(file, "}}").unwrap(); + } + + fn write_struct( + &self, + file: &mut File, + struct_fields: &Vec, + type_description: &TypeDescription, + name: &str, + ) { + start_write_type(file, "struct", type_description, name); + + for field in struct_fields { + writeln!( + file, + " pub {}: {},", + field.name, + self.adjust_type_name_with_api(&field.field_type.rust) + ) + .unwrap(); + } + + writeln!(file, "}}").unwrap(); + } + + fn write_tuple_in_variant(&self, file: &mut File, fields: &[StructFieldDescription]) { + write!(file, "(").unwrap(); + write!( + file, + "{}", + self.adjust_type_name_with_api(&fields[0].field_type.rust) + ) + .unwrap(); + + for field in &fields[1..] { + write!( + file, + ", {}", + self.adjust_type_name_with_api(&field.field_type.rust) + ) + .unwrap(); + } + + writeln!(file, "),").unwrap(); + } + + fn write_struct_in_variant(&self, file: &mut File, fields: &[StructFieldDescription]) { + writeln!(file, " {{").unwrap(); + + for field in fields { + writeln!( + file, + " {}: {},", + field.name, + self.adjust_type_name_with_api(&field.field_type.rust) + ) + .unwrap(); + } + + writeln!(file, " }},").unwrap(); + } + + fn clean_paths(&self, proxy_crate: &str, rust_type: &str) -> String { + let delimiters = "<>,()[] "; + let words: Vec<&str> = rust_type + .split(|c| delimiters.contains(c)) + .filter(|s| !s.is_empty()) + .collect(); + + let mut words_replacer: Vec = Vec::new(); + for word in &words { + let type_rust_name = word.split("::").last().unwrap().to_string(); + if proxy_crate == extract_struct_crate(word) + || TYPES_FROM_FRAMEWORK.contains(&type_rust_name.as_str()) + { + words_replacer.push(type_rust_name); + } else { + words_replacer.push(word.to_string()); + } + } + + let mut rust_type_with_cleaned_path: String = rust_type.to_string().clone(); + for index in 0..words.len() { + rust_type_with_cleaned_path = rust_type_with_cleaned_path.replace( + words.get(index).unwrap(), + words_replacer.get(index).unwrap(), + ); + } + + rust_type_with_cleaned_path + } + + fn adjust_type_name_with_env_api(&self, original_rust_name: &str) -> String { + self.clean_paths( + self.meta_config + .original_contract_abi + .build_info + .contract_crate + .name, + &original_rust_name + .replace("multiversx_sc::api::uncallable::UncallableApi", "Env::Api") + .replace("$API", "Env::Api"), + ) + } + + fn adjust_type_name_with_api(&self, original_rust_name: &str) -> String { + self.clean_paths( + self.meta_config + .original_contract_abi + .build_info + .contract_crate + .name, + &original_rust_name + .replace("multiversx_sc::api::uncallable::UncallableApi", "Api") + .replace("$API", "Api"), + ) + } +} diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs deleted file mode 100644 index 5029e8790c..0000000000 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs +++ /dev/null @@ -1,275 +0,0 @@ -use std::{fs::File, io::Write}; - -use multiversx_sc::abi::{ContractAbi, EndpointAbi, InputAbi, OutputAbi}; - -use super::{proxy_gen_struct_enum::clean_paths, proxy_naming::proxy_methods_type_name}; - -pub(crate) fn write_content(file: &mut File, abi: ContractAbi) { - write_header_impl_constructor(file, &abi.name); - for (i, constructor_abi) in abi.constructors.into_iter().enumerate() { - if i > 0 { - writeln!(file).unwrap(); - } - write_constructor_header( - file, - constructor_abi.clone(), - abi.build_info.contract_crate.name, - ); - write_constructor_content(file, constructor_abi.inputs); - write_end_of_function(file); - } - - writeln!(file, "}}").unwrap(); - - write_header_impl_upgrade_constructor(file, &abi.name); - for (i, upgrade_abi) in abi.upgrade_constructors.clone().into_iter().enumerate() { - if i > 0 { - writeln!(file).unwrap(); - } - write_upgrade_constructor_header( - file, - upgrade_abi.clone(), - abi.build_info.contract_crate.name, - ); - write_upgrade_constructor_content(file, upgrade_abi.inputs); - write_end_of_function(file); - } - - writeln!(file, "}}").unwrap(); - - write_header_impl_endpoints(file, &abi.name); - for (i, endpoint_abi) in abi.endpoints.into_iter().enumerate() { - if i > 0 { - writeln!(file).unwrap(); - } - write_endpoint_header( - file, - endpoint_abi.clone(), - abi.build_info.contract_crate.name, - ); - write_endpoint_content(file, endpoint_abi.name, endpoint_abi.inputs); - write_end_of_function(file); - } - - writeln!(file, "}}").unwrap(); -} - -fn write_header_impl_constructor(file: &mut File, name: &str) { - let proxy_methods_type_name = proxy_methods_type_name(name); - writeln!( - file, - r#" -#[rustfmt::skip] -impl {proxy_methods_type_name} -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - Gas: TxGas, -{{"# - ) - .unwrap(); -} - -fn write_header_impl_upgrade_constructor(file: &mut File, name: &str) { - let proxy_methods_type_name = proxy_methods_type_name(name); - writeln!( - file, - r#" -#[rustfmt::skip] -impl {proxy_methods_type_name} -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{{"# - ) - .unwrap(); -} - -fn write_header_impl_endpoints(file: &mut File, name: &str) { - let proxy_methods_type_name = proxy_methods_type_name(name); - writeln!( - file, - r#" -#[rustfmt::skip] -impl {proxy_methods_type_name} -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{{"# - ) - .unwrap(); -} - -fn write_constructor_header(file: &mut File, constructor_abi: EndpointAbi, proxy_crate: &str) { - write_fn_signature(file, constructor_abi.clone(), proxy_crate); - write_constructor_output(file, constructor_abi.outputs, proxy_crate); -} - -fn write_upgrade_constructor_header( - file: &mut File, - upgrade_constructor_abi: EndpointAbi, - proxy_crate: &str, -) { - write_fn_signature(file, upgrade_constructor_abi.clone(), proxy_crate); - write_upgrade_constructor_output(file, upgrade_constructor_abi.outputs, proxy_crate); -} - -fn write_endpoint_header(file: &mut File, constructor_abi: EndpointAbi, proxy_crate: &str) { - write_fn_signature(file, constructor_abi.clone(), proxy_crate); - write_endpoint_output(file, constructor_abi.outputs, proxy_crate); -} - -fn write_fn_signature(file: &mut File, endpoint_abi: EndpointAbi, proxy_crate: &str) { - write_endpoint_docs(file, endpoint_abi.docs); - write_function_header_endpoint(file, endpoint_abi.rust_method_name); - write_args(file, endpoint_abi.inputs.clone(), proxy_crate); - write_parameters(file, endpoint_abi.inputs); -} - -fn write_parameters(file: &mut File, inputs: Vec) { - writeln!(file, "(").unwrap(); - writeln!(file, " self,").unwrap(); - for (index, input) in inputs.iter().enumerate() { - writeln!(file, " {}: Arg{index},", &input.arg_name).unwrap(); - } - write!(file, " ) ").unwrap(); -} - -fn write_constructor_output(file: &mut File, outputs: Vec, proxy_crate: &str) { - write!(file, "-> TxProxyDeploy {{").unwrap(); -} - -fn write_upgrade_constructor_output(file: &mut File, outputs: Vec, proxy_crate: &str) { - write!(file, "-> TxProxyUpgrade {{").unwrap(); -} - -fn write_endpoint_output(file: &mut File, outputs: Vec, proxy_crate: &str) { - write!(file, "-> TxProxyCall {{").unwrap(); -} - -fn write_constructor_content(file: &mut File, inputs: Vec) { - writeln!( - file, - " self.wrapped_tx - .raw_deploy()" - ) - .unwrap(); - for input in inputs.iter() { - writeln!(file, " .argument(&{})", input.arg_name).unwrap(); - } - writeln!(file, " .original_result()").unwrap(); -} - -fn write_upgrade_constructor_content(file: &mut File, inputs: Vec) { - writeln!( - file, - " self.wrapped_tx - .raw_upgrade()" - ) - .unwrap(); - for input in inputs.iter() { - writeln!(file, " .argument(&{})", input.arg_name).unwrap(); - } - writeln!(file, " .original_result()").unwrap(); -} - -fn write_endpoint_content(file: &mut File, function_name: String, inputs: Vec) { - writeln!( - file, - " self.wrapped_tx - .raw_call() - .function_name(\"{}\")", - function_name - ) - .unwrap(); - - for input in inputs.iter() { - writeln!(file, " .argument(&{})", input.arg_name).unwrap(); - } - - writeln!(file, " .original_result()").unwrap(); -} - -fn write_function_header_endpoint(file: &mut File, rust_method_name: String) { - write!(file, " pub fn {rust_method_name}").unwrap(); -} - -fn write_endpoint_docs(file: &mut File, docs: Vec) { - for abi_doc in docs { - writeln!(file, " /// {abi_doc} ").unwrap(); - } -} - -fn write_args(file: &mut File, inputs: Vec, proxy_crate: &str) { - if inputs.is_empty() { - return; - } - - writeln!(file, "<").unwrap(); - - for (index, input) in inputs.iter().enumerate() { - write_argument(file, index, &input.type_names.rust, proxy_crate); - } - - write!(file, " >").unwrap(); -} - -fn write_argument(file: &mut File, index: usize, rust_name: &str, proxy_crate: &str) { - let adjusted = adjust_type_name(rust_name, proxy_crate); - writeln!(file, " Arg{index}: CodecInto<{adjusted}>,").unwrap(); -} - -fn write_end_of_function(file: &mut File) { - writeln!(file, " }}").unwrap(); -} - -pub fn adjust_type_name(original_rust_name: &str, proxy_crate: &str) -> String { - clean_paths( - proxy_crate, - &original_rust_name - .replace("multiversx_sc::api::uncallable::UncallableApi", "Env::Api") - .replace("$API", "Env::Api"), - ) -} - -fn parse_and_write_outputs(file: &mut File, outputs: Vec, proxy_crate: &str) { - match outputs.len() { - 0 => { - write!(file, "()").unwrap(); - }, - 1 => { - let adjusted = adjust_type_name(&outputs[0].type_names.rust, proxy_crate); - write!(file, "{adjusted}").unwrap(); - }, - _ => { - write!(file, "MultiValue{}<", outputs.len()).unwrap(); - for (i, output) in outputs.iter().enumerate() { - if i > 0 { - write!(file, ", ").unwrap(); - } - let adjusted = adjust_type_name(&output.type_names.rust, proxy_crate); - write!(file, "{adjusted}").unwrap(); - } - write!(file, ">").unwrap(); - }, - } -} diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs index 6145315233..e91bf663ec 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs @@ -1,6 +1,6 @@ use std::{fs::File, io::Write}; -use super::proxy_naming::{proxy_methods_type_name, proxy_type_name}; +use multiversx_sc::abi::{EndpointAbi, InputAbi, TypeDescription}; const PRELUDE: &str = "// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. @@ -17,53 +17,113 @@ pub(crate) fn write_header(file: &mut File) { writeln!(file, r#"{PRELUDE}"#).unwrap(); } -pub(crate) fn write_tx_proxy_type_def(file: &mut File, name: &str) { - let proxy_type_name = proxy_type_name(name); +pub fn write_endpoint_docs(file: &mut File, docs: &Vec) { + for doc in docs { + writeln!(file, " /// {doc} ").unwrap(); + } +} + +pub fn write_function_header_endpoint(file: &mut File, rust_method_name: &String) { + write!(file, " pub fn {rust_method_name}").unwrap(); +} + +pub fn write_parameters(file: &mut File, inputs: &[InputAbi]) { + writeln!(file, "(").unwrap(); + writeln!(file, " self,").unwrap(); + for (index, input) in inputs.iter().enumerate() { + writeln!(file, " {}: Arg{index},", &input.arg_name).unwrap(); + } + write!(file, " ) ").unwrap(); +} + +pub fn write_constructor_content(file: &mut File, inputs: Vec) { writeln!( file, - " -pub struct {proxy_type_name};" + " self.wrapped_tx + .raw_deploy()" ) .unwrap(); + for input in inputs.iter() { + writeln!(file, " .argument(&{})", input.arg_name).unwrap(); + } + writeln!(file, " .original_result()").unwrap(); } -pub(crate) fn write_impl_for_tx_proxy(file: &mut File, name: &str) { - let proxy_type_name = proxy_type_name(name); - let proxy_methods_type_name = proxy_methods_type_name(name); +pub fn write_upgrade_content(file: &mut File, inputs: Vec) { writeln!( file, - r#" -impl TxProxyTrait for {proxy_type_name} -where - Env: TxEnv, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{{ - type TxProxyMethods = {proxy_methods_type_name}; - - fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods {{ - {proxy_methods_type_name} {{ wrapped_tx: tx }} - }} -}}"# + " self.wrapped_tx + .raw_upgrade()" ) .unwrap(); + for input in inputs.iter() { + writeln!(file, " .argument(&{})", input.arg_name).unwrap(); + } + writeln!(file, " .original_result()").unwrap(); } -pub(crate) fn write_struct_tx_proxy_methods(file: &mut File, name: &str) { - let proxy_methods_type_name = proxy_methods_type_name(name); +pub fn write_endpoint_content(file: &mut File, endpoint: &EndpointAbi) { writeln!( file, - r#" -pub struct {proxy_methods_type_name} -where - Env: TxEnv, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{{ - wrapped_tx: Tx, -}}"# + " self.wrapped_tx + .raw_call() + .function_name(\"{}\")", + endpoint.name ) .unwrap(); + + for input in endpoint.inputs.iter() { + writeln!(file, " .argument(&{})", input.arg_name).unwrap(); + } + + writeln!(file, " .original_result()").unwrap(); +} + +pub fn write_end_of_function(file: &mut File) { + writeln!(file, " }}").unwrap(); +} + +pub fn start_write_type( + file: &mut File, + type_type: &str, + type_description: &TypeDescription, + name: &str, +) { + writeln!(file).unwrap(); + write_macro_attributes(file, &type_description.macro_attributes); + write!(file, r#"pub {type_type} {name}"#).unwrap(); + + if name.contains("") { + writeln!( + file, + r#" +where + Api: ManagedTypeApi,"# + ) + .unwrap(); + } else { + write!(file, " ").unwrap(); + } + + writeln!(file, r#"{{"#).unwrap(); +} + +pub fn write_macro_attributes(file: &mut File, macro_attributes: &[String]) { + if macro_attributes.is_empty() { + writeln!(file, "#[derive(TopEncode, TopDecode)]").unwrap(); + } else { + writeln!(file, "#[derive({})]", macro_attributes.join(", ")).unwrap(); + } +} + +pub fn extract_struct_crate(struct_path: &str) -> String { + let struct_crate_name = struct_path + .replace('_', "-") + .replace("multiversx_sc::api::uncallable::UncallableApi", "Api") + .to_string(); + let crate_name = struct_crate_name + .split("::") + .next() + .unwrap_or_else(|| &struct_crate_name); + crate_name.to_string() } From a484045b114855df1856a48e43d921923872f21a Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Fri, 29 Mar 2024 16:51:58 +0100 Subject: [PATCH 232/461] more contract migrations to new proxy and unified syntax --- .../src/builtin_func_proxy.rs | 7 - .../src/crowdfunding_erc20.rs | 35 +-- .../crowdfunding-erc20/src/erc20_proxy.rs | 205 +++++++++++++ .../erc1155-marketplace/src/erc1155_proxy.rs | 282 ++++++++++++++++++ .../erc1155-marketplace/src/lib.rs | 14 +- .../erc1155/sc-config.toml | 1 + .../erc1155/src/erc1155.rs | 22 +- .../erc1155/src/erc1155_user_proxy.rs | 107 +++++-- .../erc-style-contracts/erc20/sc-config.toml | 5 + .../lottery-erc20/src/erc20_proxy.rs | 194 ++++++++++++ .../lottery-erc20/src/lottery.rs | 18 +- .../tests/use_module_scenario_rs_test.rs | 23 +- .../use-module/tests/user_builtin_proxy.rs | 52 ++++ contracts/modules/src/dns.rs | 25 +- contracts/modules/src/dns_proxy.rs | 52 ++++ contracts/modules/src/lib.rs | 1 + 16 files changed, 933 insertions(+), 110 deletions(-) create mode 100644 contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/src/erc20_proxy.rs create mode 100644 contracts/feature-tests/erc-style-contracts/erc1155-marketplace/src/erc1155_proxy.rs create mode 100644 contracts/feature-tests/erc-style-contracts/erc20/sc-config.toml create mode 100644 contracts/feature-tests/erc-style-contracts/lottery-erc20/src/erc20_proxy.rs create mode 100644 contracts/feature-tests/use-module/tests/user_builtin_proxy.rs create mode 100644 contracts/modules/src/dns_proxy.rs 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 index 8d7d106f66..d9f5481db6 100644 --- 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 @@ -1,10 +1,3 @@ -// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. - -//////////////////////////////////////////////////// -////////////////// AUTO-GENERATED ////////////////// -//////////////////////////////////////////////////// - -#![allow(dead_code)] #![allow(clippy::all)] use multiversx_sc::proxy_imports::*; diff --git a/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/src/crowdfunding_erc20.rs b/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/src/crowdfunding_erc20.rs index fe509eba5b..72b1cf8708 100644 --- a/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/src/crowdfunding_erc20.rs +++ b/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/src/crowdfunding_erc20.rs @@ -3,6 +3,8 @@ multiversx_sc::imports!(); multiversx_sc::derive_imports!(); +pub mod erc20_proxy; + #[derive(TopEncode, TopDecode, PartialEq, Eq, TypeAbi, Clone, Copy)] pub enum Status { FundingPeriod, @@ -30,14 +32,15 @@ pub trait Crowdfunding { let erc20_address = self.erc20_contract_address().get(); let cf_contract_address = self.blockchain().get_sc_address(); - self.erc20_proxy(erc20_address) + self.tx() + .to(&erc20_address) + .typed(erc20_proxy::SimpleErc20TokenProxy) .transfer_from(caller.clone(), cf_contract_address, token_amount.clone()) - .async_call() .with_callback( self.callbacks() .transfer_from_callback(caller, token_amount), ) - .call_and_exit() + .async_call_and_exit(); } #[view] @@ -70,10 +73,11 @@ pub trait Crowdfunding { let erc20_address = self.erc20_contract_address().get(); - self.erc20_proxy(erc20_address) + self.tx() + .to(&erc20_address) + .typed(erc20_proxy::SimpleErc20TokenProxy) .transfer(caller, balance) - .async_call() - .call_and_exit() + .async_call_and_exit(); }, Status::Failed => { let caller = self.blockchain().get_caller(); @@ -84,10 +88,11 @@ pub trait Crowdfunding { let erc20_address = self.erc20_contract_address().get(); - self.erc20_proxy(erc20_address) + self.tx() + .to(&erc20_address) + .typed(erc20_proxy::SimpleErc20TokenProxy) .transfer(caller, deposit) - .async_call() - .call_and_exit() + .async_call_and_exit(); } }, } @@ -106,10 +111,11 @@ pub trait Crowdfunding { if self.blockchain().get_block_nonce() > self.deadline().get() { let erc20_address = self.erc20_contract_address().get(); - self.erc20_proxy(erc20_address) + self.tx() + .to(&erc20_address) + .typed(erc20_proxy::SimpleErc20TokenProxy) .transfer(cb_sender, cb_amount) - .async_call() - .call_and_exit(); + .async_call_and_exit(); } self.deposit(&cb_sender) @@ -120,11 +126,6 @@ pub trait Crowdfunding { } } - // proxy - - #[proxy] - fn erc20_proxy(&self, to: ManagedAddress) -> erc20::Proxy; - // storage #[view(get_target)] diff --git a/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/src/erc20_proxy.rs b/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/src/erc20_proxy.rs new file mode 100644 index 0000000000..fdbb416271 --- /dev/null +++ b/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/src/erc20_proxy.rs @@ -0,0 +1,205 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(dead_code)] +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +pub struct SimpleErc20TokenProxy; + +impl TxProxyTrait for SimpleErc20TokenProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = SimpleErc20TokenProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + SimpleErc20TokenProxyMethods { wrapped_tx: tx } + } +} + +pub struct SimpleErc20TokenProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl SimpleErc20TokenProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + /// Constructor, is called immediately after the contract is created + /// Will set the fixed global token supply and give all the supply to the creator. + pub fn init< + Arg0: CodecInto>, + >( + self, + total_supply: Arg0, + ) -> TxProxyDeploy { + self.wrapped_tx + .raw_deploy() + .argument(&total_supply) + .original_result() + } +} + +#[rustfmt::skip] +impl SimpleErc20TokenProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ +} + +#[rustfmt::skip] +impl SimpleErc20TokenProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + /// Total number of tokens in existence. + pub fn total_supply( + self, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call() + .function_name("totalSupply") + .original_result() + } + + /// Gets the balance of the specified address. + /// + /// Arguments: + /// + /// * `address` The address to query the the balance of + /// + pub fn token_balance< + Arg0: CodecInto>, + >( + self, + address: Arg0, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call() + .function_name("balanceOf") + .argument(&address) + .original_result() + } + + /// The amount of tokens that an owner allowed to a spender. + /// + /// Arguments: + /// + /// * `owner` The address that owns the funds. + /// * `spender` The address that will spend the funds. + /// + pub fn allowance< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + owner: Arg0, + spender: Arg1, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call() + .function_name("allowance") + .argument(&owner) + .argument(&spender) + .original_result() + } + + /// Transfer token to a specified address from sender. + /// + /// Arguments: + /// + /// * `to` The address to transfer to. + /// + pub fn transfer< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + to: Arg0, + amount: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("transfer") + .argument(&to) + .argument(&amount) + .original_result() + } + + /// Use allowance to transfer funds between two accounts. + /// + /// Arguments: + /// + /// * `sender` The address to transfer from. + /// * `recipient` The address to transfer to. + /// * `amount` the amount of tokens to be transferred. + /// + pub fn transfer_from< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>, + >( + self, + sender: Arg0, + recipient: Arg1, + amount: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("transferFrom") + .argument(&sender) + .argument(&recipient) + .argument(&amount) + .original_result() + } + + /// Approve the given address to spend the specified amount of tokens on behalf of the sender. + /// It overwrites any previously existing allowance from sender to beneficiary. + /// + /// Arguments: + /// + /// * `spender` The address that will spend the funds. + /// * `amount` The amount of tokens to be spent. + /// + pub fn approve< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + spender: Arg0, + amount: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("approve") + .argument(&spender) + .argument(&amount) + .original_result() + } +} diff --git a/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/src/erc1155_proxy.rs b/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/src/erc1155_proxy.rs new file mode 100644 index 0000000000..44be409aa3 --- /dev/null +++ b/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/src/erc1155_proxy.rs @@ -0,0 +1,282 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(dead_code)] +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +pub struct Erc1155Proxy; + +impl TxProxyTrait for Erc1155Proxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = Erc1155ProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + Erc1155ProxyMethods { wrapped_tx: tx } + } +} + +pub struct Erc1155ProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl Erc1155ProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init( + self, + ) -> TxProxyDeploy { + self.wrapped_tx + .raw_deploy() + .original_result() + } +} + +#[rustfmt::skip] +impl Erc1155ProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + /// `value` is amount for fungible, nft_id for non-fungible + pub fn safe_transfer_from< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>, + Arg3: CodecInto>, + Arg4: CodecInto>, + >( + self, + from: Arg0, + to: Arg1, + type_id: Arg2, + value: Arg3, + data: Arg4, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("safeTransferFrom") + .argument(&from) + .argument(&to) + .argument(&type_id) + .argument(&value) + .argument(&data) + .original_result() + } + + /// `value` is amount for fungible, nft_id for non-fungible + pub fn safe_batch_transfer_from< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto]>>, + Arg3: CodecInto]>>, + Arg4: CodecInto>, + >( + self, + from: Arg0, + to: Arg1, + type_ids: Arg2, + values: Arg3, + data: Arg4, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("safeBatchTransferFrom") + .argument(&from) + .argument(&to) + .argument(&type_ids) + .argument(&values) + .argument(&data) + .original_result() + } + + pub fn set_approved_for_all< + Arg0: CodecInto>, + Arg1: CodecInto, + >( + self, + operator: Arg0, + approved: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("setApprovalForAll") + .argument(&operator) + .argument(&approved) + .original_result() + } + + pub fn create_token< + Arg0: CodecInto, + Arg1: CodecInto>, + Arg2: CodecInto, + >( + self, + uri: Arg0, + initial_supply: Arg1, + is_fungible: Arg2, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call() + .function_name("createToken") + .argument(&uri) + .argument(&initial_supply) + .argument(&is_fungible) + .original_result() + } + + pub fn mint< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + type_id: Arg0, + amount: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("mint") + .argument(&type_id) + .argument(&amount) + .original_result() + } + + pub fn burn< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + type_id: Arg0, + amount: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("burn") + .argument(&type_id) + .argument(&amount) + .original_result() + } + + pub fn balance_of< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + owner: Arg0, + type_id: Arg1, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call() + .function_name("balanceOf") + .argument(&owner) + .argument(&type_id) + .original_result() + } + + pub fn balance_of_batch< + Arg0: CodecInto, BigUint>>>, + >( + self, + owner_type_id_pairs: Arg0, + ) -> TxProxyCall>> { + self.wrapped_tx + .raw_call() + .function_name("balanceOfBatch") + .argument(&owner_type_id_pairs) + .original_result() + } + + pub fn token_owner< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + type_id: Arg0, + nft_id: Arg1, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call() + .function_name("getTokenOwner") + .argument(&type_id) + .argument(&nft_id) + .original_result() + } + + pub fn token_type_creator< + Arg0: CodecInto>, + >( + self, + type_id: Arg0, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call() + .function_name("getTokenTypeCreator") + .argument(&type_id) + .original_result() + } + + pub fn token_type_uri< + Arg0: CodecInto>, + >( + self, + type_id: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("getTokenTypeUri") + .argument(&type_id) + .original_result() + } + + pub fn is_fungible< + Arg0: CodecInto>, + >( + self, + type_id: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("isFungible") + .argument(&type_id) + .original_result() + } + + pub fn is_approved< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + operator: Arg0, + owner: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("isApprovedForAll") + .argument(&operator) + .argument(&owner) + .original_result() + } +} diff --git a/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/src/lib.rs b/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/src/lib.rs index 676b2b5b1d..08c0f09258 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/src/lib.rs +++ b/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/src/lib.rs @@ -3,6 +3,8 @@ multiversx_sc::imports!(); multiversx_sc::derive_imports!(); +pub mod erc1155_proxy; + const PERCENTAGE_TOTAL: u8 = 100; #[derive(TopEncode, TopDecode, TypeAbi)] @@ -310,10 +312,11 @@ pub trait Erc1155Marketplace { let sc_own_address = self.blockchain().get_sc_address(); let token_ownership_contract_address = self.token_ownership_contract_address().get(); - self.erc1155_proxy(token_ownership_contract_address) + self.tx() + .to(&token_ownership_contract_address) + .typed(erc1155_proxy::Erc1155Proxy) .safe_transfer_from(sc_own_address, to, type_id, nft_id, &[]) - .async_call() - .call_and_exit() + .async_call_and_exit(); } fn calculate_cut_amount(&self, total_amount: &BigUint, cut_percentage: u8) -> BigUint { @@ -332,11 +335,6 @@ pub trait Erc1155Marketplace { mapper.insert(token_identifier.clone(), BigUint::zero()); } - // proxy - - #[proxy] - fn erc1155_proxy(&self, to: ManagedAddress) -> erc1155::Proxy; - // storage // token ownership contract, i.e. the erc1155 SC diff --git a/contracts/feature-tests/erc-style-contracts/erc1155/sc-config.toml b/contracts/feature-tests/erc-style-contracts/erc1155/sc-config.toml index 9d5da94a85..e23006a55c 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/sc-config.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155/sc-config.toml @@ -1,5 +1,6 @@ [settings] main = "erc1155" +proxy-paths = ["../erc1155-marketplace/src/erc1155_proxy.rs"] # the only purpose of this config is to specify the allocator [contracts.erc1155] diff --git a/contracts/feature-tests/erc-style-contracts/erc1155/src/erc1155.rs b/contracts/feature-tests/erc-style-contracts/erc1155/src/erc1155.rs index 9fb1fb5216..c6e9c5ce9a 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/src/erc1155.rs +++ b/contracts/feature-tests/erc-style-contracts/erc1155/src/erc1155.rs @@ -350,16 +350,17 @@ pub trait Erc1155 { ) { let caller = self.blockchain().get_caller(); - self.erc1155_user_proxy(to.clone()) + self.tx() + .to(to.clone()) + .typed(erc1155_user_proxy::Erc1155UserProxy) .on_erc1155_received(caller, from.clone(), type_id.clone(), value.clone(), data) - .async_call() .with_callback(self.callbacks().transfer_callback( from, to, [type_id].to_vec(), [value].to_vec(), )) - .call_and_exit() + .async_call_and_exit(); } fn peform_async_call_batch_transfer( @@ -372,7 +373,9 @@ pub trait Erc1155 { ) { let caller = self.blockchain().get_caller(); - self.erc1155_user_proxy(to.clone()) + self.tx() + .to(to.clone()) + .typed(erc1155_user_proxy::Erc1155UserProxy) .on_erc1155_batch_received( caller, from.clone(), @@ -380,14 +383,13 @@ pub trait Erc1155 { values.to_vec(), data, ) - .async_call() .with_callback(self.callbacks().transfer_callback( from, to, type_ids.to_vec(), values.to_vec(), )) - .call_and_exit() + .async_call_and_exit(); } // callbacks @@ -418,14 +420,6 @@ pub trait Erc1155 { } } - // proxy - - #[proxy] - fn erc1155_user_proxy( - &self, - sc_address: ManagedAddress, - ) -> erc1155_user_proxy::Proxy; - // storage // map for address -> type_id -> amount diff --git a/contracts/feature-tests/erc-style-contracts/erc1155/src/erc1155_user_proxy.rs b/contracts/feature-tests/erc-style-contracts/erc1155/src/erc1155_user_proxy.rs index 5c645bf4be..9d1f909079 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/src/erc1155_user_proxy.rs +++ b/contracts/feature-tests/erc-style-contracts/erc1155/src/erc1155_user_proxy.rs @@ -1,24 +1,89 @@ -multiversx_sc::imports!(); +#![allow(clippy::all)] -#[multiversx_sc::proxy] -pub trait Erc1155UserProxy { - #[endpoint(onERC1155Received)] - fn on_erc1155_received( - &self, - operator: ManagedAddress, - from: ManagedAddress, - type_id: BigUint, - value: BigUint, - data: ManagedBuffer, - ); +use multiversx_sc::proxy_imports::*; - #[endpoint(onERC1155BatchReceived)] - fn on_erc1155_batch_received( - &self, - operator: ManagedAddress, - from: ManagedAddress, - type_ids: Vec, - values: Vec, - data: ManagedBuffer, - ); +pub struct Erc1155UserProxy; + +impl TxProxyTrait for Erc1155UserProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = Erc1155UserProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + Erc1155UserProxyMethods { wrapped_tx: tx } + } +} + +pub struct Erc1155UserProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl Erc1155UserProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn on_erc1155_received< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>, + Arg3: CodecInto>, + Arg4: CodecInto>, + >( + self, + operator: Arg0, + from: Arg1, + type_id: Arg2, + value: Arg3, + data: Arg4, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("onERC1155Received") + .argument(&operator) + .argument(&from) + .argument(&type_id) + .argument(&value) + .argument(&data) + .original_result() + } + + pub fn on_erc1155_batch_received< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>>, + Arg3: CodecInto>>, + Arg4: CodecInto>, + >( + self, + operator: Arg0, + from: Arg1, + type_ids: Arg2, + values: Arg3, + data: Arg4, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("onERC1155BatchReceived") + .argument(&operator) + .argument(&from) + .argument(&type_ids) + .argument(&values) + .argument(&data) + .original_result() + } } diff --git a/contracts/feature-tests/erc-style-contracts/erc20/sc-config.toml b/contracts/feature-tests/erc-style-contracts/erc20/sc-config.toml new file mode 100644 index 0000000000..45d4fccdce --- /dev/null +++ b/contracts/feature-tests/erc-style-contracts/erc20/sc-config.toml @@ -0,0 +1,5 @@ +[settings] +proxy-paths = [ + "../crowdfunding-erc20/src/erc20_proxy.rs", + "../lottery-erc20/src/erc20_proxy.rs", +] diff --git a/contracts/feature-tests/erc-style-contracts/lottery-erc20/src/erc20_proxy.rs b/contracts/feature-tests/erc-style-contracts/lottery-erc20/src/erc20_proxy.rs new file mode 100644 index 0000000000..4acfd01eb2 --- /dev/null +++ b/contracts/feature-tests/erc-style-contracts/lottery-erc20/src/erc20_proxy.rs @@ -0,0 +1,194 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(dead_code)] +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +pub struct SimpleErc20TokenProxy; + +impl TxProxyTrait for SimpleErc20TokenProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = SimpleErc20TokenProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + SimpleErc20TokenProxyMethods { wrapped_tx: tx } + } +} + +pub struct SimpleErc20TokenProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl SimpleErc20TokenProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + /// Constructor, is called immediately after the contract is created + /// Will set the fixed global token supply and give all the supply to the creator. + pub fn init< + Arg0: CodecInto>, + >( + self, + total_supply: Arg0, + ) -> TxProxyDeploy { + self.wrapped_tx + .raw_deploy() + .argument(&total_supply) + .original_result() + } +} + +#[rustfmt::skip] +impl SimpleErc20TokenProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + /// Total number of tokens in existence. + pub fn total_supply( + self, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call() + .function_name("totalSupply") + .original_result() + } + + /// Gets the balance of the specified address. + /// + /// Arguments: + /// + /// * `address` The address to query the the balance of + /// + pub fn token_balance< + Arg0: CodecInto>, + >( + self, + address: Arg0, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call() + .function_name("balanceOf") + .argument(&address) + .original_result() + } + + /// The amount of tokens that an owner allowed to a spender. + /// + /// Arguments: + /// + /// * `owner` The address that owns the funds. + /// * `spender` The address that will spend the funds. + /// + pub fn allowance< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + owner: Arg0, + spender: Arg1, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call() + .function_name("allowance") + .argument(&owner) + .argument(&spender) + .original_result() + } + + /// Transfer token to a specified address from sender. + /// + /// Arguments: + /// + /// * `to` The address to transfer to. + /// + pub fn transfer< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + to: Arg0, + amount: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("transfer") + .argument(&to) + .argument(&amount) + .original_result() + } + + /// Use allowance to transfer funds between two accounts. + /// + /// Arguments: + /// + /// * `sender` The address to transfer from. + /// * `recipient` The address to transfer to. + /// * `amount` the amount of tokens to be transferred. + /// + pub fn transfer_from< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>, + >( + self, + sender: Arg0, + recipient: Arg1, + amount: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("transferFrom") + .argument(&sender) + .argument(&recipient) + .argument(&amount) + .original_result() + } + + /// Approve the given address to spend the specified amount of tokens on behalf of the sender. + /// It overwrites any previously existing allowance from sender to beneficiary. + /// + /// Arguments: + /// + /// * `spender` The address that will spend the funds. + /// * `amount` The amount of tokens to be spent. + /// + pub fn approve< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + spender: Arg0, + amount: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("approve") + .argument(&spender) + .argument(&amount) + .original_result() + } +} diff --git a/contracts/feature-tests/erc-style-contracts/lottery-erc20/src/lottery.rs b/contracts/feature-tests/erc-style-contracts/lottery-erc20/src/lottery.rs index 318563e703..105b19b166 100644 --- a/contracts/feature-tests/erc-style-contracts/lottery-erc20/src/lottery.rs +++ b/contracts/feature-tests/erc-style-contracts/lottery-erc20/src/lottery.rs @@ -2,6 +2,7 @@ multiversx_sc::imports!(); +mod erc20_proxy; mod lottery_info; mod random; mod status; @@ -15,9 +16,6 @@ const THIRTY_DAYS_IN_SECONDS: u64 = 60 * 60 * 24 * 30; #[multiversx_sc::contract] pub trait Lottery { - #[proxy] - fn erc20_proxy(&self, to: ManagedAddress) -> erc20::Proxy; - #[init] fn init(&self, erc20_contract_address: ManagedAddress) { self.set_erc20_contract_address(&erc20_contract_address); @@ -212,14 +210,15 @@ pub trait Lottery { let erc20_address = self.get_erc20_contract_address(); let lottery_contract_address = self.blockchain().get_sc_address(); - self.erc20_proxy(erc20_address) + self.tx() + .to(&erc20_address) + .typed(erc20_proxy::SimpleErc20TokenProxy) .transfer_from(caller.clone(), lottery_contract_address, token_amount) - .async_call() .with_callback( self.callbacks() .transfer_from_callback(lottery_name, &caller), ) - .call_and_exit() + .async_call_and_exit(); } fn reserve_ticket(&self, lottery_name: &BoxedBytes) { @@ -282,11 +281,12 @@ pub trait Lottery { let erc20_address = self.get_erc20_contract_address(); - self.erc20_proxy(erc20_address) + self.tx() + .to(&erc20_address) + .typed(erc20_proxy::SimpleErc20TokenProxy) .transfer(winner_address, prize) - .async_call() .with_callback(self.callbacks().distribute_prizes_callback(lottery_name)) - .call_and_exit() + .async_call_and_exit(); } fn get_random_winning_ticket_id(&self, prev_winners: &[u32], total_tickets: u32) -> u32 { diff --git a/contracts/feature-tests/use-module/tests/use_module_scenario_rs_test.rs b/contracts/feature-tests/use-module/tests/use_module_scenario_rs_test.rs index 2ecb798d24..a234b631f2 100644 --- a/contracts/feature-tests/use-module/tests/use_module_scenario_rs_test.rs +++ b/contracts/feature-tests/use-module/tests/use_module_scenario_rs_test.rs @@ -1,30 +1,21 @@ -mod user_builtin { - multiversx_sc::imports!(); - - #[multiversx_sc::proxy] - pub trait UserBuiltin { - #[endpoint(SetUserName)] - fn set_user_name(&self, name: &BoxedBytes) -> BigUint; - } -} - +pub mod user_builtin_proxy; mod dns_mock { + use crate::user_builtin_proxy; + multiversx_sc::imports!(); #[multiversx_sc::contract] pub trait DnsMock { - #[proxy] - fn user_builtin_proxy(&self, to: ManagedAddress) -> super::user_builtin::Proxy; - #[payable("EGLD")] #[endpoint] fn register(&self, name: BoxedBytes) { let _payment = self.call_value().egld_value(); let address = self.blockchain().get_caller(); - self.user_builtin_proxy(address) + self.tx() + .to(&address) + .typed(user_builtin_proxy::UserBuiltinProxy) .set_user_name(&name) - .async_call() - .call_and_exit() + .async_call_and_exit(); } } } diff --git a/contracts/feature-tests/use-module/tests/user_builtin_proxy.rs b/contracts/feature-tests/use-module/tests/user_builtin_proxy.rs new file mode 100644 index 0000000000..75e078f55a --- /dev/null +++ b/contracts/feature-tests/use-module/tests/user_builtin_proxy.rs @@ -0,0 +1,52 @@ +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +pub struct UserBuiltinProxy; + +impl TxProxyTrait for UserBuiltinProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = UserBuiltinProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + UserBuiltinProxyMethods { wrapped_tx: tx } + } +} + +pub struct UserBuiltinProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl UserBuiltinProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn set_user_name< + Arg0: CodecInto, + >( + self, + name: Arg0, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call() + .function_name("SetUserName") + .argument(&name) + .original_result() + } +} diff --git a/contracts/modules/src/dns.rs b/contracts/modules/src/dns.rs index 0bbeb38101..7e8123a0cf 100644 --- a/contracts/modules/src/dns.rs +++ b/contracts/modules/src/dns.rs @@ -1,13 +1,4 @@ -mod dns_proxy { - multiversx_sc::imports!(); - - #[multiversx_sc::proxy] - pub trait Dns { - #[payable("EGLD")] - #[endpoint] - fn register(&self, name: &ManagedBuffer); - } -} +use crate::dns_proxy; multiversx_sc::imports!(); @@ -18,18 +9,16 @@ multiversx_sc::imports!(); /// #[multiversx_sc::module] pub trait DnsModule { - #[proxy] - fn dns_proxy(&self, to: ManagedAddress) -> dns_proxy::Proxy; - #[payable("EGLD")] #[only_owner] #[endpoint(dnsRegister)] fn dns_register(&self, dns_address: ManagedAddress, name: ManagedBuffer) { let payment = self.call_value().egld_value().clone_value(); - self.dns_proxy(dns_address) - .register(&name) - .with_egld_transfer(payment) - .async_call() - .call_and_exit() + self.tx() + .to(&dns_address) + .typed(dns_proxy::DnsProxy) + .register(name) + .egld(payment) + .async_call_and_exit(); } } diff --git a/contracts/modules/src/dns_proxy.rs b/contracts/modules/src/dns_proxy.rs new file mode 100644 index 0000000000..7b5a0bd8dc --- /dev/null +++ b/contracts/modules/src/dns_proxy.rs @@ -0,0 +1,52 @@ +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +pub struct DnsProxy; + +impl TxProxyTrait for DnsProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = DnsProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + DnsProxyMethods { wrapped_tx: tx } + } +} + +pub struct DnsProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl DnsProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn register< + Arg0: CodecInto>, + >( + self, + name: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("register") + .argument(&name) + .original_result() + } +} diff --git a/contracts/modules/src/lib.rs b/contracts/modules/src/lib.rs index b1973e3fc0..58b5da9c73 100644 --- a/contracts/modules/src/lib.rs +++ b/contracts/modules/src/lib.rs @@ -5,6 +5,7 @@ pub mod bonding_curve; pub mod claim_developer_rewards; pub mod default_issue_callbacks; pub mod dns; +pub mod dns_proxy; pub mod esdt; pub mod features; pub mod governance; From 683e81cc164e05bfb01eababc491b3cf72f12079 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Fri, 29 Mar 2024 16:54:22 +0100 Subject: [PATCH 233/461] cleanup --- .../crowdfunding-erc20/src/erc20_proxy.rs | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/src/erc20_proxy.rs b/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/src/erc20_proxy.rs index fdbb416271..4acfd01eb2 100644 --- a/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/src/erc20_proxy.rs +++ b/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/src/erc20_proxy.rs @@ -58,17 +58,6 @@ where } } -#[rustfmt::skip] -impl SimpleErc20TokenProxyMethods -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ -} - #[rustfmt::skip] impl SimpleErc20TokenProxyMethods where From 50ceeff92c1241c9860c098ff66c3eb770deacea Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Fri, 29 Mar 2024 18:13:02 +0100 Subject: [PATCH 234/461] crypto kitties migration progress --- .../crypto-kitties/common/kitty/src/color.rs | 3 +- .../common/kitty/src/kitty_genes.rs | 3 +- .../crypto-kitties/common/kitty/src/lib.rs | 3 +- .../src/kitty_ownership_proxy.rs | 386 ++++++++++++++++++ .../crypto-kitties/kitty-auction/src/lib.rs | 34 +- .../kitty-genetic-alg/sc-config.toml | 2 + .../kitty-ownership/sc-config.toml | 5 + .../src/kitty_genetic_alg_proxy.rs | 57 +++ .../crypto-kitties/kitty-ownership/src/lib.rs | 24 +- .../kitty-ownership/src/structs.rs | 151 +++++++ .../src/crypto_kitties_proxy.rs | 46 --- .../src/kitty_ownership_proxy.rs | 376 +++++++++++++++++ contracts/examples/crypto-zombies/src/lib.rs | 2 +- .../crypto-zombies/src/zombie_feeding.rs | 11 +- 14 files changed, 1017 insertions(+), 86 deletions(-) create mode 100644 contracts/examples/crypto-kitties/kitty-auction/src/kitty_ownership_proxy.rs create mode 100644 contracts/examples/crypto-kitties/kitty-genetic-alg/sc-config.toml create mode 100644 contracts/examples/crypto-kitties/kitty-ownership/sc-config.toml create mode 100644 contracts/examples/crypto-kitties/kitty-ownership/src/kitty_genetic_alg_proxy.rs create mode 100644 contracts/examples/crypto-kitties/kitty-ownership/src/structs.rs delete mode 100644 contracts/examples/crypto-zombies/src/crypto_kitties_proxy.rs create mode 100644 contracts/examples/crypto-zombies/src/kitty_ownership_proxy.rs diff --git a/contracts/examples/crypto-kitties/common/kitty/src/color.rs b/contracts/examples/crypto-kitties/common/kitty/src/color.rs index 0b02aecf49..408b5eb06e 100644 --- a/contracts/examples/crypto-kitties/common/kitty/src/color.rs +++ b/contracts/examples/crypto-kitties/common/kitty/src/color.rs @@ -2,7 +2,8 @@ use multiversx_sc::derive_imports::*; use random::*; -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, Clone, TypeAbi, Default)] +#[type_abi] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, Clone, Default)] pub struct Color { pub r: u8, pub g: u8, diff --git a/contracts/examples/crypto-kitties/common/kitty/src/kitty_genes.rs b/contracts/examples/crypto-kitties/common/kitty/src/kitty_genes.rs index 4deb4100e6..958543605e 100644 --- a/contracts/examples/crypto-kitties/common/kitty/src/kitty_genes.rs +++ b/contracts/examples/crypto-kitties/common/kitty/src/kitty_genes.rs @@ -3,7 +3,8 @@ use multiversx_sc::derive_imports::*; use super::color::*; use random::*; -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, Clone, TypeAbi, Default)] +#[type_abi] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, Clone, Default)] pub struct KittyGenes { pub fur_color: Color, pub eye_color: Color, diff --git a/contracts/examples/crypto-kitties/common/kitty/src/lib.rs b/contracts/examples/crypto-kitties/common/kitty/src/lib.rs index c06f376e8d..1a9a0ec436 100644 --- a/contracts/examples/crypto-kitties/common/kitty/src/lib.rs +++ b/contracts/examples/crypto-kitties/common/kitty/src/lib.rs @@ -12,7 +12,8 @@ pub mod kitty_genes; use color::*; use kitty_genes::*; -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[type_abi] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct Kitty { pub genes: KittyGenes, pub birth_time: u64, // timestamp diff --git a/contracts/examples/crypto-kitties/kitty-auction/src/kitty_ownership_proxy.rs b/contracts/examples/crypto-kitties/kitty-auction/src/kitty_ownership_proxy.rs new file mode 100644 index 0000000000..697d07bfce --- /dev/null +++ b/contracts/examples/crypto-kitties/kitty-auction/src/kitty_ownership_proxy.rs @@ -0,0 +1,386 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(dead_code)] +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +pub struct KittyOwnershipProxy; + +impl TxProxyTrait for KittyOwnershipProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = KittyOwnershipProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + KittyOwnershipProxyMethods { wrapped_tx: tx } + } +} + +pub struct KittyOwnershipProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl KittyOwnershipProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init< + Arg0: CodecInto>, + Arg1: CodecInto>>, + Arg2: CodecInto>>, + >( + self, + birth_fee: Arg0, + opt_gene_science_contract_address: Arg1, + opt_kitty_auction_contract_address: Arg2, + ) -> TxProxyDeploy { + self.wrapped_tx + .raw_deploy() + .argument(&birth_fee) + .argument(&opt_gene_science_contract_address) + .argument(&opt_kitty_auction_contract_address) + .original_result() + } +} + +#[rustfmt::skip] +impl KittyOwnershipProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn set_gene_science_contract_address_endpoint< + Arg0: CodecInto>, + >( + self, + address: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("setGeneScienceContractAddress") + .argument(&address) + .original_result() + } + + pub fn set_kitty_auction_contract_address_endpoint< + Arg0: CodecInto>, + >( + self, + address: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("setKittyAuctionContractAddress") + .argument(&address) + .original_result() + } + + pub fn claim( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("claim") + .original_result() + } + + pub fn total_supply( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("totalSupply") + .original_result() + } + + pub fn balance_of< + Arg0: CodecInto>, + >( + self, + address: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("balanceOf") + .argument(&address) + .original_result() + } + + pub fn owner_of< + Arg0: CodecInto, + >( + self, + kitty_id: Arg0, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call() + .function_name("ownerOf") + .argument(&kitty_id) + .original_result() + } + + pub fn approve< + Arg0: CodecInto>, + Arg1: CodecInto, + >( + self, + to: Arg0, + kitty_id: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("approve") + .argument(&to) + .argument(&kitty_id) + .original_result() + } + + pub fn transfer< + Arg0: CodecInto>, + Arg1: CodecInto, + >( + self, + to: Arg0, + kitty_id: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("transfer") + .argument(&to) + .argument(&kitty_id) + .original_result() + } + + pub fn transfer_from< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto, + >( + self, + from: Arg0, + to: Arg1, + kitty_id: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("transfer_from") + .argument(&from) + .argument(&to) + .argument(&kitty_id) + .original_result() + } + + pub fn tokens_of_owner< + Arg0: CodecInto>, + >( + self, + address: Arg0, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call() + .function_name("tokensOfOwner") + .argument(&address) + .original_result() + } + + pub fn allow_auctioning< + Arg0: CodecInto>, + Arg1: CodecInto, + >( + self, + by: Arg0, + kitty_id: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("allowAuctioning") + .argument(&by) + .argument(&kitty_id) + .original_result() + } + + pub fn approve_siring_and_return_kitty< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto, + >( + self, + approved_address: Arg0, + kitty_owner: Arg1, + kitty_id: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("approveSiringAndReturnKitty") + .argument(&approved_address) + .argument(&kitty_owner) + .argument(&kitty_id) + .original_result() + } + + pub fn create_gen_zero_kitty( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("createGenZeroKitty") + .original_result() + } + + pub fn get_kitty_by_id_endpoint< + Arg0: CodecInto, + >( + self, + kitty_id: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("getKittyById") + .argument(&kitty_id) + .original_result() + } + + pub fn is_ready_to_breed< + Arg0: CodecInto, + >( + self, + kitty_id: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("isReadyToBreed") + .argument(&kitty_id) + .original_result() + } + + pub fn is_pregnant< + Arg0: CodecInto, + >( + self, + kitty_id: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("isPregnant") + .argument(&kitty_id) + .original_result() + } + + pub fn can_breed_with< + Arg0: CodecInto, + Arg1: CodecInto, + >( + self, + matron_id: Arg0, + sire_id: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("canBreedWith") + .argument(&matron_id) + .argument(&sire_id) + .original_result() + } + + pub fn approve_siring< + Arg0: CodecInto>, + Arg1: CodecInto, + >( + self, + address: Arg0, + kitty_id: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("approveSiring") + .argument(&address) + .argument(&kitty_id) + .original_result() + } + + pub fn breed_with< + Arg0: CodecInto, + Arg1: CodecInto, + >( + self, + matron_id: Arg0, + sire_id: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("breedWith") + .argument(&matron_id) + .argument(&sire_id) + .original_result() + } + + pub fn give_birth< + Arg0: CodecInto, + >( + self, + matron_id: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("giveBirth") + .argument(&matron_id) + .original_result() + } + + pub fn birth_fee( + self, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call() + .function_name("birthFee") + .original_result() + } +} + +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] +pub struct Kitty { + pub genes: KittyGenes, + pub birth_time: u64, + pub cooldown_end: u64, + pub matron_id: u32, + pub sire_id: u32, + pub siring_with_id: u32, + pub nr_children: u16, + pub generation: u16, +} + +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, Clone, Default)] +pub struct KittyGenes { + pub fur_color: Color, + pub eye_color: Color, + pub meow_power: u8, +} + +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, Clone, Default)] +pub struct Color { + pub r: u8, + pub g: u8, + pub b: u8, +} diff --git a/contracts/examples/crypto-kitties/kitty-auction/src/lib.rs b/contracts/examples/crypto-kitties/kitty-auction/src/lib.rs index a6bf8ae782..3b08682089 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/src/lib.rs +++ b/contracts/examples/crypto-kitties/kitty-auction/src/lib.rs @@ -4,6 +4,7 @@ use multiversx_sc::imports::*; pub mod auction; use auction::*; +pub mod kitty_ownership_proxy; #[multiversx_sc::contract] pub trait KittyAuction { @@ -45,11 +46,12 @@ pub trait KittyAuction { "Kitty Ownership contract address not set!" ); - self.kitty_ownership_proxy(kitty_ownership_contract_address) + self.tx() + .to(&kitty_ownership_contract_address) + .typed(kitty_ownership_proxy::KittyOwnershipProxy) .create_gen_zero_kitty() - .async_call() .with_callback(self.callbacks().create_gen_zero_kitty_callback()) - .call_and_exit() + .async_call_and_exit(); } // views @@ -240,9 +242,10 @@ pub trait KittyAuction { let kitty_ownership_contract_address = self.get_kitty_ownership_contract_address_or_default(); if !kitty_ownership_contract_address.is_zero() { - self.kitty_ownership_proxy(kitty_ownership_contract_address) + self.tx() + .to(&kitty_ownership_contract_address) + .typed(kitty_ownership_proxy::KittyOwnershipProxy) .allow_auctioning(caller.clone(), kitty_id) - .async_call() .with_callback(self.callbacks().allow_auctioning_callback( auction_type, kitty_id, @@ -251,7 +254,7 @@ pub trait KittyAuction { deadline, caller, )) - .call_and_exit(); + .async_call_and_exit(); } } @@ -276,11 +279,12 @@ pub trait KittyAuction { let kitty_ownership_contract_address = self.get_kitty_ownership_contract_address_or_default(); if !kitty_ownership_contract_address.is_zero() { - self.kitty_ownership_proxy(kitty_ownership_contract_address) + self.tx() + .to(&kitty_ownership_contract_address) + .typed(kitty_ownership_proxy::KittyOwnershipProxy) .transfer(address, kitty_id) - .async_call() .with_callback(self.callbacks().transfer_callback(kitty_id)) - .call_and_exit() + .async_call_and_exit(); } } @@ -293,12 +297,13 @@ pub trait KittyAuction { let kitty_ownership_contract_address = self.get_kitty_ownership_contract_address_or_default(); if !kitty_ownership_contract_address.is_zero() { - self.kitty_ownership_proxy(kitty_ownership_contract_address) + self.tx() + .to(&kitty_ownership_contract_address) + .typed(kitty_ownership_proxy::KittyOwnershipProxy) .approve_siring_and_return_kitty(approved_address, kitty_owner, kitty_id) // not a mistake, same callback for transfer and approveSiringAndReturnKitty - .async_call() .with_callback(self.callbacks().transfer_callback(kitty_id)) - .call_and_exit() + .async_call_and_exit(); } } @@ -407,11 +412,6 @@ pub trait KittyAuction { } } - // proxy - - #[proxy] - fn kitty_ownership_proxy(&self, to: ManagedAddress) -> kitty_ownership::Proxy; - // storage // general diff --git a/contracts/examples/crypto-kitties/kitty-genetic-alg/sc-config.toml b/contracts/examples/crypto-kitties/kitty-genetic-alg/sc-config.toml new file mode 100644 index 0000000000..9ef6cb0474 --- /dev/null +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/sc-config.toml @@ -0,0 +1,2 @@ +[settings] +proxy-paths = ["../kitty-ownership/src/kitty_genetic_alg_proxy.rs"] diff --git a/contracts/examples/crypto-kitties/kitty-ownership/sc-config.toml b/contracts/examples/crypto-kitties/kitty-ownership/sc-config.toml new file mode 100644 index 0000000000..3bde9040f9 --- /dev/null +++ b/contracts/examples/crypto-kitties/kitty-ownership/sc-config.toml @@ -0,0 +1,5 @@ +[settings] +proxy-paths = [ + "../kitty-auction/src/kitty_ownership_proxy.rs", + "../../crypto-zombies/src/kitty_ownership_proxy.rs", +] diff --git a/contracts/examples/crypto-kitties/kitty-ownership/src/kitty_genetic_alg_proxy.rs b/contracts/examples/crypto-kitties/kitty-ownership/src/kitty_genetic_alg_proxy.rs new file mode 100644 index 0000000000..4a1bf33f88 --- /dev/null +++ b/contracts/examples/crypto-kitties/kitty-ownership/src/kitty_genetic_alg_proxy.rs @@ -0,0 +1,57 @@ +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +use crate::{Kitty, KittyGenes}; + +pub struct KittyGeneticAlgProxy; + +impl TxProxyTrait for KittyGeneticAlgProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = KittyGeneticAlgProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + KittyGeneticAlgProxyMethods { wrapped_tx: tx } + } +} + +pub struct KittyGeneticAlgProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl KittyGeneticAlgProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn generate_kitty_genes< + Arg0: CodecInto, + Arg1: CodecInto, + >( + self, + matron: Arg0, + sire: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("generateKittyGenes") + .argument(&matron) + .argument(&sire) + .original_result() + } +} diff --git a/contracts/examples/crypto-kitties/kitty-ownership/src/lib.rs b/contracts/examples/crypto-kitties/kitty-ownership/src/lib.rs index 21eadff6d9..51a433080a 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/src/lib.rs +++ b/contracts/examples/crypto-kitties/kitty-ownership/src/lib.rs @@ -1,12 +1,13 @@ #![no_std] #![allow(clippy::suspicious_operation_groupings)] -use multiversx_sc::imports::*; +pub mod kitty_genetic_alg_proxy; +pub mod structs; +use crate::structs::*; use core::cmp::max; - -use kitty::{kitty_genes::*, Kitty}; -use random::*; +use multiversx_sc::imports::*; +use random::{Random, Randomizeable}; #[multiversx_sc::contract] pub trait KittyOwnership { @@ -323,6 +324,7 @@ pub trait KittyOwnership { fn give_birth(&self, matron_id: u32) { require!(self.is_valid_id(matron_id), "Invalid kitty id!"); + let caller = self.blockchain().get_caller(); let matron = self.kitty_by_id(matron_id).get(); require!( @@ -335,14 +337,15 @@ pub trait KittyOwnership { let gene_science_contract_address = self.get_gene_science_contract_address_or_default(); if !gene_science_contract_address.is_zero() { - self.kitty_genetic_alg_proxy(gene_science_contract_address) + self.tx() + .to(&gene_science_contract_address) + .typed(kitty_genetic_alg_proxy::KittyGeneticAlgProxy) .generate_kitty_genes(matron, sire) - .async_call() .with_callback( self.callbacks() - .generate_kitty_genes_callback(matron_id, self.blockchain().get_caller()), + .generate_kitty_genes_callback(matron_id, caller), ) - .call_and_exit() + .async_call_and_exit(); } else { sc_panic!("Gene science contract address not set!") } @@ -578,11 +581,6 @@ pub trait KittyOwnership { } } - // proxy - - #[proxy] - fn kitty_genetic_alg_proxy(&self, to: ManagedAddress) -> kitty_genetic_alg::Proxy; - // storage - General #[storage_mapper("geneScienceContractAddress")] diff --git a/contracts/examples/crypto-kitties/kitty-ownership/src/structs.rs b/contracts/examples/crypto-kitties/kitty-ownership/src/structs.rs new file mode 100644 index 0000000000..7b17f52dc7 --- /dev/null +++ b/contracts/examples/crypto-kitties/kitty-ownership/src/structs.rs @@ -0,0 +1,151 @@ +use multiversx_sc::derive_imports::*; +use random::{Random, Randomizeable}; + +const SECONDS_PER_MINUTE: u64 = 60; +const MAX_COOLDOWN: u64 = 60 * 60 * 24 * 7; // 7 days +const MAX_TIREDNESS: u16 = 20; + +#[type_abi] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] +pub struct Kitty { + pub genes: KittyGenes, + pub birth_time: u64, // timestamp + pub cooldown_end: u64, // timestamp, used for pregnancy timer and siring cooldown + pub matron_id: u32, + pub sire_id: u32, + pub siring_with_id: u32, // for pregnant cats, 0 otherwise + pub nr_children: u16, // cooldown period increases exponentially with every breeding/siring + pub generation: u16, // max(sire_gen, matron_gen) + 1. Generation also influences cooldown. +} + +impl Randomizeable for KittyGenes { + fn get_random(random: &mut Random) -> Self { + KittyGenes { + fur_color: Color::get_random(random), + eye_color: Color::get_random(random), + meow_power: random.next_u8(), + } + } +} + +impl Kitty { + pub fn new( + genes: KittyGenes, + birth_time: u64, + matron_id: u32, + sire_id: u32, + generation: u16, + ) -> Self { + Kitty { + genes, + birth_time, + cooldown_end: 0, + matron_id, + sire_id, + siring_with_id: 0, + nr_children: 0, + generation, + } + } + + pub fn get_next_cooldown_time(&self) -> u64 { + let tiredness = self.nr_children + self.generation / 2; + if tiredness > MAX_TIREDNESS { + return MAX_COOLDOWN; + } + + let cooldown = SECONDS_PER_MINUTE << tiredness; // 2^(tiredness) minutes + if cooldown > MAX_COOLDOWN { + MAX_COOLDOWN + } else { + cooldown + } + } + + pub fn get_fur_color(&self) -> Color { + self.genes.fur_color.clone() + } + + pub fn get_eye_color(&self) -> Color { + self.genes.eye_color.clone() + } + + pub fn get_meow_power(&self) -> u8 { + self.genes.meow_power + } + + pub fn is_pregnant(&self) -> bool { + self.siring_with_id != 0 + } +} + +// The default Kitty, which is not a valid kitty. Used for Kitty with ID 0 +impl Default for Kitty { + fn default() -> Self { + Kitty { + genes: KittyGenes::default(), + birth_time: 0, + cooldown_end: u64::MAX, + matron_id: 0, + sire_id: 0, + siring_with_id: 0, + nr_children: 0, + generation: 0, + } + } +} + +#[type_abi] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, Clone, Default)] +pub struct KittyGenes { + pub fur_color: Color, + pub eye_color: Color, + pub meow_power: u8, // the higher the value, the louder the cat +} + +impl KittyGenes { + pub fn get_as_u64(&self) -> u64 { + (self.fur_color.as_u64() << 12 | self.eye_color.as_u64()) << 4 + | self.meow_power.to_be() as u64 + } +} + +#[type_abi] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, Clone, Default)] +pub struct Color { + pub r: u8, + pub g: u8, + pub b: u8, +} + +impl Color { + // ratios are integers, 0 < ratio < 100, ratioFirst + ratioSecond = 100 + // checks should be done in the caller + #[must_use] + pub fn mix_with(&self, other_color: &Color, ratio_first: u8, ratio_second: u8) -> Color { + let r = ((self.r as u16 * ratio_first as u16 + other_color.r as u16 * ratio_second as u16) + / 100) as u8; + + let g = ((self.g as u16 * ratio_first as u16 + other_color.g as u16 * ratio_second as u16) + / 100) as u8; + + let b = ((self.b as u16 * ratio_first as u16 + other_color.b as u16 * ratio_second as u16) + / 100) as u8; + + Color { r, g, b } + } + + pub fn as_u64(&self) -> u64 { + ((self.r.to_be() as u64) << 4 | self.r.to_be() as u64) << 4 | self.r.to_be() as u64 + } +} + +impl Randomizeable for Color { + fn get_random(random: &mut Random) -> Self { + Color { + r: random.next_u8(), + g: random.next_u8(), + b: random.next_u8(), + } + } +} diff --git a/contracts/examples/crypto-zombies/src/crypto_kitties_proxy.rs b/contracts/examples/crypto-zombies/src/crypto_kitties_proxy.rs deleted file mode 100644 index ea4d366994..0000000000 --- a/contracts/examples/crypto-zombies/src/crypto_kitties_proxy.rs +++ /dev/null @@ -1,46 +0,0 @@ -use multiversx_sc::derive_imports::*; - -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] -pub struct Kitty { - pub genes: KittyGenes, - pub birth_time: u64, // timestamp - pub cooldown_end: u64, // timestamp, used for pregnancy timer and siring cooldown - pub matron_id: u32, - pub sire_id: u32, - pub siring_with_id: u32, // for pregnant cats, 0 otherwise - pub nr_children: u16, // cooldown period increases exponentially with every breeding/siring - pub generation: u16, // max(sire_gen, matron_gen) + 1. Generation also influences cooldown. -} - -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] -pub struct KittyGenes { - pub fur_color: Color, - pub eye_color: Color, - pub meow_power: u8, // the higher the value, the louder the cat -} - -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] -pub struct Color { - pub r: u8, - pub g: u8, - pub b: u8, -} - -#[multiversx_sc::proxy] -pub trait CryptoKitties { - #[endpoint] - fn get_kitty_by_id_endpoint(&self, kitty_id: u32) -> Kitty; -} - -impl KittyGenes { - pub fn get_as_u64(&self) -> u64 { - (self.fur_color.as_u64() << 12 | self.eye_color.as_u64()) << 4 - | self.meow_power.to_be() as u64 - } -} - -impl Color { - pub fn as_u64(&self) -> u64 { - ((self.r.to_be() as u64) << 4 | self.r.to_be() as u64) << 4 | self.r.to_be() as u64 - } -} diff --git a/contracts/examples/crypto-zombies/src/kitty_ownership_proxy.rs b/contracts/examples/crypto-zombies/src/kitty_ownership_proxy.rs new file mode 100644 index 0000000000..f00880324a --- /dev/null +++ b/contracts/examples/crypto-zombies/src/kitty_ownership_proxy.rs @@ -0,0 +1,376 @@ +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +pub struct KittyOwnershipProxy; + +impl TxProxyTrait for KittyOwnershipProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = KittyOwnershipProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + KittyOwnershipProxyMethods { wrapped_tx: tx } + } +} + +pub struct KittyOwnershipProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl KittyOwnershipProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ +} + +#[rustfmt::skip] +impl KittyOwnershipProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn set_gene_science_contract_address_endpoint< + Arg0: CodecInto>, + >( + self, + address: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("setGeneScienceContractAddress") + .argument(&address) + .original_result() + } + + pub fn set_kitty_auction_contract_address_endpoint< + Arg0: CodecInto>, + >( + self, + address: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("setKittyAuctionContractAddress") + .argument(&address) + .original_result() + } + + pub fn claim( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("claim") + .original_result() + } + + pub fn total_supply( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("totalSupply") + .original_result() + } + + pub fn balance_of< + Arg0: CodecInto>, + >( + self, + address: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("balanceOf") + .argument(&address) + .original_result() + } + + pub fn owner_of< + Arg0: CodecInto, + >( + self, + kitty_id: Arg0, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call() + .function_name("ownerOf") + .argument(&kitty_id) + .original_result() + } + + pub fn approve< + Arg0: CodecInto>, + Arg1: CodecInto, + >( + self, + to: Arg0, + kitty_id: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("approve") + .argument(&to) + .argument(&kitty_id) + .original_result() + } + + pub fn transfer< + Arg0: CodecInto>, + Arg1: CodecInto, + >( + self, + to: Arg0, + kitty_id: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("transfer") + .argument(&to) + .argument(&kitty_id) + .original_result() + } + + pub fn transfer_from< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto, + >( + self, + from: Arg0, + to: Arg1, + kitty_id: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("transfer_from") + .argument(&from) + .argument(&to) + .argument(&kitty_id) + .original_result() + } + + pub fn tokens_of_owner< + Arg0: CodecInto>, + >( + self, + address: Arg0, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call() + .function_name("tokensOfOwner") + .argument(&address) + .original_result() + } + + pub fn allow_auctioning< + Arg0: CodecInto>, + Arg1: CodecInto, + >( + self, + by: Arg0, + kitty_id: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("allowAuctioning") + .argument(&by) + .argument(&kitty_id) + .original_result() + } + + pub fn approve_siring_and_return_kitty< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto, + >( + self, + approved_address: Arg0, + kitty_owner: Arg1, + kitty_id: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("approveSiringAndReturnKitty") + .argument(&approved_address) + .argument(&kitty_owner) + .argument(&kitty_id) + .original_result() + } + + pub fn create_gen_zero_kitty( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("createGenZeroKitty") + .original_result() + } + + pub fn get_kitty_by_id_endpoint< + Arg0: CodecInto, + >( + self, + kitty_id: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("getKittyById") + .argument(&kitty_id) + .original_result() + } + + pub fn is_ready_to_breed< + Arg0: CodecInto, + >( + self, + kitty_id: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("isReadyToBreed") + .argument(&kitty_id) + .original_result() + } + + pub fn is_pregnant< + Arg0: CodecInto, + >( + self, + kitty_id: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("isPregnant") + .argument(&kitty_id) + .original_result() + } + + pub fn can_breed_with< + Arg0: CodecInto, + Arg1: CodecInto, + >( + self, + matron_id: Arg0, + sire_id: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("canBreedWith") + .argument(&matron_id) + .argument(&sire_id) + .original_result() + } + + pub fn approve_siring< + Arg0: CodecInto>, + Arg1: CodecInto, + >( + self, + address: Arg0, + kitty_id: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("approveSiring") + .argument(&address) + .argument(&kitty_id) + .original_result() + } + + pub fn breed_with< + Arg0: CodecInto, + Arg1: CodecInto, + >( + self, + matron_id: Arg0, + sire_id: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("breedWith") + .argument(&matron_id) + .argument(&sire_id) + .original_result() + } + + pub fn give_birth< + Arg0: CodecInto, + >( + self, + matron_id: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("giveBirth") + .argument(&matron_id) + .original_result() + } + + pub fn birth_fee( + self, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call() + .function_name("birthFee") + .original_result() + } +} + +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] +pub struct Kitty { + pub genes: KittyGenes, + pub birth_time: u64, + pub cooldown_end: u64, + pub matron_id: u32, + pub sire_id: u32, + pub siring_with_id: u32, + pub nr_children: u16, + pub generation: u16, +} + +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, Clone, Default)] +pub struct KittyGenes { + pub fur_color: Color, + pub eye_color: Color, + pub meow_power: u8, +} + +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, Clone, Default)] +pub struct Color { + pub r: u8, + pub g: u8, + pub b: u8, +} + +impl KittyGenes { + pub fn get_as_u64(&self) -> u64 { + (self.fur_color.as_u64() << 12 | self.eye_color.as_u64()) << 4 + | self.meow_power.to_be() as u64 + } +} + +impl Color { + pub fn as_u64(&self) -> u64 { + ((self.r.to_be() as u64) << 4 | self.r.to_be() as u64) << 4 | self.r.to_be() as u64 + } +} diff --git a/contracts/examples/crypto-zombies/src/lib.rs b/contracts/examples/crypto-zombies/src/lib.rs index 05364f6f31..9fea3b3099 100644 --- a/contracts/examples/crypto-zombies/src/lib.rs +++ b/contracts/examples/crypto-zombies/src/lib.rs @@ -2,7 +2,7 @@ use multiversx_sc::imports::*; -mod crypto_kitties_proxy; +pub mod kitty_ownership_proxy; pub mod proxy_crypto_zombies; mod storage; mod zombie; diff --git a/contracts/examples/crypto-zombies/src/zombie_feeding.rs b/contracts/examples/crypto-zombies/src/zombie_feeding.rs index e27b3e69ad..7de7f4a41e 100644 --- a/contracts/examples/crypto-zombies/src/zombie_feeding.rs +++ b/contracts/examples/crypto-zombies/src/zombie_feeding.rs @@ -1,7 +1,7 @@ use multiversx_sc::imports::*; use crate::{ - crypto_kitties_proxy::{self, Kitty}, + kitty_ownership_proxy::{self, Kitty}, storage, zombie_factory, zombie_helper, }; @@ -56,12 +56,11 @@ pub trait ZombieFeeding: #[endpoint] fn feed_on_kitty(&self, zombie_id: usize, kitty_id: u32) { let crypto_kitties_sc_address = self.crypto_kitties_sc_address().get(); - self.kitty_proxy(crypto_kitties_sc_address) + self.tx() + .to(&crypto_kitties_sc_address) + .typed(kitty_ownership_proxy::KittyOwnershipProxy) .get_kitty_by_id_endpoint(kitty_id) - .async_call() .with_callback(self.callbacks().get_kitty_callback(zombie_id)) - .call_and_exit(); + .async_call_and_exit(); } - #[proxy] - fn kitty_proxy(&self, to: ManagedAddress) -> crypto_kitties_proxy::Proxy; } From 02929d2f1e58a07305549b25f1331ce246e997cc Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Mon, 1 Apr 2024 12:11:27 +0300 Subject: [PATCH 235/461] proxy gen - add File in ProxyGenerator --- .../meta/src/cmd/contract/generate_proxy.rs | 1 - .../contract/generate_proxy/proxy_gen_main.rs | 15 +- .../generate_proxy/proxy_generator.rs | 375 +++++++++++------- .../contract/generate_proxy/proxy_naming.rs | 12 + .../generate_proxy/proxy_template_gen.rs | 129 ------ 5 files changed, 251 insertions(+), 281 deletions(-) delete mode 100644 framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs diff --git a/framework/meta/src/cmd/contract/generate_proxy.rs b/framework/meta/src/cmd/contract/generate_proxy.rs index 0da27327c2..15f157de8a 100644 --- a/framework/meta/src/cmd/contract/generate_proxy.rs +++ b/framework/meta/src/cmd/contract/generate_proxy.rs @@ -2,4 +2,3 @@ pub mod proxy_crate_gen; pub mod proxy_gen_main; mod proxy_generator; mod proxy_naming; -pub mod proxy_template_gen; diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs index 63a8d7e757..a3a35062f6 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs @@ -5,16 +5,17 @@ use super::{ const OUTPUT_PROXY_PATH: &str = "/output/proxy.rs"; impl MetaConfig { - pub fn generate_proxy(&self) { + pub fn generate_proxy(&mut self) { write_proxy_with_explicit_path(OUTPUT_PROXY_PATH, self); - for path in &self.sc_config.proxy_paths { - write_proxy_with_explicit_path(path, self); + let proxy_paths = self.sc_config.proxy_paths.clone(); + for path in proxy_paths { + write_proxy_with_explicit_path(&path, self); } } } -fn write_proxy_with_explicit_path(path: &str, meta_config: &MetaConfig) { - let file = create_file(path); - let proxy_generator = ProxyGenerator::new(meta_config); - proxy_generator.write_proxy_to_file(file); +fn write_proxy_with_explicit_path(path: &str, meta_config: &mut MetaConfig) { + let mut file = create_file(path); + let mut proxy_generator = ProxyGenerator::new(meta_config, &mut file); + proxy_generator.write_proxy_to_file(); } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs index bd58f028ef..9bcaa8e831 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs @@ -7,14 +7,18 @@ use multiversx_sc::abi::{ use crate::cmd::contract::meta_config::MetaConfig; -use super::{ - proxy_naming::{proxy_methods_type_name, proxy_type_name}, - proxy_template_gen::{ - extract_struct_crate, start_write_type, write_constructor_content, write_end_of_function, - write_endpoint_content, write_endpoint_docs, write_function_header_endpoint, write_header, - write_parameters, write_upgrade_content, - }, -}; +use super::proxy_naming::{extract_struct_crate, proxy_methods_type_name, proxy_type_name}; + +const PRELUDE: &str = "// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(dead_code)] +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*;"; const ZERO: &str = "0"; @@ -32,38 +36,42 @@ const TYPES_FROM_FRAMEWORK: &[&str] = &[ pub struct ProxyGenerator<'a> { pub meta_config: &'a MetaConfig, + pub file: &'a mut File, } - impl<'a> ProxyGenerator<'a> { - pub const fn new(meta_config: &'a MetaConfig) -> Self { - ProxyGenerator { meta_config } + pub fn new(meta_config: &'a MetaConfig, file: &'a mut File) -> Self { + Self { meta_config, file } + } + + pub fn write_proxy_to_file(&mut self) { + self.write_header(); + self.write_tx_proxy_type_def(); + self.write_impl_for_tx_proxy(); + self.write_struct_tx_proxy_methods(); + self.write_content(); + self.write_types(); } - pub fn write_proxy_to_file(&self, mut file: File) { - write_header(&mut file); - self.write_tx_proxy_type_def(&mut file); - self.write_impl_for_tx_proxy(&mut file); - self.write_struct_tx_proxy_methods(&mut file); - self.write_content(&mut file); - self.write_types(&mut file); + fn write_header(&mut self) { + writeln!(self.file, r#"{PRELUDE}"#).unwrap(); } - fn write_tx_proxy_type_def(&self, file: &mut File) { + fn write_tx_proxy_type_def(&mut self) { let proxy_type_name = proxy_type_name(&self.meta_config.original_contract_abi.name); writeln!( - file, + self.file, r#" pub struct {proxy_type_name};"# ) .unwrap(); } - fn write_impl_for_tx_proxy(&self, file: &mut File) { + fn write_impl_for_tx_proxy(&mut self) { let proxy_type_name = proxy_type_name(&self.meta_config.original_contract_abi.name); let proxy_methods_type_name = proxy_methods_type_name(&self.meta_config.original_contract_abi.name); writeln!( - file, + self.file, r#" impl TxProxyTrait for {proxy_type_name} where @@ -82,11 +90,11 @@ where .unwrap(); } - fn write_struct_tx_proxy_methods(&self, file: &mut File) { + fn write_struct_tx_proxy_methods(&mut self) { let proxy_methods_type_name = proxy_methods_type_name(&self.meta_config.original_contract_abi.name); writeln!( - file, + self.file, r#" pub struct {proxy_methods_type_name} where @@ -101,14 +109,14 @@ where .unwrap(); } - fn write_content(&self, file: &mut File) { + fn write_content(&mut self) { if !self .meta_config .original_contract_abi .constructors .is_empty() { - self.write_constructors(file); + self.write_constructors(); } if !self @@ -117,15 +125,15 @@ where .upgrade_constructors .is_empty() { - self.write_upgrades(file); + self.write_upgrades(); } if !self.meta_config.original_contract_abi.endpoints.is_empty() { - self.write_endpoints(file); + self.write_endpoints(); } } - fn write_types(&self, file: &mut File) { + fn write_types(&mut self) { for (_, type_description) in &self.meta_config.original_contract_abi.type_descriptions.0 { if self .meta_config @@ -145,10 +153,10 @@ where match &type_description.contents { TypeContents::Enum(enum_variants) => { - self.write_enum(file, enum_variants, type_description, &type_name) + self.write_enum(enum_variants, type_description, &type_name) }, TypeContents::Struct(struct_fields) => { - self.write_struct(file, struct_fields, type_description, &type_name) + self.write_struct(struct_fields, type_description, &type_name) }, TypeContents::NotSpecified => {}, TypeContents::ExplicitEnum(_) => {}, @@ -156,25 +164,25 @@ where } } - fn write_constructors(&self, file: &mut File) { + fn write_constructors(&mut self) { let constructors: Vec = self.meta_config.original_contract_abi.constructors.clone(); - self.write_header_impl_constructor(file); + self.write_header_impl_constructor(); for (i, constructor_abi) in constructors.into_iter().enumerate() { if i > 0 { - writeln!(file).unwrap(); + writeln!(self.file).unwrap(); } - self.write_constructor_header(file, &constructor_abi); - write_constructor_content(file, constructor_abi.inputs); - write_end_of_function(file); + self.write_constructor_header(&constructor_abi); + self.write_constructor_content(constructor_abi.inputs); + self.write_end_of_function(); } - writeln!(file, "}}").unwrap(); + writeln!(self.file, "}}").unwrap(); } - fn write_upgrades(&self, file: &mut File) { - self.write_header_impl_upgrade(file); + fn write_upgrades(&mut self) { + self.write_header_impl_upgrade(); for (i, upgrade) in self .meta_config .original_contract_abi @@ -184,37 +192,37 @@ where .enumerate() { if i > 0 { - writeln!(file).unwrap(); + writeln!(self.file).unwrap(); } - self.write_upgrade_header(file, &upgrade); - write_upgrade_content(file, upgrade.inputs); - write_end_of_function(file); + self.write_upgrade_header(&upgrade); + self.write_upgrade_content(upgrade.inputs); + self.write_end_of_function(); } - writeln!(file, "}}").unwrap(); + writeln!(self.file, "}}").unwrap(); } - fn write_endpoints(&self, file: &mut File) { + fn write_endpoints(&mut self) { let endpoints: Vec = self.meta_config.original_contract_abi.endpoints.clone(); - self.write_header_impl_endpoints(file); + self.write_header_impl_endpoints(); for (i, endpoint_abi) in endpoints.into_iter().enumerate() { if i > 0 { - writeln!(file).unwrap(); + writeln!(self.file).unwrap(); } - self.write_endpoint_header(file, &endpoint_abi); - write_endpoint_content(file, &endpoint_abi); - write_end_of_function(file); + self.write_endpoint_header(&endpoint_abi); + self.write_endpoint_content(&endpoint_abi); + self.write_end_of_function(); } - writeln!(file, "}}").unwrap(); + writeln!(self.file, "}}").unwrap(); } - fn write_header_impl_constructor(&self, file: &mut File) { + fn write_header_impl_constructor(&mut self) { let proxy_methods_type_name = proxy_methods_type_name(&self.meta_config.original_contract_abi.name); writeln!( - file, + self.file, r#" #[rustfmt::skip] impl {proxy_methods_type_name} @@ -228,11 +236,11 @@ where .unwrap(); } - fn write_header_impl_upgrade(&self, file: &mut File) { + fn write_header_impl_upgrade(&mut self) { let proxy_methods_type_name = proxy_methods_type_name(&self.meta_config.original_contract_abi.name); writeln!( - file, + self.file, r#" #[rustfmt::skip] impl {proxy_methods_type_name} @@ -247,11 +255,11 @@ where .unwrap(); } - fn write_header_impl_endpoints(&self, file: &mut File) { + fn write_header_impl_endpoints(&mut self) { let proxy_methods_type_name = proxy_methods_type_name(&self.meta_config.original_contract_abi.name); writeln!( - file, + self.file, r#" #[rustfmt::skip] impl {proxy_methods_type_name} @@ -266,179 +274,221 @@ where .unwrap(); } - fn write_constructor_header(&self, file: &mut File, constructor_abi: &EndpointAbi) { - self.write_fn_signature(file, constructor_abi); - self.write_constructor_output(file, &constructor_abi.outputs); + fn write_constructor_header(&mut self, constructor_abi: &EndpointAbi) { + self.write_fn_signature(constructor_abi); + self.write_constructor_output(&constructor_abi.outputs); + } + + fn write_upgrade_header(&mut self, constructor_abi: &EndpointAbi) { + self.write_fn_signature(constructor_abi); + self.write_upgrade_output(&constructor_abi.outputs); + } + + fn write_endpoint_header(&mut self, constructor_abi: &EndpointAbi) { + self.write_fn_signature(constructor_abi); + self.write_endpoint_output(&constructor_abi.outputs); + } + + fn write_constructor_content(&mut self, inputs: Vec) { + writeln!( + self.file, + " self.wrapped_tx + .raw_deploy()" + ) + .unwrap(); + for input in inputs.iter() { + writeln!(self.file, " .argument(&{})", input.arg_name).unwrap(); + } + writeln!(self.file, " .original_result()").unwrap(); + } + + fn write_upgrade_content(&mut self, inputs: Vec) { + writeln!( + self.file, + " self.wrapped_tx + .raw_upgrade()" + ) + .unwrap(); + for input in inputs.iter() { + writeln!(self.file, " .argument(&{})", input.arg_name).unwrap(); + } + writeln!(self.file, " .original_result()").unwrap(); + } + + fn write_endpoint_content(&mut self, endpoint: &EndpointAbi) { + writeln!( + self.file, + " self.wrapped_tx + .raw_call() + .function_name(\"{}\")", + endpoint.name + ) + .unwrap(); + + for input in endpoint.inputs.iter() { + writeln!(self.file, " .argument(&{})", input.arg_name).unwrap(); + } + + writeln!(self.file, " .original_result()").unwrap(); } - fn write_upgrade_header(&self, file: &mut File, constructor_abi: &EndpointAbi) { - self.write_fn_signature(file, constructor_abi); - self.write_upgrade_output(file, &constructor_abi.outputs); + fn write_fn_signature(&mut self, endpoint: &EndpointAbi) { + self.write_endpoint_docs(&endpoint.docs); + self.write_function_header_endpoint(&endpoint.rust_method_name); + self.write_args(&endpoint.inputs); + self.write_parameters(&endpoint.inputs); } - fn write_endpoint_header(&self, file: &mut File, constructor_abi: &EndpointAbi) { - self.write_fn_signature(file, constructor_abi); - self.write_endpoint_output(file, &constructor_abi.outputs); + fn write_endpoint_docs(&mut self, docs: &Vec) { + for doc in docs { + writeln!(self.file, " /// {doc} ").unwrap(); + } } - fn write_fn_signature(&self, file: &mut File, endpoint: &EndpointAbi) { - write_endpoint_docs(file, &endpoint.docs); - write_function_header_endpoint(file, &endpoint.rust_method_name); - self.write_args(file, &endpoint.inputs); - write_parameters(file, &endpoint.inputs); + fn write_function_header_endpoint(&mut self, rust_method_name: &String) { + write!(self.file, " pub fn {rust_method_name}").unwrap(); } - fn write_args(&self, file: &mut File, inputs: &[InputAbi]) { + fn write_args(&mut self, inputs: &[InputAbi]) { if inputs.is_empty() { return; } - writeln!(file, "<").unwrap(); + writeln!(self.file, "<").unwrap(); for (index, input) in inputs.iter().enumerate() { - self.write_argument(file, index, &input.type_names.rust); + self.write_argument(index, &input.type_names.rust); } - write!(file, " >").unwrap(); + write!(self.file, " >").unwrap(); } - fn write_argument(&self, file: &mut File, index: usize, rust_name: &str) { + fn write_argument(&mut self, index: usize, rust_name: &str) { let adjusted = self.adjust_type_name_with_env_api(rust_name); - writeln!(file, " Arg{index}: CodecInto<{adjusted}>,").unwrap(); + writeln!(self.file, " Arg{index}: CodecInto<{adjusted}>,").unwrap(); + } + + fn write_parameters(&mut self, inputs: &[InputAbi]) { + writeln!(self.file, "(").unwrap(); + writeln!(self.file, " self,").unwrap(); + for (index, input) in inputs.iter().enumerate() { + writeln!(self.file, " {}: Arg{index},", &input.arg_name).unwrap(); + } + write!(self.file, " ) ").unwrap(); } - fn write_constructor_output(&self, file: &mut File, outputs: &[OutputAbi]) { - write!(file, "-> TxProxyDeploy TxProxyDeploy {{").unwrap(); + writeln!(self.file, "> {{").unwrap(); } - fn write_upgrade_output(&self, file: &mut File, outputs: &[OutputAbi]) { - write!(file, "-> TxProxyUpgrade TxProxyUpgrade {{").unwrap(); + writeln!(self.file, "> {{").unwrap(); } - fn write_endpoint_output(&self, file: &mut File, outputs: &[OutputAbi]) { - write!(file, "-> TxProxyCall TxProxyCall {{").unwrap(); + writeln!(self.file, "> {{").unwrap(); } - fn parse_and_write_outputs(&self, file: &mut File, outputs: &[OutputAbi]) { + fn parse_and_write_outputs(&mut self, outputs: &[OutputAbi]) { match outputs.len() { 0 => { - write!(file, "()").unwrap(); + write!(self.file, "()").unwrap(); }, 1 => { let adjusted = self.adjust_type_name_with_env_api(&outputs[0].type_names.rust); - write!(file, "{adjusted}").unwrap(); + write!(self.file, "{adjusted}").unwrap(); }, _ => { - write!(file, "MultiValue{}<", outputs.len()).unwrap(); + write!(self.file, "MultiValue{}<", outputs.len()).unwrap(); for (i, output) in outputs.iter().enumerate() { if i > 0 { - write!(file, ", ").unwrap(); + write!(self.file, ", ").unwrap(); } let adjusted = self.adjust_type_name_with_env_api(&output.type_names.rust); - write!(file, "{adjusted}").unwrap(); + write!(self.file, "{adjusted}").unwrap(); } - write!(file, ">").unwrap(); + write!(self.file, ">").unwrap(); }, } } fn write_enum( - &self, - file: &mut File, + &mut self, enum_variants: &Vec, type_description: &TypeDescription, name: &str, ) { - start_write_type(file, "enum", type_description, name); + self.start_write_type("enum", type_description, name); for variant in enum_variants { - write!(file, " {}", variant.name).unwrap(); + write!(self.file, " {}", variant.name).unwrap(); if variant.fields.is_empty() { - writeln!(file, ",").unwrap(); + writeln!(self.file, ",").unwrap(); continue; } if variant.fields[0].name == ZERO { - self.write_tuple_in_variant(file, &variant.fields); + self.write_tuple_in_variant(&variant.fields); } else { - self.write_struct_in_variant(file, &variant.fields); + self.write_struct_in_variant(&variant.fields); } } - writeln!(file, "}}").unwrap(); + writeln!(self.file, "}}").unwrap(); } fn write_struct( - &self, - file: &mut File, + &mut self, struct_fields: &Vec, type_description: &TypeDescription, name: &str, ) { - start_write_type(file, "struct", type_description, name); + self.start_write_type("struct", type_description, name); for field in struct_fields { - writeln!( - file, - " pub {}: {},", - field.name, - self.adjust_type_name_with_api(&field.field_type.rust) - ) - .unwrap(); + let adjusted_type_name = self.adjust_type_name_with_api(&field.field_type.rust); + writeln!(self.file, " pub {}: {adjusted_type_name},", field.name).unwrap(); } - writeln!(file, "}}").unwrap(); + writeln!(self.file, "}}").unwrap(); } - fn write_tuple_in_variant(&self, file: &mut File, fields: &[StructFieldDescription]) { - write!(file, "(").unwrap(); - write!( - file, - "{}", - self.adjust_type_name_with_api(&fields[0].field_type.rust) - ) - .unwrap(); + fn write_tuple_in_variant(&mut self, fields: &[StructFieldDescription]) { + write!(self.file, "(").unwrap(); + let adjusted_type_name = self.adjust_type_name_with_api(&fields[0].field_type.rust); + write!(self.file, "{adjusted_type_name}").unwrap(); for field in &fields[1..] { - write!( - file, - ", {}", - self.adjust_type_name_with_api(&field.field_type.rust) - ) - .unwrap(); + let adjusted_type_name = self.adjust_type_name_with_api(&field.field_type.rust); + write!(self.file, ", {adjusted_type_name}").unwrap(); } - writeln!(file, "),").unwrap(); + writeln!(self.file, "),").unwrap(); } - fn write_struct_in_variant(&self, file: &mut File, fields: &[StructFieldDescription]) { - writeln!(file, " {{").unwrap(); + fn write_struct_in_variant(&mut self, fields: &[StructFieldDescription]) { + writeln!(self.file, " {{").unwrap(); for field in fields { - writeln!( - file, - " {}: {},", - field.name, - self.adjust_type_name_with_api(&field.field_type.rust) - ) - .unwrap(); + let adjusted_type_name = self.adjust_type_name_with_api(&field.field_type.rust); + writeln!(self.file, " {}: {adjusted_type_name},", field.name,).unwrap(); } - writeln!(file, " }},").unwrap(); + writeln!(self.file, " }},").unwrap(); } - fn clean_paths(&self, proxy_crate: &str, rust_type: &str) -> String { + fn clean_paths(&mut self, proxy_crate: &str, rust_type: &str) -> String { let delimiters = "<>,()[] "; let words: Vec<&str> = rust_type .split(|c| delimiters.contains(c)) @@ -468,7 +518,40 @@ where rust_type_with_cleaned_path } - fn adjust_type_name_with_env_api(&self, original_rust_name: &str) -> String { + fn start_write_type( + &mut self, + type_type: &str, + type_description: &TypeDescription, + name: &str, + ) { + writeln!(self.file).unwrap(); + self.write_macro_attributes(&type_description.macro_attributes); + write!(self.file, r#"pub {type_type} {name}"#).unwrap(); + + if name.contains("") { + writeln!( + self.file, + r#" +where + Api: ManagedTypeApi,"# + ) + .unwrap(); + } else { + write!(self.file, " ").unwrap(); + } + + writeln!(self.file, r#"{{"#).unwrap(); + } + + pub fn write_macro_attributes(&mut self, macro_attributes: &[String]) { + if macro_attributes.is_empty() { + writeln!(self.file, "#[derive(TopEncode, TopDecode)]").unwrap(); + } else { + writeln!(self.file, "#[derive({})]", macro_attributes.join(", ")).unwrap(); + } + } + + fn adjust_type_name_with_env_api(&mut self, original_rust_name: &str) -> String { self.clean_paths( self.meta_config .original_contract_abi @@ -481,7 +564,7 @@ where ) } - fn adjust_type_name_with_api(&self, original_rust_name: &str) -> String { + fn adjust_type_name_with_api(&mut self, original_rust_name: &str) -> String { self.clean_paths( self.meta_config .original_contract_abi @@ -493,4 +576,8 @@ where .replace("$API", "Api"), ) } + + fn write_end_of_function(&mut self) { + writeln!(self.file, " }}").unwrap(); + } } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_naming.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_naming.rs index e71a6a0e64..ada7559e01 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_naming.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_naming.rs @@ -5,3 +5,15 @@ pub(super) fn proxy_type_name(contract_trait_name: &str) -> String { pub(super) fn proxy_methods_type_name(contract_trait_name: &str) -> String { format!("{contract_trait_name}ProxyMethods") } + +pub(super) fn extract_struct_crate(struct_path: &str) -> String { + let struct_crate_name = struct_path + .replace('_', "-") + .replace("multiversx_sc::api::uncallable::UncallableApi", "Api") + .to_string(); + let crate_name = struct_crate_name + .split("::") + .next() + .unwrap_or_else(|| &struct_crate_name); + crate_name.to_string() +} diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs deleted file mode 100644 index e91bf663ec..0000000000 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_template_gen.rs +++ /dev/null @@ -1,129 +0,0 @@ -use std::{fs::File, io::Write}; - -use multiversx_sc::abi::{EndpointAbi, InputAbi, TypeDescription}; - -const PRELUDE: &str = "// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. - -//////////////////////////////////////////////////// -////////////////// AUTO-GENERATED ////////////////// -//////////////////////////////////////////////////// - -#![allow(dead_code)] -#![allow(clippy::all)] - -use multiversx_sc::proxy_imports::*;"; - -pub(crate) fn write_header(file: &mut File) { - writeln!(file, r#"{PRELUDE}"#).unwrap(); -} - -pub fn write_endpoint_docs(file: &mut File, docs: &Vec) { - for doc in docs { - writeln!(file, " /// {doc} ").unwrap(); - } -} - -pub fn write_function_header_endpoint(file: &mut File, rust_method_name: &String) { - write!(file, " pub fn {rust_method_name}").unwrap(); -} - -pub fn write_parameters(file: &mut File, inputs: &[InputAbi]) { - writeln!(file, "(").unwrap(); - writeln!(file, " self,").unwrap(); - for (index, input) in inputs.iter().enumerate() { - writeln!(file, " {}: Arg{index},", &input.arg_name).unwrap(); - } - write!(file, " ) ").unwrap(); -} - -pub fn write_constructor_content(file: &mut File, inputs: Vec) { - writeln!( - file, - " self.wrapped_tx - .raw_deploy()" - ) - .unwrap(); - for input in inputs.iter() { - writeln!(file, " .argument(&{})", input.arg_name).unwrap(); - } - writeln!(file, " .original_result()").unwrap(); -} - -pub fn write_upgrade_content(file: &mut File, inputs: Vec) { - writeln!( - file, - " self.wrapped_tx - .raw_upgrade()" - ) - .unwrap(); - for input in inputs.iter() { - writeln!(file, " .argument(&{})", input.arg_name).unwrap(); - } - writeln!(file, " .original_result()").unwrap(); -} - -pub fn write_endpoint_content(file: &mut File, endpoint: &EndpointAbi) { - writeln!( - file, - " self.wrapped_tx - .raw_call() - .function_name(\"{}\")", - endpoint.name - ) - .unwrap(); - - for input in endpoint.inputs.iter() { - writeln!(file, " .argument(&{})", input.arg_name).unwrap(); - } - - writeln!(file, " .original_result()").unwrap(); -} - -pub fn write_end_of_function(file: &mut File) { - writeln!(file, " }}").unwrap(); -} - -pub fn start_write_type( - file: &mut File, - type_type: &str, - type_description: &TypeDescription, - name: &str, -) { - writeln!(file).unwrap(); - write_macro_attributes(file, &type_description.macro_attributes); - write!(file, r#"pub {type_type} {name}"#).unwrap(); - - if name.contains("") { - writeln!( - file, - r#" -where - Api: ManagedTypeApi,"# - ) - .unwrap(); - } else { - write!(file, " ").unwrap(); - } - - writeln!(file, r#"{{"#).unwrap(); -} - -pub fn write_macro_attributes(file: &mut File, macro_attributes: &[String]) { - if macro_attributes.is_empty() { - writeln!(file, "#[derive(TopEncode, TopDecode)]").unwrap(); - } else { - writeln!(file, "#[derive({})]", macro_attributes.join(", ")).unwrap(); - } -} - -pub fn extract_struct_crate(struct_path: &str) -> String { - let struct_crate_name = struct_path - .replace('_', "-") - .replace("multiversx_sc::api::uncallable::UncallableApi", "Api") - .to_string(); - let crate_name = struct_crate_name - .split("::") - .next() - .unwrap_or_else(|| &struct_crate_name); - crate_name.to_string() -} From 72e8e2247db1b05910b6f9d996f7627ee27621d8 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 1 Apr 2024 12:56:32 +0300 Subject: [PATCH 236/461] unified syntax - system SC proxy --- .../contract_base/wrappers/send_wrapper.rs | 29 +- framework/base/src/esdt.rs | 5 - framework/base/src/lib.rs | 4 +- .../mappers/token/fungible_token_mapper.rs | 28 +- .../token/non_fungible_token_mapper.rs | 83 ++- .../src/storage/mappers/token/token_mapper.rs | 19 +- .../base/src/types/interaction/markers.rs | 2 + .../interaction/markers/system_sc_address.rs | 46 ++ framework/base/src/types/interaction/mod.rs | 1 + .../src/types/interaction/system_proxy.rs | 6 + .../system_proxy/system_sc_proxy.rs | 602 ++++++++++++++++++ .../system_proxy/system_sc_proxy_legacy.rs} | 14 +- .../system_proxy/token_properties.rs} | 0 framework/base/src/types/interaction/tx.rs | 7 +- .../interaction/tx_exec/tx_exec_async.rs | 12 +- .../tx_payment_egld_or_multi_esdt.rs | 5 +- .../tx_payment_egld_or_multi_esdt_ref.rs | 6 +- .../tx_payment/tx_payment_multi_esdt.rs | 5 +- 18 files changed, 772 insertions(+), 102 deletions(-) delete mode 100644 framework/base/src/esdt.rs create mode 100644 framework/base/src/types/interaction/markers/system_sc_address.rs create mode 100644 framework/base/src/types/interaction/system_proxy.rs create mode 100644 framework/base/src/types/interaction/system_proxy/system_sc_proxy.rs rename framework/base/src/{esdt/system_sc_proxy.rs => types/interaction/system_proxy/system_sc_proxy_legacy.rs} (98%) rename framework/base/src/{esdt/properties.rs => types/interaction/system_proxy/token_properties.rs} (100%) diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index b1de9d7ab9..0e809ebd51 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -11,11 +11,11 @@ use crate::{ ESDT_NFT_UPDATE_ATTRIBUTES_FUNC_NAME, }, codec, - esdt::ESDTSystemSmartContractProxy, types::{ - BigUint, ContractCall, ContractCallNoPayment, EgldOrEsdtTokenIdentifier, EsdtTokenPayment, - GasLeft, ManagedAddress, ManagedArgBuffer, ManagedBuffer, ManagedType, ManagedVec, - ReturnsRawResult, ToSelf, TokenIdentifier, Tx, + system_proxy, system_proxy::SystemSCProxy, BigUint, ContractCall, ContractCallNoPayment, + EgldOrEsdtTokenIdentifier, EsdtTokenPayment, GasLeft, ManagedAddress, ManagedArgBuffer, + ManagedBuffer, ManagedType, ManagedVec, ReturnsRawResult, SystemSCAddress, ToSelf, + TokenIdentifier, Tx, TxScEnv, }, }; @@ -51,12 +51,21 @@ 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() + /// Backwards compatibility, synonymous to `esdt_system_sc_tx`, which is the more appropriate name now. + pub fn esdt_system_sc_proxy( + &self, + ) -> system_proxy::SystemSCProxyMethods, (), SystemSCAddress, ()> { + self.esdt_system_sc_tx() + } + + /// Prepares a proxy object to call the system SC. + /// It has the destination address set, as well as the contract type (as specified in the proxy). + pub fn esdt_system_sc_tx( + &self, + ) -> system_proxy::SystemSCProxyMethods, (), SystemSCAddress, ()> { + Tx::new_tx_from_sc() + .to(SystemSCAddress) + .typed(SystemSCProxy) } /// Convenient way to quickly instance a minimal contract call (with no EGLD, no arguments, etc.) diff --git a/framework/base/src/esdt.rs b/framework/base/src/esdt.rs deleted file mode 100644 index db1730be29..0000000000 --- a/framework/base/src/esdt.rs +++ /dev/null @@ -1,5 +0,0 @@ -mod properties; -mod system_sc_proxy; - -pub use properties::*; -pub use system_sc_proxy::ESDTSystemSmartContractProxy; diff --git a/framework/base/src/lib.rs b/framework/base/src/lib.rs index aa1d477897..3d2fa0f9e5 100644 --- a/framework/base/src/lib.rs +++ b/framework/base/src/lib.rs @@ -23,7 +23,6 @@ pub mod abi; pub mod api; pub mod contract_base; pub mod err_msg; -pub mod esdt; pub mod external_view_contract; pub mod formatter; pub mod hex_call_data; @@ -51,13 +50,12 @@ pub mod imports { }, contract_base::{ContractBase, ProxyObjBase, ProxyObjNew}, err_msg, - esdt::*, io::*, non_zero_usize, non_zero_util::*, require, sc_format, sc_panic, sc_print, storage::mappers::*, - types::*, + types::{system_proxy::*, *}, }; pub use core::ops::{ Add, AddAssign, BitAnd, BitAndAssign, BitOr, BitOrAssign, BitXor, BitXorAssign, Div, diff --git a/framework/base/src/storage/mappers/token/fungible_token_mapper.rs b/framework/base/src/storage/mappers/token/fungible_token_mapper.rs index 53f07eab56..5e1d3dd222 100644 --- a/framework/base/src/storage/mappers/token/fungible_token_mapper.rs +++ b/framework/base/src/storage/mappers/token/fungible_token_mapper.rs @@ -3,7 +3,10 @@ use crate::{ api::ErrorApiImpl, codec::{CodecFrom, EncodeErrorHandler, TopEncodeMulti, TopEncodeMultiOutput}, storage_clear, storage_get, storage_set, - types::Tx, + types::{ + system_proxy::{FungibleTokenProperties, SystemSCProxy}, + SystemSCAddress, Tx, + }, }; use super::{ @@ -15,11 +18,10 @@ use crate::{ abi::TypeName, api::{CallTypeApi, StorageMapperApi}, contract_base::{BlockchainWrapper, SendWrapper}, - esdt::{ESDTSystemSmartContractProxy, FungibleTokenProperties}, storage::StorageKey, types::{ - BigUint, CallbackClosure, ContractCall, EsdtTokenPayment, EsdtTokenType, ManagedAddress, - ManagedBuffer, ManagedType, TokenIdentifier, + BigUint, CallbackClosure, EsdtTokenPayment, EsdtTokenType, ManagedAddress, ManagedBuffer, + ManagedType, TokenIdentifier, }, }; @@ -114,7 +116,6 @@ where ) -> ! { check_not_set(self); - let system_sc_proxy = ESDTSystemSmartContractProxy::::new_proxy_obj(); let callback = match opt_callback { Some(cb) => cb, None => self.default_callback_closure_obj(&initial_supply), @@ -125,7 +126,9 @@ where }; storage_set(self.get_storage_key(), &TokenMapperState::::Pending); - system_sc_proxy + Tx::new_tx_from_sc() + .to(SystemSCAddress) + .typed(SystemSCProxy) .issue_fungible( issue_cost, &token_display_name, @@ -133,9 +136,8 @@ where &initial_supply, properties, ) - .async_call() - .with_callback(callback) - .call_and_exit(); + .callback(callback) + .async_call_and_exit() } /// Important: If you use custom callback, remember to save the token ID in the callback and clear the mapper in case of error! Clear is unusable outside this specific case. @@ -166,14 +168,15 @@ where ) -> ! { check_not_set(self); - let system_sc_proxy = ESDTSystemSmartContractProxy::::new_proxy_obj(); let callback = match opt_callback { Some(cb) => cb, None => self.default_callback_closure_obj(&BigUint::zero()), }; storage_set(self.get_storage_key(), &TokenMapperState::::Pending); - system_sc_proxy + Tx::new_tx_from_sc() + .to(SystemSCAddress) + .typed(SystemSCProxy) .issue_and_set_all_roles( issue_cost, token_display_name, @@ -181,9 +184,8 @@ where EsdtTokenType::Fungible, num_decimals, ) - .async_call() .with_callback(callback) - .call_and_exit(); + .async_call_and_exit(); } pub fn clear(&mut self) { diff --git a/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs b/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs index a49db9846b..4a32900093 100644 --- a/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs +++ b/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs @@ -3,7 +3,10 @@ use crate::{ CodecFrom, EncodeErrorHandler, TopDecode, TopEncode, TopEncodeMulti, TopEncodeMultiOutput, }, storage_clear, storage_get, storage_set, - types::Tx, + types::{ + system_proxy::SystemSCProxy, EgldPayment, FunctionCall, OriginalResultMarker, + SystemSCAddress, Tx, TxScEnv, + }, }; use super::{ @@ -16,20 +19,28 @@ use crate::{ abi::{TypeAbi, TypeName}, api::{CallTypeApi, ErrorApiImpl, StorageMapperApi}, contract_base::{BlockchainWrapper, SendWrapper}, - esdt::{ - ESDTSystemSmartContractProxy, MetaTokenProperties, NonFungibleTokenProperties, - SemiFungibleTokenProperties, - }, storage::StorageKey, types::{ - BigUint, CallbackClosure, ContractCall, ContractCallWithEgld, EsdtTokenData, - EsdtTokenPayment, EsdtTokenType, ManagedAddress, ManagedBuffer, ManagedType, - TokenIdentifier, + system_proxy::{ + MetaTokenProperties, NonFungibleTokenProperties, SemiFungibleTokenProperties, + }, + BigUint, CallbackClosure, EsdtTokenData, EsdtTokenPayment, EsdtTokenType, ManagedAddress, + ManagedBuffer, ManagedType, TokenIdentifier, }, }; const INVALID_TOKEN_TYPE_ERR_MSG: &[u8] = b"Invalid token type for NonFungible issue"; +pub type IssueCallTo = Tx< + TxScEnv, + (), + SystemSCAddress, + EgldPayment, + (), + FunctionCall, + OriginalResultMarker>, +>; + pub struct NonFungibleTokenMapper where SA: StorageMapperApi + CallTypeApi, @@ -174,14 +185,15 @@ where SA::error_api_impl().signal_error(INVALID_TOKEN_TYPE_ERR_MSG); } - let system_sc_proxy = ESDTSystemSmartContractProxy::::new_proxy_obj(); let callback = match opt_callback { Some(cb) => cb, None => self.default_callback_closure_obj(), }; storage_set(self.get_storage_key(), &TokenMapperState::::Pending); - system_sc_proxy + Tx::new_tx_from_sc() + .to(SystemSCAddress) + .typed(SystemSCProxy) .issue_and_set_all_roles( issue_cost, token_display_name, @@ -191,7 +203,7 @@ where ) .async_call() .with_callback(callback) - .call_and_exit(); + .call_and_exit() } pub fn clear(&mut self) { @@ -216,28 +228,32 @@ where issue_cost: BigUint, token_display_name: ManagedBuffer, token_ticker: ManagedBuffer, - ) -> ContractCallWithEgld { - let system_sc_proxy = ESDTSystemSmartContractProxy::::new_proxy_obj(); - system_sc_proxy.issue_non_fungible( - issue_cost, - &token_display_name, - &token_ticker, - NonFungibleTokenProperties::default(), - ) + ) -> IssueCallTo { + Tx::new_tx_from_sc() + .to(SystemSCAddress) + .typed(SystemSCProxy) + .issue_non_fungible( + issue_cost, + &token_display_name, + &token_ticker, + NonFungibleTokenProperties::default(), + ) } fn sft_issue( issue_cost: BigUint, token_display_name: ManagedBuffer, token_ticker: ManagedBuffer, - ) -> ContractCallWithEgld { - let system_sc_proxy = ESDTSystemSmartContractProxy::::new_proxy_obj(); - system_sc_proxy.issue_semi_fungible( - issue_cost, - &token_display_name, - &token_ticker, - SemiFungibleTokenProperties::default(), - ) + ) -> IssueCallTo { + Tx::new_tx_from_sc() + .to(SystemSCAddress) + .typed(SystemSCProxy) + .issue_semi_fungible( + issue_cost, + &token_display_name, + &token_ticker, + SemiFungibleTokenProperties::default(), + ) } fn meta_issue( @@ -245,19 +261,16 @@ where token_display_name: ManagedBuffer, token_ticker: ManagedBuffer, num_decimals: usize, - ) -> ContractCallWithEgld { - let system_sc_proxy = ESDTSystemSmartContractProxy::::new_proxy_obj(); + ) -> IssueCallTo { let properties = MetaTokenProperties { num_decimals, ..Default::default() }; - system_sc_proxy.register_meta_esdt( - issue_cost, - &token_display_name, - &token_ticker, - properties, - ) + Tx::new_tx_from_sc() + .to(SystemSCAddress) + .typed(SystemSCProxy) + .register_meta_esdt(issue_cost, &token_display_name, &token_ticker, properties) } pub fn nft_create( diff --git a/framework/base/src/storage/mappers/token/token_mapper.rs b/framework/base/src/storage/mappers/token/token_mapper.rs index e0867f7414..965b5209e3 100644 --- a/framework/base/src/storage/mappers/token/token_mapper.rs +++ b/framework/base/src/storage/mappers/token/token_mapper.rs @@ -1,12 +1,11 @@ use crate::{ api::{CallTypeApi, ErrorApiImpl, StorageMapperApi}, contract_base::BlockchainWrapper, - esdt::ESDTSystemSmartContractProxy, storage::StorageKey, storage_get, storage_get_len, storage_set, types::{ - CallbackClosure, ContractCall, EsdtLocalRole, EsdtTokenPayment, ManagedAddress, ManagedRef, - ManagedVec, TokenIdentifier, + system_proxy::SystemSCProxy, CallbackClosure, EsdtLocalRole, EsdtTokenPayment, + ManagedAddress, ManagedRef, ManagedVec, SystemSCAddress, TokenIdentifier, Tx, }, }; @@ -81,17 +80,13 @@ where ) -> ! { self.require_issued_or_set(); - let system_sc_proxy = ESDTSystemSmartContractProxy::::new_proxy_obj(); let token_id = self.get_token_id_ref(); - let mut async_call = system_sc_proxy + Tx::new_tx_from_sc() + .to(SystemSCAddress) + .typed(SystemSCProxy) .set_special_roles(address, token_id, roles[..].iter().cloned()) - .async_call(); - - if let Some(cb) = opt_callback { - async_call = async_call.with_callback(cb); - } - - async_call.call_and_exit() + .callback(opt_callback) + .call_and_exit() } fn get_sc_address() -> ManagedAddress { diff --git a/framework/base/src/types/interaction/markers.rs b/framework/base/src/types/interaction/markers.rs index 10ccdea5d0..751ef755e7 100644 --- a/framework/base/src/types/interaction/markers.rs +++ b/framework/base/src/types/interaction/markers.rs @@ -1,7 +1,9 @@ mod gas_left; +mod system_sc_address; mod to_caller; mod to_self; pub use gas_left::GasLeft; +pub use system_sc_address::SystemSCAddress; pub use to_caller::ToCaller; pub use to_self::ToSelf; diff --git a/framework/base/src/types/interaction/markers/system_sc_address.rs b/framework/base/src/types/interaction/markers/system_sc_address.rs new file mode 100644 index 0000000000..2365bacdd3 --- /dev/null +++ b/framework/base/src/types/interaction/markers/system_sc_address.rs @@ -0,0 +1,46 @@ +use hex_literal::hex; + +use crate::{ + api::{ + const_handles, use_raw_handle, BlockchainApi, BlockchainApiImpl, CallTypeApi, + ManagedTypeApi, + }, + contract_base::BlockchainWrapper, + types::{ + AnnotatedValue, ManagedAddress, ManagedBuffer, ManagedType, TxScEnv, TxTo, TxToSpecified, + }, +}; + +/// Address of the system smart contract that manages ESDT. +const SYSTEM_SC_ADDRESS_BYTES: [u8; 32] = + hex!("000000000000000000010000000000000000000000000000000000000002ffff"); +const SYSTEM_SC_ADDRESS_ANNOTATION: &str = + "bech32:erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u"; + +/// Indicates the system SC address, which is the same on any MultiversX blockchain. +pub struct SystemSCAddress; + +impl SystemSCAddress { + pub fn managed_address(self) -> ManagedAddress + where + Api: ManagedTypeApi, + { + ManagedAddress::from(SYSTEM_SC_ADDRESS_BYTES) + } +} + +impl AnnotatedValue, ManagedAddress> for SystemSCAddress +where + Api: CallTypeApi, +{ + fn annotation(&self, env: &TxScEnv) -> ManagedBuffer { + ManagedBuffer::from(SYSTEM_SC_ADDRESS_ANNOTATION) + } + + fn to_value(&self, _env: &TxScEnv) -> ManagedAddress { + SystemSCAddress.managed_address() + } +} + +impl TxTo> for SystemSCAddress where Api: CallTypeApi {} +impl TxToSpecified> for SystemSCAddress where Api: CallTypeApi {} diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index 809bb0726c..9703822387 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -13,6 +13,7 @@ mod expr; mod function_call; mod managed_arg_buffer; mod markers; +pub mod system_proxy; mod tx; mod tx_code_source; mod tx_data; diff --git a/framework/base/src/types/interaction/system_proxy.rs b/framework/base/src/types/interaction/system_proxy.rs new file mode 100644 index 0000000000..1388554af4 --- /dev/null +++ b/framework/base/src/types/interaction/system_proxy.rs @@ -0,0 +1,6 @@ +mod system_sc_proxy; +mod system_sc_proxy_legacy; +pub(crate) mod token_properties; + +pub use system_sc_proxy::*; +pub use token_properties::*; diff --git a/framework/base/src/types/interaction/system_proxy/system_sc_proxy.rs b/framework/base/src/types/interaction/system_proxy/system_sc_proxy.rs new file mode 100644 index 0000000000..96c5a72ca0 --- /dev/null +++ b/framework/base/src/types/interaction/system_proxy/system_sc_proxy.rs @@ -0,0 +1,602 @@ +use core::marker::PhantomData; + +use super::token_properties::*; +use hex_literal::hex; + +use crate::{ + api::{CallTypeApi, SendApi, VMApi}, + types::{ + BigUint, ContractCall, ContractCallNoPayment, ContractCallWithEgld, EgldPayment, + EsdtLocalRole, EsdtTokenType, FunctionCall, ManagedAddress, ManagedBuffer, + OriginalResultMarker, TokenIdentifier, Tx, TxEnv, TxFrom, TxGas, TxProxyCall, TxProxyTrait, + TxTo, + }, +}; + +const ISSUE_FUNGIBLE_ENDPOINT_NAME: &str = "issue"; +const ISSUE_NON_FUNGIBLE_ENDPOINT_NAME: &str = "issueNonFungible"; +const ISSUE_SEMI_FUNGIBLE_ENDPOINT_NAME: &str = "issueSemiFungible"; +const REGISTER_META_ESDT_ENDPOINT_NAME: &str = "registerMetaESDT"; +const ISSUE_AND_SET_ALL_ROLES_ENDPOINT_NAME: &str = "registerAndSetAllRoles"; + +pub type IssueCall = Tx< + Env, + From, + To, + EgldPayment<::Api>, + Gas, + FunctionCall<::Api>, + OriginalResultMarker::Api>>, +>; + +/// Proxy for the ESDT system smart contract. +pub struct SystemSCProxy; + +impl TxProxyTrait for SystemSCProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = SystemSCProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + SystemSCProxyMethods { wrapped_tx: tx } + } +} + +pub struct SystemSCProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +impl SystemSCProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + /// Produces a contract call to the ESDT system SC, + /// which causes it to issue a new fungible ESDT token. + pub fn issue_fungible( + self, + issue_cost: BigUint, + token_display_name: &ManagedBuffer, + token_ticker: &ManagedBuffer, + initial_supply: &BigUint, + properties: FungibleTokenProperties, + ) -> IssueCall { + self.issue( + issue_cost, + EsdtTokenType::Fungible, + token_display_name, + token_ticker, + initial_supply, + TokenProperties { + num_decimals: properties.num_decimals, + can_freeze: properties.can_freeze, + can_wipe: properties.can_wipe, + can_pause: properties.can_pause, + can_transfer_create_role: false, + can_mint: properties.can_mint, + can_burn: properties.can_burn, + can_change_owner: properties.can_change_owner, + can_upgrade: properties.can_upgrade, + can_add_special_roles: properties.can_add_special_roles, + }, + ) + } + + /// Produces a contract call to the ESDT system SC, + /// which causes it to issue a new non-fungible ESDT token. + pub fn issue_non_fungible( + self, + issue_cost: BigUint, + token_display_name: &ManagedBuffer, + token_ticker: &ManagedBuffer, + properties: NonFungibleTokenProperties, + ) -> IssueCall { + let zero = BigUint::zero(); + self.issue( + issue_cost, + EsdtTokenType::NonFungible, + token_display_name, + token_ticker, + &zero, + TokenProperties { + num_decimals: 0, + can_freeze: properties.can_freeze, + can_wipe: properties.can_wipe, + can_pause: properties.can_pause, + can_transfer_create_role: properties.can_transfer_create_role, + can_mint: false, + can_burn: false, + can_change_owner: properties.can_change_owner, + can_upgrade: properties.can_upgrade, + can_add_special_roles: properties.can_add_special_roles, + }, + ) + } + + /// Produces a contract call to the ESDT system SC, + /// which causes it to issue a new semi-fungible ESDT token. + pub fn issue_semi_fungible( + self, + issue_cost: BigUint, + token_display_name: &ManagedBuffer, + token_ticker: &ManagedBuffer, + properties: SemiFungibleTokenProperties, + ) -> IssueCall { + let zero = BigUint::zero(); + self.issue( + issue_cost, + EsdtTokenType::SemiFungible, + token_display_name, + token_ticker, + &zero, + TokenProperties { + num_decimals: 0, + can_freeze: properties.can_freeze, + can_wipe: properties.can_wipe, + can_pause: properties.can_pause, + can_transfer_create_role: properties.can_transfer_create_role, + can_mint: false, + can_burn: false, + can_change_owner: properties.can_change_owner, + can_upgrade: properties.can_upgrade, + can_add_special_roles: properties.can_add_special_roles, + }, + ) + } + + /// Produces a contract call to the ESDT system SC, + /// which causes it to register a new Meta ESDT token. + pub fn register_meta_esdt( + self, + issue_cost: BigUint, + token_display_name: &ManagedBuffer, + token_ticker: &ManagedBuffer, + properties: MetaTokenProperties, + ) -> IssueCall { + let zero = BigUint::zero(); + self.issue( + issue_cost, + EsdtTokenType::Meta, + token_display_name, + token_ticker, + &zero, + TokenProperties { + num_decimals: properties.num_decimals, + can_freeze: properties.can_freeze, + can_wipe: properties.can_wipe, + can_pause: properties.can_pause, + can_transfer_create_role: properties.can_transfer_create_role, + can_mint: false, + can_burn: false, + can_change_owner: properties.can_change_owner, + can_upgrade: properties.can_upgrade, + can_add_special_roles: properties.can_add_special_roles, + }, + ) + } + + pub fn issue_and_set_all_roles( + self, + issue_cost: BigUint, + token_display_name: ManagedBuffer, + token_ticker: ManagedBuffer, + token_type: EsdtTokenType, + num_decimals: usize, + ) -> IssueCall { + let token_type_name = match token_type { + EsdtTokenType::Fungible => "FNG", + EsdtTokenType::NonFungible => "NFT", + EsdtTokenType::SemiFungible => "SFT", + EsdtTokenType::Meta => "META", + EsdtTokenType::Invalid => "", + }; + + self.wrapped_tx + .raw_call() + .function_name(ISSUE_AND_SET_ALL_ROLES_ENDPOINT_NAME) + .egld(issue_cost) + .argument(&token_display_name) + .argument(&token_ticker) + .argument(&token_type_name) + .argument(&num_decimals) + .original_result() + } + + /// Deduplicates code from all the possible issue functions + fn issue( + self, + issue_cost: BigUint, + token_type: EsdtTokenType, + token_display_name: &ManagedBuffer, + token_ticker: &ManagedBuffer, + initial_supply: &BigUint, + properties: TokenProperties, + ) -> IssueCall { + let endpoint_name = match token_type { + EsdtTokenType::Fungible => ISSUE_FUNGIBLE_ENDPOINT_NAME, + EsdtTokenType::NonFungible => ISSUE_NON_FUNGIBLE_ENDPOINT_NAME, + EsdtTokenType::SemiFungible => ISSUE_SEMI_FUNGIBLE_ENDPOINT_NAME, + EsdtTokenType::Meta => REGISTER_META_ESDT_ENDPOINT_NAME, + EsdtTokenType::Invalid => "", + }; + + let mut tx = self + .wrapped_tx + .raw_call() + .function_name(endpoint_name) + .egld(issue_cost) + .argument(token_display_name) + .argument(token_ticker); + + if token_type == EsdtTokenType::Fungible { + tx = tx.argument(initial_supply); + tx = tx.argument(&properties.num_decimals); + } else if token_type == EsdtTokenType::Meta { + tx = tx.argument(&properties.num_decimals); + } + + let mut token_prop_args = TokenPropertyArguments { + can_freeze: Some(properties.can_freeze), + can_wipe: Some(properties.can_wipe), + can_pause: Some(properties.can_pause), + can_change_owner: Some(properties.can_change_owner), + can_upgrade: Some(properties.can_upgrade), + can_add_special_roles: Some(properties.can_add_special_roles), + ..TokenPropertyArguments::default() + }; + + if token_type == EsdtTokenType::Fungible { + token_prop_args.can_mint = Some(properties.can_mint); + token_prop_args.can_burn = Some(properties.can_burn); + } else { + token_prop_args.can_transfer_create_role = Some(properties.can_transfer_create_role); + } + + append_token_property_arguments(&mut tx.data, &token_prop_args); + + tx.original_result() + } + + /// Produces a contract call to the ESDT system SC, + /// which causes it to mint more fungible ESDT tokens. + /// It will fail if the SC is not the owner of the token. + pub fn mint( + self, + token_identifier: &TokenIdentifier, + amount: &BigUint, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("mint") + .argument(token_identifier) + .argument(amount) + .original_result() + } + + /// Produces a contract call to the ESDT system SC, + /// which causes it to burn fungible ESDT tokens owned by the SC. + pub fn burn( + self, + token_identifier: &TokenIdentifier, + amount: &BigUint, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("ESDTBurn") + .argument(token_identifier) + .argument(amount) + .original_result() + } + + /// The manager of an ESDT token may choose to suspend all transactions of the token, + /// except minting, freezing/unfreezing and wiping. + pub fn pause( + self, + token_identifier: &TokenIdentifier, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("pause") + .argument(token_identifier) + .original_result() + } + + /// The reverse operation of `pause`. + pub fn unpause( + self, + token_identifier: &TokenIdentifier, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("unPause") + .argument(token_identifier) + .original_result() + } + + /// The manager of an ESDT token may freeze the tokens held by a specific account. + /// As a consequence, no tokens may be transferred to or from the frozen account. + /// Freezing and unfreezing the tokens of an account are operations designed to help token managers to comply with regulations. + pub fn freeze( + self, + token_identifier: &TokenIdentifier, + address: &ManagedAddress, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("freeze") + .argument(token_identifier) + .argument(address) + .original_result() + } + + /// The reverse operation of `freeze`, unfreezing, will allow further transfers to and from the account. + pub fn unfreeze( + self, + token_identifier: &TokenIdentifier, + address: &ManagedAddress, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("unFreeze") + .argument(token_identifier) + .argument(address) + .original_result() + } + + /// The manager of an ESDT token may wipe out all the tokens held by a frozen account. + /// This operation is similar to burning the tokens, but the account must have been frozen beforehand, + /// and it must be done by the token manager. + /// Wiping the tokens of an account is an operation designed to help token managers to comply with regulations. + pub fn wipe( + self, + token_identifier: &TokenIdentifier, + address: &ManagedAddress, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("wipe") + .argument(token_identifier) + .argument(address) + .original_result() + } + + /// The manager of an ESDT token may freeze the NFT held by a specific Account. + /// As a consequence, no NFT can be transferred to or from the frozen Account. + /// Freezing and unfreezing a single NFT of an Account are operations designed to help token managers to comply with regulations. + pub fn freeze_nft( + self, + token_identifier: &TokenIdentifier, + nft_nonce: u64, + address: &ManagedAddress, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("freezeSingleNFT") + .argument(token_identifier) + .argument(&nft_nonce) + .argument(address) + .original_result() + } + + /// The reverse operation of `freeze`, unfreezing, will allow further transfers to and from the account. + pub fn unfreeze_nft( + self, + token_identifier: &TokenIdentifier, + nft_nonce: u64, + address: &ManagedAddress, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("unFreezeSingleNFT") + .argument(token_identifier) + .argument(&nft_nonce) + .argument(address) + .original_result() + } + + /// The manager of an ESDT token may wipe out a single NFT held by a frozen Account. + /// This operation is similar to burning the quantity, but the Account must have been frozen beforehand, + /// and it must be done by the token manager. + /// Wiping the tokens of an Account is an operation designed to help token managers to comply with regulations. + pub fn wipe_nft( + self, + token_identifier: &TokenIdentifier, + nft_nonce: u64, + address: &ManagedAddress, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("wipeSingleNFT") + .argument(token_identifier) + .argument(&nft_nonce) + .argument(address) + .original_result() + } + + /// This function converts an SFT to a metaESDT by adding decimals to its structure in the metachain ESDT System SC. + /// This function as almost all in case of ESDT can be called only by the owner. + pub fn change_sft_to_meta_esdt( + self, + token_identifier: &TokenIdentifier, + num_decimals: usize, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("changeSFTToMetaESDT") + .argument(&token_identifier) + .argument(&num_decimals) + .original_result() + } + + /// This function can be called only if canSetSpecialRoles was set to true. + /// The metachain system SC will evaluate the arguments and call “ESDTSetRole@tokenId@listOfRoles” for the given address. + /// This will be actually a cross shard call. + /// This function as almost all in case of ESDT can be called only by the owner. + pub fn set_special_roles>( + self, + address: &ManagedAddress, + token_identifier: &TokenIdentifier, + roles_iter: RoleIter, + ) -> TxProxyCall { + let mut tx = self + .wrapped_tx + .raw_call() + .function_name("setSpecialRole") + .argument(token_identifier) + .argument(address); + for role in roles_iter { + if role != EsdtLocalRole::None { + tx = tx.argument(&role.as_role_name()); + } + } + + tx.original_result() + } + + /// This function can be called only if canSetSpecialRoles was set to true. + /// The metachain system SC will evaluate the arguments and call “ESDTUnsetRole@tokenId@listOfRoles” for the given address. + /// This will be actually a cross shard call. + /// This function as almost all in case of ESDT can be called only by the owner. + pub fn unset_special_roles>( + self, + address: &ManagedAddress, + token_identifier: &TokenIdentifier, + roles_iter: RoleIter, + ) -> TxProxyCall { + let mut tx = self + .wrapped_tx + .raw_call() + .function_name("unSetSpecialRole") + .argument(token_identifier) + .argument(address); + for role in roles_iter { + if role != EsdtLocalRole::None { + tx = tx.argument(&role.as_role_name()); + } + } + + tx.original_result() + } + + pub fn transfer_ownership( + self, + token_identifier: &TokenIdentifier, + new_owner: &ManagedAddress, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("transferOwnership") + .argument(token_identifier) + .argument(new_owner) + .original_result() + } + + pub fn transfer_nft_create_role( + self, + token_identifier: &TokenIdentifier, + old_creator: &ManagedAddress, + new_creator: &ManagedAddress, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call() + .function_name("transferNFTCreateRole") + .argument(token_identifier) + .argument(old_creator) + .argument(new_creator) + .original_result() + } + + pub fn control_changes( + self, + token_identifier: &TokenIdentifier, + property_arguments: &TokenPropertyArguments, + ) -> TxProxyCall { + let mut tx = self + .wrapped_tx + .raw_call() + .function_name("controlChanges") + .argument(token_identifier); + append_token_property_arguments(&mut tx.data, property_arguments); + tx.original_result() + } +} + +const TRUE_STR: &str = "true"; +const FALSE_STR: &str = "false"; + +fn bool_name_bytes(b: bool) -> &'static str { + if b { + TRUE_STR + } else { + FALSE_STR + } +} + +fn set_token_property(contract_call: &mut FunctionCall, name: &str, value: bool) +where + Api: CallTypeApi, +{ + contract_call.arg_buffer.push_multi_arg(&name); + contract_call + .arg_buffer + .push_multi_arg(&bool_name_bytes(value)); +} + +fn append_token_property_arguments( + contract_call: &mut FunctionCall, + token_prop_args: &TokenPropertyArguments, +) where + Api: CallTypeApi, +{ + if let Some(can_freeze) = token_prop_args.can_freeze { + set_token_property(contract_call, "canFreeze", can_freeze); + } + + if let Some(can_wipe) = token_prop_args.can_wipe { + set_token_property(contract_call, "canWipe", can_wipe); + } + + if let Some(can_pause) = token_prop_args.can_pause { + set_token_property(contract_call, "canPause", can_pause); + } + + if let Some(can_transfer_create_role) = token_prop_args.can_transfer_create_role { + set_token_property( + contract_call, + "canTransferNFTCreateRole", + can_transfer_create_role, + ); + } + + if let Some(can_mint) = token_prop_args.can_mint { + set_token_property(contract_call, "canMint", can_mint); + } + + if let Some(can_burn) = token_prop_args.can_burn { + set_token_property(contract_call, "canBurn", can_burn); + } + + if let Some(can_change_owner) = token_prop_args.can_change_owner { + set_token_property(contract_call, "canChangeOwner", can_change_owner); + } + + if let Some(can_upgrade) = token_prop_args.can_upgrade { + set_token_property(contract_call, "canUpgrade", can_upgrade); + } + + if let Some(can_add_special_roles) = token_prop_args.can_add_special_roles { + set_token_property(contract_call, "canAddSpecialRoles", can_add_special_roles); + } +} diff --git a/framework/base/src/esdt/system_sc_proxy.rs b/framework/base/src/types/interaction/system_proxy/system_sc_proxy_legacy.rs similarity index 98% rename from framework/base/src/esdt/system_sc_proxy.rs rename to framework/base/src/types/interaction/system_proxy/system_sc_proxy_legacy.rs index 62182eeb1a..4422b5b7b1 100644 --- a/framework/base/src/esdt/system_sc_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy/system_sc_proxy_legacy.rs @@ -1,20 +1,18 @@ use core::marker::PhantomData; -use super::properties::*; +// use super::properties::*; use hex_literal::hex; use crate::{ api::{CallTypeApi, SendApi}, + proxy_imports::SystemSCAddress, types::{ BigUint, ContractCall, ContractCallNoPayment, ContractCallWithEgld, EsdtLocalRole, EsdtTokenType, ManagedAddress, ManagedBuffer, TokenIdentifier, }, }; -/// Address of the system smart contract that manages ESDT. -/// Bech32: erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u -pub const ESDT_SYSTEM_SC_ADDRESS_ARRAY: [u8; 32] = - hex!("000000000000000000010000000000000000000000000000000000000002ffff"); +use super::token_properties::*; const ISSUE_FUNGIBLE_ENDPOINT_NAME: &str = "issue"; const ISSUE_NON_FUNGIBLE_ENDPOINT_NAME: &str = "issueNonFungible"; @@ -25,6 +23,10 @@ const ISSUE_AND_SET_ALL_ROLES_ENDPOINT_NAME: &str = "registerAndSetAllRoles"; /// Proxy for the ESDT system smart contract. /// Unlike other contract proxies, this one has a fixed address, /// so the proxy object doesn't really contain any data, it is more of a placeholder. +#[deprecated( + since = "0.48.0", + note = "There is a new `SystemSCProxy`, which uses the new proxy model." +)] pub struct ESDTSystemSmartContractProxy where SA: SendApi + 'static, @@ -470,7 +472,7 @@ where } pub fn esdt_system_sc_address(&self) -> ManagedAddress { - ManagedAddress::new_from_bytes(&ESDT_SYSTEM_SC_ADDRESS_ARRAY) + SystemSCAddress.managed_address() } fn esdt_system_sc_call_no_args( diff --git a/framework/base/src/esdt/properties.rs b/framework/base/src/types/interaction/system_proxy/token_properties.rs similarity index 100% rename from framework/base/src/esdt/properties.rs rename to framework/base/src/types/interaction/system_proxy/token_properties.rs diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 04f101347c..ceef2eba10 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -1,11 +1,10 @@ use crate::{ api::CallTypeApi, contract_base::BlockchainWrapper, - proxy_imports::EgldOrMultiEsdtPayment, types::{ - BigUint, CodeMetadata, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPaymentRefs, - EsdtTokenPayment, EsdtTokenPaymentRefs, ManagedAddress, ManagedBuffer, ManagedOption, - ManagedVec, MultiEsdtPayment, TokenIdentifier, + BigUint, CodeMetadata, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, + EgldOrMultiEsdtPaymentRefs, EsdtTokenPayment, EsdtTokenPaymentRefs, ManagedAddress, + ManagedBuffer, ManagedOption, ManagedVec, MultiEsdtPayment, TokenIdentifier, }, }; diff --git a/framework/base/src/types/interaction/tx_exec/tx_exec_async.rs b/framework/base/src/types/interaction/tx_exec/tx_exec_async.rs index 02f145f635..238b978139 100644 --- a/framework/base/src/types/interaction/tx_exec/tx_exec_async.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_exec_async.rs @@ -2,8 +2,9 @@ use crate::{ api::{CallTypeApi, StorageWriteApi}, contract_base::SendRawWrapper, types::{ - CallbackClosure, OriginalResultMarker, Tx, TxData, TxDataFunctionCall, TxEnv, TxFrom, - TxGas, TxPayment, TxResultHandler, TxScEnv, TxTo, TxToSpecified, + CallbackClosure, OriginalResultMarker, Tx, TxData, TxDataFunctionCall, + TxEmptyResultHandler, TxEnv, TxFrom, TxGas, TxPayment, TxResultHandler, TxScEnv, TxTo, + TxToSpecified, }, }; @@ -62,13 +63,14 @@ where } } -impl Tx, (), To, Payment, Gas, Data, ()> +impl Tx, (), To, Payment, Gas, Data, EmptyRH> where Api: CallTypeApi, To: TxTo>, Payment: TxPayment>, Gas: TxGas>, Data: TxData>, + EmptyRH: TxEmptyResultHandler>, { #[inline] pub fn callback(self, callback: RH) -> Tx, (), To, Payment, Gas, Data, RH> @@ -87,14 +89,14 @@ where } } -impl - Tx, (), To, Payment, Gas, FC, OriginalResultMarker> +impl Tx, (), To, Payment, Gas, FC, EmptyRH> where Api: CallTypeApi, To: TxToSpecified>, Payment: TxPayment>, Gas: TxGas>, FC: TxDataFunctionCall>, + EmptyRH: TxEmptyResultHandler>, { /// Backwards compatibility. pub fn with_callback(self, callback: RH) -> Tx, (), To, Payment, Gas, FC, RH> diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt.rs index 6cfcbb4a3c..3ed53b9b8a 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt.rs @@ -3,10 +3,9 @@ use alloc::borrow::ToOwned; use crate::{ api::ManagedTypeApi, contract_base::SendRawWrapper, - proxy_imports::{AnnotatedValue, EgldOrMultiEsdtPayment, ManagedType}, types::{ - BigUint, EsdtTokenPayment, EsdtTokenPaymentRefs, ManagedAddress, ManagedVec, - MultiEsdtPayment, TxFrom, TxToSpecified, + AnnotatedValue, BigUint, EgldOrMultiEsdtPayment, EsdtTokenPayment, EsdtTokenPaymentRefs, + ManagedAddress, ManagedType, ManagedVec, MultiEsdtPayment, TxFrom, TxToSpecified, }, }; diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt_ref.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt_ref.rs index 2c587cd448..06bda77eb3 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt_ref.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt_ref.rs @@ -3,11 +3,9 @@ use alloc::borrow::ToOwned; use crate::{ api::ManagedTypeApi, contract_base::SendRawWrapper, - proxy_imports::{ - AnnotatedValue, EgldOrMultiEsdtPayment, EgldOrMultiEsdtPaymentRefs, ManagedType, - }, types::{ - BigUint, EsdtTokenPayment, EsdtTokenPaymentRefs, ManagedAddress, ManagedVec, + AnnotatedValue, BigUint, EgldOrMultiEsdtPayment, EgldOrMultiEsdtPaymentRefs, + EsdtTokenPayment, EsdtTokenPaymentRefs, ManagedAddress, ManagedType, ManagedVec, MultiEsdtPayment, TxFrom, TxToSpecified, }, }; diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs index fe0b23ef02..33543e51d4 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs @@ -2,8 +2,9 @@ use core::ops::Deref; use crate::{ contract_base::SendRawWrapper, - proxy_imports::ManagedRef, - types::{BigUint, ManagedAddress, ManagedVec, MultiEsdtPayment, TxFrom, TxToSpecified}, + types::{ + BigUint, ManagedAddress, ManagedRef, ManagedVec, MultiEsdtPayment, TxFrom, TxToSpecified, + }, }; use super::{AnnotatedEgldPayment, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment}; From 6d92e45114855a64b3ec58bb852052508f3f20da Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 1 Apr 2024 13:07:43 +0300 Subject: [PATCH 237/461] moved UserBuiltinProxy to framework --- .../src/builtin_func_features.rs | 12 ++++-------- framework/base/src/types/interaction/system_proxy.rs | 2 ++ .../interaction/system_proxy}/builtin_func_proxy.rs | 12 ++---------- 3 files changed, 8 insertions(+), 18 deletions(-) rename {contracts/feature-tests/composability/builtin-func-features/src => framework/base/src/types/interaction/system_proxy}/builtin_func_proxy.rs (81%) 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 index dd4183bb94..de33932a9e 100644 --- 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 @@ -1,7 +1,5 @@ #![no_std] -pub mod builtin_func_proxy; - multiversx_sc::imports!(); /// Test contract for investigating async calls. @@ -14,19 +12,17 @@ pub trait BuiltinFuncFeatures { fn call_set_user_name(&self, address: ManagedAddress, name: ManagedBuffer) { self.tx() .to(&address) - .typed(builtin_func_proxy::UserBuiltinProxy) + .typed(system_proxy::UserBuiltinProxy) .set_user_name(name) - .async_call() - .call_and_exit() + .async_call_and_exit() } #[endpoint] fn call_delete_user_name(&self, address: ManagedAddress) { self.tx() .to(&address) - .typed(builtin_func_proxy::UserBuiltinProxy) + .typed(system_proxy::UserBuiltinProxy) .delete_user_name() - .async_call() - .call_and_exit() + .async_call_and_exit() } } diff --git a/framework/base/src/types/interaction/system_proxy.rs b/framework/base/src/types/interaction/system_proxy.rs index 1388554af4..6cbb764ed0 100644 --- a/framework/base/src/types/interaction/system_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy.rs @@ -1,6 +1,8 @@ +mod builtin_func_proxy; mod system_sc_proxy; mod system_sc_proxy_legacy; pub(crate) mod token_properties; +pub use builtin_func_proxy::*; pub use system_sc_proxy::*; pub use token_properties::*; diff --git a/contracts/feature-tests/composability/builtin-func-features/src/builtin_func_proxy.rs b/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs similarity index 81% rename from contracts/feature-tests/composability/builtin-func-features/src/builtin_func_proxy.rs rename to framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs index 8d7d106f66..65501c2fcf 100644 --- a/contracts/feature-tests/composability/builtin-func-features/src/builtin_func_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs @@ -1,14 +1,6 @@ -// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. - -//////////////////////////////////////////////////// -////////////////// AUTO-GENERATED ////////////////// -//////////////////////////////////////////////////// - -#![allow(dead_code)] -#![allow(clippy::all)] - -use multiversx_sc::proxy_imports::*; +use crate::proxy_imports::*; +/// Proxy describing the user builtin function signatures. pub struct UserBuiltinProxy; impl TxProxyTrait for UserBuiltinProxy From be2e14d611edcdcde382469f687007cac294bb4a Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 1 Apr 2024 13:24:48 +0300 Subject: [PATCH 238/461] renamed SystemSC* -> ESDTSystemSC* --- .../contract_base/wrappers/send_wrapper.rs | 16 +++++++------- .../mappers/token/fungible_token_mapper.rs | 12 +++++----- .../token/non_fungible_token_mapper.rs | 22 +++++++++---------- .../src/storage/mappers/token/token_mapper.rs | 8 +++---- .../base/src/types/interaction/markers.rs | 4 ++-- ...c_address.rs => esdt_system_sc_address.rs} | 12 +++++----- .../src/types/interaction/system_proxy.rs | 6 ++--- ...em_sc_proxy.rs => esdt_system_sc_proxy.rs} | 5 +++-- ...xy_legacy.rs => legacy_system_sc_proxy.rs} | 6 ++--- 9 files changed, 46 insertions(+), 45 deletions(-) rename framework/base/src/types/interaction/markers/{system_sc_address.rs => esdt_system_sc_address.rs} (80%) rename framework/base/src/types/interaction/system_proxy/{system_sc_proxy.rs => esdt_system_sc_proxy.rs} (99%) rename framework/base/src/types/interaction/system_proxy/{system_sc_proxy_legacy.rs => legacy_system_sc_proxy.rs} (99%) diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index 0e809ebd51..0aef9b589f 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -12,10 +12,10 @@ use crate::{ }, codec, types::{ - system_proxy, system_proxy::SystemSCProxy, BigUint, ContractCall, ContractCallNoPayment, - EgldOrEsdtTokenIdentifier, EsdtTokenPayment, GasLeft, ManagedAddress, ManagedArgBuffer, - ManagedBuffer, ManagedType, ManagedVec, ReturnsRawResult, SystemSCAddress, ToSelf, - TokenIdentifier, Tx, TxScEnv, + system_proxy, system_proxy::ESDTSystemSCProxy, BigUint, ContractCall, + ContractCallNoPayment, ESDTSystemSCAddress, EgldOrEsdtTokenIdentifier, EsdtTokenPayment, + GasLeft, ManagedAddress, ManagedArgBuffer, ManagedBuffer, ManagedType, ManagedVec, + ReturnsRawResult, ToSelf, TokenIdentifier, Tx, TxScEnv, }, }; @@ -54,7 +54,7 @@ where /// Backwards compatibility, synonymous to `esdt_system_sc_tx`, which is the more appropriate name now. pub fn esdt_system_sc_proxy( &self, - ) -> system_proxy::SystemSCProxyMethods, (), SystemSCAddress, ()> { + ) -> system_proxy::SystemSCProxyMethods, (), ESDTSystemSCAddress, ()> { self.esdt_system_sc_tx() } @@ -62,10 +62,10 @@ where /// It has the destination address set, as well as the contract type (as specified in the proxy). pub fn esdt_system_sc_tx( &self, - ) -> system_proxy::SystemSCProxyMethods, (), SystemSCAddress, ()> { + ) -> system_proxy::SystemSCProxyMethods, (), ESDTSystemSCAddress, ()> { Tx::new_tx_from_sc() - .to(SystemSCAddress) - .typed(SystemSCProxy) + .to(ESDTSystemSCAddress) + .typed(ESDTSystemSCProxy) } /// Convenient way to quickly instance a minimal contract call (with no EGLD, no arguments, etc.) diff --git a/framework/base/src/storage/mappers/token/fungible_token_mapper.rs b/framework/base/src/storage/mappers/token/fungible_token_mapper.rs index 5e1d3dd222..f24e6139bf 100644 --- a/framework/base/src/storage/mappers/token/fungible_token_mapper.rs +++ b/framework/base/src/storage/mappers/token/fungible_token_mapper.rs @@ -4,8 +4,8 @@ use crate::{ codec::{CodecFrom, EncodeErrorHandler, TopEncodeMulti, TopEncodeMultiOutput}, storage_clear, storage_get, storage_set, types::{ - system_proxy::{FungibleTokenProperties, SystemSCProxy}, - SystemSCAddress, Tx, + system_proxy::{ESDTSystemSCProxy, FungibleTokenProperties}, + ESDTSystemSCAddress, Tx, }, }; @@ -127,8 +127,8 @@ where storage_set(self.get_storage_key(), &TokenMapperState::::Pending); Tx::new_tx_from_sc() - .to(SystemSCAddress) - .typed(SystemSCProxy) + .to(ESDTSystemSCAddress) + .typed(ESDTSystemSCProxy) .issue_fungible( issue_cost, &token_display_name, @@ -175,8 +175,8 @@ where storage_set(self.get_storage_key(), &TokenMapperState::::Pending); Tx::new_tx_from_sc() - .to(SystemSCAddress) - .typed(SystemSCProxy) + .to(ESDTSystemSCAddress) + .typed(ESDTSystemSCProxy) .issue_and_set_all_roles( issue_cost, token_display_name, diff --git a/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs b/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs index 4a32900093..666776e88b 100644 --- a/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs +++ b/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs @@ -4,8 +4,8 @@ use crate::{ }, storage_clear, storage_get, storage_set, types::{ - system_proxy::SystemSCProxy, EgldPayment, FunctionCall, OriginalResultMarker, - SystemSCAddress, Tx, TxScEnv, + system_proxy::ESDTSystemSCProxy, ESDTSystemSCAddress, EgldPayment, FunctionCall, + OriginalResultMarker, Tx, TxScEnv, }, }; @@ -34,7 +34,7 @@ const INVALID_TOKEN_TYPE_ERR_MSG: &[u8] = b"Invalid token type for NonFungible i pub type IssueCallTo = Tx< TxScEnv, (), - SystemSCAddress, + ESDTSystemSCAddress, EgldPayment, (), FunctionCall, @@ -192,8 +192,8 @@ where storage_set(self.get_storage_key(), &TokenMapperState::::Pending); Tx::new_tx_from_sc() - .to(SystemSCAddress) - .typed(SystemSCProxy) + .to(ESDTSystemSCAddress) + .typed(ESDTSystemSCProxy) .issue_and_set_all_roles( issue_cost, token_display_name, @@ -230,8 +230,8 @@ where token_ticker: ManagedBuffer, ) -> IssueCallTo { Tx::new_tx_from_sc() - .to(SystemSCAddress) - .typed(SystemSCProxy) + .to(ESDTSystemSCAddress) + .typed(ESDTSystemSCProxy) .issue_non_fungible( issue_cost, &token_display_name, @@ -246,8 +246,8 @@ where token_ticker: ManagedBuffer, ) -> IssueCallTo { Tx::new_tx_from_sc() - .to(SystemSCAddress) - .typed(SystemSCProxy) + .to(ESDTSystemSCAddress) + .typed(ESDTSystemSCProxy) .issue_semi_fungible( issue_cost, &token_display_name, @@ -268,8 +268,8 @@ where }; Tx::new_tx_from_sc() - .to(SystemSCAddress) - .typed(SystemSCProxy) + .to(ESDTSystemSCAddress) + .typed(ESDTSystemSCProxy) .register_meta_esdt(issue_cost, &token_display_name, &token_ticker, properties) } diff --git a/framework/base/src/storage/mappers/token/token_mapper.rs b/framework/base/src/storage/mappers/token/token_mapper.rs index 965b5209e3..d9d923c2f8 100644 --- a/framework/base/src/storage/mappers/token/token_mapper.rs +++ b/framework/base/src/storage/mappers/token/token_mapper.rs @@ -4,8 +4,8 @@ use crate::{ storage::StorageKey, storage_get, storage_get_len, storage_set, types::{ - system_proxy::SystemSCProxy, CallbackClosure, EsdtLocalRole, EsdtTokenPayment, - ManagedAddress, ManagedRef, ManagedVec, SystemSCAddress, TokenIdentifier, Tx, + system_proxy::ESDTSystemSCProxy, CallbackClosure, ESDTSystemSCAddress, EsdtLocalRole, + EsdtTokenPayment, ManagedAddress, ManagedRef, ManagedVec, TokenIdentifier, Tx, }, }; @@ -82,8 +82,8 @@ where let token_id = self.get_token_id_ref(); Tx::new_tx_from_sc() - .to(SystemSCAddress) - .typed(SystemSCProxy) + .to(ESDTSystemSCAddress) + .typed(ESDTSystemSCProxy) .set_special_roles(address, token_id, roles[..].iter().cloned()) .callback(opt_callback) .call_and_exit() diff --git a/framework/base/src/types/interaction/markers.rs b/framework/base/src/types/interaction/markers.rs index 751ef755e7..4ebce757cc 100644 --- a/framework/base/src/types/interaction/markers.rs +++ b/framework/base/src/types/interaction/markers.rs @@ -1,9 +1,9 @@ +mod esdt_system_sc_address; mod gas_left; -mod system_sc_address; mod to_caller; mod to_self; +pub use esdt_system_sc_address::ESDTSystemSCAddress; pub use gas_left::GasLeft; -pub use system_sc_address::SystemSCAddress; pub use to_caller::ToCaller; pub use to_self::ToSelf; diff --git a/framework/base/src/types/interaction/markers/system_sc_address.rs b/framework/base/src/types/interaction/markers/esdt_system_sc_address.rs similarity index 80% rename from framework/base/src/types/interaction/markers/system_sc_address.rs rename to framework/base/src/types/interaction/markers/esdt_system_sc_address.rs index 2365bacdd3..de8aadb1b6 100644 --- a/framework/base/src/types/interaction/markers/system_sc_address.rs +++ b/framework/base/src/types/interaction/markers/esdt_system_sc_address.rs @@ -18,9 +18,9 @@ const SYSTEM_SC_ADDRESS_ANNOTATION: &str = "bech32:erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u"; /// Indicates the system SC address, which is the same on any MultiversX blockchain. -pub struct SystemSCAddress; +pub struct ESDTSystemSCAddress; -impl SystemSCAddress { +impl ESDTSystemSCAddress { pub fn managed_address(self) -> ManagedAddress where Api: ManagedTypeApi, @@ -29,7 +29,7 @@ impl SystemSCAddress { } } -impl AnnotatedValue, ManagedAddress> for SystemSCAddress +impl AnnotatedValue, ManagedAddress> for ESDTSystemSCAddress where Api: CallTypeApi, { @@ -38,9 +38,9 @@ where } fn to_value(&self, _env: &TxScEnv) -> ManagedAddress { - SystemSCAddress.managed_address() + ESDTSystemSCAddress.managed_address() } } -impl TxTo> for SystemSCAddress where Api: CallTypeApi {} -impl TxToSpecified> for SystemSCAddress where Api: CallTypeApi {} +impl TxTo> for ESDTSystemSCAddress where Api: CallTypeApi {} +impl TxToSpecified> for ESDTSystemSCAddress where Api: CallTypeApi {} diff --git a/framework/base/src/types/interaction/system_proxy.rs b/framework/base/src/types/interaction/system_proxy.rs index 6cbb764ed0..4963c5f86a 100644 --- a/framework/base/src/types/interaction/system_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy.rs @@ -1,8 +1,8 @@ mod builtin_func_proxy; -mod system_sc_proxy; -mod system_sc_proxy_legacy; +mod esdt_system_sc_proxy; +mod legacy_system_sc_proxy; pub(crate) mod token_properties; pub use builtin_func_proxy::*; -pub use system_sc_proxy::*; +pub use esdt_system_sc_proxy::*; pub use token_properties::*; diff --git a/framework/base/src/types/interaction/system_proxy/system_sc_proxy.rs b/framework/base/src/types/interaction/system_proxy/esdt_system_sc_proxy.rs similarity index 99% rename from framework/base/src/types/interaction/system_proxy/system_sc_proxy.rs rename to framework/base/src/types/interaction/system_proxy/esdt_system_sc_proxy.rs index 96c5a72ca0..cea5add845 100644 --- a/framework/base/src/types/interaction/system_proxy/system_sc_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy/esdt_system_sc_proxy.rs @@ -19,6 +19,7 @@ const ISSUE_SEMI_FUNGIBLE_ENDPOINT_NAME: &str = "issueSemiFungible"; const REGISTER_META_ESDT_ENDPOINT_NAME: &str = "registerMetaESDT"; const ISSUE_AND_SET_ALL_ROLES_ENDPOINT_NAME: &str = "registerAndSetAllRoles"; +/// The specific `Tx` type produces by the issue operations of the ESDTSystemSCProxy. pub type IssueCall = Tx< Env, From, @@ -30,9 +31,9 @@ pub type IssueCall = Tx< >; /// Proxy for the ESDT system smart contract. -pub struct SystemSCProxy; +pub struct ESDTSystemSCProxy; -impl TxProxyTrait for SystemSCProxy +impl TxProxyTrait for ESDTSystemSCProxy where Env: TxEnv, From: TxFrom, diff --git a/framework/base/src/types/interaction/system_proxy/system_sc_proxy_legacy.rs b/framework/base/src/types/interaction/system_proxy/legacy_system_sc_proxy.rs similarity index 99% rename from framework/base/src/types/interaction/system_proxy/system_sc_proxy_legacy.rs rename to framework/base/src/types/interaction/system_proxy/legacy_system_sc_proxy.rs index 4422b5b7b1..b161b28575 100644 --- a/framework/base/src/types/interaction/system_proxy/system_sc_proxy_legacy.rs +++ b/framework/base/src/types/interaction/system_proxy/legacy_system_sc_proxy.rs @@ -5,7 +5,7 @@ use hex_literal::hex; use crate::{ api::{CallTypeApi, SendApi}, - proxy_imports::SystemSCAddress, + proxy_imports::ESDTSystemSCAddress, types::{ BigUint, ContractCall, ContractCallNoPayment, ContractCallWithEgld, EsdtLocalRole, EsdtTokenType, ManagedAddress, ManagedBuffer, TokenIdentifier, @@ -25,7 +25,7 @@ const ISSUE_AND_SET_ALL_ROLES_ENDPOINT_NAME: &str = "registerAndSetAllRoles"; /// so the proxy object doesn't really contain any data, it is more of a placeholder. #[deprecated( since = "0.48.0", - note = "There is a new `SystemSCProxy`, which uses the new proxy model." + note = "There is a new `ESDTSystemSCProxy`, which uses the new proxy model." )] pub struct ESDTSystemSmartContractProxy where @@ -472,7 +472,7 @@ where } pub fn esdt_system_sc_address(&self) -> ManagedAddress { - SystemSCAddress.managed_address() + ESDTSystemSCAddress.managed_address() } fn esdt_system_sc_call_no_args( From 6b14ba3005866a35225e67f16f23c9a605ef4629 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 1 Apr 2024 13:29:08 +0300 Subject: [PATCH 239/461] formatter test fix --- tools/rust-debugger/format-tests/src/format_tests.rs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/tools/rust-debugger/format-tests/src/format_tests.rs b/tools/rust-debugger/format-tests/src/format_tests.rs index 9595691c66..913851dbfa 100644 --- a/tools/rust-debugger/format-tests/src/format_tests.rs +++ b/tools/rust-debugger/format-tests/src/format_tests.rs @@ -1,14 +1,14 @@ use multiversx_sc::{ codec::multi_types::OptionalValue, - esdt::ESDTSystemSmartContractProxy, types::{ heap::{Address, BoxedBytes}, - BigFloat, BigInt, BigUint, EgldOrEsdtTokenIdentifier, EsdtTokenPayment, ManagedAddress, - ManagedBuffer, ManagedByteArray, ManagedOption, ManagedType, ManagedVec, TokenIdentifier, + BigFloat, BigInt, BigUint, ESDTSystemSCAddress, EgldOrEsdtTokenIdentifier, + EsdtTokenPayment, ManagedAddress, ManagedBuffer, ManagedByteArray, ManagedOption, + ManagedType, ManagedVec, TokenIdentifier, }, }; use multiversx_sc_scenario::{ - api::{DebugHandle, DebugApi}, + api::{DebugApi, DebugHandle}, num_bigint::{BigInt as RustBigInt, BigUint as RustBigUint}, }; @@ -65,8 +65,7 @@ fn main() { let token_identifier: TokenIdentifier = TokenIdentifier::from("MYTOK-123456"); push!(to_check, token_identifier, "\"MYTOK-123456\""); - let system_sc = ESDTSystemSmartContractProxy::::new_proxy_obj(); - let managed_address = system_sc.esdt_system_sc_address(); + let managed_address = ESDTSystemSCAddress.managed_address::(); push!( to_check, managed_address, From 464b6644df96a2a386586f2694715fb0a89933ec Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 1 Apr 2024 13:33:40 +0300 Subject: [PATCH 240/461] renamed SystemSC* -> ESDTSystemSC* --- .../src/contract_base/wrappers/send_wrapper.rs | 14 +++++++------- .../system_proxy/esdt_system_sc_proxy.rs | 9 +++++---- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index 0aef9b589f..e902c47d76 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -12,10 +12,10 @@ use crate::{ }, codec, types::{ - system_proxy, system_proxy::ESDTSystemSCProxy, BigUint, ContractCall, - ContractCallNoPayment, ESDTSystemSCAddress, EgldOrEsdtTokenIdentifier, EsdtTokenPayment, - GasLeft, ManagedAddress, ManagedArgBuffer, ManagedBuffer, ManagedType, ManagedVec, - ReturnsRawResult, ToSelf, TokenIdentifier, Tx, TxScEnv, + system_proxy, BigUint, ContractCall, ContractCallNoPayment, ESDTSystemSCAddress, + EgldOrEsdtTokenIdentifier, EsdtTokenPayment, GasLeft, ManagedAddress, ManagedArgBuffer, + ManagedBuffer, ManagedType, ManagedVec, ReturnsRawResult, ToSelf, TokenIdentifier, Tx, + TxScEnv, }, }; @@ -54,7 +54,7 @@ where /// Backwards compatibility, synonymous to `esdt_system_sc_tx`, which is the more appropriate name now. pub fn esdt_system_sc_proxy( &self, - ) -> system_proxy::SystemSCProxyMethods, (), ESDTSystemSCAddress, ()> { + ) -> system_proxy::ESDTSystemSCProxyMethods, (), ESDTSystemSCAddress, ()> { self.esdt_system_sc_tx() } @@ -62,10 +62,10 @@ where /// It has the destination address set, as well as the contract type (as specified in the proxy). pub fn esdt_system_sc_tx( &self, - ) -> system_proxy::SystemSCProxyMethods, (), ESDTSystemSCAddress, ()> { + ) -> system_proxy::ESDTSystemSCProxyMethods, (), ESDTSystemSCAddress, ()> { Tx::new_tx_from_sc() .to(ESDTSystemSCAddress) - .typed(ESDTSystemSCProxy) + .typed(system_proxy::ESDTSystemSCProxy) } /// Convenient way to quickly instance a minimal contract call (with no EGLD, no arguments, etc.) diff --git a/framework/base/src/types/interaction/system_proxy/esdt_system_sc_proxy.rs b/framework/base/src/types/interaction/system_proxy/esdt_system_sc_proxy.rs index cea5add845..ebb76b2a52 100644 --- a/framework/base/src/types/interaction/system_proxy/esdt_system_sc_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy/esdt_system_sc_proxy.rs @@ -40,14 +40,15 @@ where To: TxTo, Gas: TxGas, { - type TxProxyMethods = SystemSCProxyMethods; + type TxProxyMethods = ESDTSystemSCProxyMethods; fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { - SystemSCProxyMethods { wrapped_tx: tx } + ESDTSystemSCProxyMethods { wrapped_tx: tx } } } -pub struct SystemSCProxyMethods +/// Method container of the ESDT system smart contract proxy. +pub struct ESDTSystemSCProxyMethods where Env: TxEnv, From: TxFrom, @@ -57,7 +58,7 @@ where wrapped_tx: Tx, } -impl SystemSCProxyMethods +impl ESDTSystemSCProxyMethods where Env: TxEnv, From: TxFrom, From 310848923855d88c1c85aade8d085f3ecc906f1f Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 1 Apr 2024 14:00:50 +0300 Subject: [PATCH 241/461] unified syntax - raw call function name arg --- contracts/examples/adder/src/adder_proxy.rs | 31 ++- .../src/crowdfunding_esdt_proxy.rs | 75 +++---- .../src/proxy_crypto_zombies.rs | 72 +++---- .../digital-cash/src/digital_cash_proxy.rs | 50 ++--- .../src/nft_marketplace_proxy.rs | 3 +- .../examples/multisig/src/multisig_proxy.rs | 112 +++++------ .../nft-minter/src/nft_marketplace_proxy.rs | 3 +- .../proxy-pause/src/pause_sc_proxy.rs | 6 +- .../src/seed_nft_minter_proxy.rs | 38 ++-- .../src/nft_marketplace_proxy.rs | 3 +- .../feature-tests/abi-tester/src/abi_proxy.rs | 187 ++++++++++-------- .../basic-features/src/codec_err_test.rs | 2 +- .../parent/src/child_proxy.rs | 6 +- .../forwarder-raw/src/forwarder_raw_sync.rs | 3 +- .../forwarder/src/vault_proxy.rs | 48 ++--- .../promises-features/src/vault_proxy.rs | 48 ++--- .../proxy-test-first/src/message_me_proxy.rs | 3 +- .../proxy-test-first/src/pay_me_proxy.rs | 6 +- .../recursive-caller/src/self_proxy.rs | 3 +- .../recursive-caller/src/vault_proxy.rs | 48 ++--- .../panic-message-features/tests/pmf_proxy.rs | 20 +- .../contract_base/wrappers/send_wrapper.rs | 6 +- .../system_proxy/builtin_func_proxy.rs | 6 +- .../system_proxy/esdt_system_sc_proxy.rs | 54 ++--- framework/base/src/types/interaction/tx.rs | 7 +- framework/derive/src/generate/proxy_gen.rs | 3 +- .../generate_proxy/proxy_sc_functions_gen.rs | 3 +- 27 files changed, 413 insertions(+), 433 deletions(-) diff --git a/contracts/examples/adder/src/adder_proxy.rs b/contracts/examples/adder/src/adder_proxy.rs index 9a460ca687..0b1b663669 100644 --- a/contracts/examples/adder/src/adder_proxy.rs +++ b/contracts/examples/adder/src/adder_proxy.rs @@ -1,7 +1,10 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + //////////////////////////////////////////////////// ////////////////// AUTO-GENERATED ////////////////// //////////////////////////////////////////////////// +#![allow(dead_code)] #![allow(clippy::all)] use multiversx_sc::proxy_imports::*; @@ -53,6 +56,28 @@ where } } +#[rustfmt::skip] +impl AdderProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn upgrade< + Arg0: CodecInto>, + >( + self, + initial_value: Arg0, + ) -> TxProxyUpgrade { + self.wrapped_tx + .raw_upgrade() + .argument(&initial_value) + .original_result() + } +} + #[rustfmt::skip] impl AdderProxyMethods where @@ -66,8 +91,7 @@ where self, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("getSum") + .raw_call("getSum") .original_result() } @@ -79,8 +103,7 @@ where value: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("add") + .raw_call("add") .argument(&value) .original_result() } diff --git a/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt_proxy.rs b/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt_proxy.rs index 5f73825a34..ec3a555967 100644 --- a/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt_proxy.rs +++ b/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt_proxy.rs @@ -1,7 +1,10 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + //////////////////////////////////////////////////// ////////////////// AUTO-GENERATED ////////////////// //////////////////////////////////////////////////// +#![allow(dead_code)] #![allow(clippy::all)] use multiversx_sc::proxy_imports::*; @@ -32,6 +35,7 @@ where wrapped_tx: Tx, } +#[rustfmt::skip] impl CrowdfundingProxyMethods where Env: TxEnv, @@ -48,7 +52,7 @@ where target: Arg0, deadline: Arg1, token_identifier: Arg2, - ) -> Tx, OriginalResultMarker<()>> { + ) -> TxProxyDeploy { self.wrapped_tx .raw_deploy() .argument(&target) @@ -57,6 +61,19 @@ where .original_result() } } + +#[rustfmt::skip] +impl CrowdfundingProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ +} + +#[rustfmt::skip] impl CrowdfundingProxyMethods where Env: TxEnv, @@ -67,89 +84,73 @@ where { pub fn fund( self, - ) -> Tx, OriginalResultMarker<()>> { + ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("fund") + .raw_call("fund") .original_result() } pub fn status( self, - ) -> Tx, OriginalResultMarker> { + ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("status") + .raw_call("status") .original_result() } pub fn get_current_funds( self, - ) -> Tx, OriginalResultMarker>> - { + ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("getCurrentFunds") + .raw_call("getCurrentFunds") .original_result() } pub fn claim( self, - ) -> Tx, OriginalResultMarker<()>> { + ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("claim") + .raw_call("claim") .original_result() } pub fn target( self, - ) -> Tx, OriginalResultMarker>> - { + ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("getTarget") + .raw_call("getTarget") .original_result() } pub fn deadline( self, - ) -> Tx, OriginalResultMarker> { + ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("getDeadline") + .raw_call("getDeadline") .original_result() } - pub fn deposit>>( + pub fn deposit< + Arg0: CodecInto>, + >( self, donor: Arg0, - ) -> Tx, OriginalResultMarker>> - { + ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("getDeposit") + .raw_call("getDeposit") .argument(&donor) .original_result() } pub fn cf_token_identifier( self, - ) -> Tx< - Env, - From, - To, - (), - Gas, - FunctionCall, - OriginalResultMarker>, - > { + ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("getCrowdfundingTokenIdentifier") + .raw_call("getCrowdfundingTokenIdentifier") .original_result() } } + #[derive(TopEncode, TopDecode, PartialEq, Eq, Clone, Copy, Debug)] pub enum Status { FundingPeriod, diff --git a/contracts/examples/crypto-zombies/src/proxy_crypto_zombies.rs b/contracts/examples/crypto-zombies/src/proxy_crypto_zombies.rs index ce6fcdd05b..1881df3acc 100644 --- a/contracts/examples/crypto-zombies/src/proxy_crypto_zombies.rs +++ b/contracts/examples/crypto-zombies/src/proxy_crypto_zombies.rs @@ -1,7 +1,10 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + //////////////////////////////////////////////////// ////////////////// AUTO-GENERATED ////////////////// //////////////////////////////////////////////////// +#![allow(dead_code)] #![allow(clippy::all)] use multiversx_sc::proxy_imports::*; @@ -49,6 +52,24 @@ where } } +#[rustfmt::skip] +impl CryptoZombiesProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn upgrade( + self, + ) -> TxProxyUpgrade { + self.wrapped_tx + .raw_upgrade() + .original_result() + } +} + #[rustfmt::skip] impl CryptoZombiesProxyMethods where @@ -65,8 +86,7 @@ where address: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("set_crypto_kitties_sc_address") + .raw_call("set_crypto_kitties_sc_address") .argument(&address) .original_result() } @@ -75,8 +95,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("generate_random_dna") + .raw_call("generate_random_dna") .original_result() } @@ -87,8 +106,7 @@ where name: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("create_random_zombie") + .raw_call("create_random_zombie") .argument(&name) .original_result() } @@ -100,8 +118,7 @@ where zombie_id: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("is_ready") + .raw_call("is_ready") .argument(&zombie_id) .original_result() } @@ -115,8 +132,7 @@ where kitty_id: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("feed_on_kitty") + .raw_call("feed_on_kitty") .argument(&zombie_id) .argument(&kitty_id) .original_result() @@ -126,8 +142,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("dna_digits") + .raw_call("dna_digits") .original_result() } @@ -135,8 +150,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("zombies_count") + .raw_call("zombies_count") .original_result() } @@ -147,8 +161,7 @@ where id: Arg0, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("zombies") + .raw_call("zombies") .argument(&id) .original_result() } @@ -160,8 +173,7 @@ where id: Arg0, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("zombie_owner") + .raw_call("zombie_owner") .argument(&id) .original_result() } @@ -170,8 +182,7 @@ where self, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("crypto_kitties_sc_address") + .raw_call("crypto_kitties_sc_address") .original_result() } @@ -179,8 +190,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("cooldown_time") + .raw_call("cooldown_time") .original_result() } @@ -191,8 +201,7 @@ where owner: Arg0, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("owned_zombies") + .raw_call("owned_zombies") .argument(&owner) .original_result() } @@ -204,8 +213,7 @@ where zombie_id: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("level_up") + .raw_call("level_up") .argument(&zombie_id) .original_result() } @@ -214,8 +222,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("withdraw") + .raw_call("withdraw") .original_result() } @@ -228,8 +235,7 @@ where name: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("change_name") + .raw_call("change_name") .argument(&zombie_id) .argument(&name) .original_result() @@ -244,8 +250,7 @@ where dna: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("change_dna") + .raw_call("change_dna") .argument(&zombie_id) .argument(&dna) .original_result() @@ -260,8 +265,7 @@ where target_id: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("attack") + .raw_call("attack") .argument(&zombie_id) .argument(&target_id) .original_result() diff --git a/contracts/examples/digital-cash/src/digital_cash_proxy.rs b/contracts/examples/digital-cash/src/digital_cash_proxy.rs index c3d87f81c7..e3df8cf541 100644 --- a/contracts/examples/digital-cash/src/digital_cash_proxy.rs +++ b/contracts/examples/digital-cash/src/digital_cash_proxy.rs @@ -1,7 +1,10 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + //////////////////////////////////////////////////// ////////////////// AUTO-GENERATED ////////////////// //////////////////////////////////////////////////// +#![allow(dead_code)] #![allow(clippy::all)] use multiversx_sc::proxy_imports::*; @@ -56,6 +59,17 @@ where } } +#[rustfmt::skip] +impl DigitalCashProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ +} + #[rustfmt::skip] impl DigitalCashProxyMethods where @@ -74,8 +88,7 @@ where token: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("whitelistFeeToken") + .raw_call("whitelistFeeToken") .argument(&fee) .argument(&token) .original_result() @@ -88,8 +101,7 @@ where token: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("blacklistFeeToken") + .raw_call("blacklistFeeToken") .argument(&token) .original_result() } @@ -98,8 +110,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("claimFees") + .raw_call("claimFees") .original_result() } @@ -114,8 +125,7 @@ where nonce: Arg2, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("getAmount") + .raw_call("getAmount") .argument(&address) .argument(&token) .argument(&nonce) @@ -131,8 +141,7 @@ where valability: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("payFeeAndFundESDT") + .raw_call("payFeeAndFundESDT") .argument(&address) .argument(&valability) .original_result() @@ -147,8 +156,7 @@ where valability: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("payFeeAndFundEGLD") + .raw_call("payFeeAndFundEGLD") .argument(&address) .argument(&valability) .original_result() @@ -163,8 +171,7 @@ where valability: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("fund") + .raw_call("fund") .argument(&address) .argument(&valability) .original_result() @@ -177,8 +184,7 @@ where address: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("depositFees") + .raw_call("depositFees") .argument(&address) .original_result() } @@ -190,8 +196,7 @@ where address: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("withdraw") + .raw_call("withdraw") .argument(&address) .original_result() } @@ -205,8 +210,7 @@ where signature: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("claim") + .raw_call("claim") .argument(&address) .argument(&signature) .original_result() @@ -223,8 +227,7 @@ where signature: Arg2, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("forward") + .raw_call("forward") .argument(&address) .argument(&forward_address) .argument(&signature) @@ -238,8 +241,7 @@ where donor: Arg0, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("deposit") + .raw_call("deposit") .argument(&donor) .original_result() } diff --git a/contracts/examples/fractional-nfts/src/nft_marketplace_proxy.rs b/contracts/examples/fractional-nfts/src/nft_marketplace_proxy.rs index 78df59231f..c8d8381ac0 100644 --- a/contracts/examples/fractional-nfts/src/nft_marketplace_proxy.rs +++ b/contracts/examples/fractional-nfts/src/nft_marketplace_proxy.rs @@ -48,8 +48,7 @@ where token_nonce: Arg2, ) -> TxProxyCall, ManagedVec>>> { self.wrapped_tx - .raw_call() - .function_name("claimTokens") + .raw_call("claimTokens") .argument(&claim_destination) .argument(&token_id) .argument(&token_nonce) diff --git a/contracts/examples/multisig/src/multisig_proxy.rs b/contracts/examples/multisig/src/multisig_proxy.rs index a4f5c82bd7..4dca7b99db 100644 --- a/contracts/examples/multisig/src/multisig_proxy.rs +++ b/contracts/examples/multisig/src/multisig_proxy.rs @@ -1,7 +1,10 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + //////////////////////////////////////////////////// ////////////////// AUTO-GENERATED ////////////////// //////////////////////////////////////////////////// +#![allow(dead_code)] #![allow(clippy::all)] use multiversx_sc::proxy_imports::*; @@ -56,6 +59,31 @@ where } } +#[rustfmt::skip] +impl MultisigProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn upgrade< + Arg0: CodecInto, + Arg1: CodecInto>>, + >( + self, + quorum: Arg0, + board: Arg1, + ) -> TxProxyUpgrade { + self.wrapped_tx + .raw_upgrade() + .argument(&quorum) + .argument(&board) + .original_result() + } +} + #[rustfmt::skip] impl MultisigProxyMethods where @@ -70,8 +98,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("deposit") + .raw_call("deposit") .original_result() } @@ -84,8 +111,7 @@ where self, ) -> TxProxyCall>> { self.wrapped_tx - .raw_call() - .function_name("getPendingActionFullInfo") + .raw_call("getPendingActionFullInfo") .original_result() } @@ -100,8 +126,7 @@ where action_id: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("signed") + .raw_call("signed") .argument(&user) .argument(&action_id) .original_result() @@ -118,8 +143,7 @@ where user: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("userRole") + .raw_call("userRole") .argument(&user) .original_result() } @@ -129,8 +153,7 @@ where self, ) -> TxProxyCall>> { self.wrapped_tx - .raw_call() - .function_name("getAllBoardMembers") + .raw_call("getAllBoardMembers") .original_result() } @@ -139,8 +162,7 @@ where self, ) -> TxProxyCall>> { self.wrapped_tx - .raw_call() - .function_name("getAllProposers") + .raw_call("getAllProposers") .original_result() } @@ -152,8 +174,7 @@ where action_id: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("sign") + .raw_call("sign") .argument(&action_id) .original_result() } @@ -167,8 +188,7 @@ where action_id: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("unsign") + .raw_call("unsign") .argument(&action_id) .original_result() } @@ -183,8 +203,7 @@ where action_id: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("discardAction") + .raw_call("discardAction") .argument(&action_id) .original_result() } @@ -194,8 +213,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("getQuorum") + .raw_call("getQuorum") .original_result() } @@ -205,8 +223,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("getNumBoardMembers") + .raw_call("getNumBoardMembers") .original_result() } @@ -216,8 +233,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("getNumProposers") + .raw_call("getNumProposers") .original_result() } @@ -227,8 +243,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("getActionLastIndex") + .raw_call("getActionLastIndex") .original_result() } @@ -240,8 +255,7 @@ where action_id: Arg0, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("getActionData") + .raw_call("getActionData") .argument(&action_id) .original_result() } @@ -256,8 +270,7 @@ where action_id: Arg0, ) -> TxProxyCall>> { self.wrapped_tx - .raw_call() - .function_name("getActionSigners") + .raw_call("getActionSigners") .argument(&action_id) .original_result() } @@ -271,8 +284,7 @@ where action_id: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("getActionSignerCount") + .raw_call("getActionSignerCount") .argument(&action_id) .original_result() } @@ -289,8 +301,7 @@ where action_id: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("getActionValidSignerCount") + .raw_call("getActionValidSignerCount") .argument(&action_id) .original_result() } @@ -304,8 +315,7 @@ where board_member_address: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("proposeAddBoardMember") + .raw_call("proposeAddBoardMember") .argument(&board_member_address) .original_result() } @@ -319,8 +329,7 @@ where proposer_address: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("proposeAddProposer") + .raw_call("proposeAddProposer") .argument(&proposer_address) .original_result() } @@ -333,8 +342,7 @@ where user_address: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("proposeRemoveUser") + .raw_call("proposeRemoveUser") .argument(&user_address) .original_result() } @@ -346,8 +354,7 @@ where new_quorum: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("proposeChangeQuorum") + .raw_call("proposeChangeQuorum") .argument(&new_quorum) .original_result() } @@ -367,8 +374,7 @@ where function_call: Arg2, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("proposeTransferExecute") + .raw_call("proposeTransferExecute") .argument(&to) .argument(&egld_amount) .argument(&function_call) @@ -391,8 +397,7 @@ where function_call: Arg2, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("proposeAsyncCall") + .raw_call("proposeAsyncCall") .argument(&to) .argument(&egld_amount) .argument(&function_call) @@ -412,8 +417,7 @@ where arguments: Arg3, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("proposeSCDeployFromSource") + .raw_call("proposeSCDeployFromSource") .argument(&amount) .argument(&source) .argument(&code_metadata) @@ -436,8 +440,7 @@ where arguments: Arg4, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("proposeSCUpgradeFromSource") + .raw_call("proposeSCUpgradeFromSource") .argument(&sc_address) .argument(&amount) .argument(&source) @@ -454,8 +457,7 @@ where action_id: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("quorumReached") + .raw_call("quorumReached") .argument(&action_id) .original_result() } @@ -468,8 +470,7 @@ where action_id: Arg0, ) -> TxProxyCall>> { self.wrapped_tx - .raw_call() - .function_name("performAction") + .raw_call("performAction") .argument(&action_id) .original_result() } @@ -483,8 +484,7 @@ where name: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("dnsRegister") + .raw_call("dnsRegister") .argument(&dns_address) .argument(&name) .original_result() diff --git a/contracts/examples/nft-minter/src/nft_marketplace_proxy.rs b/contracts/examples/nft-minter/src/nft_marketplace_proxy.rs index 6c01ca3e1f..7dbe98ed89 100644 --- a/contracts/examples/nft-minter/src/nft_marketplace_proxy.rs +++ b/contracts/examples/nft-minter/src/nft_marketplace_proxy.rs @@ -46,8 +46,7 @@ where claim_destination: Arg2, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("claimTokens") + .raw_call("claimTokens") .argument(&token_id) .argument(&token_nonce) .argument(&claim_destination) diff --git a/contracts/examples/proxy-pause/src/pause_sc_proxy.rs b/contracts/examples/proxy-pause/src/pause_sc_proxy.rs index 441b9b17c5..6f5fc834b9 100644 --- a/contracts/examples/proxy-pause/src/pause_sc_proxy.rs +++ b/contracts/examples/proxy-pause/src/pause_sc_proxy.rs @@ -39,8 +39,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("pause") + .raw_call("pause") .original_result() } @@ -48,8 +47,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("unpause") + .raw_call("unpause") .original_result() } } diff --git a/contracts/examples/rewards-distribution/src/seed_nft_minter_proxy.rs b/contracts/examples/rewards-distribution/src/seed_nft_minter_proxy.rs index 23c1f71e97..c74e7a7e31 100644 --- a/contracts/examples/rewards-distribution/src/seed_nft_minter_proxy.rs +++ b/contracts/examples/rewards-distribution/src/seed_nft_minter_proxy.rs @@ -59,6 +59,17 @@ where } } +#[rustfmt::skip] +impl SeedNftMinterProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ +} + #[rustfmt::skip] impl SeedNftMinterProxyMethods where @@ -85,8 +96,7 @@ where opt_token_used_as_payment_nonce: Arg5, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("createNft") + .raw_call("createNft") .argument(&name) .argument(&royalties) .argument(&uri) @@ -105,8 +115,7 @@ where token_nonce: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("claimAndDistribute") + .raw_call("claimAndDistribute") .argument(&token_id) .argument(&token_nonce) .original_result() @@ -116,8 +125,7 @@ where self, ) -> TxProxyCall>> { self.wrapped_tx - .raw_call() - .function_name("getMarketplaces") + .raw_call("getMarketplaces") .original_result() } @@ -125,8 +133,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("getNftCount") + .raw_call("getNftCount") .original_result() } @@ -134,8 +141,7 @@ where self, ) -> TxProxyCall>> { self.wrapped_tx - .raw_call() - .function_name("getDistributionRules") + .raw_call("getDistributionRules") .original_result() } @@ -148,8 +154,7 @@ where token_ticker: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("issueToken") + .raw_call("issueToken") .argument(&token_display_name) .argument(&token_ticker) .original_result() @@ -162,8 +167,7 @@ where nft_nonce: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("buyNft") + .raw_call("buyNft") .argument(&nft_nonce) .original_result() } @@ -175,8 +179,7 @@ where nft_nonce: Arg0, ) -> TxProxyCall, u64, BigUint>>> { self.wrapped_tx - .raw_call() - .function_name("getNftPrice") + .raw_call("getNftPrice") .argument(&nft_nonce) .original_result() } @@ -185,8 +188,7 @@ where self, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("getNftTokenId") + .raw_call("getNftTokenId") .original_result() } } diff --git a/contracts/examples/seed-nft-minter/src/nft_marketplace_proxy.rs b/contracts/examples/seed-nft-minter/src/nft_marketplace_proxy.rs index d62c326542..8cbc28e5df 100644 --- a/contracts/examples/seed-nft-minter/src/nft_marketplace_proxy.rs +++ b/contracts/examples/seed-nft-minter/src/nft_marketplace_proxy.rs @@ -65,8 +65,7 @@ where token_nonce: Arg2, ) -> TxProxyCall, ManagedVec>>> { self.wrapped_tx - .raw_call() - .function_name("claimTokens") + .raw_call("claimTokens") .argument(&claim_destination) .argument(&token_id) .argument(&token_nonce) diff --git a/contracts/feature-tests/abi-tester/src/abi_proxy.rs b/contracts/feature-tests/abi-tester/src/abi_proxy.rs index 8759f224d8..bdb43be8f5 100644 --- a/contracts/feature-tests/abi-tester/src/abi_proxy.rs +++ b/contracts/feature-tests/abi-tester/src/abi_proxy.rs @@ -1,7 +1,10 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + //////////////////////////////////////////////////// ////////////////// AUTO-GENERATED ////////////////// //////////////////////////////////////////////////// +#![allow(dead_code)] #![allow(clippy::all)] use multiversx_sc::proxy_imports::*; @@ -57,6 +60,32 @@ where } } +#[rustfmt::skip] +impl AbiTesterProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + /// Upgrade constructor. + pub fn upgrade< + Arg0: CodecInto, + Arg1: CodecInto, + >( + self, + _constructor_arg_1: Arg0, + _constructor_arg_2: Arg1, + ) -> TxProxyUpgrade { + self.wrapped_tx + .raw_upgrade() + .argument(&_constructor_arg_1) + .argument(&_constructor_arg_2) + .original_result() + } +} + #[rustfmt::skip] impl AbiTesterProxyMethods where @@ -74,8 +103,7 @@ where att: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("echo_abi_test_type") + .raw_call("echo_abi_test_type") .argument(&att) .original_result() } @@ -87,8 +115,7 @@ where e: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("echo_enum") + .raw_call("echo_enum") .argument(&e) .original_result() } @@ -100,8 +127,7 @@ where _arg: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("take_managed_type") + .raw_call("take_managed_type") .argument(&_arg) .original_result() } @@ -110,8 +136,7 @@ where self, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("multi_result_3") + .raw_call("multi_result_3") .original_result() } @@ -119,8 +144,7 @@ where self, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("multi_result_4") + .raw_call("multi_result_4") .original_result() } @@ -133,8 +157,7 @@ where _var_args: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("var_args") + .raw_call("var_args") .argument(&_simple_arg) .argument(&_var_args) .original_result() @@ -144,8 +167,7 @@ where self, ) -> TxProxyCall>> { self.wrapped_tx - .raw_call() - .function_name("multi_result_vec") + .raw_call("multi_result_vec") .original_result() } @@ -158,8 +180,7 @@ where _opt_args: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("optional_arg") + .raw_call("optional_arg") .argument(&_simple_arg) .argument(&_opt_args) .original_result() @@ -169,8 +190,7 @@ where self, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("optional_result") + .raw_call("optional_result") .original_result() } @@ -183,8 +203,7 @@ where h256: Arg1, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("address_vs_h256") + .raw_call("address_vs_h256") .argument(&address) .argument(&h256) .original_result() @@ -199,8 +218,7 @@ where byte_array: Arg1, ) -> TxProxyCall, ManagedByteArray>> { self.wrapped_tx - .raw_call() - .function_name("managed_address_vs_byte_array") + .raw_call("managed_address_vs_byte_array") .argument(&address) .argument(&byte_array) .original_result() @@ -210,8 +228,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("esdt_local_role") + .raw_call("esdt_local_role") .original_result() } @@ -219,8 +236,7 @@ where self, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("esdt_token_payment") + .raw_call("esdt_token_payment") .original_result() } @@ -228,8 +244,7 @@ where self, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("esdt_token_data") + .raw_call("esdt_token_data") .original_result() } @@ -237,8 +252,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("sample_storage_mapper") + .raw_call("sample_storage_mapper") .original_result() } @@ -246,8 +260,7 @@ where self, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("item_for_vec") + .raw_call("item_for_vec") .original_result() } @@ -255,8 +268,7 @@ where self, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("item_for_array_vec") + .raw_call("item_for_array_vec") .original_result() } @@ -264,8 +276,7 @@ where self, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("item_for_managed_vec") + .raw_call("item_for_managed_vec") .original_result() } @@ -276,8 +287,7 @@ where _array: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("item_for_array") + .raw_call("item_for_array") .argument(&_array) .original_result() } @@ -286,8 +296,7 @@ where self, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("item_for_box") + .raw_call("item_for_box") .original_result() } @@ -295,8 +304,7 @@ where self, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("item_for_boxed_slice") + .raw_call("item_for_boxed_slice") .original_result() } @@ -307,8 +315,7 @@ where _ref: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("item_for_ref") + .raw_call("item_for_ref") .argument(&_ref) .original_result() } @@ -320,8 +327,7 @@ where _ref: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("item_for_slice") + .raw_call("item_for_slice") .argument(&_ref) .original_result() } @@ -330,8 +336,7 @@ where self, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("item_for_option") + .raw_call("item_for_option") .original_result() } @@ -339,8 +344,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("payable_egld") + .raw_call("payable_egld") .original_result() } @@ -348,8 +352,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("payable_some_token") + .raw_call("payable_some_token") .original_result() } @@ -357,8 +360,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("payable_any_token") + .raw_call("payable_any_token") .original_result() } @@ -366,8 +368,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("external_view") + .raw_call("external_view") .original_result() } @@ -375,8 +376,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("label_a") + .raw_call("label_a") .original_result() } @@ -384,8 +384,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("label_b") + .raw_call("label_b") .original_result() } } @@ -403,7 +402,8 @@ pub struct AbiTestType { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested01 {} +pub struct OnlyShowsUpAsNested01 { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested02 { @@ -415,14 +415,19 @@ pub enum AbiEnum { Nothing, Something(i32), SomethingMore(u8, OnlyShowsUpAsNested08), - SomeStruct { a: u16, b: OnlyShowsUpAsNested09 }, + SomeStruct { + a: u16, + b: OnlyShowsUpAsNested09, + }, } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested08 {} +pub struct OnlyShowsUpAsNested08 { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested09 {} +pub struct OnlyShowsUpAsNested09 { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct AbiManagedType @@ -435,19 +440,24 @@ where } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested03 {} +pub struct OnlyShowsUpAsNested03 { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested04 {} +pub struct OnlyShowsUpAsNested04 { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested05 {} +pub struct OnlyShowsUpAsNested05 { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested06 {} +pub struct OnlyShowsUpAsNested06 { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested07 {} +pub struct OnlyShowsUpAsNested07 { +} #[derive(TopDecode, TopEncode, NestedDecode, NestedEncode, Clone, PartialEq, Eq, Debug, Copy)] pub enum EsdtLocalRole { @@ -462,9 +472,7 @@ pub enum EsdtLocalRole { Transfer, } -#[derive( - TopDecode, TopEncode, NestedDecode, NestedEncode, Clone, PartialEq, Eq, Debug, ManagedVecItem, -)] +#[derive(TopDecode, TopEncode, NestedDecode, NestedEncode, Clone, PartialEq, Eq, Debug, ManagedVecItem)] pub enum EsdtTokenType { Fungible, NonFungible, @@ -474,13 +482,16 @@ pub enum EsdtTokenType { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInSingleValueMapper {} +pub struct OnlyShowsUpAsNestedInSingleValueMapper { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInVec {} +pub struct OnlyShowsUpAsNestedInVec { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInArrayVec {} +pub struct OnlyShowsUpAsNestedInArrayVec { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, ManagedVecItem)] pub struct AbiManagedVecItem { @@ -489,22 +500,28 @@ pub struct AbiManagedVecItem { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInArray {} +pub struct OnlyShowsUpAsNestedInArray { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInBox {} +pub struct OnlyShowsUpAsNestedInBox { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInBoxedSlice {} +pub struct OnlyShowsUpAsNestedInBoxedSlice { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInRef {} +pub struct OnlyShowsUpAsNestedInRef { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInSlice {} +pub struct OnlyShowsUpAsNestedInSlice { +} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInOption {} +pub struct OnlyShowsUpAsNestedInOption { +} #[derive(TopEncode, TopDecode)] pub struct OnlyShowsUpInEsdtAttr { @@ -512,7 +529,8 @@ pub struct OnlyShowsUpInEsdtAttr { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested10 {} +pub struct OnlyShowsUpAsNested10 { +} #[derive(TopEncode, TopDecode)] pub enum ExplicitDiscriminant { @@ -529,5 +547,8 @@ pub enum ExplicitDiscriminantMixed { Unit, Tuple(u16), Five, - Struct { a: u8, b: u16 }, + Struct { + a: u8, + b: u16, + }, } diff --git a/contracts/feature-tests/basic-features/src/codec_err_test.rs b/contracts/feature-tests/basic-features/src/codec_err_test.rs index cbe8f470b5..23e21310a6 100644 --- a/contracts/feature-tests/basic-features/src/codec_err_test.rs +++ b/contracts/feature-tests/basic-features/src/codec_err_test.rs @@ -59,6 +59,6 @@ pub trait CodecErrorTest { /// It just covers contract call serialization errors. #[endpoint] fn codec_err_contract_call(&self) { - let _ = self.tx().raw_call().argument(&CodecErrorTestType); + let _ = self.tx().raw_call("dummy").argument(&CodecErrorTestType); } } diff --git a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/child_proxy.rs b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/child_proxy.rs index 0c28cb1f96..162f38d1a9 100644 --- a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/child_proxy.rs +++ b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/child_proxy.rs @@ -83,8 +83,7 @@ where initial_supply: Arg2, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("issueWrappedEgld") + .raw_call("issueWrappedEgld") .argument(&token_display_name) .argument(&token_ticker) .argument(&initial_supply) @@ -95,8 +94,7 @@ where self, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("getWrappedEgldTokenIdentifier") + .raw_call("getWrappedEgldTokenIdentifier") .original_result() } } diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_sync.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_sync.rs index 7fd9958479..662518d093 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_sync.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_sync.rs @@ -16,8 +16,7 @@ pub trait ForwarderRawSync: super::forwarder_raw_common::ForwarderRawCommon { .tx() .to(to) .egld(payment) - .raw_call() - .function_name(endpoint_name) + .raw_call(endpoint_name) .argument(&args) .with_gas_limit(half_gas) .returns(ReturnsRawResult) diff --git a/contracts/feature-tests/composability/forwarder/src/vault_proxy.rs b/contracts/feature-tests/composability/forwarder/src/vault_proxy.rs index f04735e6a5..81dc99b8f0 100644 --- a/contracts/feature-tests/composability/forwarder/src/vault_proxy.rs +++ b/contracts/feature-tests/composability/forwarder/src/vault_proxy.rs @@ -94,8 +94,7 @@ where args: Arg0, ) -> TxProxyCall>> { self.wrapped_tx - .raw_call() - .function_name("echo_arguments") + .raw_call("echo_arguments") .argument(&args) .original_result() } @@ -107,8 +106,7 @@ where args: Arg0, ) -> TxProxyCall>> { self.wrapped_tx - .raw_call() - .function_name("echo_arguments_without_storage") + .raw_call("echo_arguments_without_storage") .argument(&args) .original_result() } @@ -117,8 +115,7 @@ where self, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("echo_caller") + .raw_call("echo_caller") .original_result() } @@ -126,8 +123,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("accept_funds") + .raw_call("accept_funds") .original_result() } @@ -135,8 +131,7 @@ where self, ) -> TxProxyCall, MultiValueEncoded>>> { self.wrapped_tx - .raw_call() - .function_name("accept_funds_echo_payment") + .raw_call("accept_funds_echo_payment") .original_result() } @@ -144,8 +139,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("accept_funds_single_esdt_transfer") + .raw_call("accept_funds_single_esdt_transfer") .original_result() } @@ -153,8 +147,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("reject_funds") + .raw_call("reject_funds") .original_result() } @@ -169,8 +162,7 @@ where opt_receive_func: Arg2, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("retrieve_funds_with_transfer_exec") + .raw_call("retrieve_funds_with_transfer_exec") .argument(&token) .argument(&amount) .argument(&opt_receive_func) @@ -186,8 +178,7 @@ where back_transfer_value: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("retrieve_funds_promises") + .raw_call("retrieve_funds_promises") .argument(&back_transfers) .argument(&back_transfer_value) .original_result() @@ -204,8 +195,7 @@ where amount: Arg2, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("retrieve_funds") + .raw_call("retrieve_funds") .argument(&token) .argument(&nonce) .argument(&amount) @@ -219,8 +209,7 @@ where token_payments: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("retrieve_multi_funds_async") + .raw_call("retrieve_multi_funds_async") .argument(&token_payments) .original_result() } @@ -229,8 +218,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("burn_and_create_retrive_async") + .raw_call("burn_and_create_retrive_async") .original_result() } @@ -238,8 +226,7 @@ where self, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("get_owner_address") + .raw_call("get_owner_address") .original_result() } @@ -252,8 +239,7 @@ where endpoint: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("call_counts") + .raw_call("call_counts") .argument(&endpoint) .original_result() } @@ -262,8 +248,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("num_called_retrieve_funds_promises") + .raw_call("num_called_retrieve_funds_promises") .original_result() } @@ -271,8 +256,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("num_async_calls_sent_from_child") + .raw_call("num_async_calls_sent_from_child") .original_result() } } diff --git a/contracts/feature-tests/composability/promises-features/src/vault_proxy.rs b/contracts/feature-tests/composability/promises-features/src/vault_proxy.rs index f04735e6a5..81dc99b8f0 100644 --- a/contracts/feature-tests/composability/promises-features/src/vault_proxy.rs +++ b/contracts/feature-tests/composability/promises-features/src/vault_proxy.rs @@ -94,8 +94,7 @@ where args: Arg0, ) -> TxProxyCall>> { self.wrapped_tx - .raw_call() - .function_name("echo_arguments") + .raw_call("echo_arguments") .argument(&args) .original_result() } @@ -107,8 +106,7 @@ where args: Arg0, ) -> TxProxyCall>> { self.wrapped_tx - .raw_call() - .function_name("echo_arguments_without_storage") + .raw_call("echo_arguments_without_storage") .argument(&args) .original_result() } @@ -117,8 +115,7 @@ where self, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("echo_caller") + .raw_call("echo_caller") .original_result() } @@ -126,8 +123,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("accept_funds") + .raw_call("accept_funds") .original_result() } @@ -135,8 +131,7 @@ where self, ) -> TxProxyCall, MultiValueEncoded>>> { self.wrapped_tx - .raw_call() - .function_name("accept_funds_echo_payment") + .raw_call("accept_funds_echo_payment") .original_result() } @@ -144,8 +139,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("accept_funds_single_esdt_transfer") + .raw_call("accept_funds_single_esdt_transfer") .original_result() } @@ -153,8 +147,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("reject_funds") + .raw_call("reject_funds") .original_result() } @@ -169,8 +162,7 @@ where opt_receive_func: Arg2, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("retrieve_funds_with_transfer_exec") + .raw_call("retrieve_funds_with_transfer_exec") .argument(&token) .argument(&amount) .argument(&opt_receive_func) @@ -186,8 +178,7 @@ where back_transfer_value: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("retrieve_funds_promises") + .raw_call("retrieve_funds_promises") .argument(&back_transfers) .argument(&back_transfer_value) .original_result() @@ -204,8 +195,7 @@ where amount: Arg2, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("retrieve_funds") + .raw_call("retrieve_funds") .argument(&token) .argument(&nonce) .argument(&amount) @@ -219,8 +209,7 @@ where token_payments: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("retrieve_multi_funds_async") + .raw_call("retrieve_multi_funds_async") .argument(&token_payments) .original_result() } @@ -229,8 +218,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("burn_and_create_retrive_async") + .raw_call("burn_and_create_retrive_async") .original_result() } @@ -238,8 +226,7 @@ where self, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("get_owner_address") + .raw_call("get_owner_address") .original_result() } @@ -252,8 +239,7 @@ where endpoint: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("call_counts") + .raw_call("call_counts") .argument(&endpoint) .original_result() } @@ -262,8 +248,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("num_called_retrieve_funds_promises") + .raw_call("num_called_retrieve_funds_promises") .original_result() } @@ -271,8 +256,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("num_async_calls_sent_from_child") + .raw_call("num_async_calls_sent_from_child") .original_result() } } diff --git a/contracts/feature-tests/composability/proxy-test-first/src/message_me_proxy.rs b/contracts/feature-tests/composability/proxy-test-first/src/message_me_proxy.rs index ea01aa79d5..2a4242c2f2 100644 --- a/contracts/feature-tests/composability/proxy-test-first/src/message_me_proxy.rs +++ b/contracts/feature-tests/composability/proxy-test-first/src/message_me_proxy.rs @@ -96,8 +96,7 @@ where arg4: Arg3, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("messageMe") + .raw_call("messageMe") .argument(&arg1) .argument(&arg2) .argument(&arg3) diff --git a/contracts/feature-tests/composability/proxy-test-first/src/pay_me_proxy.rs b/contracts/feature-tests/composability/proxy-test-first/src/pay_me_proxy.rs index 8cf9369cf9..ff801b93f9 100644 --- a/contracts/feature-tests/composability/proxy-test-first/src/pay_me_proxy.rs +++ b/contracts/feature-tests/composability/proxy-test-first/src/pay_me_proxy.rs @@ -86,8 +86,7 @@ where arg1: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("payMe") + .raw_call("payMe") .argument(&arg1) .original_result() } @@ -99,8 +98,7 @@ where arg1: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("payMeWithResult") + .raw_call("payMeWithResult") .argument(&arg1) .original_result() } diff --git a/contracts/feature-tests/composability/recursive-caller/src/self_proxy.rs b/contracts/feature-tests/composability/recursive-caller/src/self_proxy.rs index 8aa039e203..0b67327f44 100644 --- a/contracts/feature-tests/composability/recursive-caller/src/self_proxy.rs +++ b/contracts/feature-tests/composability/recursive-caller/src/self_proxy.rs @@ -85,8 +85,7 @@ where counter: Arg3, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("recursive_send_funds") + .raw_call("recursive_send_funds") .argument(&to) .argument(&token_identifier) .argument(&amount) diff --git a/contracts/feature-tests/composability/recursive-caller/src/vault_proxy.rs b/contracts/feature-tests/composability/recursive-caller/src/vault_proxy.rs index f04735e6a5..81dc99b8f0 100644 --- a/contracts/feature-tests/composability/recursive-caller/src/vault_proxy.rs +++ b/contracts/feature-tests/composability/recursive-caller/src/vault_proxy.rs @@ -94,8 +94,7 @@ where args: Arg0, ) -> TxProxyCall>> { self.wrapped_tx - .raw_call() - .function_name("echo_arguments") + .raw_call("echo_arguments") .argument(&args) .original_result() } @@ -107,8 +106,7 @@ where args: Arg0, ) -> TxProxyCall>> { self.wrapped_tx - .raw_call() - .function_name("echo_arguments_without_storage") + .raw_call("echo_arguments_without_storage") .argument(&args) .original_result() } @@ -117,8 +115,7 @@ where self, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("echo_caller") + .raw_call("echo_caller") .original_result() } @@ -126,8 +123,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("accept_funds") + .raw_call("accept_funds") .original_result() } @@ -135,8 +131,7 @@ where self, ) -> TxProxyCall, MultiValueEncoded>>> { self.wrapped_tx - .raw_call() - .function_name("accept_funds_echo_payment") + .raw_call("accept_funds_echo_payment") .original_result() } @@ -144,8 +139,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("accept_funds_single_esdt_transfer") + .raw_call("accept_funds_single_esdt_transfer") .original_result() } @@ -153,8 +147,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("reject_funds") + .raw_call("reject_funds") .original_result() } @@ -169,8 +162,7 @@ where opt_receive_func: Arg2, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("retrieve_funds_with_transfer_exec") + .raw_call("retrieve_funds_with_transfer_exec") .argument(&token) .argument(&amount) .argument(&opt_receive_func) @@ -186,8 +178,7 @@ where back_transfer_value: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("retrieve_funds_promises") + .raw_call("retrieve_funds_promises") .argument(&back_transfers) .argument(&back_transfer_value) .original_result() @@ -204,8 +195,7 @@ where amount: Arg2, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("retrieve_funds") + .raw_call("retrieve_funds") .argument(&token) .argument(&nonce) .argument(&amount) @@ -219,8 +209,7 @@ where token_payments: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("retrieve_multi_funds_async") + .raw_call("retrieve_multi_funds_async") .argument(&token_payments) .original_result() } @@ -229,8 +218,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("burn_and_create_retrive_async") + .raw_call("burn_and_create_retrive_async") .original_result() } @@ -238,8 +226,7 @@ where self, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("get_owner_address") + .raw_call("get_owner_address") .original_result() } @@ -252,8 +239,7 @@ where endpoint: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("call_counts") + .raw_call("call_counts") .argument(&endpoint) .original_result() } @@ -262,8 +248,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("num_called_retrieve_funds_promises") + .raw_call("num_called_retrieve_funds_promises") .original_result() } @@ -271,8 +256,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("num_async_calls_sent_from_child") + .raw_call("num_async_calls_sent_from_child") .original_result() } } diff --git a/contracts/feature-tests/panic-message-features/tests/pmf_proxy.rs b/contracts/feature-tests/panic-message-features/tests/pmf_proxy.rs index 8226a1ec5f..9eeb6d69e8 100644 --- a/contracts/feature-tests/panic-message-features/tests/pmf_proxy.rs +++ b/contracts/feature-tests/panic-message-features/tests/pmf_proxy.rs @@ -52,6 +52,17 @@ where } } +#[rustfmt::skip] +impl PanicMessageFeaturesProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ +} + #[rustfmt::skip] impl PanicMessageFeaturesProxyMethods where @@ -68,8 +79,7 @@ where some_value: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("panicWithMessage") + .raw_call("panicWithMessage") .argument(&some_value) .original_result() } @@ -79,8 +89,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("panicAfterLog") + .raw_call("panicAfterLog") .original_result() } @@ -88,8 +97,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("sc_panic") + .raw_call("sc_panic") .original_result() } } diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index e902c47d76..f122ba81db 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -392,8 +392,7 @@ where Tx::new_tx_from_sc() .to(ToSelf) .gas(gas) - .raw_call() - .function_name(endpoint_name) + .raw_call(endpoint_name) .arguments_raw(arg_buffer) .returns(ReturnsRawResult) .sync_call() @@ -407,8 +406,7 @@ where Tx::new_tx_from_sc() .to(ToSelf) .gas(GasLeft) - .raw_call() - .function_name(function_name) + .raw_call(function_name) .arguments_raw(arg_buffer) .sync_call() } diff --git a/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs b/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs index 65501c2fcf..dcc3d4b2d8 100644 --- a/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs @@ -43,8 +43,7 @@ where name: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("SetUserName") + .raw_call("SetUserName") .argument(&name) .original_result() } @@ -53,8 +52,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("DeleteUserName") + .raw_call("DeleteUserName") .original_result() } } diff --git a/framework/base/src/types/interaction/system_proxy/esdt_system_sc_proxy.rs b/framework/base/src/types/interaction/system_proxy/esdt_system_sc_proxy.rs index ebb76b2a52..56b14ce83b 100644 --- a/framework/base/src/types/interaction/system_proxy/esdt_system_sc_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy/esdt_system_sc_proxy.rs @@ -206,8 +206,7 @@ where }; self.wrapped_tx - .raw_call() - .function_name(ISSUE_AND_SET_ALL_ROLES_ENDPOINT_NAME) + .raw_call(ISSUE_AND_SET_ALL_ROLES_ENDPOINT_NAME) .egld(issue_cost) .argument(&token_display_name) .argument(&token_ticker) @@ -236,8 +235,7 @@ where let mut tx = self .wrapped_tx - .raw_call() - .function_name(endpoint_name) + .raw_call(endpoint_name) .egld(issue_cost) .argument(token_display_name) .argument(token_ticker); @@ -280,8 +278,7 @@ where amount: &BigUint, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("mint") + .raw_call("mint") .argument(token_identifier) .argument(amount) .original_result() @@ -295,8 +292,7 @@ where amount: &BigUint, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("ESDTBurn") + .raw_call("ESDTBurn") .argument(token_identifier) .argument(amount) .original_result() @@ -309,8 +305,7 @@ where token_identifier: &TokenIdentifier, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("pause") + .raw_call("pause") .argument(token_identifier) .original_result() } @@ -321,8 +316,7 @@ where token_identifier: &TokenIdentifier, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("unPause") + .raw_call("unPause") .argument(token_identifier) .original_result() } @@ -336,8 +330,7 @@ where address: &ManagedAddress, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("freeze") + .raw_call("freeze") .argument(token_identifier) .argument(address) .original_result() @@ -350,8 +343,7 @@ where address: &ManagedAddress, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("unFreeze") + .raw_call("unFreeze") .argument(token_identifier) .argument(address) .original_result() @@ -367,8 +359,7 @@ where address: &ManagedAddress, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("wipe") + .raw_call("wipe") .argument(token_identifier) .argument(address) .original_result() @@ -384,8 +375,7 @@ where address: &ManagedAddress, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("freezeSingleNFT") + .raw_call("freezeSingleNFT") .argument(token_identifier) .argument(&nft_nonce) .argument(address) @@ -400,8 +390,7 @@ where address: &ManagedAddress, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("unFreezeSingleNFT") + .raw_call("unFreezeSingleNFT") .argument(token_identifier) .argument(&nft_nonce) .argument(address) @@ -419,8 +408,7 @@ where address: &ManagedAddress, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("wipeSingleNFT") + .raw_call("wipeSingleNFT") .argument(token_identifier) .argument(&nft_nonce) .argument(address) @@ -435,8 +423,7 @@ where num_decimals: usize, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("changeSFTToMetaESDT") + .raw_call("changeSFTToMetaESDT") .argument(&token_identifier) .argument(&num_decimals) .original_result() @@ -454,8 +441,7 @@ where ) -> TxProxyCall { let mut tx = self .wrapped_tx - .raw_call() - .function_name("setSpecialRole") + .raw_call("setSpecialRole") .argument(token_identifier) .argument(address); for role in roles_iter { @@ -479,8 +465,7 @@ where ) -> TxProxyCall { let mut tx = self .wrapped_tx - .raw_call() - .function_name("unSetSpecialRole") + .raw_call("unSetSpecialRole") .argument(token_identifier) .argument(address); for role in roles_iter { @@ -498,8 +483,7 @@ where new_owner: &ManagedAddress, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("transferOwnership") + .raw_call("transferOwnership") .argument(token_identifier) .argument(new_owner) .original_result() @@ -512,8 +496,7 @@ where new_creator: &ManagedAddress, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("transferNFTCreateRole") + .raw_call("transferNFTCreateRole") .argument(token_identifier) .argument(old_creator) .argument(new_creator) @@ -527,8 +510,7 @@ where ) -> TxProxyCall { let mut tx = self .wrapped_tx - .raw_call() - .function_name("controlChanges") + .raw_call("controlChanges") .argument(token_identifier); append_token_property_arguments(&mut tx.data, property_arguments); tx.original_result() diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index ceef2eba10..de33648ba2 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -381,14 +381,17 @@ where RH: TxResultHandler, { #[inline] - pub fn raw_call(self) -> Tx, RH> { + pub fn raw_call>>( + self, + function_name: N, + ) -> Tx, RH> { Tx { env: self.env, from: self.from, to: self.to, payment: self.payment, gas: self.gas, - data: FunctionCall::empty(), + data: FunctionCall::new(function_name), result_handler: self.result_handler, } } diff --git a/framework/derive/src/generate/proxy_gen.rs b/framework/derive/src/generate/proxy_gen.rs index 2ea199ae54..9118c1f748 100644 --- a/framework/derive/src/generate/proxy_gen.rs +++ b/framework/derive/src/generate/proxy_gen.rs @@ -179,8 +179,7 @@ pub fn generate_proxy_endpoint(m: &Method, endpoint_name: String) -> proc_macro2 multiversx_sc::types::TxBaseWithEnv::new_tx_from_sc() .to(self.extract_proxy_to()) .original_result() - .raw_call() - .function_name(#endpoint_name) + .raw_call(#endpoint_name) #payment_init #(#arg_push_snippets)* } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs index 00ec38b490..bb79b507c5 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs @@ -180,8 +180,7 @@ fn write_endpoint_content(file: &mut File, function_name: String, inputs: Vec Date: Mon, 1 Apr 2024 16:56:55 +0300 Subject: [PATCH 242/461] proxy gen - add unit test for clean_paths --- .../generate_proxy/proxy_generator.rs | 80 ++++++++++++++++++- 1 file changed, 79 insertions(+), 1 deletion(-) diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs index 9bcaa8e831..9283451fc1 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs @@ -488,7 +488,7 @@ where writeln!(self.file, " }},").unwrap(); } - fn clean_paths(&mut self, proxy_crate: &str, rust_type: &str) -> String { + pub fn clean_paths(&mut self, proxy_crate: &str, rust_type: &str) -> String { let delimiters = "<>,()[] "; let words: Vec<&str> = rust_type .split(|c| delimiters.contains(c)) @@ -581,3 +581,81 @@ where writeln!(self.file, " }}").unwrap(); } } + +#[cfg(test)] +pub mod tests { + + use std::{fs::File, mem::MaybeUninit}; + + use multiversx_sc::abi::{BuildInfoAbi, ContractAbi, ContractCrateBuildAbi, FrameworkBuildAbi}; + + use crate::cmd::contract::meta_config::MetaConfig; + + use super::ProxyGenerator; + + #[test] + fn clean_paths_unsanitized_test() { + let build_info = BuildInfoAbi { + contract_crate: ContractCrateBuildAbi { + name: "test", + version: "0.0.0", + git_version: "0.0.0", + }, + framework: FrameworkBuildAbi::create(), + }; + + let original_contract_abi = ContractAbi::new(build_info, &[""], "test", false); + let meta_config = MetaConfig::create(original_contract_abi, false); + let file = unsafe { &mut *(MaybeUninit::::uninit().as_mut_ptr()) }; + let mut proxy_generator = ProxyGenerator::new(&meta_config, file); + let name = proxy_generator + .meta_config + .original_contract_abi + .build_info + .contract_crate + .name; + + let cleaned_path_unsanitized = proxy_generator.clean_paths( + name, + "(testt::path::test::to::TestStruct, Option>)", + ); + let expected_result_unsanitized = + "(testt::path::test::to::TestStruct, Option>)"; + + assert_eq!( + expected_result_unsanitized, + cleaned_path_unsanitized.as_str() + ); + } + + #[test] + fn clean_paths_sanitized_test() { + let build_info = BuildInfoAbi { + contract_crate: ContractCrateBuildAbi { + name: "test", + version: "0.0.0", + git_version: "0.0.0", + }, + framework: FrameworkBuildAbi::create(), + }; + + let original_contract_abi = ContractAbi::new(build_info, &[""], "test", false); + let meta_config = MetaConfig::create(original_contract_abi, false); + let file = unsafe { &mut *(MaybeUninit::::uninit().as_mut_ptr()) }; + let mut proxy_generator = ProxyGenerator::new(&meta_config, file); + let name = proxy_generator + .meta_config + .original_contract_abi + .build_info + .contract_crate + .name; + + let cleaned_path_sanitized = proxy_generator.clean_paths( + name, + "(test::path::test::to::TestStruct, Option>)", + ); + let expected_result_sanitized = "(TestStruct, Option>)"; + + assert_eq!(expected_result_sanitized, cleaned_path_sanitized.as_str()); + } +} From dedf8d07eacd835682759e060de1f10d97c6913e Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Mon, 1 Apr 2024 19:44:16 +0300 Subject: [PATCH 243/461] proxy gen - cleanup --- .../generate_proxy/proxy_generator.rs | 17 +- .../generate_proxy/proxy_sc_functions_gen.rs | 257 ------------------ 2 files changed, 10 insertions(+), 264 deletions(-) delete mode 100644 framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs index 8276b66289..0f2410db50 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs @@ -18,7 +18,8 @@ const PRELUDE: &str = "// Code generated by the multiversx-sc proxy generator. D #![allow(dead_code)] #![allow(clippy::all)] -use multiversx_sc::proxy_imports::*;"; +use multiversx_sc::proxy_imports::*; +"; const ZERO: &str = "0"; @@ -53,7 +54,7 @@ impl<'a> ProxyGenerator<'a> { } fn write_header(&mut self) { - writeln!(self.file, r#"{PRELUDE}"#).unwrap(); + self.file.write_fmt(format_args!("{PRELUDE}")).unwrap() } fn write_tx_proxy_type_def(&mut self) { @@ -584,7 +585,7 @@ where #[cfg(test)] pub mod tests { - use std::{fs::File, mem::MaybeUninit}; + use std::fs::File; use multiversx_sc::abi::{BuildInfoAbi, ContractAbi, ContractCrateBuildAbi, FrameworkBuildAbi}; @@ -592,6 +593,8 @@ pub mod tests { use super::ProxyGenerator; + const CURRENT_FILE: &str = "src/cmd/contract/generate_proxy/proxy_generator.rs"; + #[test] fn clean_paths_unsanitized_test() { let build_info = BuildInfoAbi { @@ -605,8 +608,8 @@ pub mod tests { let original_contract_abi = ContractAbi::new(build_info, &[""], "test", false); let meta_config = MetaConfig::create(original_contract_abi, false); - let file = unsafe { &mut *(MaybeUninit::::uninit().as_mut_ptr()) }; - let mut proxy_generator = ProxyGenerator::new(&meta_config, file); + let mut file = File::open(CURRENT_FILE).unwrap(); + let mut proxy_generator = ProxyGenerator::new(&meta_config, &mut file); let name = proxy_generator .meta_config .original_contract_abi @@ -640,8 +643,8 @@ pub mod tests { let original_contract_abi = ContractAbi::new(build_info, &[""], "test", false); let meta_config = MetaConfig::create(original_contract_abi, false); - let file = unsafe { &mut *(MaybeUninit::::uninit().as_mut_ptr()) }; - let mut proxy_generator = ProxyGenerator::new(&meta_config, file); + let mut file = File::open(CURRENT_FILE).unwrap(); + let mut proxy_generator = ProxyGenerator::new(&meta_config, &mut file); let name = proxy_generator .meta_config .original_contract_abi diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs deleted file mode 100644 index f2b502dd11..0000000000 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_sc_functions_gen.rs +++ /dev/null @@ -1,257 +0,0 @@ -use std::{fs::File, io::Write}; - -use multiversx_sc::abi::{ContractAbi, EndpointAbi, InputAbi, OutputAbi}; - -use super::proxy_naming::proxy_methods_type_name; - -pub(crate) fn write_content(file: &mut File, abi: ContractAbi) { - write_header_impl_constructor(file, &abi.name); - for (i, constructor_abi) in abi.constructors.into_iter().enumerate() { - if i > 0 { - writeln!(file).unwrap(); - } - write_constructor_header(file, constructor_abi.clone()); - write_constructor_content(file, constructor_abi.inputs); - write_end_of_function(file); - } - - writeln!(file, "}}").unwrap(); - - write_header_impl_upgrade_constructor(file, &abi.name); - for (i, upgrade_abi) in abi.upgrade_constructors.clone().into_iter().enumerate() { - if i > 0 { - writeln!(file).unwrap(); - } - write_upgrade_constructor_header(file, upgrade_abi.clone()); - write_upgrade_constructor_content(file, upgrade_abi.inputs); - write_end_of_function(file); - } - - writeln!(file, "}}").unwrap(); - - write_header_impl_endpoints(file, &abi.name); - for (i, endpoint_abi) in abi.endpoints.into_iter().enumerate() { - if i > 0 { - writeln!(file).unwrap(); - } - write_endpoint_header(file, endpoint_abi.clone()); - write_endpoint_content(file, endpoint_abi.name, endpoint_abi.inputs); - write_end_of_function(file); - } - - writeln!(file, "}}").unwrap(); -} - -fn write_header_impl_constructor(file: &mut File, name: &str) { - let proxy_methods_type_name = proxy_methods_type_name(name); - writeln!( - file, - r#" -#[rustfmt::skip] -impl {proxy_methods_type_name} -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - Gas: TxGas, -{{"# - ) - .unwrap(); -} - -fn write_header_impl_upgrade_constructor(file: &mut File, name: &str) { - let proxy_methods_type_name = proxy_methods_type_name(name); - writeln!( - file, - r#" -#[rustfmt::skip] -impl {proxy_methods_type_name} -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{{"# - ) - .unwrap(); -} - -fn write_header_impl_endpoints(file: &mut File, name: &str) { - let proxy_methods_type_name = proxy_methods_type_name(name); - writeln!( - file, - r#" -#[rustfmt::skip] -impl {proxy_methods_type_name} -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{{"# - ) - .unwrap(); -} - -fn write_constructor_header(file: &mut File, constructor_abi: EndpointAbi) { - write_fn_signature(file, constructor_abi.clone()); - write_constructor_output(file, constructor_abi.outputs); -} - -fn write_upgrade_constructor_header(file: &mut File, upgrade_constructor_abi: EndpointAbi) { - write_fn_signature(file, upgrade_constructor_abi.clone()); - write_upgrade_constructor_output(file, upgrade_constructor_abi.outputs); -} - -fn write_endpoint_header(file: &mut File, constructor_abi: EndpointAbi) { - write_fn_signature(file, constructor_abi.clone()); - write_endpoint_output(file, constructor_abi.outputs); -} - -fn write_fn_signature(file: &mut File, endpoint_abi: EndpointAbi) { - write_endpoint_docs(file, endpoint_abi.docs); - write_function_header_endpoint(file, endpoint_abi.rust_method_name); - write_args(file, endpoint_abi.inputs.clone()); - write_parameters(file, endpoint_abi.inputs); -} - -fn write_parameters(file: &mut File, inputs: Vec) { - writeln!(file, "(").unwrap(); - writeln!(file, " self,").unwrap(); - for (index, input) in inputs.iter().enumerate() { - writeln!(file, " {}: Arg{index},", &input.arg_name).unwrap(); - } - write!(file, " ) ").unwrap(); -} - -fn write_constructor_output(file: &mut File, outputs: Vec) { - write!(file, "-> TxProxyDeploy {{").unwrap(); -} - -fn write_upgrade_constructor_output(file: &mut File, outputs: Vec) { - write!(file, "-> TxProxyUpgrade {{").unwrap(); -} - -fn write_endpoint_output(file: &mut File, outputs: Vec) { - write!(file, "-> TxProxyCall {{").unwrap(); -} - -fn write_constructor_content(file: &mut File, inputs: Vec) { - writeln!( - file, - " self.wrapped_tx - .raw_deploy()" - ) - .unwrap(); - for input in inputs.iter() { - writeln!(file, " .argument(&{})", input.arg_name).unwrap(); - } - writeln!(file, " .original_result()").unwrap(); -} - -fn write_upgrade_constructor_content(file: &mut File, inputs: Vec) { - writeln!( - file, - " self.wrapped_tx - .raw_upgrade()" - ) - .unwrap(); - for input in inputs.iter() { - writeln!(file, " .argument(&{})", input.arg_name).unwrap(); - } - writeln!(file, " .original_result()").unwrap(); -} - -fn write_endpoint_content(file: &mut File, function_name: String, inputs: Vec) { - writeln!( - file, - " self.wrapped_tx - .raw_call(\"{}\")", - function_name - ) - .unwrap(); - - for input in inputs.iter() { - writeln!(file, " .argument(&{})", input.arg_name).unwrap(); - } - - writeln!(file, " .original_result()").unwrap(); -} - -fn write_function_header_endpoint(file: &mut File, rust_method_name: String) { - write!(file, " pub fn {rust_method_name}").unwrap(); -} - -fn write_endpoint_docs(file: &mut File, docs: Vec) { - for abi_doc in docs { - writeln!(file, " /// {abi_doc} ").unwrap(); - } -} - -fn write_args(file: &mut File, inputs: Vec) { - if inputs.is_empty() { - return; - } - - writeln!(file, "<").unwrap(); - - for (index, input) in inputs.iter().enumerate() { - write_argument(file, index, &input.type_names.rust); - } - - write!(file, " >").unwrap(); -} - -fn write_argument(file: &mut File, index: usize, rust_name: &str) { - let adjusted = adjust_type_name(rust_name); - writeln!(file, " Arg{index}: CodecInto<{adjusted}>,").unwrap(); -} - -fn write_end_of_function(file: &mut File) { - writeln!(file, " }}").unwrap(); -} - -fn adjust_type_name(original_rust_name: &str) -> String { - original_rust_name - .replace("multiversx_sc::api::uncallable::UncallableApi", "Env::Api") - .replace("$API", "Env::Api") - .to_string() -} - -fn parse_and_write_outputs(file: &mut File, outputs: Vec) { - match outputs.len() { - 0 => { - write!(file, "()").unwrap(); - }, - 1 => { - let adjusted = adjust_type_name(&outputs[0].type_names.rust); - write!(file, "{adjusted}").unwrap(); - }, - _ => { - write!(file, "MultiValue{}<", outputs.len()).unwrap(); - for (i, output) in outputs.iter().enumerate() { - if i > 0 { - write!(file, ", ").unwrap(); - } - let adjusted = adjust_type_name(&output.type_names.rust); - write!(file, "{adjusted}").unwrap(); - } - write!(file, ">").unwrap(); - }, - } -} - From 4e1afae0e57accdef0b43de061f60b6dbcfa7477 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 1 Apr 2024 20:16:02 +0300 Subject: [PATCH 244/461] re-generated proxies --- .../src/crowdfunding_esdt_proxy.rs | 11 ---------- .../digital-cash/src/digital_cash_proxy.rs | 11 ---------- .../src/seed_nft_minter_proxy.rs | 11 ---------- .../feature-tests/abi-tester/src/abi_proxy.rs | 22 ------------------- .../parent/src/child_proxy.rs | 11 ---------- .../recursive-caller/src/self_proxy.rs | 11 ---------- .../panic-message-features/tests/pmf_proxy.rs | 11 ---------- 7 files changed, 88 deletions(-) diff --git a/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt_proxy.rs b/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt_proxy.rs index ec3a555967..385d77ce82 100644 --- a/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt_proxy.rs +++ b/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt_proxy.rs @@ -62,17 +62,6 @@ where } } -#[rustfmt::skip] -impl CrowdfundingProxyMethods -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ -} - #[rustfmt::skip] impl CrowdfundingProxyMethods where diff --git a/contracts/examples/digital-cash/src/digital_cash_proxy.rs b/contracts/examples/digital-cash/src/digital_cash_proxy.rs index e3df8cf541..644e17c671 100644 --- a/contracts/examples/digital-cash/src/digital_cash_proxy.rs +++ b/contracts/examples/digital-cash/src/digital_cash_proxy.rs @@ -59,17 +59,6 @@ where } } -#[rustfmt::skip] -impl DigitalCashProxyMethods -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ -} - #[rustfmt::skip] impl DigitalCashProxyMethods where diff --git a/contracts/examples/rewards-distribution/src/seed_nft_minter_proxy.rs b/contracts/examples/rewards-distribution/src/seed_nft_minter_proxy.rs index c74e7a7e31..10047be064 100644 --- a/contracts/examples/rewards-distribution/src/seed_nft_minter_proxy.rs +++ b/contracts/examples/rewards-distribution/src/seed_nft_minter_proxy.rs @@ -59,17 +59,6 @@ where } } -#[rustfmt::skip] -impl SeedNftMinterProxyMethods -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ -} - #[rustfmt::skip] impl SeedNftMinterProxyMethods where diff --git a/contracts/feature-tests/abi-tester/src/abi_proxy.rs b/contracts/feature-tests/abi-tester/src/abi_proxy.rs index bdb43be8f5..1f860018b5 100644 --- a/contracts/feature-tests/abi-tester/src/abi_proxy.rs +++ b/contracts/feature-tests/abi-tester/src/abi_proxy.rs @@ -459,28 +459,6 @@ pub struct OnlyShowsUpAsNested06 { pub struct OnlyShowsUpAsNested07 { } -#[derive(TopDecode, TopEncode, NestedDecode, NestedEncode, Clone, PartialEq, Eq, Debug, Copy)] -pub enum EsdtLocalRole { - None, - Mint, - Burn, - NftCreate, - NftAddQuantity, - NftBurn, - NftAddUri, - NftUpdateAttributes, - Transfer, -} - -#[derive(TopDecode, TopEncode, NestedDecode, NestedEncode, Clone, PartialEq, Eq, Debug, ManagedVecItem)] -pub enum EsdtTokenType { - Fungible, - NonFungible, - SemiFungible, - Meta, - Invalid, -} - #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInSingleValueMapper { } diff --git a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/child_proxy.rs b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/child_proxy.rs index 162f38d1a9..bb3e97cc56 100644 --- a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/child_proxy.rs +++ b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/child_proxy.rs @@ -52,17 +52,6 @@ where } } -#[rustfmt::skip] -impl ChildProxyMethods -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ -} - #[rustfmt::skip] impl ChildProxyMethods where diff --git a/contracts/feature-tests/composability/recursive-caller/src/self_proxy.rs b/contracts/feature-tests/composability/recursive-caller/src/self_proxy.rs index 0b67327f44..bda44ef4b3 100644 --- a/contracts/feature-tests/composability/recursive-caller/src/self_proxy.rs +++ b/contracts/feature-tests/composability/recursive-caller/src/self_proxy.rs @@ -52,17 +52,6 @@ where } } -#[rustfmt::skip] -impl RecursiveCallerProxyMethods -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ -} - #[rustfmt::skip] impl RecursiveCallerProxyMethods where diff --git a/contracts/feature-tests/panic-message-features/tests/pmf_proxy.rs b/contracts/feature-tests/panic-message-features/tests/pmf_proxy.rs index 9eeb6d69e8..7413bf0ed9 100644 --- a/contracts/feature-tests/panic-message-features/tests/pmf_proxy.rs +++ b/contracts/feature-tests/panic-message-features/tests/pmf_proxy.rs @@ -52,17 +52,6 @@ where } } -#[rustfmt::skip] -impl PanicMessageFeaturesProxyMethods -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ -} - #[rustfmt::skip] impl PanicMessageFeaturesProxyMethods where From c4b6fc5738811262655c80189879913f946761b8 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 1 Apr 2024 20:41:48 +0300 Subject: [PATCH 245/461] proxy gen - write refactor --- .../generate_proxy/proxy_generator.rs | 184 +++++++++--------- 1 file changed, 87 insertions(+), 97 deletions(-) diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs index 0f2410db50..055e9c402a 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs @@ -1,4 +1,4 @@ -use std::{fs::File, io::Write}; +use std::{fmt::Display, fs::File, io::Write}; use multiversx_sc::abi::{ EndpointAbi, EnumVariantDescription, InputAbi, OutputAbi, StructFieldDescription, TypeContents, @@ -18,8 +18,7 @@ const PRELUDE: &str = "// Code generated by the multiversx-sc proxy generator. D #![allow(dead_code)] #![allow(clippy::all)] -use multiversx_sc::proxy_imports::*; -"; +use multiversx_sc::proxy_imports::*;"; const ZERO: &str = "0"; @@ -44,6 +43,15 @@ impl<'a> ProxyGenerator<'a> { Self { meta_config, file } } + fn write(&mut self, s: impl Display) { + write!(self.file, "{s}").unwrap(); + } + + fn writeln(&mut self, s: impl Display) { + self.write(s); + self.write("\n"); + } + pub fn write_proxy_to_file(&mut self) { self.write_header(); self.write_tx_proxy_type_def(); @@ -54,25 +62,22 @@ impl<'a> ProxyGenerator<'a> { } fn write_header(&mut self) { - self.file.write_fmt(format_args!("{PRELUDE}")).unwrap() + self.writeln(PRELUDE); } fn write_tx_proxy_type_def(&mut self) { let proxy_type_name = proxy_type_name(&self.meta_config.original_contract_abi.name); - writeln!( - self.file, + self.writeln(format!( r#" pub struct {proxy_type_name};"# - ) - .unwrap(); + )); } fn write_impl_for_tx_proxy(&mut self) { let proxy_type_name = proxy_type_name(&self.meta_config.original_contract_abi.name); let proxy_methods_type_name = proxy_methods_type_name(&self.meta_config.original_contract_abi.name); - writeln!( - self.file, + self.writeln(format!( r#" impl TxProxyTrait for {proxy_type_name} where @@ -87,15 +92,13 @@ where {proxy_methods_type_name} {{ wrapped_tx: tx }} }} }}"# - ) - .unwrap(); + )); } fn write_struct_tx_proxy_methods(&mut self) { let proxy_methods_type_name = proxy_methods_type_name(&self.meta_config.original_contract_abi.name); - writeln!( - self.file, + self.writeln(format!( r#" pub struct {proxy_methods_type_name} where @@ -106,8 +109,7 @@ where {{ wrapped_tx: Tx, }}"# - ) - .unwrap(); + )); } fn write_content(&mut self) { @@ -172,14 +174,14 @@ where self.write_header_impl_constructor(); for (i, constructor_abi) in constructors.into_iter().enumerate() { if i > 0 { - writeln!(self.file).unwrap(); + self.writeln(""); } self.write_constructor_header(&constructor_abi); self.write_constructor_content(constructor_abi.inputs); self.write_end_of_function(); } - writeln!(self.file, "}}").unwrap(); + self.writeln("}"); } fn write_upgrades(&mut self) { @@ -193,14 +195,14 @@ where .enumerate() { if i > 0 { - writeln!(self.file).unwrap(); + self.writeln(""); } self.write_upgrade_header(&upgrade); self.write_upgrade_content(upgrade.inputs); self.write_end_of_function(); } - writeln!(self.file, "}}").unwrap(); + self.writeln("}"); } fn write_endpoints(&mut self) { @@ -209,21 +211,20 @@ where self.write_header_impl_endpoints(); for (i, endpoint_abi) in endpoints.into_iter().enumerate() { if i > 0 { - writeln!(self.file).unwrap(); + self.writeln(""); } self.write_endpoint_header(&endpoint_abi); self.write_endpoint_content(&endpoint_abi); self.write_end_of_function(); } - writeln!(self.file, "}}").unwrap(); + self.writeln("}"); } fn write_header_impl_constructor(&mut self) { let proxy_methods_type_name = proxy_methods_type_name(&self.meta_config.original_contract_abi.name); - writeln!( - self.file, + self.writeln(format!( r#" #[rustfmt::skip] impl {proxy_methods_type_name} @@ -233,15 +234,13 @@ where From: TxFrom, Gas: TxGas, {{"# - ) - .unwrap(); + )); } fn write_header_impl_upgrade(&mut self) { let proxy_methods_type_name = proxy_methods_type_name(&self.meta_config.original_contract_abi.name); - writeln!( - self.file, + self.writeln(format!( r#" #[rustfmt::skip] impl {proxy_methods_type_name} @@ -252,15 +251,13 @@ where To: TxTo, Gas: TxGas, {{"# - ) - .unwrap(); + )); } fn write_header_impl_endpoints(&mut self) { let proxy_methods_type_name = proxy_methods_type_name(&self.meta_config.original_contract_abi.name); - writeln!( - self.file, + self.writeln(format!( r#" #[rustfmt::skip] impl {proxy_methods_type_name} @@ -271,8 +268,7 @@ where To: TxTo, Gas: TxGas, {{"# - ) - .unwrap(); + )); } fn write_constructor_header(&mut self, constructor_abi: &EndpointAbi) { @@ -291,45 +287,39 @@ where } fn write_constructor_content(&mut self, inputs: Vec) { - writeln!( - self.file, + self.writeln( " self.wrapped_tx - .raw_deploy()" - ) - .unwrap(); + .raw_deploy()", + ); for input in inputs.iter() { - writeln!(self.file, " .argument(&{})", input.arg_name).unwrap(); + self.writeln(format!(" .argument(&{})", input.arg_name)); } - writeln!(self.file, " .original_result()").unwrap(); + self.writeln(" .original_result()"); } fn write_upgrade_content(&mut self, inputs: Vec) { - writeln!( - self.file, + self.writeln( " self.wrapped_tx - .raw_upgrade()" - ) - .unwrap(); + .raw_upgrade()", + ); for input in inputs.iter() { - writeln!(self.file, " .argument(&{})", input.arg_name).unwrap(); + self.writeln(format!(" .argument(&{})", input.arg_name)); } - writeln!(self.file, " .original_result()").unwrap(); + self.writeln(" .original_result()"); } fn write_endpoint_content(&mut self, endpoint: &EndpointAbi) { - writeln!( - self.file, + self.writeln(format!( " self.wrapped_tx .raw_call(\"{}\")", endpoint.name - ) - .unwrap(); + )); for input in endpoint.inputs.iter() { - writeln!(self.file, " .argument(&{})", input.arg_name).unwrap(); + self.writeln(format!(" .argument(&{})", input.arg_name)); } - writeln!(self.file, " .original_result()").unwrap(); + self.writeln(" .original_result()"); } fn write_fn_signature(&mut self, endpoint: &EndpointAbi) { @@ -341,12 +331,12 @@ where fn write_endpoint_docs(&mut self, docs: &Vec) { for doc in docs { - writeln!(self.file, " /// {doc} ").unwrap(); + self.writeln(format!(" /// {doc} ")); } } fn write_function_header_endpoint(&mut self, rust_method_name: &String) { - write!(self.file, " pub fn {rust_method_name}").unwrap(); + self.write(format!(" pub fn {rust_method_name}")); } fn write_args(&mut self, inputs: &[InputAbi]) { @@ -354,72 +344,72 @@ where return; } - writeln!(self.file, "<").unwrap(); + self.writeln("<"); for (index, input) in inputs.iter().enumerate() { self.write_argument(index, &input.type_names.rust); } - write!(self.file, " >").unwrap(); + self.write(" >"); } fn write_argument(&mut self, index: usize, rust_name: &str) { let adjusted = self.adjust_type_name_with_env_api(rust_name); - writeln!(self.file, " Arg{index}: CodecInto<{adjusted}>,").unwrap(); + self.writeln(format!(" Arg{index}: CodecInto<{adjusted}>,")); } fn write_parameters(&mut self, inputs: &[InputAbi]) { - writeln!(self.file, "(").unwrap(); - writeln!(self.file, " self,").unwrap(); + self.writeln("("); + self.writeln(" self,"); for (index, input) in inputs.iter().enumerate() { - writeln!(self.file, " {}: Arg{index},", &input.arg_name).unwrap(); + self.writeln(format!(" {}: Arg{index},", &input.arg_name)); } - write!(self.file, " ) ").unwrap(); + self.write(" ) "); } fn write_constructor_output(&mut self, outputs: &[OutputAbi]) { - write!(self.file, "-> TxProxyDeploy TxProxyDeploy {{").unwrap(); + self.writeln("> {"); } fn write_upgrade_output(&mut self, outputs: &[OutputAbi]) { - write!(self.file, "-> TxProxyUpgrade TxProxyUpgrade {{").unwrap(); + self.writeln("> {"); } fn write_endpoint_output(&mut self, outputs: &[OutputAbi]) { - write!(self.file, "-> TxProxyCall TxProxyCall {{").unwrap(); + self.writeln("> {"); } fn parse_and_write_outputs(&mut self, outputs: &[OutputAbi]) { match outputs.len() { 0 => { - write!(self.file, "()").unwrap(); + self.write("()"); }, 1 => { let adjusted = self.adjust_type_name_with_env_api(&outputs[0].type_names.rust); - write!(self.file, "{adjusted}").unwrap(); + self.write(adjusted); }, _ => { - write!(self.file, "MultiValue{}<", outputs.len()).unwrap(); + self.write(format!("MultiValue{}<", outputs.len())); for (i, output) in outputs.iter().enumerate() { if i > 0 { - write!(self.file, ", ").unwrap(); + self.write(", "); } let adjusted = self.adjust_type_name_with_env_api(&output.type_names.rust); - write!(self.file, "{adjusted}").unwrap(); + self.write(adjusted); } - write!(self.file, ">").unwrap(); + self.write(">"); }, } } @@ -433,9 +423,9 @@ where self.start_write_type("enum", type_description, name); for variant in enum_variants { - write!(self.file, " {}", variant.name).unwrap(); + self.write(format!(" {}", variant.name)); if variant.fields.is_empty() { - writeln!(self.file, ",").unwrap(); + self.writeln(","); continue; } @@ -445,7 +435,7 @@ where self.write_struct_in_variant(&variant.fields); } } - writeln!(self.file, "}}").unwrap(); + self.writeln("}"); } fn write_struct( @@ -458,34 +448,34 @@ where for field in struct_fields { let adjusted_type_name = self.adjust_type_name_with_api(&field.field_type.rust); - writeln!(self.file, " pub {}: {adjusted_type_name},", field.name).unwrap(); + self.writeln(format!(" pub {}: {adjusted_type_name},", field.name)); } - writeln!(self.file, "}}").unwrap(); + self.writeln("}"); } fn write_tuple_in_variant(&mut self, fields: &[StructFieldDescription]) { - write!(self.file, "(").unwrap(); - let adjusted_type_name = self.adjust_type_name_with_api(&fields[0].field_type.rust); - write!(self.file, "{adjusted_type_name}").unwrap(); - - for field in &fields[1..] { + self.write("("); + for (i, field) in fields.iter().enumerate() { + if i > 0 { + self.write(", "); + } let adjusted_type_name = self.adjust_type_name_with_api(&field.field_type.rust); - write!(self.file, ", {adjusted_type_name}").unwrap(); + self.write(adjusted_type_name); } - writeln!(self.file, "),").unwrap(); + self.writeln("),"); } fn write_struct_in_variant(&mut self, fields: &[StructFieldDescription]) { - writeln!(self.file, " {{").unwrap(); + self.writeln(" {"); for field in fields { let adjusted_type_name = self.adjust_type_name_with_api(&field.field_type.rust); - writeln!(self.file, " {}: {adjusted_type_name},", field.name,).unwrap(); + self.writeln(format!(" {}: {adjusted_type_name},", field.name,)); } - writeln!(self.file, " }},").unwrap(); + self.writeln(" },"); } pub fn clean_paths(&mut self, proxy_crate: &str, rust_type: &str) -> String { @@ -524,9 +514,9 @@ where type_description: &TypeDescription, name: &str, ) { - writeln!(self.file).unwrap(); + self.writeln(""); self.write_macro_attributes(&type_description.macro_attributes); - write!(self.file, r#"pub {type_type} {name}"#).unwrap(); + self.write(format!(r#"pub {type_type} {name}"#)); if name.contains("") { writeln!( @@ -537,17 +527,17 @@ where ) .unwrap(); } else { - write!(self.file, " ").unwrap(); + self.write(" "); } - writeln!(self.file, r#"{{"#).unwrap(); + self.writeln("{"); } pub fn write_macro_attributes(&mut self, macro_attributes: &[String]) { if macro_attributes.is_empty() { - writeln!(self.file, "#[derive(TopEncode, TopDecode)]").unwrap(); + self.writeln("#[derive(TopEncode, TopDecode)]"); } else { - writeln!(self.file, "#[derive({})]", macro_attributes.join(", ")).unwrap(); + self.writeln(format!("#[derive({})]", macro_attributes.join(", "))); } } @@ -578,7 +568,7 @@ where } fn write_end_of_function(&mut self) { - writeln!(self.file, " }}").unwrap(); + self.writeln(" }"); } } From 2d520719921d35cafc1d21a9d956933d5afa2f34 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 1 Apr 2024 20:48:29 +0300 Subject: [PATCH 246/461] proxy gen - test refactor --- .../generate_proxy/proxy_generator.rs | 37 ++++++++++--------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs index 055e9c402a..f7b4d7f694 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs @@ -36,15 +36,19 @@ const TYPES_FROM_FRAMEWORK: &[&str] = &[ pub struct ProxyGenerator<'a> { pub meta_config: &'a MetaConfig, - pub file: &'a mut File, + pub file: Option<&'a mut File>, } impl<'a> ProxyGenerator<'a> { pub fn new(meta_config: &'a MetaConfig, file: &'a mut File) -> Self { - Self { meta_config, file } + Self { + meta_config, + file: Some(file), + } } fn write(&mut self, s: impl Display) { - write!(self.file, "{s}").unwrap(); + let file = self.file.as_mut().expect("output not configured"); + write!(*file, "{s}").unwrap(); } fn writeln(&mut self, s: impl Display) { @@ -519,13 +523,11 @@ where self.write(format!(r#"pub {type_type} {name}"#)); if name.contains("") { - writeln!( - self.file, - r#" + self.writeln( + " where - Api: ManagedTypeApi,"# - ) - .unwrap(); + Api: ManagedTypeApi,", + ); } else { self.write(" "); } @@ -574,17 +576,12 @@ where #[cfg(test)] pub mod tests { - - use std::fs::File; - use multiversx_sc::abi::{BuildInfoAbi, ContractAbi, ContractCrateBuildAbi, FrameworkBuildAbi}; use crate::cmd::contract::meta_config::MetaConfig; use super::ProxyGenerator; - const CURRENT_FILE: &str = "src/cmd/contract/generate_proxy/proxy_generator.rs"; - #[test] fn clean_paths_unsanitized_test() { let build_info = BuildInfoAbi { @@ -598,8 +595,10 @@ pub mod tests { let original_contract_abi = ContractAbi::new(build_info, &[""], "test", false); let meta_config = MetaConfig::create(original_contract_abi, false); - let mut file = File::open(CURRENT_FILE).unwrap(); - let mut proxy_generator = ProxyGenerator::new(&meta_config, &mut file); + let mut proxy_generator = ProxyGenerator { + meta_config: &meta_config, + file: None, + }; let name = proxy_generator .meta_config .original_contract_abi @@ -633,8 +632,10 @@ pub mod tests { let original_contract_abi = ContractAbi::new(build_info, &[""], "test", false); let meta_config = MetaConfig::create(original_contract_abi, false); - let mut file = File::open(CURRENT_FILE).unwrap(); - let mut proxy_generator = ProxyGenerator::new(&meta_config, &mut file); + let mut proxy_generator = ProxyGenerator { + meta_config: &meta_config, + file: None, + }; let name = proxy_generator .meta_config .original_contract_abi From f9b3056fba62bfd741649222ac2f634ebb991a1f Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Tue, 2 Apr 2024 11:57:49 +0300 Subject: [PATCH 247/461] proxy gen - changed path in unittests --- .../contract/generate_proxy/proxy_generator.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs index f7b4d7f694..5cc4c6fc04 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs @@ -492,6 +492,7 @@ where let mut words_replacer: Vec = Vec::new(); for word in &words { let type_rust_name = word.split("::").last().unwrap().to_string(); + // println!("type_rust_name >> {type_rust_name}"); if proxy_crate == extract_struct_crate(word) || TYPES_FROM_FRAMEWORK.contains(&type_rust_name.as_str()) { @@ -586,14 +587,14 @@ pub mod tests { fn clean_paths_unsanitized_test() { let build_info = BuildInfoAbi { contract_crate: ContractCrateBuildAbi { - name: "test", + name: "contract-crate", version: "0.0.0", git_version: "0.0.0", }, framework: FrameworkBuildAbi::create(), }; - let original_contract_abi = ContractAbi::new(build_info, &[""], "test", false); + let original_contract_abi = ContractAbi::new(build_info, &[""], "contract-crate", false); let meta_config = MetaConfig::create(original_contract_abi, false); let mut proxy_generator = ProxyGenerator { meta_config: &meta_config, @@ -608,10 +609,10 @@ pub mod tests { let cleaned_path_unsanitized = proxy_generator.clean_paths( name, - "(testt::path::test::to::TestStruct, Option>)", + "(other_crate::contract_crate::TestStruct, Option>)", ); let expected_result_unsanitized = - "(testt::path::test::to::TestStruct, Option>)"; + "(other_crate::contract_crate::TestStruct, Option>)"; assert_eq!( expected_result_unsanitized, @@ -623,14 +624,14 @@ pub mod tests { fn clean_paths_sanitized_test() { let build_info = BuildInfoAbi { contract_crate: ContractCrateBuildAbi { - name: "test", + name: "contract-crate", version: "0.0.0", git_version: "0.0.0", }, framework: FrameworkBuildAbi::create(), }; - let original_contract_abi = ContractAbi::new(build_info, &[""], "test", false); + let original_contract_abi = ContractAbi::new(build_info, &[""], "contract-crate", false); let meta_config = MetaConfig::create(original_contract_abi, false); let mut proxy_generator = ProxyGenerator { meta_config: &meta_config, @@ -645,7 +646,7 @@ pub mod tests { let cleaned_path_sanitized = proxy_generator.clean_paths( name, - "(test::path::test::to::TestStruct, Option>)", + "(contract_crate::other_crate::TestStruct, Option>)", ); let expected_result_sanitized = "(TestStruct, Option>)"; From 0cf9262567ecdffaf83bda4d767b72ce94127e05 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Tue, 2 Apr 2024 12:00:57 +0300 Subject: [PATCH 248/461] proxy gen - cleanup --- .../meta/src/cmd/contract/generate_proxy/proxy_generator.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs index 5cc4c6fc04..872ea416f8 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs @@ -492,7 +492,6 @@ where let mut words_replacer: Vec = Vec::new(); for word in &words { let type_rust_name = word.split("::").last().unwrap().to_string(); - // println!("type_rust_name >> {type_rust_name}"); if proxy_crate == extract_struct_crate(word) || TYPES_FROM_FRAMEWORK.contains(&type_rust_name.as_str()) { From 515a373e670f92f8f6c25eb597f28f6efe3e8390 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Tue, 2 Apr 2024 12:20:52 +0200 Subject: [PATCH 249/461] replace contract_call and migrate to unified --- .../examples/multisig/src/multisig_perform.rs | 13 +++++----- .../src/distribution_module.rs | 9 +++---- .../src/forwarder_raw_alt_init.rs | 10 ++++---- .../forwarder-raw/src/forwarder_raw_async.rs | 19 +++++++++++---- .../src/call_promise_direct.rs | 24 ++++++++++--------- .../composability/vault/src/vault.rs | 9 +++---- contracts/modules/src/governance/mod.rs | 16 +++++-------- 7 files changed, 55 insertions(+), 45 deletions(-) diff --git a/contracts/examples/multisig/src/multisig_perform.rs b/contracts/examples/multisig/src/multisig_perform.rs index 1912b85321..7efa2862bf 100644 --- a/contracts/examples/multisig/src/multisig_perform.rs +++ b/contracts/examples/multisig/src/multisig_perform.rs @@ -189,13 +189,14 @@ pub trait MultisigPerformModule: &call_data.endpoint_name, call_data.arguments.as_multi(), ); - self.send() - .contract_call::<()>(call_data.to, call_data.endpoint_name) - .with_egld_transfer(call_data.egld_amount) - .with_raw_arguments(call_data.arguments.into()) - .async_call() + + self.tx() + .to(&call_data.to) + .raw_call(call_data.endpoint_name) + .arguments_raw(call_data.arguments.into()) + .egld(call_data.egld_amount) .with_callback(self.callbacks().perform_async_call_callback()) - .call_and_exit() + .async_call_and_exit(); }, Action::SCDeployFromSource { amount, diff --git a/contracts/examples/seed-nft-minter/src/distribution_module.rs b/contracts/examples/seed-nft-minter/src/distribution_module.rs index 5190ba5505..d91d6e6ae2 100644 --- a/contracts/examples/seed-nft-minter/src/distribution_module.rs +++ b/contracts/examples/seed-nft-minter/src/distribution_module.rs @@ -33,10 +33,11 @@ pub trait DistributionModule { if payment_amount == 0 { continue; } - self.send() - .contract_call::(distribution.address, distribution.endpoint) - .with_egld_or_single_esdt_transfer((token_id.clone(), token_nonce, payment_amount)) - .with_gas_limit(distribution.gas_limit) + self.tx() + .to(&distribution.address) + .raw_call(distribution.endpoint) + .egld_or_single_esdt((token_id.clone(), token_nonce, payment_amount)) + .gas(distribution.gas_limit) .transfer_execute(); } } diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_alt_init.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_alt_init.rs index d677842e41..0ded59b36d 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_alt_init.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_alt_init.rs @@ -17,11 +17,11 @@ pub trait ForwarderRawAlterativeInit: super::forwarder_raw_common::ForwarderRawC endpoint_name: ManagedBuffer, args: MultiValueEncoded, ) { - self.send() - .contract_call::<()>(to, endpoint_name) - .with_raw_arguments(args.to_arg_buffer()) - .async_call() - .call_and_exit(); + self.tx() + .to(&to) + .raw_call(endpoint_name) + .arguments_raw(args.to_arg_buffer()) + .async_call_and_exit(); } /// Will not work, only written for VM testing. diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs index c25b6730f4..ad276c32b0 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs @@ -33,11 +33,20 @@ pub trait ForwarderRawAsync: super::forwarder_raw_common::ForwarderRawCommon { payment_amount: BigUint, endpoint_name: ManagedBuffer, args: MultiValueEncoded, - ) -> ContractCallWithEgldOrSingleEsdt { - self.send() - .contract_call(to, endpoint_name) - .with_raw_arguments(args.to_arg_buffer()) - .with_egld_or_single_esdt_transfer((payment_token, 0, payment_amount)) + ) -> Tx< + TxScEnv, + (), + ManagedAddress, + EgldOrEsdtTokenPayment, + (), + FunctionCall, + (), + > { + self.tx() + .to(to) + .raw_call(endpoint_name) + .arguments_raw(args.to_arg_buffer()) + .egld_or_single_esdt((payment_token, 0, payment_amount)) } #[endpoint] diff --git a/contracts/feature-tests/composability/promises-features/src/call_promise_direct.rs b/contracts/feature-tests/composability/promises-features/src/call_promise_direct.rs index 7ae949e214..b47a1f4feb 100644 --- a/contracts/feature-tests/composability/promises-features/src/call_promise_direct.rs +++ b/contracts/feature-tests/composability/promises-features/src/call_promise_direct.rs @@ -14,14 +14,15 @@ pub trait CallPromisesDirectModule { args: MultiValueEncoded, ) { let payment = self.call_value().egld_or_single_esdt(); - self.send() - .contract_call::<()>(to, endpoint_name) - .with_egld_or_single_esdt_transfer(payment) - .with_raw_arguments(args.to_arg_buffer()) - .with_gas_limit(gas_limit) + self.tx() + .to(&to) + .raw_call(endpoint_name) + .egld_or_single_esdt(payment) + .arguments_raw(args.to_arg_buffer()) + .gas(gas_limit) .async_call_promise() - .with_extra_gas_for_callback(extra_gas_for_callback) .with_callback(self.callbacks().the_one_callback(1001, 1002u32.into())) + .gas_for_callback(extra_gas_for_callback) .register_promise(); } @@ -40,13 +41,14 @@ pub trait CallPromisesDirectModule { let gas_limit = (self.blockchain().get_gas_left() - extra_gas_for_callback) * 9 / 10; - self.send() - .contract_call::<()>(to, endpoint_name) - .with_multi_token_transfer(token_payments_vec) - .with_gas_limit(gas_limit) + self.tx() + .to(&to) + .raw_call(endpoint_name) + .egld_or_multi_esdt(EgldOrMultiEsdtPayment::MultiEsdt(token_payments_vec)) + .gas(gas_limit) .async_call_promise() - .with_extra_gas_for_callback(extra_gas_for_callback) .with_callback(self.callbacks().the_one_callback(2001, 2002u32.into())) + .gas_for_callback(extra_gas_for_callback) .register_promise(); } diff --git a/contracts/feature-tests/composability/vault/src/vault.rs b/contracts/feature-tests/composability/vault/src/vault.rs index e7f11e25d9..9f293bae45 100644 --- a/contracts/feature-tests/composability/vault/src/vault.rs +++ b/contracts/feature-tests/composability/vault/src/vault.rs @@ -150,10 +150,11 @@ pub trait Vault { for _ in 0..nr_callbacks { self.num_async_calls_sent_from_child().update(|c| *c += 1); - self.send() - .contract_call::<()>(caller.clone(), endpoint_name.clone()) - .with_egld_or_single_esdt_transfer(return_payment.clone()) - .with_gas_limit(self.blockchain().get_gas_left() / 2) + self.tx() + .to(&caller) + .raw_call(endpoint_name.clone()) + .egld_or_single_esdt(return_payment.clone()) + .gas(self.blockchain().get_gas_left() / 2) .transfer_execute() } } diff --git a/contracts/modules/src/governance/mod.rs b/contracts/modules/src/governance/mod.rs index 624a6949e1..92eeb038db 100644 --- a/contracts/modules/src/governance/mod.rs +++ b/contracts/modules/src/governance/mod.rs @@ -278,16 +278,12 @@ pub trait GovernanceModule: self.clear_proposal(proposal_id); for action in proposal.actions { - let mut contract_call = self - .send() - .contract_call::<()>(action.dest_address, action.function_name) - .with_gas_limit(action.gas_limit); - - for arg in &action.arguments { - contract_call.push_raw_argument(arg); - } - - contract_call.transfer_execute(); + self.tx() + .to(&action.dest_address) + .raw_call(action.function_name) + .gas(action.gas_limit) + .arguments_raw(action.arguments.into()) + .transfer_execute() } self.proposal_executed_event(proposal_id); From 931d5624d89cdeb5a497107d913a24d2eee35d91 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Tue, 2 Apr 2024 12:26:20 +0200 Subject: [PATCH 250/461] callback fix --- contracts/examples/multisig/src/multisig_perform.rs | 2 +- .../promises-features/src/call_promise_direct.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/contracts/examples/multisig/src/multisig_perform.rs b/contracts/examples/multisig/src/multisig_perform.rs index 7efa2862bf..dfa7016340 100644 --- a/contracts/examples/multisig/src/multisig_perform.rs +++ b/contracts/examples/multisig/src/multisig_perform.rs @@ -195,7 +195,7 @@ pub trait MultisigPerformModule: .raw_call(call_data.endpoint_name) .arguments_raw(call_data.arguments.into()) .egld(call_data.egld_amount) - .with_callback(self.callbacks().perform_async_call_callback()) + .callback(self.callbacks().perform_async_call_callback()) .async_call_and_exit(); }, Action::SCDeployFromSource { diff --git a/contracts/feature-tests/composability/promises-features/src/call_promise_direct.rs b/contracts/feature-tests/composability/promises-features/src/call_promise_direct.rs index b47a1f4feb..e98e9b0c3b 100644 --- a/contracts/feature-tests/composability/promises-features/src/call_promise_direct.rs +++ b/contracts/feature-tests/composability/promises-features/src/call_promise_direct.rs @@ -21,7 +21,7 @@ pub trait CallPromisesDirectModule { .arguments_raw(args.to_arg_buffer()) .gas(gas_limit) .async_call_promise() - .with_callback(self.callbacks().the_one_callback(1001, 1002u32.into())) + .callback(self.callbacks().the_one_callback(1001, 1002u32.into())) .gas_for_callback(extra_gas_for_callback) .register_promise(); } @@ -47,7 +47,7 @@ pub trait CallPromisesDirectModule { .egld_or_multi_esdt(EgldOrMultiEsdtPayment::MultiEsdt(token_payments_vec)) .gas(gas_limit) .async_call_promise() - .with_callback(self.callbacks().the_one_callback(2001, 2002u32.into())) + .callback(self.callbacks().the_one_callback(2001, 2002u32.into())) .gas_for_callback(extra_gas_for_callback) .register_promise(); } From fe664c34ff9869542b4e7beb2233937d15c28b28 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Tue, 2 Apr 2024 15:03:15 +0300 Subject: [PATCH 251/461] proxy gen - replace char removed --- .../generate_proxy/proxy_generator.rs | 42 +++++-------------- .../contract/generate_proxy/proxy_naming.rs | 9 +--- 2 files changed, 11 insertions(+), 40 deletions(-) diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs index 872ea416f8..4528f53af6 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs @@ -145,9 +145,7 @@ where if self .meta_config .original_contract_abi - .build_info - .contract_crate - .name + .get_crate_name_for_code() != extract_struct_crate(type_description.names.rust.as_str()) { continue; @@ -482,20 +480,24 @@ where self.writeln(" },"); } - pub fn clean_paths(&mut self, proxy_crate: &str, rust_type: &str) -> String { + pub fn clean_paths(&mut self, rust_type: &str) -> String { let delimiters = "<>,()[] "; let words: Vec<&str> = rust_type .split(|c| delimiters.contains(c)) .filter(|s| !s.is_empty()) .collect(); + let crate_name = self + .meta_config + .original_contract_abi + .get_crate_name_for_code(); let mut words_replacer: Vec = Vec::new(); for word in &words { - let type_rust_name = word.split("::").last().unwrap().to_string(); - if proxy_crate == extract_struct_crate(word) - || TYPES_FROM_FRAMEWORK.contains(&type_rust_name.as_str()) + let type_rust_name = word.split("::").last().unwrap(); + if crate_name == extract_struct_crate(word) + || TYPES_FROM_FRAMEWORK.contains(&type_rust_name) { - words_replacer.push(type_rust_name); + words_replacer.push(type_rust_name.to_string()); } else { words_replacer.push(word.to_string()); } @@ -545,11 +547,6 @@ where fn adjust_type_name_with_env_api(&mut self, original_rust_name: &str) -> String { self.clean_paths( - self.meta_config - .original_contract_abi - .build_info - .contract_crate - .name, &original_rust_name .replace("multiversx_sc::api::uncallable::UncallableApi", "Env::Api") .replace("$API", "Env::Api"), @@ -558,11 +555,6 @@ where fn adjust_type_name_with_api(&mut self, original_rust_name: &str) -> String { self.clean_paths( - self.meta_config - .original_contract_abi - .build_info - .contract_crate - .name, &original_rust_name .replace("multiversx_sc::api::uncallable::UncallableApi", "Api") .replace("$API", "Api"), @@ -599,15 +591,8 @@ pub mod tests { meta_config: &meta_config, file: None, }; - let name = proxy_generator - .meta_config - .original_contract_abi - .build_info - .contract_crate - .name; let cleaned_path_unsanitized = proxy_generator.clean_paths( - name, "(other_crate::contract_crate::TestStruct, Option>)", ); let expected_result_unsanitized = @@ -636,15 +621,8 @@ pub mod tests { meta_config: &meta_config, file: None, }; - let name = proxy_generator - .meta_config - .original_contract_abi - .build_info - .contract_crate - .name; let cleaned_path_sanitized = proxy_generator.clean_paths( - name, "(contract_crate::other_crate::TestStruct, Option>)", ); let expected_result_sanitized = "(TestStruct, Option>)"; diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_naming.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_naming.rs index ada7559e01..3c4f1dac2e 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_naming.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_naming.rs @@ -7,13 +7,6 @@ pub(super) fn proxy_methods_type_name(contract_trait_name: &str) -> String { } pub(super) fn extract_struct_crate(struct_path: &str) -> String { - let struct_crate_name = struct_path - .replace('_', "-") - .replace("multiversx_sc::api::uncallable::UncallableApi", "Api") - .to_string(); - let crate_name = struct_crate_name - .split("::") - .next() - .unwrap_or_else(|| &struct_crate_name); + let crate_name = struct_path.split("::").next().unwrap_or(struct_path); crate_name.to_string() } From 0bd3e86fb8a6fc26c5e45339d995e8857b2c166e Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Tue, 2 Apr 2024 16:12:46 +0200 Subject: [PATCH 252/461] impl EgldOrEsdtTokenPaymentRefs --- .../base/src/types/interaction/tx_payment.rs | 2 + .../tx_payment/tx_payment_egld_or_esdt_ref.rs | 117 ++++++++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt_ref.rs diff --git a/framework/base/src/types/interaction/tx_payment.rs b/framework/base/src/types/interaction/tx_payment.rs index 4e3c560bcb..aed63a90d4 100644 --- a/framework/base/src/types/interaction/tx_payment.rs +++ b/framework/base/src/types/interaction/tx_payment.rs @@ -1,5 +1,6 @@ mod tx_payment_egld; mod tx_payment_egld_or_esdt; +mod tx_payment_egld_or_esdt_ref; mod tx_payment_egld_or_multi_esdt; mod tx_payment_egld_or_multi_esdt_ref; mod tx_payment_egld_value; @@ -9,6 +10,7 @@ mod tx_payment_single_esdt; mod tx_payment_single_esdt_ref; pub use tx_payment_egld::{Egld, EgldPayment}; +pub use tx_payment_egld_or_esdt_ref::*; pub use tx_payment_egld_value::TxEgldValue; pub use tx_payment_multi_esdt::TxPaymentMultiEsdt; diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt_ref.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt_ref.rs new file mode 100644 index 0000000000..d7dc216308 --- /dev/null +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt_ref.rs @@ -0,0 +1,117 @@ +use alloc::borrow::ToOwned; + +use crate::{ + api::ManagedTypeApi, + contract_base::SendRawWrapper, + proxy_imports::EgldOrEsdtTokenIdentifier, + types::{ + AnnotatedValue, BigUint, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EsdtTokenPayment, + EsdtTokenPaymentRefs, ManagedAddress, ManagedType, ManagedVec, MultiEsdtPayment, TxFrom, + TxToSpecified, + }, +}; + +use super::{ + AnnotatedEgldPayment, Egld, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment, +}; + +impl<'a, Env> TxPayment for EgldOrEsdtTokenPaymentRefs<'a, Env::Api> +where + Env: TxEnv, +{ + fn is_no_payment(&self, _env: &Env) -> bool { + self.is_empty() + } + + fn perform_transfer_execute( + self, + env: &Env, + to: &ManagedAddress, + gas_limit: u64, + fc: FunctionCall, + ) { + self.map_egld_or_esdt( + (to, fc), + |(to, fc), amount| Egld(amount).perform_transfer_execute(env, to, gas_limit, fc), + |(to, fc), esdt_payment| esdt_payment.perform_transfer_execute(env, to, gas_limit, fc), + ) + } + + fn with_normalized( + self, + env: &Env, + from: &From, + to: To, + fc: FunctionCall, + f: F, + ) -> R + where + From: TxFrom, + To: TxToSpecified, + F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, + { + self.map_egld_or_esdt( + (to, fc, f), + |(to, fc, f), amount| Egld(amount).with_normalized(env, from, to, fc, f), + |(to, fc, f), esdt_payment| esdt_payment.with_normalized(env, from, to, fc, f), + ) + } + + fn into_full_payment_data(self, env: &Env) -> FullPaymentData { + self.map_egld_or_esdt( + (), + |(), amount| TxPayment::::into_full_payment_data(Egld(amount), env), + |(), esdt_payment| TxPayment::::into_full_payment_data(esdt_payment, env), + ) + } +} + +pub struct EgldOrEsdtTokenPaymentRefs<'a, M: ManagedTypeApi> { + pub token_identifier: &'a EgldOrEsdtTokenIdentifier, + pub token_nonce: u64, + pub amount: &'a BigUint, +} + +impl EgldOrEsdtTokenPayment { + pub fn as_refs(&self) -> EgldOrEsdtTokenPaymentRefs<'_, M> { + EgldOrEsdtTokenPaymentRefs { + token_identifier: &self.token_identifier, + token_nonce: self.token_nonce, + amount: &self.amount, + } + } +} + +impl<'a, M: ManagedTypeApi> EgldOrEsdtTokenPaymentRefs<'a, M> { + pub fn to_owned_payment(&self) -> EgldOrEsdtTokenPayment { + EgldOrEsdtTokenPayment { + token_identifier: self.token_identifier.clone(), + token_nonce: self.token_nonce, + amount: self.amount.clone(), + } + } + + pub fn is_empty(&self) -> bool { + self.amount == &BigUint::zero() + } + + pub fn map_egld_or_esdt(self, context: Context, for_egld: D, for_esdt: F) -> U + where + D: FnOnce(Context, &BigUint) -> U, + F: FnOnce(Context, EgldOrEsdtTokenPaymentRefs) -> U, + { + if self.token_identifier.data.is_some() { + let token_identifier = unsafe { self.token_identifier.clone().data.unwrap_no_check() }; + for_esdt( + context, + EgldOrEsdtTokenPaymentRefs { + token_identifier: &EgldOrEsdtTokenIdentifier::esdt(token_identifier), + token_nonce: self.token_nonce, + amount: self.amount, + }, + ) + } else { + for_egld(context, self.amount) + } + } +} From 3506d2533f19b120f144f19ee8f4dffd4c1cca23 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 2 Apr 2024 21:55:10 +0300 Subject: [PATCH 253/461] Tx -> Step conversion refactor - part 1 --- framework/scenario/src/facade/world_tx.rs | 1 - .../facade/world_tx/scenario_env_deploy.rs | 20 +- .../src/facade/world_tx/scenario_env_exec.rs | 24 +-- .../src/facade/world_tx/scenario_env_query.rs | 17 +- .../src/facade/world_tx/scenario_env_util.rs | 175 ------------------ .../src/{scenario/mod.rs => scenario.rs} | 1 + framework/scenario/src/scenario/tx_to_step.rs | 11 ++ .../scenario/tx_to_step/step_annotation.rs | 40 ++++ .../src/scenario/tx_to_step/step_wrapper.rs | 48 +++++ .../scenario/tx_to_step/tx_to_step_call.rs | 75 ++++++++ .../scenario/tx_to_step/tx_to_step_deploy.rs | 67 +++++++ .../scenario/tx_to_step/tx_to_step_query.rs | 44 +++++ .../scenario/tx_to_step/tx_to_step_trait.rs | 17 ++ .../tx_to_step/tx_to_step_transfer.rs | 58 ++++++ .../snippets/src/itx/interactor_env_deploy.rs | 41 ++-- .../snippets/src/itx/interactor_env_exec.rs | 39 ++-- .../snippets/src/itx/interactor_env_query.rs | 36 ++-- .../snippets/src/itx/interactor_env_transf.rs | 18 +- 18 files changed, 448 insertions(+), 284 deletions(-) delete mode 100644 framework/scenario/src/facade/world_tx/scenario_env_util.rs rename framework/scenario/src/{scenario/mod.rs => scenario.rs} (91%) create mode 100644 framework/scenario/src/scenario/tx_to_step.rs create mode 100644 framework/scenario/src/scenario/tx_to_step/step_annotation.rs create mode 100644 framework/scenario/src/scenario/tx_to_step/step_wrapper.rs create mode 100644 framework/scenario/src/scenario/tx_to_step/tx_to_step_call.rs create mode 100644 framework/scenario/src/scenario/tx_to_step/tx_to_step_deploy.rs create mode 100644 framework/scenario/src/scenario/tx_to_step/tx_to_step_query.rs create mode 100644 framework/scenario/src/scenario/tx_to_step/tx_to_step_trait.rs create mode 100644 framework/scenario/src/scenario/tx_to_step/tx_to_step_transfer.rs diff --git a/framework/scenario/src/facade/world_tx.rs b/framework/scenario/src/facade/world_tx.rs index 0ccbdd9514..b72fe5b88c 100644 --- a/framework/scenario/src/facade/world_tx.rs +++ b/framework/scenario/src/facade/world_tx.rs @@ -5,7 +5,6 @@ mod scenario_env; mod scenario_env_deploy; mod scenario_env_exec; mod scenario_env_query; -pub mod scenario_env_util; mod scenario_rh_impl; pub use expr::*; diff --git a/framework/scenario/src/facade/world_tx/scenario_env_deploy.rs b/framework/scenario/src/facade/world_tx/scenario_env_deploy.rs index ef7b2a243f..c218f06869 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_deploy.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_deploy.rs @@ -12,11 +12,12 @@ use multiversx_sc::{ use crate::{ api::StaticApi, + scenario::tx_to_step::TxToStep, scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep, TxResponse}, ScenarioEnvExec, ScenarioTxEnv, ScenarioTxRun, ScenarioWorld, }; -use super::{scenario_env_util::*, ScenarioTxEnvData}; +use super::ScenarioTxEnvData; impl<'w, From, Payment, Gas, CodeValue, RH> ScenarioTxRun for Tx< @@ -39,11 +40,9 @@ where type Returns = ::Unpacked; fn run(self) -> Self::Returns { - let mut step = - tx_to_sc_deploy_step(&self.env, self.from, self.payment, self.gas, self.data); - step.expect = Some(self.result_handler.list_tx_expect()); - self.env.world.sc_deploy(&mut step); - process_result(step.response, self.result_handler) + let mut step_wrapper = self.tx_to_step(); + step_wrapper.env.world.sc_deploy(&mut step_wrapper.step); + step_wrapper.process_result() } } @@ -70,10 +69,11 @@ impl ScenarioWorld { let env = self.new_env_data(); let tx_base = TxBaseWithEnv::new_with_env(env); let tx = f(tx_base); - let mut step = tx_to_sc_deploy_step(&tx.env, tx.from, tx.payment, tx.gas, tx.data); - self.sc_deploy(&mut step); - step.expect = Some(tx.result_handler.list_tx_expect()); - process_result(step.response, tx.result_handler); + + let mut step_wrapper = tx.tx_to_step(); + self.sc_deploy(&mut step_wrapper.step); + step_wrapper.process_result(); + self } } diff --git a/framework/scenario/src/facade/world_tx/scenario_env_exec.rs b/framework/scenario/src/facade/world_tx/scenario_env_exec.rs index 8ea522c410..3c292bd650 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_exec.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_exec.rs @@ -12,11 +12,12 @@ use multiversx_sc::{ use crate::{ api::StaticApi, + scenario::tx_to_step::TxToStep, scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep, TxExpect, TxResponse}, ScenarioTxEnv, ScenarioTxRun, ScenarioWorld, }; -use super::{scenario_env_util::*, ScenarioTxEnvData}; +use super::ScenarioTxEnvData; /// Environment for executing transactions. pub struct ScenarioEnvExec<'w> { @@ -61,17 +62,9 @@ where type Returns = ::Unpacked; fn run(self) -> Self::Returns { - let mut step = tx_to_sc_call_step( - &self.env, - self.from, - self.to, - self.payment, - self.gas, - self.data, - ); - step.expect = Some(self.result_handler.list_tx_expect()); - self.env.world.sc_call(&mut step); - process_result(step.response, self.result_handler) + let mut step_wrapper = self.tx_to_step(); + step_wrapper.env.world.sc_call(&mut step_wrapper.step); + step_wrapper.process_result() } } @@ -97,10 +90,9 @@ impl ScenarioWorld { let env = self.new_env_data(); let tx_base = TxBaseWithEnv::new_with_env(env); let tx = f(tx_base); - let mut step = tx_to_sc_call_step(&tx.env, tx.from, tx.to, tx.payment, tx.gas, tx.data); - step.expect = Some(tx.result_handler.list_tx_expect()); - self.sc_call(&mut step); - process_result(step.response, tx.result_handler); + let mut step_wrapper = tx.tx_to_step(); + self.sc_call(&mut step_wrapper.step); + step_wrapper.process_result(); self } } diff --git a/framework/scenario/src/facade/world_tx/scenario_env_query.rs b/framework/scenario/src/facade/world_tx/scenario_env_query.rs index dac9e68d83..08246b0f81 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_query.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_query.rs @@ -10,12 +10,11 @@ use multiversx_sc::{ use crate::{ api::StaticApi, + scenario::tx_to_step::TxToQueryStep, scenario_model::{TxExpect, TxResponse}, ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, ScenarioWorld, }; -use super::scenario_env_util::*; - pub struct ScenarioEnvQuery<'w> { pub world: &'w mut ScenarioWorld, pub data: ScenarioTxEnvData, @@ -55,10 +54,9 @@ where type Returns = ::Unpacked; fn run(self) -> Self::Returns { - let mut step = tx_to_sc_query_step(&self.env, self.to, self.data); - step.expect = Some(self.result_handler.list_tx_expect()); - self.env.world.sc_query(&mut step); - process_result(step.response, self.result_handler) + let mut step_wrapper = self.tx_to_query_step(); + step_wrapper.env.world.sc_query(&mut step_wrapper.step); + step_wrapper.process_result() } } @@ -80,10 +78,9 @@ impl ScenarioWorld { let env = self.new_env_data(); let tx_base = TxBaseWithEnv::new_with_env(env); let tx = f(tx_base); - let mut step = tx_to_sc_query_step(&tx.env, tx.to, tx.data); - self.sc_query(&mut step); - step.expect = Some(tx.result_handler.list_tx_expect()); - process_result(step.response, tx.result_handler); + let mut step_wrapper = tx.tx_to_query_step(); + self.sc_query(&mut step_wrapper.step); + step_wrapper.process_result(); self } } diff --git a/framework/scenario/src/facade/world_tx/scenario_env_util.rs b/framework/scenario/src/facade/world_tx/scenario_env_util.rs deleted file mode 100644 index 8334b22cfb..0000000000 --- a/framework/scenario/src/facade/world_tx/scenario_env_util.rs +++ /dev/null @@ -1,175 +0,0 @@ -use multiversx_chain_scenario_format::serde_raw::ValueSubTree; -use multiversx_sc::{ - tuple_util::NestedTupleFlatten, - types::{ - AnnotatedValue, Code, DeployCall, FunctionCall, ManagedAddress, ManagedBuffer, RHListExec, - Tx, TxBaseWithEnv, TxCodeSource, TxCodeSourceSpecified, TxCodeValue, TxEnv, - TxFromSpecified, TxGas, TxGasValue, TxPayment, TxToSpecified, - }, -}; - -use crate::{ - api::StaticApi, - scenario_model::{ - AddressValue, BigUintValue, BytesValue, ScCallStep, ScDeployStep, ScQueryStep, - TransferStep, TxResponse, U64Value, - }, - ScenarioEnvExec, ScenarioWorld, -}; - -pub fn address_annotated(env: &Env, from: Addr) -> AddressValue -where - Env: TxEnv, - Addr: AnnotatedValue>, -{ - let annotation = from.annotation(env).to_string(); - AddressValue { - value: from.into_value(env).to_address(), - original: ValueSubTree::Str(annotation), - } -} - -pub fn code_annotated(env: &Env, code: Code) -> BytesValue -where - Env: TxEnv, - CodeValue: TxCodeValue, -{ - let annotation = code.0.annotation(env).to_string(); - BytesValue { - value: code.0.into_value(env).to_vec(), - original: ValueSubTree::Str(annotation), - } -} - -pub fn gas_annotated(env: &Env, gas: Gas) -> U64Value -where - Env: TxEnv, - Gas: TxGas, -{ - let annotation = gas.gas_annotation(env).to_string(); - U64Value { - value: gas.gas_value(env), - original: ValueSubTree::Str(annotation), - } -} - -pub fn tx_to_sc_call_step( - env: &Env, - from: From, - to: To, - payment: Payment, - gas: Gas, - data: FunctionCall, -) -> ScCallStep -where - Env: TxEnv, - From: TxFromSpecified, - To: TxToSpecified, - Payment: TxPayment, - Gas: TxGas, -{ - let mut step = ScCallStep::new() - .from(address_annotated(env, from)) - .to(address_annotated(env, to)) - .function(data.function_name.to_string().as_str()); - for arg in data.arg_buffer.iter_buffers() { - step.tx.arguments.push(arg.to_vec().into()); - } - - step.tx.gas_limit = gas_annotated(env, gas); - - let full_payment_data = payment.into_full_payment_data(env); - if let Some(annotated_egld_payment) = full_payment_data.egld { - step.tx.egld_value = annotated_egld_payment.into(); - } - - step -} - -pub fn tx_to_sc_deploy_step( - env: &Env, - from: From, - payment: Payment, - gas: Gas, - data: DeployCall>, -) -> ScDeployStep -where - Env: TxEnv, - From: TxFromSpecified, - Payment: TxPayment, - Gas: TxGas, - CodeValue: TxCodeValue, -{ - let mut step = ScDeployStep::new() - .from(address_annotated(env, from)) - .code(code_annotated(env, data.code_source)); - for arg in data.arg_buffer.iter_buffers() { - step.tx.arguments.push(arg.to_vec().into()); - } - - step.tx.gas_limit = gas_annotated(env, gas); - - let full_payment_data = payment.into_full_payment_data(env); - if let Some(annotated_egld_payment) = full_payment_data.egld { - step.tx.egld_value = annotated_egld_payment.into(); - } - - step -} - -pub fn tx_to_sc_query_step(env: &Env, to: To, data: FunctionCall) -> ScQueryStep -where - Env: TxEnv, - To: TxToSpecified, -{ - let mut step = ScQueryStep::new() - .to(address_annotated(env, to)) - .function(data.function_name.to_string().as_str()); - for arg in data.arg_buffer.iter_buffers() { - step.tx.arguments.push(arg.to_vec().into()); - } - - step -} - -pub fn tx_to_transfer_step( - env: &Env, - from: From, - to: To, - payment: Payment, - gas: Gas, -) -> TransferStep -where - Env: TxEnv, - From: TxFromSpecified, - To: TxToSpecified, - Payment: TxPayment, - Gas: TxGas, -{ - let mut step = TransferStep::new() - .from(address_annotated(env, from)) - .to(address_annotated(env, to)); - - step.tx.gas_limit = gas_annotated(env, gas); - - let full_payment_data = payment.into_full_payment_data(env); - if let Some(annotated_egld_payment) = full_payment_data.egld { - step.tx.egld_value = annotated_egld_payment.into(); - } - - step -} - -pub fn process_result( - response: Option, - result_handler: RH, -) -> ::Unpacked -where - Env: TxEnv, - RH: RHListExec, - RH::ListReturns: NestedTupleFlatten, -{ - let response = response.expect("step did not return result"); - let tuple_result = result_handler.list_process_result(&response); - tuple_result.flatten_unpack() -} diff --git a/framework/scenario/src/scenario/mod.rs b/framework/scenario/src/scenario.rs similarity index 91% rename from framework/scenario/src/scenario/mod.rs rename to framework/scenario/src/scenario.rs index 3ffd41300f..70f8f5f285 100644 --- a/framework/scenario/src/scenario/mod.rs +++ b/framework/scenario/src/scenario.rs @@ -4,6 +4,7 @@ pub mod run_list; pub mod run_trace; pub mod run_vm; mod scenario_runner; +pub mod tx_to_step; pub use parse_util::{parse_scenario, parse_scenario_raw}; pub use scenario_runner::ScenarioRunner; diff --git a/framework/scenario/src/scenario/tx_to_step.rs b/framework/scenario/src/scenario/tx_to_step.rs new file mode 100644 index 0000000000..601d4d9b71 --- /dev/null +++ b/framework/scenario/src/scenario/tx_to_step.rs @@ -0,0 +1,11 @@ +mod step_annotation; +mod step_wrapper; +mod tx_to_step_call; +mod tx_to_step_deploy; +mod tx_to_step_query; +mod tx_to_step_trait; +mod tx_to_step_transfer; + +pub use step_annotation::*; +pub use step_wrapper::StepWrapper; +pub use tx_to_step_trait::*; diff --git a/framework/scenario/src/scenario/tx_to_step/step_annotation.rs b/framework/scenario/src/scenario/tx_to_step/step_annotation.rs new file mode 100644 index 0000000000..2defb50786 --- /dev/null +++ b/framework/scenario/src/scenario/tx_to_step/step_annotation.rs @@ -0,0 +1,40 @@ +use multiversx_chain_scenario_format::serde_raw::ValueSubTree; +use multiversx_sc::types::{AnnotatedValue, Code, ManagedAddress, TxCodeValue, TxEnv, TxGas}; + +use crate::scenario_model::{AddressValue, BytesValue, U64Value}; + +pub fn address_annotated(env: &Env, from: Addr) -> AddressValue +where + Env: TxEnv, + Addr: AnnotatedValue>, +{ + let annotation = from.annotation(env).to_string(); + AddressValue { + value: from.into_value(env).to_address(), + original: ValueSubTree::Str(annotation), + } +} + +pub fn code_annotated(env: &Env, code: Code) -> BytesValue +where + Env: TxEnv, + CodeValue: TxCodeValue, +{ + let annotation = code.0.annotation(env).to_string(); + BytesValue { + value: code.0.into_value(env).to_vec(), + original: ValueSubTree::Str(annotation), + } +} + +pub fn gas_annotated(env: &Env, gas: Gas) -> U64Value +where + Env: TxEnv, + Gas: TxGas, +{ + let annotation = gas.gas_annotation(env).to_string(); + U64Value { + value: gas.gas_value(env), + original: ValueSubTree::Str(annotation), + } +} diff --git a/framework/scenario/src/scenario/tx_to_step/step_wrapper.rs b/framework/scenario/src/scenario/tx_to_step/step_wrapper.rs new file mode 100644 index 0000000000..9d9a0199d5 --- /dev/null +++ b/framework/scenario/src/scenario/tx_to_step/step_wrapper.rs @@ -0,0 +1,48 @@ +use multiversx_sc::{ + tuple_util::NestedTupleFlatten, + types::{RHListExec, TxEnv}, +}; + +use crate::scenario_model::{ScCallStep, ScDeployStep, ScQueryStep, TxResponse}; + +pub struct StepWrapper { + pub env: Env, + pub step: Step, + pub result_handler: RH, +} + +impl StepWrapper +where + Env: TxEnv, + Step: StepWithResponse, + RH: RHListExec, + RH::ListReturns: NestedTupleFlatten, +{ + pub fn process_result(self) -> ::Unpacked { + let response = self.step.into_response(); + let tuple_result = self.result_handler.list_process_result(&response); + tuple_result.flatten_unpack() + } +} + +pub trait StepWithResponse { + fn into_response(self) -> TxResponse; +} + +impl StepWithResponse for ScCallStep { + fn into_response(self) -> TxResponse { + self.response.expect("SC call step did not return result") + } +} + +impl StepWithResponse for ScDeployStep { + fn into_response(self) -> TxResponse { + self.response.expect("SC deploy step did not return result") + } +} + +impl StepWithResponse for ScQueryStep { + fn into_response(self) -> TxResponse { + self.response.expect("SC query step did not return result") + } +} diff --git a/framework/scenario/src/scenario/tx_to_step/tx_to_step_call.rs b/framework/scenario/src/scenario/tx_to_step/tx_to_step_call.rs new file mode 100644 index 0000000000..dc4850b845 --- /dev/null +++ b/framework/scenario/src/scenario/tx_to_step/tx_to_step_call.rs @@ -0,0 +1,75 @@ +use multiversx_sc::types::{ + FunctionCall, RHListExec, Tx, TxEnv, TxFromSpecified, TxGas, TxPayment, TxToSpecified, +}; + +use crate::scenario_model::{ScCallStep, TxExpect, TxResponse}; + +use super::{address_annotated, gas_annotated, StepWrapper, TxToStep}; + +impl TxToStep + for Tx, RH> +where + Env: TxEnv, + From: TxFromSpecified, + To: TxToSpecified, + Payment: TxPayment, + Gas: TxGas, + RH: RHListExec, +{ + type Env = Env; + + type Step = ScCallStep; + + type RH = RH; + + fn tx_to_step(self) -> StepWrapper { + let mut step = tx_to_sc_call_step( + &self.env, + self.from, + self.to, + self.payment, + self.gas, + self.data, + ); + step.expect = Some(self.result_handler.list_tx_expect()); + + StepWrapper { + env: self.env, + step, + result_handler: self.result_handler, + } + } +} + +pub fn tx_to_sc_call_step( + env: &Env, + from: From, + to: To, + payment: Payment, + gas: Gas, + data: FunctionCall, +) -> ScCallStep +where + Env: TxEnv, + From: TxFromSpecified, + To: TxToSpecified, + Payment: TxPayment, + Gas: TxGas, +{ + let mut step = ScCallStep::new() + .from(address_annotated(env, from)) + .to(address_annotated(env, to)) + .function(data.function_name.to_string().as_str()); + for arg in data.arg_buffer.iter_buffers() { + step.tx.arguments.push(arg.to_vec().into()); + } + + step.tx.gas_limit = gas_annotated(env, gas); + + let full_payment_data = payment.into_full_payment_data(env); + if let Some(annotated_egld_payment) = full_payment_data.egld { + step.tx.egld_value = annotated_egld_payment.into(); + } + + step +} diff --git a/framework/scenario/src/scenario/tx_to_step/tx_to_step_deploy.rs b/framework/scenario/src/scenario/tx_to_step/tx_to_step_deploy.rs new file mode 100644 index 0000000000..4378bbb682 --- /dev/null +++ b/framework/scenario/src/scenario/tx_to_step/tx_to_step_deploy.rs @@ -0,0 +1,67 @@ +use multiversx_sc::types::{ + Code, DeployCall, RHListExec, Tx, TxCodeValue, TxEnv, TxFromSpecified, TxGas, TxPayment, +}; + +use crate::scenario_model::{ScDeployStep, TxExpect, TxResponse}; + +use super::{address_annotated, code_annotated, gas_annotated, StepWrapper, TxToStep}; + +impl TxToStep + for Tx>, RH> +where + Env: TxEnv, + From: TxFromSpecified, + Payment: TxPayment, + Gas: TxGas, + CodeValue: TxCodeValue, + RH: RHListExec, +{ + type Env = Env; + + type Step = ScDeployStep; + + type RH = RH; + + fn tx_to_step(self) -> StepWrapper { + let mut step = + tx_to_sc_deploy_step(&self.env, self.from, self.payment, self.gas, self.data); + step.expect = Some(self.result_handler.list_tx_expect()); + + StepWrapper { + env: self.env, + step, + result_handler: self.result_handler, + } + } +} + +pub fn tx_to_sc_deploy_step( + env: &Env, + from: From, + payment: Payment, + gas: Gas, + data: DeployCall>, +) -> ScDeployStep +where + Env: TxEnv, + From: TxFromSpecified, + Payment: TxPayment, + Gas: TxGas, + CodeValue: TxCodeValue, +{ + let mut step = ScDeployStep::new() + .from(address_annotated(env, from)) + .code(code_annotated(env, data.code_source)); + for arg in data.arg_buffer.iter_buffers() { + step.tx.arguments.push(arg.to_vec().into()); + } + + step.tx.gas_limit = gas_annotated(env, gas); + + let full_payment_data = payment.into_full_payment_data(env); + if let Some(annotated_egld_payment) = full_payment_data.egld { + step.tx.egld_value = annotated_egld_payment.into(); + } + + step +} diff --git a/framework/scenario/src/scenario/tx_to_step/tx_to_step_query.rs b/framework/scenario/src/scenario/tx_to_step/tx_to_step_query.rs new file mode 100644 index 0000000000..427a8e62ce --- /dev/null +++ b/framework/scenario/src/scenario/tx_to_step/tx_to_step_query.rs @@ -0,0 +1,44 @@ +use multiversx_sc::types::{FunctionCall, RHListExec, Tx, TxEnv, TxToSpecified}; + +use crate::scenario_model::{ScQueryStep, TxExpect, TxResponse}; + +use super::{address_annotated, StepWrapper, TxToQueryStep}; + +impl TxToQueryStep for Tx, RH> +where + Env: TxEnv, + To: TxToSpecified, + RH: RHListExec, +{ + type Env = Env; + + type Step = ScQueryStep; + + type RH = RH; + + fn tx_to_query_step(self) -> StepWrapper { + let mut step = tx_to_sc_query_step(&self.env, self.to, self.data); + step.expect = Some(self.result_handler.list_tx_expect()); + + StepWrapper { + env: self.env, + step, + result_handler: self.result_handler, + } + } +} + +pub fn tx_to_sc_query_step(env: &Env, to: To, data: FunctionCall) -> ScQueryStep +where + Env: TxEnv, + To: TxToSpecified, +{ + let mut step = ScQueryStep::new() + .to(address_annotated(env, to)) + .function(data.function_name.to_string().as_str()); + for arg in data.arg_buffer.iter_buffers() { + step.tx.arguments.push(arg.to_vec().into()); + } + + step +} diff --git a/framework/scenario/src/scenario/tx_to_step/tx_to_step_trait.rs b/framework/scenario/src/scenario/tx_to_step/tx_to_step_trait.rs new file mode 100644 index 0000000000..708e7c8eea --- /dev/null +++ b/framework/scenario/src/scenario/tx_to_step/tx_to_step_trait.rs @@ -0,0 +1,17 @@ +use super::StepWrapper; + +pub trait TxToStep { + type Env; + type Step; + type RH; + + fn tx_to_step(self) -> StepWrapper; +} + +pub trait TxToQueryStep { + type Env; + type Step; + type RH; + + fn tx_to_query_step(self) -> StepWrapper; +} diff --git a/framework/scenario/src/scenario/tx_to_step/tx_to_step_transfer.rs b/framework/scenario/src/scenario/tx_to_step/tx_to_step_transfer.rs new file mode 100644 index 0000000000..c2f31e6ff4 --- /dev/null +++ b/framework/scenario/src/scenario/tx_to_step/tx_to_step_transfer.rs @@ -0,0 +1,58 @@ +use multiversx_sc::types::{Tx, TxEnv, TxFromSpecified, TxGas, TxPayment, TxToSpecified}; + +use crate::scenario_model::TransferStep; + +use super::{address_annotated, gas_annotated, StepWrapper, TxToStep}; + +impl TxToStep for Tx +where + Env: TxEnv, + From: TxFromSpecified, + To: TxToSpecified, + Payment: TxPayment, + Gas: TxGas, +{ + type Env = Env; + + type Step = TransferStep; + + type RH = (); + + fn tx_to_step(self) -> StepWrapper { + let step = tx_to_transfer_step(&self.env, self.from, self.to, self.payment, self.gas); + + StepWrapper { + env: self.env, + step, + result_handler: self.result_handler, + } + } +} + +pub fn tx_to_transfer_step( + env: &Env, + from: From, + to: To, + payment: Payment, + gas: Gas, +) -> TransferStep +where + Env: TxEnv, + From: TxFromSpecified, + To: TxToSpecified, + Payment: TxPayment, + Gas: TxGas, +{ + let mut step = TransferStep::new() + .from(address_annotated(env, from)) + .to(address_annotated(env, to)); + + step.tx.gas_limit = gas_annotated(env, gas); + + let full_payment_data = payment.into_full_payment_data(env); + if let Some(annotated_egld_payment) = full_payment_data.egld { + step.tx.egld_value = annotated_egld_payment.into(); + } + + step +} diff --git a/framework/snippets/src/itx/interactor_env_deploy.rs b/framework/snippets/src/itx/interactor_env_deploy.rs index 6fdd9dfb48..bf5e8e61bc 100644 --- a/framework/snippets/src/itx/interactor_env_deploy.rs +++ b/framework/snippets/src/itx/interactor_env_deploy.rs @@ -10,7 +10,7 @@ use multiversx_sc_scenario::{ TxFromSpecified, TxGas, TxPayment, TxToSpecified, }, }, - scenario_env_util::*, + scenario::tx_to_step::{StepWrapper, TxToStep}, scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep, TxResponse}, ScenarioEnvExec, ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, ScenarioWorld, }; @@ -24,9 +24,7 @@ where RH: RHListExec>, RH::ListReturns: NestedTupleFlatten, { - world: &'w mut Interactor, - sc_deploy_step: ScDeployStep, - result_handler: RH, + step_wrapper: StepWrapper, ScDeployStep, RH>, } impl<'w, From, Payment, Gas, CodeValue, RH> InteractorPrepareAsync @@ -50,12 +48,8 @@ where type Exec = InteractorDeployStep<'w, RH>; fn prepare_async(self) -> Self::Exec { - let mut sc_deploy_step = - tx_to_sc_deploy_step(&self.env, self.from, self.payment, self.gas, self.data); InteractorDeployStep { - world: self.env.world, - sc_deploy_step, - result_handler: self.result_handler, + step_wrapper: self.tx_to_step(), } } } @@ -65,11 +59,13 @@ where RH: RHListExec>, RH::ListReturns: NestedTupleFlatten, { - pub async fn run(self) -> ::Unpacked { - let mut step = self.sc_deploy_step; - step.expect = Some(self.result_handler.list_tx_expect()); - self.world.sc_deploy(&mut step).await; - process_result(step.response, self.result_handler) + pub async fn run(mut self) -> ::Unpacked { + self.step_wrapper + .env + .world + .sc_deploy(&mut self.step_wrapper.step) + .await; + self.step_wrapper.process_result() } } @@ -96,10 +92,11 @@ impl Interactor { let env = self.new_env_data(); let tx_base = TxBaseWithEnv::new_with_env(env); let tx = f(tx_base); - let mut step = tx_to_sc_deploy_step(&tx.env, tx.from, tx.payment, tx.gas, tx.data); - step.expect = Some(tx.result_handler.list_tx_expect()); - self.sc_deploy(&mut step).await; - process_result(step.response, tx.result_handler); + + let mut step_wrapper = tx.tx_to_step(); + self.sc_deploy(&mut step_wrapper.step); + step_wrapper.process_result(); + self } @@ -129,9 +126,9 @@ impl Interactor { let env = self.new_env_data(); let tx_base = TxBaseWithEnv::new_with_env(env); let tx = f(tx_base); - let mut step = tx_to_sc_deploy_step(&tx.env, tx.from, tx.payment, tx.gas, tx.data); - step.expect = Some(tx.result_handler.list_tx_expect()); - self.sc_deploy(&mut step).await; - process_result(step.response, tx.result_handler) + + let mut step_wrapper = tx.tx_to_step(); + self.sc_deploy(&mut step_wrapper.step); + step_wrapper.process_result() } } diff --git a/framework/snippets/src/itx/interactor_env_exec.rs b/framework/snippets/src/itx/interactor_env_exec.rs index 235a580853..8e6b4dc69c 100644 --- a/framework/snippets/src/itx/interactor_env_exec.rs +++ b/framework/snippets/src/itx/interactor_env_exec.rs @@ -10,7 +10,7 @@ use multiversx_sc_scenario::{ TxFromSpecified, TxGas, TxPayment, TxToSpecified, }, }, - scenario_env_util::*, + scenario::tx_to_step::{StepWrapper, TxToStep}, scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep, TxExpect, TxResponse}, ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, ScenarioWorld, }; @@ -52,9 +52,7 @@ where RH: RHListExec>, RH::ListReturns: NestedTupleFlatten, { - world: &'w mut Interactor, - sc_call_step: ScCallStep, - result_handler: RH, + step_wrapper: StepWrapper, ScCallStep, RH>, } impl<'w, From, To, Payment, Gas, RH> InteractorPrepareAsync @@ -70,18 +68,8 @@ where type Exec = InteractorCallStep<'w, RH>; fn prepare_async(self) -> Self::Exec { - let mut sc_call_step = tx_to_sc_call_step( - &self.env, - self.from, - self.to, - self.payment, - self.gas, - self.data, - ); InteractorCallStep { - world: self.env.world, - sc_call_step, - result_handler: self.result_handler, + step_wrapper: self.tx_to_step(), } } } @@ -91,11 +79,13 @@ where RH: RHListExec>, RH::ListReturns: NestedTupleFlatten, { - pub async fn run(self) -> ::Unpacked { - let mut step = self.sc_call_step; - step.expect = Some(self.result_handler.list_tx_expect()); - self.world.sc_call(&mut step).await; - process_result(step.response, self.result_handler) + pub async fn run(mut self) -> ::Unpacked { + self.step_wrapper + .env + .world + .sc_call(&mut self.step_wrapper.step) + .await; + self.step_wrapper.process_result() } } @@ -121,10 +111,11 @@ impl Interactor { let env = self.new_env_data(); let tx_base = TxBaseWithEnv::new_with_env(env); let tx = f(tx_base); - let mut step = tx_to_sc_call_step(&tx.env, tx.from, tx.to, tx.payment, tx.gas, tx.data); - step.expect = Some(tx.result_handler.list_tx_expect()); - self.sc_call(&mut step).await; - process_result(step.response, tx.result_handler); + + let mut step_wrapper = tx.tx_to_step(); + self.sc_call(&mut step_wrapper.step).await; + step_wrapper.process_result(); + self } } diff --git a/framework/snippets/src/itx/interactor_env_query.rs b/framework/snippets/src/itx/interactor_env_query.rs index 052fc8cc12..881fc6b861 100644 --- a/framework/snippets/src/itx/interactor_env_query.rs +++ b/framework/snippets/src/itx/interactor_env_query.rs @@ -9,7 +9,7 @@ use multiversx_sc_scenario::{ TxBaseWithEnv, TxEnv, TxFromSpecified, TxGas, TxPayment, TxToSpecified, }, }, - scenario_env_util::*, + scenario::tx_to_step::{StepWrapper, TxToQueryStep}, scenario_model::{ScQueryStep, TxExpect, TxResponse}, ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, ScenarioWorld, }; @@ -50,9 +50,7 @@ where RH: RHListExec>, RH::ListReturns: NestedTupleFlatten, { - world: &'w mut Interactor, - sc_query_step: ScQueryStep, - result_handler: RH, + step_wrapper: StepWrapper, ScQueryStep, RH>, } impl<'w, To, RH> InteractorPrepareAsync @@ -65,11 +63,8 @@ where type Exec = InteractorQueryStep<'w, RH>; fn prepare_async(self) -> Self::Exec { - let mut sc_query_step = tx_to_sc_query_step(&self.env, self.to, self.data); InteractorQueryStep { - world: self.env.world, - sc_query_step, - result_handler: self.result_handler, + step_wrapper: self.tx_to_query_step(), } } } @@ -79,11 +74,13 @@ where RH: RHListExec>, RH::ListReturns: NestedTupleFlatten, { - pub async fn run(self) -> ::Unpacked { - let mut step = self.sc_query_step; - step.expect = Some(self.result_handler.list_tx_expect()); - self.world.sc_query(&mut step).await; - process_result(step.response, self.result_handler) + pub async fn run(mut self) -> ::Unpacked { + self.step_wrapper + .env + .world + .sc_query(&mut self.step_wrapper.step) + .await; + self.step_wrapper.process_result() } } @@ -105,10 +102,15 @@ impl Interactor { let env = self.new_env_data(); let tx_base = TxBaseWithEnv::new_with_env(env); let tx = f(tx_base); - let mut step = tx_to_sc_query_step(&tx.env, tx.to, tx.data); - step.expect = Some(tx.result_handler.list_tx_expect()); - self.sc_query(&mut step).await; - process_result(step.response, tx.result_handler); + + let mut step_wrapper = tx.tx_to_query_step(); + self.sc_query(&mut step_wrapper.step).await; + step_wrapper.process_result(); + + // let mut step = tx_to_sc_query_step(&tx.env, tx.to, tx.data); + // step.expect = Some(tx.result_handler.list_tx_expect()); + // self.sc_query(&mut step).await; + // process_result(step.response, tx.result_handler); self } } diff --git a/framework/snippets/src/itx/interactor_env_transf.rs b/framework/snippets/src/itx/interactor_env_transf.rs index 19a161b18f..33b977dbac 100644 --- a/framework/snippets/src/itx/interactor_env_transf.rs +++ b/framework/snippets/src/itx/interactor_env_transf.rs @@ -10,7 +10,7 @@ use multiversx_sc_scenario::{ TxFromSpecified, TxGas, TxPayment, TxToSpecified, }, }, - scenario_env_util::*, + scenario::tx_to_step::{StepWrapper, TxToStep}, scenario_model::{ AddressValue, BytesValue, ScCallStep, ScDeployStep, TransferStep, TxResponse, }, @@ -20,8 +20,7 @@ use multiversx_sc_scenario::{ use crate::{Interactor, InteractorEnvExec, InteractorPrepareAsync}; pub struct InteractorTransferStep<'w> { - world: &'w mut Interactor, - step: TransferStep, + step_wrapper: StepWrapper, TransferStep, ()>, } impl<'w, From, To, Payment, Gas> InteractorPrepareAsync @@ -35,17 +34,18 @@ where type Exec = InteractorTransferStep<'w>; fn prepare_async(self) -> Self::Exec { - let mut sc_call_step = - tx_to_transfer_step(&self.env, self.from, self.to, self.payment, self.gas); InteractorTransferStep { - world: self.env.world, - step: sc_call_step, + step_wrapper: self.tx_to_step(), } } } impl<'w> InteractorTransferStep<'w> { - pub async fn run(self) { - self.world.transfer(self.step).await; + pub async fn run(mut self) { + self.step_wrapper + .env + .world + .transfer(self.step_wrapper.step) + .await; } } From 8b905afcfaf102dd8cb5c11241139b86ab68f909 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 3 Apr 2024 00:52:43 +0300 Subject: [PATCH 254/461] unified syntax - interactor refactor --- framework/snippets/src/interactor_tx.rs | 17 +++ .../src/interactor_tx/interactor_exec_call.rs | 76 +++++++++++ .../interactor_exec_deploy.rs} | 52 +++----- .../src/interactor_tx/interactor_exec_env.rs | 46 +++++++ .../src/interactor_tx/interactor_exec_step.rs | 15 +++ .../interactor_tx/interactor_exec_transf.rs | 34 +++++ .../interactor_prepare_async.rs} | 9 +- .../interactor_tx/interactor_query_call.rs | 65 ++++++++++ .../src/interactor_tx/interactor_query_env.rs | 45 +++++++ .../interactor_tx/interactor_query_step.rs | 15 +++ framework/snippets/src/itx.rs | 13 -- .../snippets/src/itx/interactor_env_exec.rs | 121 ------------------ .../snippets/src/itx/interactor_env_query.rs | 116 ----------------- .../snippets/src/itx/interactor_env_transf.rs | 51 -------- framework/snippets/src/lib.rs | 4 +- 15 files changed, 336 insertions(+), 343 deletions(-) create mode 100644 framework/snippets/src/interactor_tx.rs create mode 100644 framework/snippets/src/interactor_tx/interactor_exec_call.rs rename framework/snippets/src/{itx/interactor_env_deploy.rs => interactor_tx/interactor_exec_deploy.rs} (64%) create mode 100644 framework/snippets/src/interactor_tx/interactor_exec_env.rs create mode 100644 framework/snippets/src/interactor_tx/interactor_exec_step.rs create mode 100644 framework/snippets/src/interactor_tx/interactor_exec_transf.rs rename framework/snippets/src/{itx/interactor_env.rs => interactor_tx/interactor_prepare_async.rs} (56%) create mode 100644 framework/snippets/src/interactor_tx/interactor_query_call.rs create mode 100644 framework/snippets/src/interactor_tx/interactor_query_env.rs create mode 100644 framework/snippets/src/interactor_tx/interactor_query_step.rs delete mode 100644 framework/snippets/src/itx.rs delete mode 100644 framework/snippets/src/itx/interactor_env_exec.rs delete mode 100644 framework/snippets/src/itx/interactor_env_query.rs delete mode 100644 framework/snippets/src/itx/interactor_env_transf.rs diff --git a/framework/snippets/src/interactor_tx.rs b/framework/snippets/src/interactor_tx.rs new file mode 100644 index 0000000000..2c8bed0fda --- /dev/null +++ b/framework/snippets/src/interactor_tx.rs @@ -0,0 +1,17 @@ +#![allow(unused_imports)] // TEMP + +mod interactor_exec_call; +mod interactor_exec_deploy; +mod interactor_exec_env; +mod interactor_exec_step; +mod interactor_exec_transf; +mod interactor_prepare_async; +mod interactor_query_call; +mod interactor_query_env; +mod interactor_query_step; + +pub use interactor_exec_env::InteractorExecEnv; +pub use interactor_exec_step::InteractorExecStep; +pub use interactor_prepare_async::InteractorPrepareAsync; +pub use interactor_query_env::InteractorQueryEnv; +pub use interactor_query_step::InteractorQueryStep; diff --git a/framework/snippets/src/interactor_tx/interactor_exec_call.rs b/framework/snippets/src/interactor_tx/interactor_exec_call.rs new file mode 100644 index 0000000000..71ff47c043 --- /dev/null +++ b/framework/snippets/src/interactor_tx/interactor_exec_call.rs @@ -0,0 +1,76 @@ +use multiversx_sc_scenario::{ + api::StaticApi, + multiversx_sc::{ + tuple_util::NestedTupleFlatten, + types::{ + FunctionCall, RHListExec, Tx, TxBaseWithEnv, TxFromSpecified, TxGas, TxPayment, + TxToSpecified, + }, + }, + scenario::tx_to_step::TxToStep, + scenario_model::{ScCallStep, TxResponse}, + ScenarioTxEnvData, +}; + +use crate::Interactor; + +use super::{InteractorExecEnv, InteractorExecStep, InteractorPrepareAsync}; + +impl<'w, From, To, Payment, Gas, RH> InteractorPrepareAsync + for Tx, From, To, Payment, Gas, FunctionCall, RH> +where + From: TxFromSpecified>, + To: TxToSpecified>, + Payment: TxPayment>, + Gas: TxGas>, + RH: RHListExec>, + RH::ListReturns: NestedTupleFlatten, +{ + type Exec = InteractorExecStep<'w, ScCallStep, RH>; + + fn prepare_async(self) -> Self::Exec { + InteractorExecStep { + step_wrapper: self.tx_to_step(), + } + } +} + +impl<'w, RH> InteractorExecStep<'w, ScCallStep, RH> +where + RH: RHListExec>, + RH::ListReturns: NestedTupleFlatten, +{ + pub async fn run(mut self) -> ::Unpacked { + self.step_wrapper + .env + .world + .sc_call(&mut self.step_wrapper.step) + .await; + self.step_wrapper.process_result() + } +} + +impl Interactor { + pub async fn chain_call(&mut self, f: F) -> &mut Self + where + From: TxFromSpecified, + To: TxToSpecified, + Payment: TxPayment, + Gas: TxGas, + RH: RHListExec, + F: FnOnce( + TxBaseWithEnv, + ) + -> Tx, RH>, + { + let env = self.new_env_data(); + let tx_base = TxBaseWithEnv::new_with_env(env); + let tx = f(tx_base); + + let mut step_wrapper = tx.tx_to_step(); + self.sc_call(&mut step_wrapper.step).await; + step_wrapper.process_result(); + + self + } +} diff --git a/framework/snippets/src/itx/interactor_env_deploy.rs b/framework/snippets/src/interactor_tx/interactor_exec_deploy.rs similarity index 64% rename from framework/snippets/src/itx/interactor_env_deploy.rs rename to framework/snippets/src/interactor_tx/interactor_exec_deploy.rs index bf5e8e61bc..30e30a34ab 100644 --- a/framework/snippets/src/itx/interactor_env_deploy.rs +++ b/framework/snippets/src/interactor_tx/interactor_exec_deploy.rs @@ -1,62 +1,50 @@ -use std::path::PathBuf; - use multiversx_sc_scenario::{ - api::StaticApi, multiversx_sc::{ tuple_util::NestedTupleFlatten, types::{ - AnnotatedValue, Code, DeployCall, FunctionCall, ManagedAddress, ManagedBuffer, - RHListExec, Tx, TxBaseWithEnv, TxCodeSource, TxCodeSourceSpecified, TxCodeValue, TxEnv, - TxFromSpecified, TxGas, TxPayment, TxToSpecified, + Code, DeployCall, RHListExec, Tx, TxBaseWithEnv, TxCodeValue, TxFromSpecified, TxGas, + TxPayment, }, }, - scenario::tx_to_step::{StepWrapper, TxToStep}, - scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep, TxResponse}, - ScenarioEnvExec, ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, ScenarioWorld, + scenario::tx_to_step::TxToStep, + scenario_model::{ScDeployStep, TxResponse}, + ScenarioTxEnvData, }; -use crate::{Interactor, InteractorPrepareAsync}; - -use super::InteractorEnvExec; +use crate::Interactor; -pub struct InteractorDeployStep<'w, RH> -where - RH: RHListExec>, - RH::ListReturns: NestedTupleFlatten, -{ - step_wrapper: StepWrapper, ScDeployStep, RH>, -} +use super::{InteractorExecEnv, InteractorExecStep, InteractorPrepareAsync}; impl<'w, From, Payment, Gas, CodeValue, RH> InteractorPrepareAsync for Tx< - InteractorEnvExec<'w>, + InteractorExecEnv<'w>, From, (), Payment, Gas, - DeployCall, Code>, + DeployCall, Code>, RH, > where - From: TxFromSpecified>, - Payment: TxPayment>, - Gas: TxGas>, - CodeValue: TxCodeValue>, - RH: RHListExec>, + From: TxFromSpecified>, + Payment: TxPayment>, + Gas: TxGas>, + CodeValue: TxCodeValue>, + RH: RHListExec>, RH::ListReturns: NestedTupleFlatten, { - type Exec = InteractorDeployStep<'w, RH>; + type Exec = InteractorExecStep<'w, ScDeployStep, RH>; fn prepare_async(self) -> Self::Exec { - InteractorDeployStep { + InteractorExecStep { step_wrapper: self.tx_to_step(), } } } -impl<'w, RH> InteractorDeployStep<'w, RH> +impl<'w, RH> InteractorExecStep<'w, ScDeployStep, RH> where - RH: RHListExec>, + RH: RHListExec>, RH::ListReturns: NestedTupleFlatten, { pub async fn run(mut self) -> ::Unpacked { @@ -94,7 +82,7 @@ impl Interactor { let tx = f(tx_base); let mut step_wrapper = tx.tx_to_step(); - self.sc_deploy(&mut step_wrapper.step); + self.sc_deploy(&mut step_wrapper.step).await; step_wrapper.process_result(); self @@ -128,7 +116,7 @@ impl Interactor { let tx = f(tx_base); let mut step_wrapper = tx.tx_to_step(); - self.sc_deploy(&mut step_wrapper.step); + self.sc_deploy(&mut step_wrapper.step).await; step_wrapper.process_result() } } diff --git a/framework/snippets/src/interactor_tx/interactor_exec_env.rs b/framework/snippets/src/interactor_tx/interactor_exec_env.rs new file mode 100644 index 0000000000..935164f7eb --- /dev/null +++ b/framework/snippets/src/interactor_tx/interactor_exec_env.rs @@ -0,0 +1,46 @@ +use multiversx_sc_scenario::{ + api::StaticApi, + multiversx_sc::types::{ManagedAddress, ManagedBuffer, Tx, TxBaseWithEnv, TxEnv}, + scenario_model::TxExpect, + ScenarioTxEnv, ScenarioTxEnvData, +}; + +use crate::Interactor; + +impl Interactor { + pub fn tx(&mut self) -> TxBaseWithEnv> { + let data = self.new_env_data(); + let env = InteractorExecEnv { world: self, data }; + Tx::new_with_env(env) + } +} + +/// Environment for executing transactions. +pub struct InteractorExecEnv<'w> { + pub world: &'w mut Interactor, + pub data: ScenarioTxEnvData, +} + +impl<'w> TxEnv for InteractorExecEnv<'w> { + type Api = StaticApi; + + type RHExpect = TxExpect; + + fn resolve_sender_address(&self) -> ManagedAddress { + panic!("Explicit sender address expected") + } + + fn default_gas_annotation(&self) -> ManagedBuffer { + self.data.default_gas_annotation() + } + + fn default_gas_value(&self) -> u64 { + self.data.default_gas_value() + } +} + +impl<'w> ScenarioTxEnv for InteractorExecEnv<'w> { + fn env_data(&self) -> &ScenarioTxEnvData { + &self.data + } +} diff --git a/framework/snippets/src/interactor_tx/interactor_exec_step.rs b/framework/snippets/src/interactor_tx/interactor_exec_step.rs new file mode 100644 index 0000000000..3becfe81d9 --- /dev/null +++ b/framework/snippets/src/interactor_tx/interactor_exec_step.rs @@ -0,0 +1,15 @@ +use multiversx_sc_scenario::{ + multiversx_sc::{tuple_util::NestedTupleFlatten, types::RHListExec}, + scenario::tx_to_step::StepWrapper, + scenario_model::TxResponse, +}; + +use super::InteractorExecEnv; + +pub struct InteractorExecStep<'w, Step, RH> +where + RH: RHListExec>, + RH::ListReturns: NestedTupleFlatten, +{ + pub(crate) step_wrapper: StepWrapper, Step, RH>, +} diff --git a/framework/snippets/src/interactor_tx/interactor_exec_transf.rs b/framework/snippets/src/interactor_tx/interactor_exec_transf.rs new file mode 100644 index 0000000000..a19d54548d --- /dev/null +++ b/framework/snippets/src/interactor_tx/interactor_exec_transf.rs @@ -0,0 +1,34 @@ +use multiversx_sc_scenario::{ + multiversx_sc::types::{Tx, TxFromSpecified, TxGas, TxPayment, TxToSpecified}, + scenario::tx_to_step::TxToStep, + scenario_model::TransferStep, +}; + +use super::{InteractorExecEnv, InteractorExecStep, InteractorPrepareAsync}; + +impl<'w, From, To, Payment, Gas> InteractorPrepareAsync + for Tx, From, To, Payment, Gas, (), ()> +where + From: TxFromSpecified>, + To: TxToSpecified>, + Payment: TxPayment>, + Gas: TxGas>, +{ + type Exec = InteractorExecStep<'w, TransferStep, ()>; + + fn prepare_async(self) -> Self::Exec { + InteractorExecStep { + step_wrapper: self.tx_to_step(), + } + } +} + +impl<'w> InteractorExecStep<'w, TransferStep, ()> { + pub async fn run(self) { + self.step_wrapper + .env + .world + .transfer(self.step_wrapper.step) + .await; + } +} diff --git a/framework/snippets/src/itx/interactor_env.rs b/framework/snippets/src/interactor_tx/interactor_prepare_async.rs similarity index 56% rename from framework/snippets/src/itx/interactor_env.rs rename to framework/snippets/src/interactor_tx/interactor_prepare_async.rs index 521389a713..167c7d9f27 100644 --- a/framework/snippets/src/itx/interactor_env.rs +++ b/framework/snippets/src/interactor_tx/interactor_prepare_async.rs @@ -1,11 +1,4 @@ -use std::path::PathBuf; - -use multiversx_sc_scenario::{ - api::StaticApi, - multiversx_sc::types::{AnnotatedValue, ManagedAddress, TxBaseWithEnv, TxEnv}, - scenario_model::TxResponse, - ScenarioTxEnvData, ScenarioWorld, -}; +use multiversx_sc_scenario::ScenarioTxEnvData; use crate::Interactor; diff --git a/framework/snippets/src/interactor_tx/interactor_query_call.rs b/framework/snippets/src/interactor_tx/interactor_query_call.rs new file mode 100644 index 0000000000..55421743c5 --- /dev/null +++ b/framework/snippets/src/interactor_tx/interactor_query_call.rs @@ -0,0 +1,65 @@ +use multiversx_sc_scenario::{ + api::StaticApi, + multiversx_sc::{ + tuple_util::NestedTupleFlatten, + types::{FunctionCall, RHListExec, Tx, TxBaseWithEnv, TxToSpecified}, + }, + scenario::tx_to_step::TxToQueryStep, + scenario_model::TxResponse, + ScenarioTxEnvData, +}; + +use crate::Interactor; + +use super::{InteractorPrepareAsync, InteractorQueryEnv, InteractorQueryStep}; + +impl<'w, To, RH> InteractorPrepareAsync + for Tx, (), To, (), (), FunctionCall, RH> +where + To: TxToSpecified>, + RH: RHListExec>, + RH::ListReturns: NestedTupleFlatten, +{ + type Exec = InteractorQueryStep<'w, RH>; + + fn prepare_async(self) -> Self::Exec { + InteractorQueryStep { + step_wrapper: self.tx_to_query_step(), + } + } +} + +impl<'w, RH> InteractorQueryStep<'w, RH> +where + RH: RHListExec>, + RH::ListReturns: NestedTupleFlatten, +{ + pub async fn run(mut self) -> ::Unpacked { + self.step_wrapper + .env + .world + .sc_query(&mut self.step_wrapper.step) + .await; + self.step_wrapper.process_result() + } +} + +impl Interactor { + pub async fn chain_query(&mut self, f: F) -> &mut Self + where + To: TxToSpecified, + RH: RHListExec, + F: FnOnce( + TxBaseWithEnv, + ) -> Tx, RH>, + { + let env = self.new_env_data(); + let tx_base = TxBaseWithEnv::new_with_env(env); + let tx = f(tx_base); + + let mut step_wrapper = tx.tx_to_query_step(); + self.sc_query(&mut step_wrapper.step).await; + step_wrapper.process_result(); + self + } +} diff --git a/framework/snippets/src/interactor_tx/interactor_query_env.rs b/framework/snippets/src/interactor_tx/interactor_query_env.rs new file mode 100644 index 0000000000..1fa1142111 --- /dev/null +++ b/framework/snippets/src/interactor_tx/interactor_query_env.rs @@ -0,0 +1,45 @@ +use multiversx_sc_scenario::{ + api::StaticApi, + multiversx_sc::types::{ManagedAddress, ManagedBuffer, Tx, TxBaseWithEnv, TxEnv}, + scenario_model::TxExpect, + ScenarioTxEnv, ScenarioTxEnvData, +}; + +use crate::Interactor; + +impl Interactor { + pub fn query(&mut self) -> TxBaseWithEnv> { + let data = self.new_env_data(); + let env = InteractorQueryEnv { world: self, data }; + Tx::new_with_env(env) + } +} + +pub struct InteractorQueryEnv<'w> { + pub world: &'w mut Interactor, + pub data: ScenarioTxEnvData, +} + +impl<'w> TxEnv for InteractorQueryEnv<'w> { + type Api = StaticApi; + + type RHExpect = TxExpect; + + fn resolve_sender_address(&self) -> ManagedAddress { + panic!("Explicit sender address expected") + } + + fn default_gas_annotation(&self) -> ManagedBuffer { + self.data.default_gas_annotation() + } + + fn default_gas_value(&self) -> u64 { + self.data.default_gas_value() + } +} + +impl<'w> ScenarioTxEnv for InteractorQueryEnv<'w> { + fn env_data(&self) -> &ScenarioTxEnvData { + &self.data + } +} diff --git a/framework/snippets/src/interactor_tx/interactor_query_step.rs b/framework/snippets/src/interactor_tx/interactor_query_step.rs new file mode 100644 index 0000000000..81c7542add --- /dev/null +++ b/framework/snippets/src/interactor_tx/interactor_query_step.rs @@ -0,0 +1,15 @@ +use multiversx_sc_scenario::{ + multiversx_sc::{tuple_util::NestedTupleFlatten, types::RHListExec}, + scenario::tx_to_step::StepWrapper, + scenario_model::{ScQueryStep, TxResponse}, +}; + +use super::InteractorQueryEnv; + +pub struct InteractorQueryStep<'w, RH> +where + RH: RHListExec>, + RH::ListReturns: NestedTupleFlatten, +{ + pub(crate) step_wrapper: StepWrapper, ScQueryStep, RH>, +} diff --git a/framework/snippets/src/itx.rs b/framework/snippets/src/itx.rs deleted file mode 100644 index 8cef20e699..0000000000 --- a/framework/snippets/src/itx.rs +++ /dev/null @@ -1,13 +0,0 @@ -#![allow(unused)] // TEMP - -mod interactor_env; -mod interactor_env_deploy; -mod interactor_env_exec; -mod interactor_env_query; -mod interactor_env_transf; - -pub use interactor_env::*; -pub use interactor_env_deploy::*; -pub use interactor_env_exec::InteractorEnvExec; -pub use interactor_env_query::InteractorEnvQuery; -pub use interactor_env_transf::*; diff --git a/framework/snippets/src/itx/interactor_env_exec.rs b/framework/snippets/src/itx/interactor_env_exec.rs deleted file mode 100644 index 8e6b4dc69c..0000000000 --- a/framework/snippets/src/itx/interactor_env_exec.rs +++ /dev/null @@ -1,121 +0,0 @@ -use std::path::PathBuf; - -use multiversx_sc_scenario::{ - api::StaticApi, - multiversx_sc::{ - tuple_util::NestedTupleFlatten, - types::{ - AnnotatedValue, Code, DeployCall, FunctionCall, ManagedAddress, ManagedBuffer, - RHListExec, Tx, TxBaseWithEnv, TxCodeSource, TxCodeSourceSpecified, TxCodeValue, TxEnv, - TxFromSpecified, TxGas, TxPayment, TxToSpecified, - }, - }, - scenario::tx_to_step::{StepWrapper, TxToStep}, - scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep, TxExpect, TxResponse}, - ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, ScenarioWorld, -}; - -use crate::{Interactor, InteractorPrepareAsync}; - -/// Environment for executing transactions. -pub struct InteractorEnvExec<'w> { - pub world: &'w mut Interactor, - pub data: ScenarioTxEnvData, -} - -impl<'w> TxEnv for InteractorEnvExec<'w> { - type Api = StaticApi; - - type RHExpect = TxExpect; - - fn resolve_sender_address(&self) -> ManagedAddress { - panic!("Explicit sender address expected") - } - - fn default_gas_annotation(&self) -> ManagedBuffer { - self.data.default_gas_annotation() - } - - fn default_gas_value(&self) -> u64 { - self.data.default_gas_value() - } -} - -impl<'w> ScenarioTxEnv for InteractorEnvExec<'w> { - fn env_data(&self) -> &ScenarioTxEnvData { - &self.data - } -} - -pub struct InteractorCallStep<'w, RH> -where - RH: RHListExec>, - RH::ListReturns: NestedTupleFlatten, -{ - step_wrapper: StepWrapper, ScCallStep, RH>, -} - -impl<'w, From, To, Payment, Gas, RH> InteractorPrepareAsync - for Tx, From, To, Payment, Gas, FunctionCall, RH> -where - From: TxFromSpecified>, - To: TxToSpecified>, - Payment: TxPayment>, - Gas: TxGas>, - RH: RHListExec>, - RH::ListReturns: NestedTupleFlatten, -{ - type Exec = InteractorCallStep<'w, RH>; - - fn prepare_async(self) -> Self::Exec { - InteractorCallStep { - step_wrapper: self.tx_to_step(), - } - } -} - -impl<'w, RH> InteractorCallStep<'w, RH> -where - RH: RHListExec>, - RH::ListReturns: NestedTupleFlatten, -{ - pub async fn run(mut self) -> ::Unpacked { - self.step_wrapper - .env - .world - .sc_call(&mut self.step_wrapper.step) - .await; - self.step_wrapper.process_result() - } -} - -impl Interactor { - pub fn tx(&mut self) -> TxBaseWithEnv> { - let data = self.new_env_data(); - let env = InteractorEnvExec { world: self, data }; - Tx::new_with_env(env) - } - - pub async fn chain_call(&mut self, f: F) -> &mut Self - where - From: TxFromSpecified, - To: TxToSpecified, - Payment: TxPayment, - Gas: TxGas, - RH: RHListExec, - F: FnOnce( - TxBaseWithEnv, - ) - -> Tx, RH>, - { - let env = self.new_env_data(); - let tx_base = TxBaseWithEnv::new_with_env(env); - let tx = f(tx_base); - - let mut step_wrapper = tx.tx_to_step(); - self.sc_call(&mut step_wrapper.step).await; - step_wrapper.process_result(); - - self - } -} diff --git a/framework/snippets/src/itx/interactor_env_query.rs b/framework/snippets/src/itx/interactor_env_query.rs deleted file mode 100644 index 881fc6b861..0000000000 --- a/framework/snippets/src/itx/interactor_env_query.rs +++ /dev/null @@ -1,116 +0,0 @@ -use std::path::PathBuf; - -use multiversx_sc_scenario::{ - api::StaticApi, - multiversx_sc::{ - tuple_util::NestedTupleFlatten, - types::{ - AnnotatedValue, FunctionCall, ManagedAddress, ManagedBuffer, RHListExec, Tx, - TxBaseWithEnv, TxEnv, TxFromSpecified, TxGas, TxPayment, TxToSpecified, - }, - }, - scenario::tx_to_step::{StepWrapper, TxToQueryStep}, - scenario_model::{ScQueryStep, TxExpect, TxResponse}, - ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, ScenarioWorld, -}; - -use crate::{Interactor, InteractorPrepareAsync}; - -pub struct InteractorEnvQuery<'w> { - pub world: &'w mut Interactor, - pub data: ScenarioTxEnvData, -} - -impl<'w> TxEnv for InteractorEnvQuery<'w> { - type Api = StaticApi; - - type RHExpect = TxExpect; - - fn resolve_sender_address(&self) -> ManagedAddress { - panic!("Explicit sender address expected") - } - - fn default_gas_annotation(&self) -> ManagedBuffer { - self.data.default_gas_annotation() - } - - fn default_gas_value(&self) -> u64 { - self.data.default_gas_value() - } -} - -impl<'w> ScenarioTxEnv for InteractorEnvQuery<'w> { - fn env_data(&self) -> &ScenarioTxEnvData { - &self.data - } -} - -pub struct InteractorQueryStep<'w, RH> -where - RH: RHListExec>, - RH::ListReturns: NestedTupleFlatten, -{ - step_wrapper: StepWrapper, ScQueryStep, RH>, -} - -impl<'w, To, RH> InteractorPrepareAsync - for Tx, (), To, (), (), FunctionCall, RH> -where - To: TxToSpecified>, - RH: RHListExec>, - RH::ListReturns: NestedTupleFlatten, -{ - type Exec = InteractorQueryStep<'w, RH>; - - fn prepare_async(self) -> Self::Exec { - InteractorQueryStep { - step_wrapper: self.tx_to_query_step(), - } - } -} - -impl<'w, RH> InteractorQueryStep<'w, RH> -where - RH: RHListExec>, - RH::ListReturns: NestedTupleFlatten, -{ - pub async fn run(mut self) -> ::Unpacked { - self.step_wrapper - .env - .world - .sc_query(&mut self.step_wrapper.step) - .await; - self.step_wrapper.process_result() - } -} - -impl Interactor { - pub fn query(&mut self) -> TxBaseWithEnv> { - let data = self.new_env_data(); - let env = InteractorEnvQuery { world: self, data }; - Tx::new_with_env(env) - } - - pub async fn chain_query(&mut self, f: F) -> &mut Self - where - To: TxToSpecified, - RH: RHListExec, - F: FnOnce( - TxBaseWithEnv, - ) -> Tx, RH>, - { - let env = self.new_env_data(); - let tx_base = TxBaseWithEnv::new_with_env(env); - let tx = f(tx_base); - - let mut step_wrapper = tx.tx_to_query_step(); - self.sc_query(&mut step_wrapper.step).await; - step_wrapper.process_result(); - - // let mut step = tx_to_sc_query_step(&tx.env, tx.to, tx.data); - // step.expect = Some(tx.result_handler.list_tx_expect()); - // self.sc_query(&mut step).await; - // process_result(step.response, tx.result_handler); - self - } -} diff --git a/framework/snippets/src/itx/interactor_env_transf.rs b/framework/snippets/src/itx/interactor_env_transf.rs deleted file mode 100644 index 33b977dbac..0000000000 --- a/framework/snippets/src/itx/interactor_env_transf.rs +++ /dev/null @@ -1,51 +0,0 @@ -use std::path::PathBuf; - -use multiversx_sc_scenario::{ - api::StaticApi, - multiversx_sc::{ - tuple_util::NestedTupleFlatten, - types::{ - AnnotatedValue, Code, DeployCall, FunctionCall, ManagedAddress, ManagedBuffer, Tx, - TxBaseWithEnv, TxCodeSource, TxCodeSourceSpecified, TxCodeValue, TxEnv, - TxFromSpecified, TxGas, TxPayment, TxToSpecified, - }, - }, - scenario::tx_to_step::{StepWrapper, TxToStep}, - scenario_model::{ - AddressValue, BytesValue, ScCallStep, ScDeployStep, TransferStep, TxResponse, - }, - ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, ScenarioWorld, -}; - -use crate::{Interactor, InteractorEnvExec, InteractorPrepareAsync}; - -pub struct InteractorTransferStep<'w> { - step_wrapper: StepWrapper, TransferStep, ()>, -} - -impl<'w, From, To, Payment, Gas> InteractorPrepareAsync - for Tx, From, To, Payment, Gas, (), ()> -where - From: TxFromSpecified>, - To: TxToSpecified>, - Payment: TxPayment>, - Gas: TxGas>, -{ - type Exec = InteractorTransferStep<'w>; - - fn prepare_async(self) -> Self::Exec { - InteractorTransferStep { - step_wrapper: self.tx_to_step(), - } - } -} - -impl<'w> InteractorTransferStep<'w> { - pub async fn run(mut self) { - self.step_wrapper - .env - .world - .transfer(self.step_wrapper.step) - .await; - } -} diff --git a/framework/snippets/src/lib.rs b/framework/snippets/src/lib.rs index 9bf2c07e33..1a30aaa23a 100644 --- a/framework/snippets/src/lib.rs +++ b/framework/snippets/src/lib.rs @@ -8,9 +8,9 @@ mod interactor_sc_deploy; mod interactor_sc_extra; mod interactor_sc_transfer; mod interactor_sender; +mod interactor_tx; mod interactor_tx_spec; mod interactor_vm_query; -mod itx; mod step_buffer; pub use env_logger; @@ -18,8 +18,8 @@ pub use hex; pub use interactor::*; pub use interactor_dns::*; pub use interactor_sender::*; +pub use interactor_tx::*; pub use interactor_tx_spec::*; -pub use itx::*; pub use log; pub use multiversx_sc_scenario::{self, multiversx_sc}; pub use multiversx_sdk as erdrs; // TODO: remove From 00b390f08533568f44e45f9c5ba83dfbd0e95308 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 3 Apr 2024 01:41:11 +0300 Subject: [PATCH 255/461] interactor refactor --- framework/snippets/src/interactor_multi_sc_exec.rs | 8 ++++---- .../{interactor_tx_spec.rs => interactor_step.rs} | 13 +++++++------ framework/snippets/src/lib.rs | 4 ++-- framework/snippets/src/step_buffer.rs | 6 +++--- 4 files changed, 16 insertions(+), 15 deletions(-) rename framework/snippets/src/{interactor_tx_spec.rs => interactor_step.rs} (79%) diff --git a/framework/snippets/src/interactor_multi_sc_exec.rs b/framework/snippets/src/interactor_multi_sc_exec.rs index b8035fbae6..08c4f9c6cd 100644 --- a/framework/snippets/src/interactor_multi_sc_exec.rs +++ b/framework/snippets/src/interactor_multi_sc_exec.rs @@ -1,6 +1,6 @@ use crate::{ interactor_multi_sc_process::{update_nonces_and_sign_tx, SenderSet, Txs}, - Interactor, StepBuffer, TransactionSpec, + Interactor, InteractorStep, StepBuffer, }; use multiversx_sc_scenario::scenario_model::TxResponse; @@ -32,7 +32,7 @@ impl Interactor { for sc_call_step in &mut buffer.refs { let mut transaction = sc_call_step.to_transaction(self); - let sender_address = &sc_call_step.to_address().value; + let sender_address = &sc_call_step.sender_address().value; let sender = self .sender_map .get_mut(sender_address) @@ -45,11 +45,11 @@ impl Interactor { } } -fn retrieve_senders(sc_call_steps: &[&mut dyn TransactionSpec]) -> SenderSet { +fn retrieve_senders(sc_call_steps: &[&mut dyn InteractorStep]) -> SenderSet { let mut senders = SenderSet::new(); for sc_call_step in sc_call_steps { - let sender_address = &sc_call_step.to_address().value; + let sender_address = &sc_call_step.sender_address().value; senders.insert(sender_address.clone()); } senders diff --git a/framework/snippets/src/interactor_tx_spec.rs b/framework/snippets/src/interactor_step.rs similarity index 79% rename from framework/snippets/src/interactor_tx_spec.rs rename to framework/snippets/src/interactor_step.rs index 7463d37c5e..be172bbb82 100644 --- a/framework/snippets/src/interactor_tx_spec.rs +++ b/framework/snippets/src/interactor_step.rs @@ -6,22 +6,23 @@ use multiversx_sdk::data::transaction::Transaction; use crate::Interactor; -pub trait TransactionSpec { +/// Describes a scenario step that can be executed in an interactor. +pub trait InteractorStep { fn to_transaction(&self, interactor: &Interactor) -> Transaction; - fn to_address(&self) -> &AddressValue; + fn sender_address(&self) -> &AddressValue; fn run_step(&mut self, step_runner: &mut dyn ScenarioRunner); fn set_response(&mut self, tx_response: TxResponse); } -impl TransactionSpec for ScCallStep { +impl InteractorStep for ScCallStep { fn to_transaction(&self, interactor: &Interactor) -> Transaction { interactor.tx_call_to_blockchain_tx(&self.tx) } - fn to_address(&self) -> &AddressValue { + fn sender_address(&self) -> &AddressValue { &self.tx.from } @@ -35,12 +36,12 @@ impl TransactionSpec for ScCallStep { } } -impl TransactionSpec for ScDeployStep { +impl InteractorStep for ScDeployStep { fn to_transaction(&self, interactor: &Interactor) -> Transaction { interactor.sc_deploy_to_blockchain_tx(self) } - fn to_address(&self) -> &AddressValue { + fn sender_address(&self) -> &AddressValue { &self.tx.from } diff --git a/framework/snippets/src/lib.rs b/framework/snippets/src/lib.rs index 1a30aaa23a..e05bbf5f01 100644 --- a/framework/snippets/src/lib.rs +++ b/framework/snippets/src/lib.rs @@ -8,8 +8,8 @@ mod interactor_sc_deploy; mod interactor_sc_extra; mod interactor_sc_transfer; mod interactor_sender; +mod interactor_step; mod interactor_tx; -mod interactor_tx_spec; mod interactor_vm_query; mod step_buffer; @@ -18,8 +18,8 @@ pub use hex; pub use interactor::*; pub use interactor_dns::*; pub use interactor_sender::*; +pub use interactor_step::InteractorStep; pub use interactor_tx::*; -pub use interactor_tx_spec::*; pub use log; pub use multiversx_sc_scenario::{self, multiversx_sc}; pub use multiversx_sdk as erdrs; // TODO: remove diff --git a/framework/snippets/src/step_buffer.rs b/framework/snippets/src/step_buffer.rs index f4956ff3a0..529b790ff5 100644 --- a/framework/snippets/src/step_buffer.rs +++ b/framework/snippets/src/step_buffer.rs @@ -1,10 +1,10 @@ use multiversx_sc_scenario::scenario_model::{ScCallStep, ScDeployStep}; -use crate::TransactionSpec; +use crate::InteractorStep; #[derive(Default)] pub struct StepBuffer<'a> { - pub refs: Vec<&'a mut dyn TransactionSpec>, + pub refs: Vec<&'a mut dyn InteractorStep>, } impl<'a> StepBuffer<'a> { @@ -54,7 +54,7 @@ impl<'a> StepBuffer<'a> { buffer } - pub fn to_refs_vec(&'a self) -> Vec<&'a dyn TransactionSpec> { + pub fn to_refs_vec(&'a self) -> Vec<&'a dyn InteractorStep> { self.refs.iter().map(|r| &**r).collect() } } From 43934fd9ec5810ff2431351875ac193e2811ca07 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 3 Apr 2024 01:58:34 +0300 Subject: [PATCH 256/461] interactor refactor --- framework/snippets/src/interactor_scenario.rs | 5 +++++ .../interactor_sc_call.rs | 0 .../interactor_sc_deploy.rs | 0 .../interactor_sc_extra.rs | 0 .../interactor_transfer.rs} | 0 .../interactor_vm_query.rs | 0 framework/snippets/src/lib.rs | 14 +++----------- framework/snippets/src/multi.rs | 7 +++++++ .../src/{ => multi}/interactor_multi_sc_exec.rs | 7 ++----- .../src/{ => multi}/interactor_multi_sc_process.rs | 0 .../snippets/src/{ => multi}/interactor_step.rs | 0 framework/snippets/src/{ => multi}/step_buffer.rs | 0 12 files changed, 17 insertions(+), 16 deletions(-) create mode 100644 framework/snippets/src/interactor_scenario.rs rename framework/snippets/src/{ => interactor_scenario}/interactor_sc_call.rs (100%) rename framework/snippets/src/{ => interactor_scenario}/interactor_sc_deploy.rs (100%) rename framework/snippets/src/{ => interactor_scenario}/interactor_sc_extra.rs (100%) rename framework/snippets/src/{interactor_sc_transfer.rs => interactor_scenario/interactor_transfer.rs} (100%) rename framework/snippets/src/{ => interactor_scenario}/interactor_vm_query.rs (100%) create mode 100644 framework/snippets/src/multi.rs rename framework/snippets/src/{ => multi}/interactor_multi_sc_exec.rs (92%) rename framework/snippets/src/{ => multi}/interactor_multi_sc_process.rs (100%) rename framework/snippets/src/{ => multi}/interactor_step.rs (100%) rename framework/snippets/src/{ => multi}/step_buffer.rs (100%) diff --git a/framework/snippets/src/interactor_scenario.rs b/framework/snippets/src/interactor_scenario.rs new file mode 100644 index 0000000000..8449bf9edc --- /dev/null +++ b/framework/snippets/src/interactor_scenario.rs @@ -0,0 +1,5 @@ +mod interactor_sc_call; +mod interactor_sc_deploy; +mod interactor_sc_extra; +mod interactor_transfer; +mod interactor_vm_query; diff --git a/framework/snippets/src/interactor_sc_call.rs b/framework/snippets/src/interactor_scenario/interactor_sc_call.rs similarity index 100% rename from framework/snippets/src/interactor_sc_call.rs rename to framework/snippets/src/interactor_scenario/interactor_sc_call.rs diff --git a/framework/snippets/src/interactor_sc_deploy.rs b/framework/snippets/src/interactor_scenario/interactor_sc_deploy.rs similarity index 100% rename from framework/snippets/src/interactor_sc_deploy.rs rename to framework/snippets/src/interactor_scenario/interactor_sc_deploy.rs diff --git a/framework/snippets/src/interactor_sc_extra.rs b/framework/snippets/src/interactor_scenario/interactor_sc_extra.rs similarity index 100% rename from framework/snippets/src/interactor_sc_extra.rs rename to framework/snippets/src/interactor_scenario/interactor_sc_extra.rs diff --git a/framework/snippets/src/interactor_sc_transfer.rs b/framework/snippets/src/interactor_scenario/interactor_transfer.rs similarity index 100% rename from framework/snippets/src/interactor_sc_transfer.rs rename to framework/snippets/src/interactor_scenario/interactor_transfer.rs diff --git a/framework/snippets/src/interactor_vm_query.rs b/framework/snippets/src/interactor_scenario/interactor_vm_query.rs similarity index 100% rename from framework/snippets/src/interactor_vm_query.rs rename to framework/snippets/src/interactor_scenario/interactor_vm_query.rs diff --git a/framework/snippets/src/lib.rs b/framework/snippets/src/lib.rs index e05bbf5f01..70f3f8e792 100644 --- a/framework/snippets/src/lib.rs +++ b/framework/snippets/src/lib.rs @@ -1,28 +1,20 @@ mod interactor; mod interactor_dns; -mod interactor_multi_sc_exec; -mod interactor_multi_sc_process; mod interactor_retrieve; -mod interactor_sc_call; -mod interactor_sc_deploy; -mod interactor_sc_extra; -mod interactor_sc_transfer; +mod interactor_scenario; mod interactor_sender; -mod interactor_step; mod interactor_tx; -mod interactor_vm_query; -mod step_buffer; +mod multi; pub use env_logger; pub use hex; pub use interactor::*; pub use interactor_dns::*; pub use interactor_sender::*; -pub use interactor_step::InteractorStep; pub use interactor_tx::*; pub use log; +pub use multi::*; pub use multiversx_sc_scenario::{self, multiversx_sc}; pub use multiversx_sdk as erdrs; // TODO: remove pub use multiversx_sdk as sdk; -pub use step_buffer::*; pub use tokio; diff --git a/framework/snippets/src/multi.rs b/framework/snippets/src/multi.rs new file mode 100644 index 0000000000..0353b8931b --- /dev/null +++ b/framework/snippets/src/multi.rs @@ -0,0 +1,7 @@ +mod interactor_multi_sc_exec; +mod interactor_multi_sc_process; +mod interactor_step; +mod step_buffer; + +pub use interactor_step::InteractorStep; +pub use step_buffer::StepBuffer; diff --git a/framework/snippets/src/interactor_multi_sc_exec.rs b/framework/snippets/src/multi/interactor_multi_sc_exec.rs similarity index 92% rename from framework/snippets/src/interactor_multi_sc_exec.rs rename to framework/snippets/src/multi/interactor_multi_sc_exec.rs index 08c4f9c6cd..d99df9c807 100644 --- a/framework/snippets/src/interactor_multi_sc_exec.rs +++ b/framework/snippets/src/multi/interactor_multi_sc_exec.rs @@ -1,8 +1,5 @@ -use crate::{ - interactor_multi_sc_process::{update_nonces_and_sign_tx, SenderSet, Txs}, - Interactor, InteractorStep, StepBuffer, -}; - +use super::interactor_multi_sc_process::{update_nonces_and_sign_tx, SenderSet, Txs}; +use crate::{Interactor, InteractorStep, StepBuffer}; use multiversx_sc_scenario::scenario_model::TxResponse; use multiversx_sdk::data::transaction::Transaction; diff --git a/framework/snippets/src/interactor_multi_sc_process.rs b/framework/snippets/src/multi/interactor_multi_sc_process.rs similarity index 100% rename from framework/snippets/src/interactor_multi_sc_process.rs rename to framework/snippets/src/multi/interactor_multi_sc_process.rs diff --git a/framework/snippets/src/interactor_step.rs b/framework/snippets/src/multi/interactor_step.rs similarity index 100% rename from framework/snippets/src/interactor_step.rs rename to framework/snippets/src/multi/interactor_step.rs diff --git a/framework/snippets/src/step_buffer.rs b/framework/snippets/src/multi/step_buffer.rs similarity index 100% rename from framework/snippets/src/step_buffer.rs rename to framework/snippets/src/multi/step_buffer.rs From 62fafc9bea04dd736aeef747b63dd879e2d35e84 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 3 Apr 2024 03:40:23 +0300 Subject: [PATCH 257/461] unified syntax - interactor multi tx --- contracts/examples/adder/interact/config.toml | 2 +- .../adder/interact/src/basic_interact.rs | 44 +++++-------- .../interact/src/basic_interact_state.rs | 9 --- .../interact/src/multisig_interact.rs | 49 +++++--------- .../interact/src/multisig_interact_state.rs | 9 --- framework/scenario/src/scenario/tx_to_step.rs | 2 +- framework/snippets/src/multi.rs | 2 + .../src/multi/homogenous_tx_buffer.rs | 65 +++++++++++++++++++ 8 files changed, 105 insertions(+), 77 deletions(-) create mode 100644 framework/snippets/src/multi/homogenous_tx_buffer.rs diff --git a/contracts/examples/adder/interact/config.toml b/contracts/examples/adder/interact/config.toml index b7fe10a560..61ac8dbf87 100644 --- a/contracts/examples/adder/interact/config.toml +++ b/contracts/examples/adder/interact/config.toml @@ -1 +1 @@ -gateway = 'https://testnet-gateway.multiversx.com' +gateway = 'https://devnet-gateway.multiversx.com' diff --git a/contracts/examples/adder/interact/src/basic_interact.rs b/contracts/examples/adder/interact/src/basic_interact.rs index 6664d030ba..9179796675 100644 --- a/contracts/examples/adder/interact/src/basic_interact.rs +++ b/contracts/examples/adder/interact/src/basic_interact.rs @@ -2,7 +2,7 @@ mod basic_interact_cli; mod basic_interact_config; mod basic_interact_state; -use adder::{adder_proxy, ProxyTrait}; +use adder::adder_proxy; use basic_interact_config::Config; use basic_interact_state::State; use clap::Parser; @@ -15,11 +15,11 @@ use multiversx_sc_snippets::{ mandos_system::ScenarioRunner, num_bigint::BigUint, scenario_format::interpret_trait::{InterpretableFrom, InterpreterContext}, - scenario_model::{BytesValue, ScDeployStep, Scenario}, + scenario_model::{BytesValue, Scenario}, standalone::retrieve_account_as_scenario_set_state, test_wallets, ContractInfo, NumExpr, WithRawTxResponse, }, - tokio, Interactor, InteractorPrepareAsync, StepBuffer, + tokio, Interactor, InteractorPrepareAsync, }; const INTERACTOR_SCENARIO_TRACE_PATH: &str = "interactor_trace.scen.json"; @@ -135,33 +135,25 @@ impl AdderInteract { self.set_state().await; println!("deploying {count} contracts..."); - let mut steps = Vec::new(); + let mut buffer = self.interactor.homogenous_call_buffer(); for _ in 0..*count { - let typed_sc_deploy = ScDeployStep::new() - .call(self.state.default_adder().init(0u32)) - .from(&self.wallet_address) - .code(&self.adder_code) - .gas_limit("70,000,000"); - - steps.push(typed_sc_deploy); + buffer.push_tx(|tx| { + tx.from(&self.wallet_address) + .typed(adder_proxy::AdderProxy) + .init(0u32) + .code(&self.adder_code) + .gas(NumExpr("70,000,000")) + .returns(ReturnsNewAddress) + }); } - self.interactor - .multi_sc_exec(StepBuffer::from_sc_deploy_vec(&mut steps)) - .await; + let results = buffer.run().await; + for result in results { + let new_address_bech32 = bech32::encode(&result.to_address()); + println!("new address: {new_address_bech32}"); - for step in steps.iter() { - // warning: multi deploy not yet fully supported - // only works with last deployed address - // will be addressed in future versions - let new_deployed_address = step.response().new_deployed_address.clone(); - if let Some(new_address) = new_deployed_address { - let new_address_bech32 = bech32::encode(&new_address); - println!("new address: {new_address_bech32}"); - } else { - println!("deploy failed"); - return; - } + let new_address_expr = format!("bech32:{new_address_bech32}"); + self.state.set_adder_address(&new_address_expr); } } diff --git a/contracts/examples/adder/interact/src/basic_interact_state.rs b/contracts/examples/adder/interact/src/basic_interact_state.rs index 445eb52075..7fe09dc0ed 100644 --- a/contracts/examples/adder/interact/src/basic_interact_state.rs +++ b/contracts/examples/adder/interact/src/basic_interact_state.rs @@ -5,10 +5,6 @@ use std::{ path::Path, }; -/// Default adder address -const DEFAULT_ADDER_ADDRESS: &str = - "0x0000000000000000000000000000000000000000000000000000000000000000"; - /// State file const STATE_FILE: &str = "state.toml"; @@ -46,11 +42,6 @@ impl State { .expect("no known adder contract, deploy first"), ) } - - /// Returns the adder contract with default address - pub fn default_adder(&self) -> AdderContract { - AdderContract::new(DEFAULT_ADDER_ADDRESS) - } } impl Drop for State { diff --git a/contracts/examples/multisig/interact/src/multisig_interact.rs b/contracts/examples/multisig/interact/src/multisig_interact.rs index 83295c0b3e..9dc46fdf44 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact.rs @@ -160,12 +160,13 @@ impl MultisigInteract { let board = self.board(); + let quorum = Config::load_config().quorum(); let new_address = self .interactor .tx() .from(&self.wallet_address) .typed(multisig_proxy::MultisigProxy) - .init(&Config::load_config().quorum(), board) + .init(quorum, board) .code(&self.multisig_code) .gas(NumExpr("100,000,000")) .returns(ReturnsNewAddress) @@ -189,40 +190,26 @@ impl MultisigInteract { println!("deploying {count} contracts..."); let board = self.board(); - let mut steps = Vec::new(); + let quorum = Config::load_config().quorum(); + let mut buffer = self.interactor.homogenous_call_buffer(); for _ in 0..*count { - let typed_sc_deploy = ScDeployStep::new() - .call( - self.state - .default_multisig() - .init(Config::load_config().quorum(), board.clone()), - ) - .from(&self.wallet_address) - .code(&self.multisig_code) - .gas_limit("70,000,000"); - - steps.push(typed_sc_deploy); + buffer.push_tx(|tx| { + tx.from(&self.wallet_address) + .typed(multisig_proxy::MultisigProxy) + .init(quorum, board.clone()) + .code(&self.multisig_code) + .gas(NumExpr("70,000,000")) + .returns(ReturnsNewAddress) + }); } - self.interactor - .multi_sc_exec(StepBuffer::from_sc_deploy_vec(&mut steps)) - .await; + let results = buffer.run().await; + for result in results { + let new_address_bech32 = bech32::encode(&result.to_address()); + println!("new address: {new_address_bech32}"); - for step in steps.iter() { - // warning: multi deploy not yet fully supported - // only works with last deployed address - // will be addressed in future versions - let new_deployed_address = step.response().new_deployed_address.clone(); - if let Some(new_address) = new_deployed_address { - let new_address_bech32 = bech32::encode(&new_address); - println!("new address: {new_address_bech32}"); - - let new_address_expr = format!("bech32:{new_address_bech32}"); - self.state.set_multisig_address(&new_address_expr); - } else { - println!("deploy failed"); - return; - } + let new_address_expr = format!("bech32:{new_address_bech32}"); + self.state.set_multisig_address(&new_address_expr); } } diff --git a/contracts/examples/multisig/interact/src/multisig_interact_state.rs b/contracts/examples/multisig/interact/src/multisig_interact_state.rs index fef8b8baff..f3c97482df 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact_state.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact_state.rs @@ -5,10 +5,6 @@ use std::{ path::Path, }; -/// Default multisig address -const DEFAULT_MULTISIG_ADDRESS: &str = - "0x0000000000000000000000000000000000000000000000000000000000000000"; - /// State file const STATE_FILE: &str = "state.toml"; @@ -42,11 +38,6 @@ impl State { pub fn multisig(&self) -> MultisigContract { MultisigContract::new(self.multisig_address.clone().unwrap()) } - - /// Returns the multisig contract with default address - pub fn default_multisig(&self) -> MultisigContract { - MultisigContract::new(DEFAULT_MULTISIG_ADDRESS) - } } impl Drop for State { diff --git a/framework/scenario/src/scenario/tx_to_step.rs b/framework/scenario/src/scenario/tx_to_step.rs index 601d4d9b71..82e236e48b 100644 --- a/framework/scenario/src/scenario/tx_to_step.rs +++ b/framework/scenario/src/scenario/tx_to_step.rs @@ -7,5 +7,5 @@ mod tx_to_step_trait; mod tx_to_step_transfer; pub use step_annotation::*; -pub use step_wrapper::StepWrapper; +pub use step_wrapper::{StepWithResponse, StepWrapper}; pub use tx_to_step_trait::*; diff --git a/framework/snippets/src/multi.rs b/framework/snippets/src/multi.rs index 0353b8931b..973b159858 100644 --- a/framework/snippets/src/multi.rs +++ b/framework/snippets/src/multi.rs @@ -1,7 +1,9 @@ +mod homogenous_tx_buffer; mod interactor_multi_sc_exec; mod interactor_multi_sc_process; mod interactor_step; mod step_buffer; +pub use homogenous_tx_buffer::HomogenousTxBuffer; pub use interactor_step::InteractorStep; pub use step_buffer::StepBuffer; diff --git a/framework/snippets/src/multi/homogenous_tx_buffer.rs b/framework/snippets/src/multi/homogenous_tx_buffer.rs new file mode 100644 index 0000000000..7d40474d59 --- /dev/null +++ b/framework/snippets/src/multi/homogenous_tx_buffer.rs @@ -0,0 +1,65 @@ +use multiversx_sc_scenario::{ + multiversx_sc::{ + tuple_util::NestedTupleFlatten, + types::{RHListExec, TxBaseWithEnv}, + }, + scenario::tx_to_step::{StepWithResponse, StepWrapper, TxToStep}, + scenario_model::TxResponse, + ScenarioTxEnvData, +}; + +use crate::{Interactor, InteractorExecEnv, InteractorStep, StepBuffer}; + +pub struct HomogenousTxBuffer<'w, Step, RH> { + env: InteractorExecEnv<'w>, + steps: Vec>, +} + +impl Interactor { + /// Creates a buffer that can hold multiple transactions, and then execute them all at once. + /// + /// This buffer holds transactions of the same type (call/deploy) and with identical result handler types. + /// Therefore, after execution, all results will have the same type. + pub fn homogenous_call_buffer(&mut self) -> HomogenousTxBuffer<'_, Step, RH> { + let data = self.new_env_data(); + let env = InteractorExecEnv { world: self, data }; + HomogenousTxBuffer { + env, + steps: Vec::new(), + } + } +} + +impl<'w, Step, RH> HomogenousTxBuffer<'w, Step, RH> +where + Step: InteractorStep + StepWithResponse, + RH: RHListExec, + RH::ListReturns: NestedTupleFlatten, +{ + pub fn push_tx(&mut self, f: F) -> &mut Self + where + Tx: TxToStep, + F: FnOnce(TxBaseWithEnv) -> Tx, + { + let env = self.env.world.new_env_data(); + let tx_base = TxBaseWithEnv::new_with_env(env); + let tx = f(tx_base); + + self.steps.push(tx.tx_to_step()); + + self + } + + pub async fn run(mut self) -> Vec<::Unpacked> { + let mut step_buffer = StepBuffer::default(); + for step in &mut self.steps { + step_buffer.refs.push(&mut step.step); + } + self.env.world.multi_sc_exec(step_buffer).await; + + self.steps + .into_iter() + .map(|step| step.process_result()) + .collect() + } +} From ea52e2c659162da5f4edf3c8a3296ab9b0ae20c1 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 3 Apr 2024 11:20:06 +0300 Subject: [PATCH 258/461] unified syntax - egld of esdt payment refs --- .../src/distribution_module.rs | 2 +- .../forwarder-raw/src/forwarder_raw_async.rs | 6 +- .../src/call_promise_direct.rs | 2 +- .../recursive-caller/src/recursive_caller.rs | 2 +- .../composability/vault/src/vault.rs | 2 +- .../wrappers/blockchain_wrapper.rs | 5 +- framework/base/src/types/interaction/tx.rs | 24 ++-- .../base/src/types/interaction/tx_payment.rs | 3 +- .../tx_payment/tx_payment_egld_or_esdt.rs | 51 +++++++- .../tx_payment/tx_payment_egld_or_esdt_ref.rs | 117 ------------------ .../tx_payment_egld_or_esdt_refs.rs | 66 ++++++++++ .../wrapped/egld_or_esdt_token_identifier.rs | 31 ++--- .../wrapped/egld_or_esdt_token_payment.rs | 103 +++++++++++++-- .../managed/wrapped/esdt_token_payment.rs | 18 ++- .../types/managed/wrapped/managed_option.rs | 20 +-- .../base/src/types/managed/wrapped/mod.rs | 2 +- .../types/managed/wrapped/token_identifier.rs | 5 +- framework/derive/src/generate/proxy_gen.rs | 2 +- 18 files changed, 281 insertions(+), 180 deletions(-) delete mode 100644 framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt_ref.rs create mode 100644 framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt_refs.rs diff --git a/contracts/examples/seed-nft-minter/src/distribution_module.rs b/contracts/examples/seed-nft-minter/src/distribution_module.rs index d91d6e6ae2..54f8bf2586 100644 --- a/contracts/examples/seed-nft-minter/src/distribution_module.rs +++ b/contracts/examples/seed-nft-minter/src/distribution_module.rs @@ -36,7 +36,7 @@ pub trait DistributionModule { self.tx() .to(&distribution.address) .raw_call(distribution.endpoint) - .egld_or_single_esdt((token_id.clone(), token_nonce, payment_amount)) + .egld_or_single_esdt(token_id, token_nonce, &payment_amount) .gas(distribution.gas_limit) .transfer_execute(); } diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs index ad276c32b0..944e3365b6 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs @@ -46,7 +46,11 @@ pub trait ForwarderRawAsync: super::forwarder_raw_common::ForwarderRawCommon { .to(to) .raw_call(endpoint_name) .arguments_raw(args.to_arg_buffer()) - .egld_or_single_esdt((payment_token, 0, payment_amount)) + .payment(EgldOrEsdtTokenPayment::new( + payment_token, + 0, + payment_amount, + )) } #[endpoint] diff --git a/contracts/feature-tests/composability/promises-features/src/call_promise_direct.rs b/contracts/feature-tests/composability/promises-features/src/call_promise_direct.rs index e98e9b0c3b..55093fc8d6 100644 --- a/contracts/feature-tests/composability/promises-features/src/call_promise_direct.rs +++ b/contracts/feature-tests/composability/promises-features/src/call_promise_direct.rs @@ -17,7 +17,7 @@ pub trait CallPromisesDirectModule { self.tx() .to(&to) .raw_call(endpoint_name) - .egld_or_single_esdt(payment) + .payment(payment) .arguments_raw(args.to_arg_buffer()) .gas(gas_limit) .async_call_promise() diff --git a/contracts/feature-tests/composability/recursive-caller/src/recursive_caller.rs b/contracts/feature-tests/composability/recursive-caller/src/recursive_caller.rs index 407a681927..94f26e7e8d 100644 --- a/contracts/feature-tests/composability/recursive-caller/src/recursive_caller.rs +++ b/contracts/feature-tests/composability/recursive-caller/src/recursive_caller.rs @@ -25,7 +25,7 @@ pub trait RecursiveCaller { .to(to) .typed(vault_proxy::VaultProxy) .accept_funds() - .egld_or_single_esdt((token_identifier.clone(), 0, amount.clone())) + .egld_or_single_esdt(token_identifier, 0, amount) .async_call() .with_callback(self.callbacks().recursive_send_funds_callback( to, diff --git a/contracts/feature-tests/composability/vault/src/vault.rs b/contracts/feature-tests/composability/vault/src/vault.rs index 9f293bae45..ab22590572 100644 --- a/contracts/feature-tests/composability/vault/src/vault.rs +++ b/contracts/feature-tests/composability/vault/src/vault.rs @@ -153,7 +153,7 @@ pub trait Vault { self.tx() .to(&caller) .raw_call(endpoint_name.clone()) - .egld_or_single_esdt(return_payment.clone()) + .payment(&return_payment) .gas(self.blockchain().get_gas_left() / 2) .transfer_execute() } diff --git a/framework/base/src/contract_base/wrappers/blockchain_wrapper.rs b/framework/base/src/contract_base/wrappers/blockchain_wrapper.rs index 01ce71d189..5a7f36a722 100644 --- a/framework/base/src/contract_base/wrappers/blockchain_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/blockchain_wrapper.rs @@ -153,8 +153,9 @@ where #[inline] pub fn get_sc_balance(&self, token: &EgldOrEsdtTokenIdentifier, nonce: u64) -> BigUint { token.map_ref_or_else( - || self.get_balance(&self.get_sc_address()), - |token_identifier| { + (), + |()| self.get_balance(&self.get_sc_address()), + |(), token_identifier| { self.get_esdt_balance(&self.get_sc_address(), token_identifier, nonce) }, ) diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index de33648ba2..1524bb22fe 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -1,6 +1,7 @@ use crate::{ api::CallTypeApi, contract_base::BlockchainWrapper, + proxy_imports::{EgldOrEsdtTokenIdentifier, EgldOrEsdtTokenPaymentRefs}, types::{ BigUint, CodeMetadata, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EgldOrMultiEsdtPaymentRefs, EsdtTokenPayment, EsdtTokenPaymentRefs, ManagedAddress, @@ -214,6 +215,20 @@ where }) } + /// Syntactic sugar for `self.payment(EgldOrEsdtTokenPaymentRefs::new(...)`. Takes references. + pub fn egld_or_single_esdt<'a>( + self, + token_identifier: &'a EgldOrEsdtTokenIdentifier, + token_nonce: u64, + amount: &'a BigUint, + ) -> Tx, Gas, Data, RH> { + self.payment(EgldOrEsdtTokenPaymentRefs::new( + token_identifier, + token_nonce, + amount, + )) + } + /// Sets a collection of ESDT transfers as the payment of the transaction. /// /// Equivalend to just ``.payment(payments)`, but only accepts the multi-esdt types. @@ -232,19 +247,12 @@ where self.multi_esdt(payments) } - pub fn egld_or_single_esdt>>( - self, - payment: P, - ) -> Tx, Gas, Data, RH> { - self.payment(payment.into()) - } - /// Backwards compatibility. pub fn with_egld_or_single_esdt_transfer>>( self, payment: P, ) -> Tx, Gas, Data, RH> { - self.egld_or_single_esdt(payment) + self.payment(payment.into()) } pub fn egld_or_multi_esdt>>( diff --git a/framework/base/src/types/interaction/tx_payment.rs b/framework/base/src/types/interaction/tx_payment.rs index aed63a90d4..252204edd8 100644 --- a/framework/base/src/types/interaction/tx_payment.rs +++ b/framework/base/src/types/interaction/tx_payment.rs @@ -1,6 +1,6 @@ mod tx_payment_egld; mod tx_payment_egld_or_esdt; -mod tx_payment_egld_or_esdt_ref; +mod tx_payment_egld_or_esdt_refs; mod tx_payment_egld_or_multi_esdt; mod tx_payment_egld_or_multi_esdt_ref; mod tx_payment_egld_value; @@ -10,7 +10,6 @@ mod tx_payment_single_esdt; mod tx_payment_single_esdt_ref; pub use tx_payment_egld::{Egld, EgldPayment}; -pub use tx_payment_egld_or_esdt_ref::*; pub use tx_payment_egld_value::TxEgldValue; pub use tx_payment_multi_esdt::TxPaymentMultiEsdt; diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt.rs index adc5ef36f9..e70c2919f2 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt.rs @@ -8,7 +8,7 @@ use crate::{ use super::{AnnotatedEgldPayment, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment}; -impl TxPayment for EgldOrEsdtTokenPayment +impl TxPayment for &EgldOrEsdtTokenPayment where Env: TxEnv, { @@ -23,13 +23,60 @@ where gas_limit: u64, fc: FunctionCall, ) { - self.map_egld_or_esdt( + self.map_ref_egld_or_esdt( (to, fc), |(to, fc), amount| Egld(amount).perform_transfer_execute(env, to, gas_limit, fc), |(to, fc), esdt_payment| esdt_payment.perform_transfer_execute(env, to, gas_limit, fc), ) } + fn with_normalized( + self, + env: &Env, + from: &From, + to: To, + fc: FunctionCall, + f: F, + ) -> R + where + From: TxFrom, + To: TxToSpecified, + F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, + { + self.map_ref_egld_or_esdt( + (to, fc, f), + |(to, fc, f), amount| Egld(amount).with_normalized(env, from, to, fc, f), + |(to, fc, f), esdt_payment| esdt_payment.with_normalized(env, from, to, fc, f), + ) + } + + fn into_full_payment_data(self, env: &Env) -> FullPaymentData { + self.map_ref_egld_or_esdt( + (), + |(), amount| TxPayment::::into_full_payment_data(Egld(amount), env), + |(), esdt_payment| TxPayment::::into_full_payment_data(esdt_payment, env), + ) + } +} + +impl TxPayment for EgldOrEsdtTokenPayment +where + Env: TxEnv, +{ + fn is_no_payment(&self, env: &Env) -> bool { + (&self).is_no_payment(env) + } + + fn perform_transfer_execute( + self, + env: &Env, + to: &ManagedAddress, + gas_limit: u64, + fc: FunctionCall, + ) { + (&self).perform_transfer_execute(env, to, gas_limit, fc) + } + fn with_normalized( self, env: &Env, diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt_ref.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt_ref.rs deleted file mode 100644 index d7dc216308..0000000000 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt_ref.rs +++ /dev/null @@ -1,117 +0,0 @@ -use alloc::borrow::ToOwned; - -use crate::{ - api::ManagedTypeApi, - contract_base::SendRawWrapper, - proxy_imports::EgldOrEsdtTokenIdentifier, - types::{ - AnnotatedValue, BigUint, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EsdtTokenPayment, - EsdtTokenPaymentRefs, ManagedAddress, ManagedType, ManagedVec, MultiEsdtPayment, TxFrom, - TxToSpecified, - }, -}; - -use super::{ - AnnotatedEgldPayment, Egld, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment, -}; - -impl<'a, Env> TxPayment for EgldOrEsdtTokenPaymentRefs<'a, Env::Api> -where - Env: TxEnv, -{ - fn is_no_payment(&self, _env: &Env) -> bool { - self.is_empty() - } - - fn perform_transfer_execute( - self, - env: &Env, - to: &ManagedAddress, - gas_limit: u64, - fc: FunctionCall, - ) { - self.map_egld_or_esdt( - (to, fc), - |(to, fc), amount| Egld(amount).perform_transfer_execute(env, to, gas_limit, fc), - |(to, fc), esdt_payment| esdt_payment.perform_transfer_execute(env, to, gas_limit, fc), - ) - } - - fn with_normalized( - self, - env: &Env, - from: &From, - to: To, - fc: FunctionCall, - f: F, - ) -> R - where - From: TxFrom, - To: TxToSpecified, - F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, - { - self.map_egld_or_esdt( - (to, fc, f), - |(to, fc, f), amount| Egld(amount).with_normalized(env, from, to, fc, f), - |(to, fc, f), esdt_payment| esdt_payment.with_normalized(env, from, to, fc, f), - ) - } - - fn into_full_payment_data(self, env: &Env) -> FullPaymentData { - self.map_egld_or_esdt( - (), - |(), amount| TxPayment::::into_full_payment_data(Egld(amount), env), - |(), esdt_payment| TxPayment::::into_full_payment_data(esdt_payment, env), - ) - } -} - -pub struct EgldOrEsdtTokenPaymentRefs<'a, M: ManagedTypeApi> { - pub token_identifier: &'a EgldOrEsdtTokenIdentifier, - pub token_nonce: u64, - pub amount: &'a BigUint, -} - -impl EgldOrEsdtTokenPayment { - pub fn as_refs(&self) -> EgldOrEsdtTokenPaymentRefs<'_, M> { - EgldOrEsdtTokenPaymentRefs { - token_identifier: &self.token_identifier, - token_nonce: self.token_nonce, - amount: &self.amount, - } - } -} - -impl<'a, M: ManagedTypeApi> EgldOrEsdtTokenPaymentRefs<'a, M> { - pub fn to_owned_payment(&self) -> EgldOrEsdtTokenPayment { - EgldOrEsdtTokenPayment { - token_identifier: self.token_identifier.clone(), - token_nonce: self.token_nonce, - amount: self.amount.clone(), - } - } - - pub fn is_empty(&self) -> bool { - self.amount == &BigUint::zero() - } - - pub fn map_egld_or_esdt(self, context: Context, for_egld: D, for_esdt: F) -> U - where - D: FnOnce(Context, &BigUint) -> U, - F: FnOnce(Context, EgldOrEsdtTokenPaymentRefs) -> U, - { - if self.token_identifier.data.is_some() { - let token_identifier = unsafe { self.token_identifier.clone().data.unwrap_no_check() }; - for_esdt( - context, - EgldOrEsdtTokenPaymentRefs { - token_identifier: &EgldOrEsdtTokenIdentifier::esdt(token_identifier), - token_nonce: self.token_nonce, - amount: self.amount, - }, - ) - } else { - for_egld(context, self.amount) - } - } -} diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt_refs.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt_refs.rs new file mode 100644 index 0000000000..76c5a003f2 --- /dev/null +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt_refs.rs @@ -0,0 +1,66 @@ +use alloc::borrow::ToOwned; + +use crate::{ + api::ManagedTypeApi, + contract_base::SendRawWrapper, + types::{ + AnnotatedValue, BigUint, EgldOrEsdtTokenIdentifier, EgldOrEsdtTokenPayment, + EgldOrEsdtTokenPaymentRefs, EgldOrMultiEsdtPayment, EsdtTokenPayment, EsdtTokenPaymentRefs, + ManagedAddress, ManagedType, ManagedVec, MultiEsdtPayment, TxFrom, TxToSpecified, + }, +}; + +use super::{ + AnnotatedEgldPayment, Egld, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment, +}; + +impl<'a, Env> TxPayment for EgldOrEsdtTokenPaymentRefs<'a, Env::Api> +where + Env: TxEnv, +{ + fn is_no_payment(&self, _env: &Env) -> bool { + self.is_empty() + } + + fn perform_transfer_execute( + self, + env: &Env, + to: &ManagedAddress, + gas_limit: u64, + fc: FunctionCall, + ) { + self.map_egld_or_esdt( + fc, + |fc, amount| Egld(amount).perform_transfer_execute(env, to, gas_limit, fc), + |fc, esdt_payment| esdt_payment.perform_transfer_execute(env, to, gas_limit, fc), + ) + } + + fn with_normalized( + self, + env: &Env, + from: &From, + to: To, + fc: FunctionCall, + f: F, + ) -> R + where + From: TxFrom, + To: TxToSpecified, + F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, + { + self.map_egld_or_esdt( + (to, fc, f), + |(to, fc, f), amount| Egld(amount).with_normalized(env, from, to, fc, f), + |(to, fc, f), esdt_payment| esdt_payment.with_normalized(env, from, to, fc, f), + ) + } + + fn into_full_payment_data(self, env: &Env) -> FullPaymentData { + self.map_egld_or_esdt( + (), + |(), amount| TxPayment::::into_full_payment_data(Egld(amount), env), + |(), esdt_payment| TxPayment::::into_full_payment_data(esdt_payment, env), + ) + } +} diff --git a/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs b/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs index 3635ddaba2..c363853203 100644 --- a/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs +++ b/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs @@ -81,8 +81,9 @@ impl EgldOrEsdtTokenIdentifier { #[inline] pub fn into_name(self) -> ManagedBuffer { self.map_or_else( - || ManagedBuffer::from(&Self::EGLD_REPRESENTATION[..]), - |token_identifier| token_identifier.into_managed_buffer(), + (), + |()| ManagedBuffer::from(&Self::EGLD_REPRESENTATION[..]), + |(), token_identifier| token_identifier.into_managed_buffer(), ) } @@ -91,25 +92,26 @@ impl EgldOrEsdtTokenIdentifier { /// Will fail if it encodes an invalid ESDT token identifier. pub fn is_valid(&self) -> bool { self.map_ref_or_else( - || true, - |token_identifier| token_identifier.is_valid_esdt_identifier(), + (), + |()| true, + |(), token_identifier| token_identifier.is_valid_esdt_identifier(), ) } - pub fn map_or_else(self, for_egld: D, for_esdt: F) -> U + pub fn map_or_else(self, context: Context, for_egld: D, for_esdt: F) -> R where - D: FnOnce() -> U, - F: FnOnce(TokenIdentifier) -> U, + D: FnOnce(Context) -> R, + F: FnOnce(Context, TokenIdentifier) -> R, { - self.data.map_or_else(for_egld, for_esdt) + self.data.map_or_else(context, for_egld, for_esdt) } - pub fn map_ref_or_else(&self, for_egld: D, for_esdt: F) -> U + pub fn map_ref_or_else(&self, context: Context, for_egld: D, for_esdt: F) -> R where - D: FnOnce() -> U, - F: FnOnce(&TokenIdentifier) -> U, + D: FnOnce(Context) -> R, + F: FnOnce(Context, &TokenIdentifier) -> R, { - self.data.map_ref_or_else(for_egld, for_esdt) + self.data.map_ref_or_else(context, for_egld, for_esdt) } pub fn unwrap_esdt(self) -> TokenIdentifier { @@ -142,8 +144,9 @@ impl PartialEq> for EgldOrEsdtTokenIdentif #[inline] fn eq(&self, other: &TokenIdentifier) -> bool { self.map_ref_or_else( - || false, - |self_esdt_token_identifier| self_esdt_token_identifier == other, + (), + |()| false, + |(), self_esdt_token_identifier| self_esdt_token_identifier == other, ) } } diff --git a/framework/base/src/types/managed/wrapped/egld_or_esdt_token_payment.rs b/framework/base/src/types/managed/wrapped/egld_or_esdt_token_payment.rs index 8d5e692610..ffce0c44e7 100644 --- a/framework/base/src/types/managed/wrapped/egld_or_esdt_token_payment.rs +++ b/framework/base/src/types/managed/wrapped/egld_or_esdt_token_payment.rs @@ -12,7 +12,7 @@ use crate::codec::{ use crate as multiversx_sc; // needed by the TypeAbi generated code use crate::derive::TypeAbi; -use super::EsdtTokenPayment; +use super::{EsdtTokenPayment, EsdtTokenPaymentRefs}; #[derive( TopDecode, TopEncode, NestedDecode, NestedEncode, TypeAbi, Clone, PartialEq, Eq, Debug, @@ -59,21 +59,46 @@ impl EgldOrEsdtTokenPayment { /// More precisely, since only one of the two closures `for_egld` and `for_esdt` is called, /// it is ok for them to have fully owned access to anything from the environment. /// The compiler doesn't know that only one of them can ever be called, - /// so if we pass context to both closures, it will complain that they are moved twice.. + /// so if we pass context to both closures, it will complain that they are moved twice. pub fn map_egld_or_esdt(self, context: Context, for_egld: D, for_esdt: F) -> U where D: FnOnce(Context, BigUint) -> U, F: FnOnce(Context, EsdtTokenPayment) -> U, { - if self.token_identifier.data.is_some() { - let token_identifier = unsafe { self.token_identifier.data.unwrap_no_check() }; - for_esdt( - context, - EsdtTokenPayment::new(token_identifier, self.token_nonce, self.amount), - ) - } else { - for_egld(context, self.amount) - } + self.token_identifier.map_or_else( + (context, self.amount), + |(context, amount)| for_egld(context, amount), + |(context, amount), token_identifier| { + for_esdt( + context, + EsdtTokenPayment::new(token_identifier, self.token_nonce, amount), + ) + }, + ) + } + + /// Same as `map_egld_or_esdt`, but only takes a reference, + /// and consequently, the closures also only get references. + pub fn map_ref_egld_or_esdt( + &self, + context: Context, + for_egld: D, + for_esdt: F, + ) -> U + where + D: FnOnce(Context, &BigUint) -> U, + F: FnOnce(Context, EsdtTokenPaymentRefs<'_, M>) -> U, + { + self.token_identifier.map_ref_or_else( + context, + |context| for_egld(context, &self.amount), + |context, token_identifier| { + for_esdt( + context, + EsdtTokenPaymentRefs::new(token_identifier, self.token_nonce, &self.amount), + ) + }, + ) } pub fn into_tuple(self) -> (EgldOrEsdtTokenIdentifier, u64, BigUint) { @@ -104,3 +129,59 @@ impl From> for EgldOrEsdtTokenPayment impl CodecFromSelf for EgldOrEsdtTokenPayment where M: ManagedTypeApi {} impl CodecFrom<&[u8]> for EgldOrEsdtTokenPayment where M: ManagedTypeApi {} + +impl EgldOrEsdtTokenPayment { + pub fn as_refs(&self) -> EgldOrEsdtTokenPaymentRefs<'_, M> { + EgldOrEsdtTokenPaymentRefs::new(&self.token_identifier, self.token_nonce, &self.amount) + } +} + +/// Similar to `EgldOrEsdtTokenPayment`, but only contains references. +pub struct EgldOrEsdtTokenPaymentRefs<'a, M: ManagedTypeApi> { + pub token_identifier: &'a EgldOrEsdtTokenIdentifier, + pub token_nonce: u64, + pub amount: &'a BigUint, +} + +impl<'a, M: ManagedTypeApi> EgldOrEsdtTokenPaymentRefs<'a, M> { + pub fn new( + token_identifier: &'a EgldOrEsdtTokenIdentifier, + token_nonce: u64, + amount: &'a BigUint, + ) -> EgldOrEsdtTokenPaymentRefs<'a, M> { + EgldOrEsdtTokenPaymentRefs { + token_identifier, + token_nonce, + amount, + } + } + + pub fn to_owned_payment(&self) -> EgldOrEsdtTokenPayment { + EgldOrEsdtTokenPayment { + token_identifier: self.token_identifier.clone(), + token_nonce: self.token_nonce, + amount: self.amount.clone(), + } + } + + pub fn is_empty(&self) -> bool { + self.amount == &BigUint::zero() + } + + pub fn map_egld_or_esdt(self, context: Context, for_egld: D, for_esdt: F) -> U + where + D: FnOnce(Context, &BigUint) -> U, + F: FnOnce(Context, EsdtTokenPaymentRefs) -> U, + { + self.token_identifier.map_ref_or_else( + context, + |context| for_egld(context, self.amount), + |context, token_identifier| { + for_esdt( + context, + EsdtTokenPaymentRefs::new(token_identifier, self.token_nonce, self.amount), + ) + }, + ) + } +} diff --git a/framework/base/src/types/managed/wrapped/esdt_token_payment.rs b/framework/base/src/types/managed/wrapped/esdt_token_payment.rs index 161c2c1ee3..b074dc9bfe 100644 --- a/framework/base/src/types/managed/wrapped/esdt_token_payment.rs +++ b/framework/base/src/types/managed/wrapped/esdt_token_payment.rs @@ -232,15 +232,23 @@ pub struct EsdtTokenPaymentRefs<'a, M: ManagedTypeApi> { impl EsdtTokenPayment { pub fn as_refs(&self) -> EsdtTokenPaymentRefs<'_, M> { - EsdtTokenPaymentRefs { - token_identifier: &self.token_identifier, - token_nonce: self.token_nonce, - amount: &self.amount, - } + EsdtTokenPaymentRefs::new(&self.token_identifier, self.token_nonce, &self.amount) } } impl<'a, M: ManagedTypeApi> EsdtTokenPaymentRefs<'a, M> { + pub fn new( + token_identifier: &'a TokenIdentifier, + token_nonce: u64, + amount: &'a BigUint, + ) -> Self { + EsdtTokenPaymentRefs { + token_identifier, + token_nonce, + amount, + } + } + /// Will clone the referenced values. pub fn to_owned_payment(&self) -> EsdtTokenPayment { EsdtTokenPayment { diff --git a/framework/base/src/types/managed/wrapped/managed_option.rs b/framework/base/src/types/managed/wrapped/managed_option.rs index 422a5e7753..7dd8ed2dad 100644 --- a/framework/base/src/types/managed/wrapped/managed_option.rs +++ b/framework/base/src/types/managed/wrapped/managed_option.rs @@ -122,27 +122,27 @@ where } } - pub fn map_or_else(self, default: D, f: F) -> U + pub fn map_or_else(self, context: Context, default: D, f: F) -> R where - D: FnOnce() -> U, - F: FnOnce(T) -> U, + D: FnOnce(Context) -> R, + F: FnOnce(Context, T) -> R, { if self.is_some() { - f(unsafe { self.unwrap_no_check() }) + f(context, unsafe { self.unwrap_no_check() }) } else { - default() + default(context) } } - pub fn map_ref_or_else(&self, default: D, f: F) -> U + pub fn map_ref_or_else(&self, context: Context, default: D, f: F) -> R where - D: FnOnce() -> U, - F: FnOnce(&T) -> U, + D: FnOnce(Context) -> R, + F: FnOnce(Context, &T) -> R, { if self.is_some() { - f(&T::from_handle(self.handle.clone())) + f(context, &T::from_handle(self.handle.clone())) } else { - default() + default(context) } } } diff --git a/framework/base/src/types/managed/wrapped/mod.rs b/framework/base/src/types/managed/wrapped/mod.rs index 5a5e907403..58d706ed62 100644 --- a/framework/base/src/types/managed/wrapped/mod.rs +++ b/framework/base/src/types/managed/wrapped/mod.rs @@ -19,7 +19,7 @@ mod randomness_source; mod token_identifier; pub use egld_or_esdt_token_identifier::EgldOrEsdtTokenIdentifier; -pub use egld_or_esdt_token_payment::EgldOrEsdtTokenPayment; +pub use egld_or_esdt_token_payment::{EgldOrEsdtTokenPayment, EgldOrEsdtTokenPaymentRefs}; pub use egld_or_multi_esdt_payment::{EgldOrMultiEsdtPayment, EgldOrMultiEsdtPaymentRefs}; pub(crate) use encoded_managed_vec_item::EncodedManagedVecItem; pub use esdt_token_data::EsdtTokenData; diff --git a/framework/base/src/types/managed/wrapped/token_identifier.rs b/framework/base/src/types/managed/wrapped/token_identifier.rs index af113dbc4e..53078e09d7 100644 --- a/framework/base/src/types/managed/wrapped/token_identifier.rs +++ b/framework/base/src/types/managed/wrapped/token_identifier.rs @@ -109,8 +109,9 @@ impl PartialEq> for TokenIdentif #[inline] fn eq(&self, other: &EgldOrEsdtTokenIdentifier) -> bool { other.map_ref_or_else( - || false, - |esdt_token_identifier| esdt_token_identifier == self, + (), + |()| false, + |(), esdt_token_identifier| esdt_token_identifier == self, ) } } diff --git a/framework/derive/src/generate/proxy_gen.rs b/framework/derive/src/generate/proxy_gen.rs index 9118c1f748..b904c69f20 100644 --- a/framework/derive/src/generate/proxy_gen.rs +++ b/framework/derive/src/generate/proxy_gen.rs @@ -140,7 +140,7 @@ pub fn generate_proxy_endpoint(m: &Method, endpoint_name: String) -> proc_macro2 payment_init = quote! { .egld(#payment_expr) }; } else { payment_type = quote! { multiversx_sc::types::EgldOrEsdtTokenPayment }; - payment_init = quote! { .egld_or_single_esdt( + payment_init = quote! { .payment( multiversx_sc::types::EgldOrEsdtTokenPayment::new( #token_expr, #nonce_expr, From 34c22759423a4757916cc4280d71faedc3a4a9d3 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 3 Apr 2024 12:11:38 +0300 Subject: [PATCH 259/461] re-generated crypto kitty proxies --- .../src/kitty_ownership_proxy.rs | 63 ++++------- .../src/kitty_genetic_alg_proxy.rs | 35 ++++-- .../src/kitty_ownership_proxy.rs | 103 ++++++++---------- .../crowdfunding-erc20/src/erc20_proxy.rs | 18 +-- .../erc1155-marketplace/src/erc1155_proxy.rs | 39 +++---- .../erc1155/src/erc1155_user_proxy.rs | 6 +- .../lottery-erc20/src/erc20_proxy.rs | 18 +-- .../use-module/tests/user_builtin_proxy.rs | 3 +- contracts/modules/src/dns_proxy.rs | 3 +- 9 files changed, 124 insertions(+), 164 deletions(-) diff --git a/contracts/examples/crypto-kitties/kitty-auction/src/kitty_ownership_proxy.rs b/contracts/examples/crypto-kitties/kitty-auction/src/kitty_ownership_proxy.rs index 697d07bfce..aa6b43a3ee 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/src/kitty_ownership_proxy.rs +++ b/contracts/examples/crypto-kitties/kitty-auction/src/kitty_ownership_proxy.rs @@ -78,8 +78,7 @@ where address: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("setGeneScienceContractAddress") + .raw_call("setGeneScienceContractAddress") .argument(&address) .original_result() } @@ -91,8 +90,7 @@ where address: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("setKittyAuctionContractAddress") + .raw_call("setKittyAuctionContractAddress") .argument(&address) .original_result() } @@ -101,8 +99,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("claim") + .raw_call("claim") .original_result() } @@ -110,8 +107,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("totalSupply") + .raw_call("totalSupply") .original_result() } @@ -122,8 +118,7 @@ where address: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("balanceOf") + .raw_call("balanceOf") .argument(&address) .original_result() } @@ -135,8 +130,7 @@ where kitty_id: Arg0, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("ownerOf") + .raw_call("ownerOf") .argument(&kitty_id) .original_result() } @@ -150,8 +144,7 @@ where kitty_id: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("approve") + .raw_call("approve") .argument(&to) .argument(&kitty_id) .original_result() @@ -166,8 +159,7 @@ where kitty_id: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("transfer") + .raw_call("transfer") .argument(&to) .argument(&kitty_id) .original_result() @@ -184,8 +176,7 @@ where kitty_id: Arg2, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("transfer_from") + .raw_call("transfer_from") .argument(&from) .argument(&to) .argument(&kitty_id) @@ -199,8 +190,7 @@ where address: Arg0, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("tokensOfOwner") + .raw_call("tokensOfOwner") .argument(&address) .original_result() } @@ -214,8 +204,7 @@ where kitty_id: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("allowAuctioning") + .raw_call("allowAuctioning") .argument(&by) .argument(&kitty_id) .original_result() @@ -232,8 +221,7 @@ where kitty_id: Arg2, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("approveSiringAndReturnKitty") + .raw_call("approveSiringAndReturnKitty") .argument(&approved_address) .argument(&kitty_owner) .argument(&kitty_id) @@ -244,8 +232,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("createGenZeroKitty") + .raw_call("createGenZeroKitty") .original_result() } @@ -256,8 +243,7 @@ where kitty_id: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("getKittyById") + .raw_call("getKittyById") .argument(&kitty_id) .original_result() } @@ -269,8 +255,7 @@ where kitty_id: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("isReadyToBreed") + .raw_call("isReadyToBreed") .argument(&kitty_id) .original_result() } @@ -282,8 +267,7 @@ where kitty_id: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("isPregnant") + .raw_call("isPregnant") .argument(&kitty_id) .original_result() } @@ -297,8 +281,7 @@ where sire_id: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("canBreedWith") + .raw_call("canBreedWith") .argument(&matron_id) .argument(&sire_id) .original_result() @@ -313,8 +296,7 @@ where kitty_id: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("approveSiring") + .raw_call("approveSiring") .argument(&address) .argument(&kitty_id) .original_result() @@ -329,8 +311,7 @@ where sire_id: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("breedWith") + .raw_call("breedWith") .argument(&matron_id) .argument(&sire_id) .original_result() @@ -343,8 +324,7 @@ where matron_id: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("giveBirth") + .raw_call("giveBirth") .argument(&matron_id) .original_result() } @@ -353,8 +333,7 @@ where self, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("birthFee") + .raw_call("birthFee") .original_result() } } diff --git a/contracts/examples/crypto-kitties/kitty-ownership/src/kitty_genetic_alg_proxy.rs b/contracts/examples/crypto-kitties/kitty-ownership/src/kitty_genetic_alg_proxy.rs index 4a1bf33f88..564481a7d3 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/src/kitty_genetic_alg_proxy.rs +++ b/contracts/examples/crypto-kitties/kitty-ownership/src/kitty_genetic_alg_proxy.rs @@ -1,9 +1,14 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(dead_code)] #![allow(clippy::all)] use multiversx_sc::proxy_imports::*; -use crate::{Kitty, KittyGenes}; - pub struct KittyGeneticAlgProxy; impl TxProxyTrait for KittyGeneticAlgProxy @@ -30,6 +35,23 @@ where wrapped_tx: Tx, } +#[rustfmt::skip] +impl KittyGeneticAlgProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init( + self, + ) -> TxProxyDeploy { + self.wrapped_tx + .raw_deploy() + .original_result() + } +} + #[rustfmt::skip] impl KittyGeneticAlgProxyMethods where @@ -40,16 +62,15 @@ where Gas: TxGas, { pub fn generate_kitty_genes< - Arg0: CodecInto, - Arg1: CodecInto, + Arg0: CodecInto, + Arg1: CodecInto, >( self, matron: Arg0, sire: Arg1, - ) -> TxProxyCall { + ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("generateKittyGenes") + .raw_call("generateKittyGenes") .argument(&matron) .argument(&sire) .original_result() diff --git a/contracts/examples/crypto-zombies/src/kitty_ownership_proxy.rs b/contracts/examples/crypto-zombies/src/kitty_ownership_proxy.rs index f00880324a..aa6b43a3ee 100644 --- a/contracts/examples/crypto-zombies/src/kitty_ownership_proxy.rs +++ b/contracts/examples/crypto-zombies/src/kitty_ownership_proxy.rs @@ -1,3 +1,10 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(dead_code)] #![allow(clippy::all)] use multiversx_sc::proxy_imports::*; @@ -29,14 +36,30 @@ where } #[rustfmt::skip] -impl KittyOwnershipProxyMethods +impl KittyOwnershipProxyMethods where Env: TxEnv, Env::Api: VMApi, From: TxFrom, - To: TxTo, Gas: TxGas, { + pub fn init< + Arg0: CodecInto>, + Arg1: CodecInto>>, + Arg2: CodecInto>>, + >( + self, + birth_fee: Arg0, + opt_gene_science_contract_address: Arg1, + opt_kitty_auction_contract_address: Arg2, + ) -> TxProxyDeploy { + self.wrapped_tx + .raw_deploy() + .argument(&birth_fee) + .argument(&opt_gene_science_contract_address) + .argument(&opt_kitty_auction_contract_address) + .original_result() + } } #[rustfmt::skip] @@ -55,8 +78,7 @@ where address: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("setGeneScienceContractAddress") + .raw_call("setGeneScienceContractAddress") .argument(&address) .original_result() } @@ -68,8 +90,7 @@ where address: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("setKittyAuctionContractAddress") + .raw_call("setKittyAuctionContractAddress") .argument(&address) .original_result() } @@ -78,8 +99,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("claim") + .raw_call("claim") .original_result() } @@ -87,8 +107,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("totalSupply") + .raw_call("totalSupply") .original_result() } @@ -99,8 +118,7 @@ where address: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("balanceOf") + .raw_call("balanceOf") .argument(&address) .original_result() } @@ -112,8 +130,7 @@ where kitty_id: Arg0, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("ownerOf") + .raw_call("ownerOf") .argument(&kitty_id) .original_result() } @@ -127,8 +144,7 @@ where kitty_id: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("approve") + .raw_call("approve") .argument(&to) .argument(&kitty_id) .original_result() @@ -143,8 +159,7 @@ where kitty_id: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("transfer") + .raw_call("transfer") .argument(&to) .argument(&kitty_id) .original_result() @@ -161,8 +176,7 @@ where kitty_id: Arg2, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("transfer_from") + .raw_call("transfer_from") .argument(&from) .argument(&to) .argument(&kitty_id) @@ -176,8 +190,7 @@ where address: Arg0, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("tokensOfOwner") + .raw_call("tokensOfOwner") .argument(&address) .original_result() } @@ -191,8 +204,7 @@ where kitty_id: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("allowAuctioning") + .raw_call("allowAuctioning") .argument(&by) .argument(&kitty_id) .original_result() @@ -209,8 +221,7 @@ where kitty_id: Arg2, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("approveSiringAndReturnKitty") + .raw_call("approveSiringAndReturnKitty") .argument(&approved_address) .argument(&kitty_owner) .argument(&kitty_id) @@ -221,8 +232,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("createGenZeroKitty") + .raw_call("createGenZeroKitty") .original_result() } @@ -233,8 +243,7 @@ where kitty_id: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("getKittyById") + .raw_call("getKittyById") .argument(&kitty_id) .original_result() } @@ -246,8 +255,7 @@ where kitty_id: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("isReadyToBreed") + .raw_call("isReadyToBreed") .argument(&kitty_id) .original_result() } @@ -259,8 +267,7 @@ where kitty_id: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("isPregnant") + .raw_call("isPregnant") .argument(&kitty_id) .original_result() } @@ -274,8 +281,7 @@ where sire_id: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("canBreedWith") + .raw_call("canBreedWith") .argument(&matron_id) .argument(&sire_id) .original_result() @@ -290,8 +296,7 @@ where kitty_id: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("approveSiring") + .raw_call("approveSiring") .argument(&address) .argument(&kitty_id) .original_result() @@ -306,8 +311,7 @@ where sire_id: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("breedWith") + .raw_call("breedWith") .argument(&matron_id) .argument(&sire_id) .original_result() @@ -320,8 +324,7 @@ where matron_id: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("giveBirth") + .raw_call("giveBirth") .argument(&matron_id) .original_result() } @@ -330,8 +333,7 @@ where self, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("birthFee") + .raw_call("birthFee") .original_result() } } @@ -361,16 +363,3 @@ pub struct Color { pub g: u8, pub b: u8, } - -impl KittyGenes { - pub fn get_as_u64(&self) -> u64 { - (self.fur_color.as_u64() << 12 | self.eye_color.as_u64()) << 4 - | self.meow_power.to_be() as u64 - } -} - -impl Color { - pub fn as_u64(&self) -> u64 { - ((self.r.to_be() as u64) << 4 | self.r.to_be() as u64) << 4 | self.r.to_be() as u64 - } -} diff --git a/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/src/erc20_proxy.rs b/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/src/erc20_proxy.rs index 4acfd01eb2..5d53567a38 100644 --- a/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/src/erc20_proxy.rs +++ b/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/src/erc20_proxy.rs @@ -72,8 +72,7 @@ where self, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("totalSupply") + .raw_call("totalSupply") .original_result() } @@ -90,8 +89,7 @@ where address: Arg0, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("balanceOf") + .raw_call("balanceOf") .argument(&address) .original_result() } @@ -112,8 +110,7 @@ where spender: Arg1, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("allowance") + .raw_call("allowance") .argument(&owner) .argument(&spender) .original_result() @@ -134,8 +131,7 @@ where amount: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("transfer") + .raw_call("transfer") .argument(&to) .argument(&amount) .original_result() @@ -160,8 +156,7 @@ where amount: Arg2, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("transferFrom") + .raw_call("transferFrom") .argument(&sender) .argument(&recipient) .argument(&amount) @@ -185,8 +180,7 @@ where amount: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("approve") + .raw_call("approve") .argument(&spender) .argument(&amount) .original_result() diff --git a/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/src/erc1155_proxy.rs b/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/src/erc1155_proxy.rs index 44be409aa3..41773ae924 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/src/erc1155_proxy.rs +++ b/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/src/erc1155_proxy.rs @@ -77,8 +77,7 @@ where data: Arg4, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("safeTransferFrom") + .raw_call("safeTransferFrom") .argument(&from) .argument(&to) .argument(&type_id) @@ -103,8 +102,7 @@ where data: Arg4, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("safeBatchTransferFrom") + .raw_call("safeBatchTransferFrom") .argument(&from) .argument(&to) .argument(&type_ids) @@ -122,8 +120,7 @@ where approved: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("setApprovalForAll") + .raw_call("setApprovalForAll") .argument(&operator) .argument(&approved) .original_result() @@ -140,8 +137,7 @@ where is_fungible: Arg2, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("createToken") + .raw_call("createToken") .argument(&uri) .argument(&initial_supply) .argument(&is_fungible) @@ -157,8 +153,7 @@ where amount: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("mint") + .raw_call("mint") .argument(&type_id) .argument(&amount) .original_result() @@ -173,8 +168,7 @@ where amount: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("burn") + .raw_call("burn") .argument(&type_id) .argument(&amount) .original_result() @@ -189,8 +183,7 @@ where type_id: Arg1, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("balanceOf") + .raw_call("balanceOf") .argument(&owner) .argument(&type_id) .original_result() @@ -203,8 +196,7 @@ where owner_type_id_pairs: Arg0, ) -> TxProxyCall>> { self.wrapped_tx - .raw_call() - .function_name("balanceOfBatch") + .raw_call("balanceOfBatch") .argument(&owner_type_id_pairs) .original_result() } @@ -218,8 +210,7 @@ where nft_id: Arg1, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("getTokenOwner") + .raw_call("getTokenOwner") .argument(&type_id) .argument(&nft_id) .original_result() @@ -232,8 +223,7 @@ where type_id: Arg0, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("getTokenTypeCreator") + .raw_call("getTokenTypeCreator") .argument(&type_id) .original_result() } @@ -245,8 +235,7 @@ where type_id: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("getTokenTypeUri") + .raw_call("getTokenTypeUri") .argument(&type_id) .original_result() } @@ -258,8 +247,7 @@ where type_id: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("isFungible") + .raw_call("isFungible") .argument(&type_id) .original_result() } @@ -273,8 +261,7 @@ where owner: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("isApprovedForAll") + .raw_call("isApprovedForAll") .argument(&operator) .argument(&owner) .original_result() diff --git a/contracts/feature-tests/erc-style-contracts/erc1155/src/erc1155_user_proxy.rs b/contracts/feature-tests/erc-style-contracts/erc1155/src/erc1155_user_proxy.rs index 9d1f909079..8dd67d4061 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/src/erc1155_user_proxy.rs +++ b/contracts/feature-tests/erc-style-contracts/erc1155/src/erc1155_user_proxy.rs @@ -52,8 +52,7 @@ where data: Arg4, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("onERC1155Received") + .raw_call("onERC1155Received") .argument(&operator) .argument(&from) .argument(&type_id) @@ -77,8 +76,7 @@ where data: Arg4, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("onERC1155BatchReceived") + .raw_call("onERC1155BatchReceived") .argument(&operator) .argument(&from) .argument(&type_ids) diff --git a/contracts/feature-tests/erc-style-contracts/lottery-erc20/src/erc20_proxy.rs b/contracts/feature-tests/erc-style-contracts/lottery-erc20/src/erc20_proxy.rs index 4acfd01eb2..5d53567a38 100644 --- a/contracts/feature-tests/erc-style-contracts/lottery-erc20/src/erc20_proxy.rs +++ b/contracts/feature-tests/erc-style-contracts/lottery-erc20/src/erc20_proxy.rs @@ -72,8 +72,7 @@ where self, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("totalSupply") + .raw_call("totalSupply") .original_result() } @@ -90,8 +89,7 @@ where address: Arg0, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("balanceOf") + .raw_call("balanceOf") .argument(&address) .original_result() } @@ -112,8 +110,7 @@ where spender: Arg1, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("allowance") + .raw_call("allowance") .argument(&owner) .argument(&spender) .original_result() @@ -134,8 +131,7 @@ where amount: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("transfer") + .raw_call("transfer") .argument(&to) .argument(&amount) .original_result() @@ -160,8 +156,7 @@ where amount: Arg2, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("transferFrom") + .raw_call("transferFrom") .argument(&sender) .argument(&recipient) .argument(&amount) @@ -185,8 +180,7 @@ where amount: Arg1, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("approve") + .raw_call("approve") .argument(&spender) .argument(&amount) .original_result() diff --git a/contracts/feature-tests/use-module/tests/user_builtin_proxy.rs b/contracts/feature-tests/use-module/tests/user_builtin_proxy.rs index 75e078f55a..fb57dffe11 100644 --- a/contracts/feature-tests/use-module/tests/user_builtin_proxy.rs +++ b/contracts/feature-tests/use-module/tests/user_builtin_proxy.rs @@ -44,8 +44,7 @@ where name: Arg0, ) -> TxProxyCall> { self.wrapped_tx - .raw_call() - .function_name("SetUserName") + .raw_call("SetUserName") .argument(&name) .original_result() } diff --git a/contracts/modules/src/dns_proxy.rs b/contracts/modules/src/dns_proxy.rs index 7b5a0bd8dc..bdaf2ed13b 100644 --- a/contracts/modules/src/dns_proxy.rs +++ b/contracts/modules/src/dns_proxy.rs @@ -44,8 +44,7 @@ where name: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call() - .function_name("register") + .raw_call("register") .argument(&name) .original_result() } From 8f20bd7fcaed7bce1e1f4b4b4881f91cb32ddb8d Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Wed, 3 Apr 2024 17:44:05 +0300 Subject: [PATCH 260/461] proxy multi config --- contracts/examples/adder/sc-config.toml | 4 +- .../meta/src/cmd/contract/generate_proxy.rs | 2 +- .../contract/generate_proxy/proxy_gen_main.rs | 18 ++-- .../generate_proxy/proxy_generator.rs | 95 ++++++++++++------- .../contract/generate_proxy/proxy_naming.rs | 12 --- .../generate_proxy/proxy_process_type_name.rs | 37 ++++++++ framework/meta/src/cmd/contract/sc_config.rs | 2 + .../sc_config/contract_variant_builder.rs | 4 +- .../cmd/contract/sc_config/sc_config_model.rs | 7 +- .../cmd/contract/sc_config/sc_config_proxy.rs | 37 ++++++++ .../cmd/contract/sc_config/sc_config_serde.rs | 8 +- 11 files changed, 159 insertions(+), 67 deletions(-) delete mode 100644 framework/meta/src/cmd/contract/generate_proxy/proxy_naming.rs create mode 100644 framework/meta/src/cmd/contract/generate_proxy/proxy_process_type_name.rs create mode 100644 framework/meta/src/cmd/contract/sc_config/sc_config_proxy.rs diff --git a/contracts/examples/adder/sc-config.toml b/contracts/examples/adder/sc-config.toml index 702f7844e9..b56f82b429 100644 --- a/contracts/examples/adder/sc-config.toml +++ b/contracts/examples/adder/sc-config.toml @@ -1,2 +1,4 @@ [settings] -proxy-paths = ["src/adder_proxy.rs"] + +[[proxy]] +path = "src/adder_proxy.rs" diff --git a/framework/meta/src/cmd/contract/generate_proxy.rs b/framework/meta/src/cmd/contract/generate_proxy.rs index 15f157de8a..3a7443d612 100644 --- a/framework/meta/src/cmd/contract/generate_proxy.rs +++ b/framework/meta/src/cmd/contract/generate_proxy.rs @@ -1,4 +1,4 @@ pub mod proxy_crate_gen; pub mod proxy_gen_main; mod proxy_generator; -mod proxy_naming; +mod proxy_process_type_name; diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs index a3a35062f6..4ef8582bcb 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_gen_main.rs @@ -1,21 +1,21 @@ +use crate::cmd::contract::sc_config::ProxyConfigSerde; + use super::{ super::meta_config::MetaConfig, proxy_crate_gen::create_file, proxy_generator::ProxyGenerator, }; -const OUTPUT_PROXY_PATH: &str = "/output/proxy.rs"; - impl MetaConfig { pub fn generate_proxy(&mut self) { - write_proxy_with_explicit_path(OUTPUT_PROXY_PATH, self); - let proxy_paths = self.sc_config.proxy_paths.clone(); - for path in proxy_paths { - write_proxy_with_explicit_path(&path, self); + let default_proxy = ProxyConfigSerde::new(); + write_proxy_with_explicit_path(&default_proxy, self); + for proxy_config in self.sc_config.proxy_configs.clone() { + write_proxy_with_explicit_path(&proxy_config, self); } } } -fn write_proxy_with_explicit_path(path: &str, meta_config: &mut MetaConfig) { - let mut file = create_file(path); - let mut proxy_generator = ProxyGenerator::new(meta_config, &mut file); +fn write_proxy_with_explicit_path(proxy_config: &ProxyConfigSerde, meta_config: &mut MetaConfig) { + let mut file = create_file(&proxy_config.path); + let mut proxy_generator = ProxyGenerator::new(meta_config, &mut file, proxy_config); proxy_generator.write_proxy_to_file(); } diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs index 4528f53af6..60e121cf06 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs @@ -5,9 +5,11 @@ use multiversx_sc::abi::{ TypeDescription, }; -use crate::cmd::contract::meta_config::MetaConfig; +use crate::cmd::contract::{meta_config::MetaConfig, sc_config::ProxyConfigSerde}; -use super::proxy_naming::{extract_struct_crate, proxy_methods_type_name, proxy_type_name}; +use super::proxy_process_type_name::{ + extract_paths, extract_struct_crate, process_rust_type, proxy_methods_type_name, proxy_type_name +}; const PRELUDE: &str = "// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. @@ -17,8 +19,9 @@ const PRELUDE: &str = "// Code generated by the multiversx-sc proxy generator. D #![allow(dead_code)] #![allow(clippy::all)] +"; -use multiversx_sc::proxy_imports::*;"; +const IMPORTS: &str = "use multiversx_sc::proxy_imports::*;"; const ZERO: &str = "0"; @@ -37,12 +40,19 @@ const TYPES_FROM_FRAMEWORK: &[&str] = &[ pub struct ProxyGenerator<'a> { pub meta_config: &'a MetaConfig, pub file: Option<&'a mut File>, + pub proxy_config: &'a ProxyConfigSerde, } + impl<'a> ProxyGenerator<'a> { - pub fn new(meta_config: &'a MetaConfig, file: &'a mut File) -> Self { + pub fn new( + meta_config: &'a MetaConfig, + file: &'a mut File, + proxy_config: &'a ProxyConfigSerde, + ) -> Self { Self { meta_config, file: Some(file), + proxy_config, } } @@ -67,6 +77,10 @@ impl<'a> ProxyGenerator<'a> { fn write_header(&mut self) { self.writeln(PRELUDE); + match &self.proxy_config.override_import { + Some(override_import) => self.writeln(override_import), + None => self.writeln(IMPORTS), + } } fn write_tx_proxy_type_def(&mut self) { @@ -481,37 +495,11 @@ where } pub fn clean_paths(&mut self, rust_type: &str) -> String { - let delimiters = "<>,()[] "; - let words: Vec<&str> = rust_type - .split(|c| delimiters.contains(c)) - .filter(|s| !s.is_empty()) - .collect(); - - let crate_name = self - .meta_config - .original_contract_abi - .get_crate_name_for_code(); - let mut words_replacer: Vec = Vec::new(); - for word in &words { - let type_rust_name = word.split("::").last().unwrap(); - if crate_name == extract_struct_crate(word) - || TYPES_FROM_FRAMEWORK.contains(&type_rust_name) - { - words_replacer.push(type_rust_name.to_string()); - } else { - words_replacer.push(word.to_string()); - } - } + let paths = extract_paths(rust_type); - let mut rust_type_with_cleaned_path: String = rust_type.to_string().clone(); - for index in 0..words.len() { - rust_type_with_cleaned_path = rust_type_with_cleaned_path.replace( - words.get(index).unwrap(), - words_replacer.get(index).unwrap(), - ); - } + let processed_paths = self.process_paths(&paths); - rust_type_with_cleaned_path + process_rust_type(rust_type.to_string(), paths, processed_paths) } fn start_write_type( @@ -564,13 +552,46 @@ where fn write_end_of_function(&mut self) { self.writeln(" }"); } + + fn extract_path_rename(&self) -> (&str, &str) { + if let Some(path_rename) = &self.proxy_config.path_rename { + return (&path_rename.from, &path_rename.to); + } + + ("", "") + } + + fn process_paths(&self, paths: &Vec) -> Vec { + let mut processed_paths: Vec = Vec::new(); + let (path_rename_from, path_rename_to) = self.extract_path_rename(); + let crate_name = self + .meta_config + .original_contract_abi + .get_crate_name_for_code(); + + for path in paths { + let type_rust_name = path.split("::").last().unwrap(); + let processed_path = match path { + p if p == path_rename_from => path_rename_to.to_string(), + p if crate_name == extract_struct_crate(p) + || TYPES_FROM_FRAMEWORK.contains(&type_rust_name) => + { + type_rust_name.to_string() + }, + _ => path.to_string(), + }; + processed_paths.push(processed_path); + } + + processed_paths + } } #[cfg(test)] pub mod tests { use multiversx_sc::abi::{BuildInfoAbi, ContractAbi, ContractCrateBuildAbi, FrameworkBuildAbi}; - use crate::cmd::contract::meta_config::MetaConfig; + use crate::cmd::contract::{meta_config::MetaConfig, sc_config::ProxyConfigSerde}; use super::ProxyGenerator; @@ -590,10 +611,11 @@ pub mod tests { let mut proxy_generator = ProxyGenerator { meta_config: &meta_config, file: None, + proxy_config: &ProxyConfigSerde::new(), }; let cleaned_path_unsanitized = proxy_generator.clean_paths( - "(other_crate::contract_crate::TestStruct, Option>)", + "(other_crate::contract_crate::TestStruct, Option>)", ); let expected_result_unsanitized = "(other_crate::contract_crate::TestStruct, Option>)"; @@ -620,10 +642,11 @@ pub mod tests { let mut proxy_generator = ProxyGenerator { meta_config: &meta_config, file: None, + proxy_config: &ProxyConfigSerde::new(), }; let cleaned_path_sanitized = proxy_generator.clean_paths( - "(contract_crate::other_crate::TestStruct, Option>)", + "(contract_crate::other_crate::TestStruct, Option>)", ); let expected_result_sanitized = "(TestStruct, Option>)"; diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_naming.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_naming.rs deleted file mode 100644 index 3c4f1dac2e..0000000000 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_naming.rs +++ /dev/null @@ -1,12 +0,0 @@ -pub(super) fn proxy_type_name(contract_trait_name: &str) -> String { - format!("{contract_trait_name}Proxy") -} - -pub(super) fn proxy_methods_type_name(contract_trait_name: &str) -> String { - format!("{contract_trait_name}ProxyMethods") -} - -pub(super) fn extract_struct_crate(struct_path: &str) -> String { - let crate_name = struct_path.split("::").next().unwrap_or(struct_path); - crate_name.to_string() -} diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_process_type_name.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_process_type_name.rs new file mode 100644 index 0000000000..350243d662 --- /dev/null +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_process_type_name.rs @@ -0,0 +1,37 @@ +pub(super) fn proxy_type_name(contract_trait_name: &str) -> String { + format!("{contract_trait_name}Proxy") +} + +pub(super) fn proxy_methods_type_name(contract_trait_name: &str) -> String { + format!("{contract_trait_name}ProxyMethods") +} + +pub(super) fn extract_struct_crate(struct_path: &str) -> String { + let crate_name = struct_path.split("::").next().unwrap_or(struct_path); + crate_name.to_string() +} + +pub(super) fn process_rust_type( + rust_type: String, + paths: Vec, + processed_paths: Vec, +) -> String { + let mut processed_rust_type: String = rust_type.to_string().clone(); + for index in 0..paths.len() { + processed_rust_type = processed_rust_type.replace( + paths.get(index).unwrap(), + processed_paths.get(index).unwrap(), + ); + } + + processed_rust_type +} + +pub(super) fn extract_paths(rust_type: &str) -> Vec { + let delimiters = "<>,()[] "; + rust_type + .split(|c| delimiters.contains(c)) + .filter(|s| !s.is_empty()) + .map(|s| s.to_string()) + .collect() +} diff --git a/framework/meta/src/cmd/contract/sc_config.rs b/framework/meta/src/cmd/contract/sc_config.rs index 16ac60826e..2fac2e38eb 100644 --- a/framework/meta/src/cmd/contract/sc_config.rs +++ b/framework/meta/src/cmd/contract/sc_config.rs @@ -3,6 +3,7 @@ mod contract_variant_builder; mod contract_variant_settings; mod contract_variant_validate; mod sc_config_model; +mod sc_config_proxy; mod sc_config_serde; mod wasm_build; mod wasm_clean; @@ -12,6 +13,7 @@ mod wasm_update; pub use contract_variant::ContractVariant; pub use contract_variant_settings::{ContractVariantProfile, ContractVariantSettings}; pub use sc_config_model::ScConfig; +pub use sc_config_proxy::ProxyConfigSerde; pub use sc_config_serde::{ ContractVariantProfileSerde, ContractVariantSerde, MultiContractGeneralSettingsSerde, ScConfigSerde, diff --git a/framework/meta/src/cmd/contract/sc_config/contract_variant_builder.rs b/framework/meta/src/cmd/contract/sc_config/contract_variant_builder.rs index c2dc1058f5..bb6a439245 100644 --- a/framework/meta/src/cmd/contract/sc_config/contract_variant_builder.rs +++ b/framework/meta/src/cmd/contract/sc_config/contract_variant_builder.rs @@ -282,7 +282,7 @@ impl ScConfig { ScConfig { default_contract_config_name, contracts, - proxy_paths: config.settings.proxy_paths.clone(), + proxy_configs: config.proxy.clone(), } } } @@ -315,7 +315,7 @@ impl ScConfig { wasm_crate_name, abi: original_abi.clone(), }], - proxy_paths: Vec::new(), + proxy_configs: Vec::new(), } } diff --git a/framework/meta/src/cmd/contract/sc_config/sc_config_model.rs b/framework/meta/src/cmd/contract/sc_config/sc_config_model.rs index f1d579a1a9..076e91a2f7 100644 --- a/framework/meta/src/cmd/contract/sc_config/sc_config_model.rs +++ b/framework/meta/src/cmd/contract/sc_config/sc_config_model.rs @@ -1,4 +1,7 @@ -use super::{contract_variant_validate::validate_contract_variant, ContractVariant}; +use super::{ + contract_variant_validate::validate_contract_variant, sc_config_proxy::ProxyConfigSerde, + ContractVariant, +}; /// Allowed file names for the SC config. /// @@ -15,7 +18,7 @@ pub const SC_CONFIG_FILE_NAMES: &[&str] = &["sc-config.toml", "multicontract.tom pub struct ScConfig { pub default_contract_config_name: String, pub contracts: Vec, - pub proxy_paths: Vec, + pub proxy_configs: Vec, } impl ScConfig { diff --git a/framework/meta/src/cmd/contract/sc_config/sc_config_proxy.rs b/framework/meta/src/cmd/contract/sc_config/sc_config_proxy.rs new file mode 100644 index 0000000000..5521b1ee38 --- /dev/null +++ b/framework/meta/src/cmd/contract/sc_config/sc_config_proxy.rs @@ -0,0 +1,37 @@ +use serde::Deserialize; + +const DEFAULT_PATH: &str = "/output/proxy.rs"; + +#[derive(Deserialize, Default, Debug, Clone, PartialEq, Eq)] +#[serde(deny_unknown_fields)] +pub struct ProxyConfigSerde { + #[serde(default)] + pub path: String, + + #[serde(default)] + #[serde(rename = "override-import")] + pub override_import: Option, + + #[serde(default)] + #[serde(rename = "path-rename")] + pub path_rename: Option, +} + +impl ProxyConfigSerde { + pub fn new() -> Self { + Self { + path: DEFAULT_PATH.to_string(), + override_import: None, + path_rename: None, + } + } +} + +#[derive(Deserialize, Default, Debug, Clone, PartialEq, Eq)] +pub struct PathRename { + #[serde(default)] + pub from: String, + + #[serde(default)] + pub to: String, +} diff --git a/framework/meta/src/cmd/contract/sc_config/sc_config_serde.rs b/framework/meta/src/cmd/contract/sc_config/sc_config_serde.rs index 4dd51a1a23..c3c6b94d30 100644 --- a/framework/meta/src/cmd/contract/sc_config/sc_config_serde.rs +++ b/framework/meta/src/cmd/contract/sc_config/sc_config_serde.rs @@ -1,6 +1,8 @@ use serde::Deserialize; use std::collections::HashMap; +use super::ProxyConfigSerde; + #[derive(Deserialize, Debug)] #[serde(deny_unknown_fields)] pub struct ScConfigSerde { @@ -9,6 +11,8 @@ pub struct ScConfigSerde { #[serde(default)] pub contracts: HashMap, #[serde(default)] + pub proxy: Vec, + #[serde(default)] #[serde(rename = "labels-for-contracts")] pub labels_for_contracts: HashMap>, } @@ -62,10 +66,6 @@ pub struct ContractVariantSerde { #[serde(deny_unknown_fields)] pub struct MultiContractGeneralSettingsSerde { pub main: Option, - - #[serde(default)] - #[serde(rename = "proxy-paths")] - pub proxy_paths: Vec, } #[derive(Deserialize, Default, Debug, Clone, PartialEq, Eq)] From fc35cfb635762a8637dafc3dc0a9cf2ab19e919a Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Wed, 3 Apr 2024 18:06:12 +0300 Subject: [PATCH 261/461] proxy multi config - change sc-config --- .../examples/crowdfunding-esdt/sc-config.toml | 4 ++-- contracts/examples/crypto-zombies/sc-config.toml | 4 ++-- contracts/examples/digital-cash/sc-config.toml | 4 ++-- contracts/examples/multisig/sc-config.toml | 4 +++- contracts/examples/seed-nft-minter/sc-config.toml | 4 ++-- contracts/feature-tests/abi-tester/sc-config.toml | 9 +++++++-- .../child/sc-config.toml | 4 ++-- .../composability/recursive-caller/sc-config.toml | 4 ++-- .../composability/vault/sc-config.toml | 14 +++++++++----- .../panic-message-features/sc-config.toml | 4 +++- 10 files changed, 34 insertions(+), 21 deletions(-) diff --git a/contracts/examples/crowdfunding-esdt/sc-config.toml b/contracts/examples/crowdfunding-esdt/sc-config.toml index 6539909c96..16f6430728 100644 --- a/contracts/examples/crowdfunding-esdt/sc-config.toml +++ b/contracts/examples/crowdfunding-esdt/sc-config.toml @@ -1,2 +1,2 @@ -[settings] -proxy-paths = ["src/crowdfunding_esdt_proxy.rs"] +[[proxy]] +path = "src/crowdfunding_esdt_proxy.rs" diff --git a/contracts/examples/crypto-zombies/sc-config.toml b/contracts/examples/crypto-zombies/sc-config.toml index d43702bdfa..d1f317be2c 100644 --- a/contracts/examples/crypto-zombies/sc-config.toml +++ b/contracts/examples/crypto-zombies/sc-config.toml @@ -1,2 +1,2 @@ -[settings] -proxy-paths = ["src/proxy_crypto_zombies.rs"] \ No newline at end of file +[[proxy]] +path = "src/proxy_crypto_zombies.rs" diff --git a/contracts/examples/digital-cash/sc-config.toml b/contracts/examples/digital-cash/sc-config.toml index e33ce56689..39234c29d8 100644 --- a/contracts/examples/digital-cash/sc-config.toml +++ b/contracts/examples/digital-cash/sc-config.toml @@ -1,2 +1,2 @@ -[settings] -proxy-paths = ["src/digital_cash_proxy.rs"] \ No newline at end of file +[[proxy]] +path = "src/digital_cash_proxy.rs" diff --git a/contracts/examples/multisig/sc-config.toml b/contracts/examples/multisig/sc-config.toml index 00417afac7..79c3aeaa20 100644 --- a/contracts/examples/multisig/sc-config.toml +++ b/contracts/examples/multisig/sc-config.toml @@ -1,5 +1,4 @@ [settings] -proxy-paths = ["src/multisig_proxy.rs"] main = "main" [contracts.main] @@ -15,3 +14,6 @@ name = "multisig-view" external-view = true add-unlabelled = false add-labels = ["multisig-external-view"] + +[[proxy]] +path = "src/multisig_proxy.rs" diff --git a/contracts/examples/seed-nft-minter/sc-config.toml b/contracts/examples/seed-nft-minter/sc-config.toml index 03b009a5fa..5597c10092 100644 --- a/contracts/examples/seed-nft-minter/sc-config.toml +++ b/contracts/examples/seed-nft-minter/sc-config.toml @@ -1,2 +1,2 @@ -[settings] -proxy-paths = ["../rewards-distribution/src/seed_nft_minter_proxy.rs"] +[[proxy]] +path = "../rewards-distribution/src/seed_nft_minter_proxy.rs" diff --git a/contracts/feature-tests/abi-tester/sc-config.toml b/contracts/feature-tests/abi-tester/sc-config.toml index 20d63c86b8..df90daa529 100644 --- a/contracts/feature-tests/abi-tester/sc-config.toml +++ b/contracts/feature-tests/abi-tester/sc-config.toml @@ -1,7 +1,6 @@ # Abi-tester multi-contract config, used for testing. [settings] -proxy-paths = ["src/abi_proxy.rs"] main = "main" [contracts.main] @@ -12,4 +11,10 @@ name = "abi-tester-ev" external-view = true add-unlabelled = false add-labels = ["test-external-view"] -add-endpoints = ["payable_any_token", "label_a"] # labels can be bypassed, endpoints added directly +add-endpoints = [ + "payable_any_token", + "label_a", +] # labels can be bypassed, endpoints added directly + +[[proxy]] +path = "src/abi_proxy.rs" diff --git a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/child/sc-config.toml b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/child/sc-config.toml index a80372b407..14d4385ae3 100644 --- a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/child/sc-config.toml +++ b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/child/sc-config.toml @@ -1,2 +1,2 @@ -[settings] -proxy-paths = ["../parent/src/child_proxy.rs"] \ No newline at end of file +[[proxy]] +path = "../parent/src/child_proxy.rs" diff --git a/contracts/feature-tests/composability/recursive-caller/sc-config.toml b/contracts/feature-tests/composability/recursive-caller/sc-config.toml index 7b21858e3c..48d2e6bb8f 100644 --- a/contracts/feature-tests/composability/recursive-caller/sc-config.toml +++ b/contracts/feature-tests/composability/recursive-caller/sc-config.toml @@ -1,2 +1,2 @@ -[settings] -proxy-paths = ["src/self_proxy.rs"] +[[proxy]] +path = "src/self_proxy.rs" diff --git a/contracts/feature-tests/composability/vault/sc-config.toml b/contracts/feature-tests/composability/vault/sc-config.toml index 107694e4fe..130812eff2 100644 --- a/contracts/feature-tests/composability/vault/sc-config.toml +++ b/contracts/feature-tests/composability/vault/sc-config.toml @@ -1,10 +1,5 @@ [settings] main = "main" -proxy-paths = [ - "../forwarder/src/vault_proxy.rs", - "../promises-features/src/vault_proxy.rs", - "../recursive-caller/src/vault_proxy.rs" -] [contracts.main] name = "vault" @@ -20,3 +15,12 @@ add-labels = ["promises-endpoint"] name = "vault-upgrade" add-unlabelled = false add-labels = ["upgrade"] + +[[proxy]] +path = "../forwarder/src/vault_proxy.rs" + +[[proxy]] +path = "../promises-features/src/vault_proxy.rs" + +[[proxy]] +path = "../recursive-caller/src/vault_proxy.rs" diff --git a/contracts/feature-tests/panic-message-features/sc-config.toml b/contracts/feature-tests/panic-message-features/sc-config.toml index 7b60b5fb8c..a5d6671115 100644 --- a/contracts/feature-tests/panic-message-features/sc-config.toml +++ b/contracts/feature-tests/panic-message-features/sc-config.toml @@ -1,7 +1,9 @@ [settings] -proxy-paths = ["tests/pmf_proxy.rs"] main = "main" [contracts.main] name = "panic-message-features" panic-message = true + +[[proxy]] +path = "tests/pmf_proxy.rs" From 2a7679543e42aa2821cea196a7ac90c29feabd0a Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 3 Apr 2024 19:09:57 +0300 Subject: [PATCH 262/461] fix after merge --- contracts/feature-tests/exchange-features/Cargo.toml | 4 ++-- contracts/feature-tests/exchange-features/meta/Cargo.toml | 2 +- contracts/feature-tests/exchange-features/wasm/Cargo.toml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/contracts/feature-tests/exchange-features/Cargo.toml b/contracts/feature-tests/exchange-features/Cargo.toml index bdb1a7dd66..8e7f760f8a 100644 --- a/contracts/feature-tests/exchange-features/Cargo.toml +++ b/contracts/feature-tests/exchange-features/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/exchange_features.rs" [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/exchange-features/meta/Cargo.toml b/contracts/feature-tests/exchange-features/meta/Cargo.toml index ca186c0ec1..553871b6cb 100644 --- a/contracts/feature-tests/exchange-features/meta/Cargo.toml +++ b/contracts/feature-tests/exchange-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/exchange-features/wasm/Cargo.toml b/contracts/feature-tests/exchange-features/wasm/Cargo.toml index 977914cedf..af96286900 100644 --- a/contracts/feature-tests/exchange-features/wasm/Cargo.toml +++ b/contracts/feature-tests/exchange-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0-alpha.1" path = "../../../../framework/wasm-adapter" [workspace] From 7f2a1f8bb9b579850469575190e850b432f6b4e1 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Wed, 3 Apr 2024 22:34:52 +0300 Subject: [PATCH 263/461] crypto kitties migration - replace proxy --- .../kitty-auction/src/auction.rs | 3 +- .../src/kitty_ownership_proxy.rs | 28 +--- .../crypto-kitties/kitty-ownership/src/lib.rs | 8 +- .../kitty-ownership/src/structs.rs | 151 ------------------ .../src/kitty_ownership_proxy.rs | 22 +-- 5 files changed, 20 insertions(+), 192 deletions(-) delete mode 100644 contracts/examples/crypto-kitties/kitty-ownership/src/structs.rs diff --git a/contracts/examples/crypto-kitties/kitty-auction/src/auction.rs b/contracts/examples/crypto-kitties/kitty-auction/src/auction.rs index fda71eb13d..261def0cf0 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/src/auction.rs +++ b/contracts/examples/crypto-kitties/kitty-auction/src/auction.rs @@ -11,7 +11,8 @@ pub enum AuctionType { Siring, } -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[type_abi] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct Auction { pub auction_type: AuctionType, pub starting_price: BigUint, diff --git a/contracts/examples/crypto-kitties/kitty-auction/src/kitty_ownership_proxy.rs b/contracts/examples/crypto-kitties/kitty-auction/src/kitty_ownership_proxy.rs index aa6b43a3ee..e43a200ce2 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/src/kitty_ownership_proxy.rs +++ b/contracts/examples/crypto-kitties/kitty-auction/src/kitty_ownership_proxy.rs @@ -241,7 +241,7 @@ where >( self, kitty_id: Arg0, - ) -> TxProxyCall { + ) -> TxProxyCall { self.wrapped_tx .raw_call("getKittyById") .argument(&kitty_id) @@ -337,29 +337,3 @@ where .original_result() } } - -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct Kitty { - pub genes: KittyGenes, - pub birth_time: u64, - pub cooldown_end: u64, - pub matron_id: u32, - pub sire_id: u32, - pub siring_with_id: u32, - pub nr_children: u16, - pub generation: u16, -} - -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, Clone, Default)] -pub struct KittyGenes { - pub fur_color: Color, - pub eye_color: Color, - pub meow_power: u8, -} - -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, Clone, Default)] -pub struct Color { - pub r: u8, - pub g: u8, - pub b: u8, -} diff --git a/contracts/examples/crypto-kitties/kitty-ownership/src/lib.rs b/contracts/examples/crypto-kitties/kitty-ownership/src/lib.rs index 51a433080a..730f6a3d0f 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/src/lib.rs +++ b/contracts/examples/crypto-kitties/kitty-ownership/src/lib.rs @@ -2,12 +2,12 @@ #![allow(clippy::suspicious_operation_groupings)] pub mod kitty_genetic_alg_proxy; -pub mod structs; +use kitty::{kitty_genes::KittyGenes, Kitty}; +use multiversx_sc::imports::*; -use crate::structs::*; use core::cmp::max; -use multiversx_sc::imports::*; -use random::{Random, Randomizeable}; + +use random::*; #[multiversx_sc::contract] pub trait KittyOwnership { diff --git a/contracts/examples/crypto-kitties/kitty-ownership/src/structs.rs b/contracts/examples/crypto-kitties/kitty-ownership/src/structs.rs deleted file mode 100644 index 7b17f52dc7..0000000000 --- a/contracts/examples/crypto-kitties/kitty-ownership/src/structs.rs +++ /dev/null @@ -1,151 +0,0 @@ -use multiversx_sc::derive_imports::*; -use random::{Random, Randomizeable}; - -const SECONDS_PER_MINUTE: u64 = 60; -const MAX_COOLDOWN: u64 = 60 * 60 * 24 * 7; // 7 days -const MAX_TIREDNESS: u16 = 20; - -#[type_abi] -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct Kitty { - pub genes: KittyGenes, - pub birth_time: u64, // timestamp - pub cooldown_end: u64, // timestamp, used for pregnancy timer and siring cooldown - pub matron_id: u32, - pub sire_id: u32, - pub siring_with_id: u32, // for pregnant cats, 0 otherwise - pub nr_children: u16, // cooldown period increases exponentially with every breeding/siring - pub generation: u16, // max(sire_gen, matron_gen) + 1. Generation also influences cooldown. -} - -impl Randomizeable for KittyGenes { - fn get_random(random: &mut Random) -> Self { - KittyGenes { - fur_color: Color::get_random(random), - eye_color: Color::get_random(random), - meow_power: random.next_u8(), - } - } -} - -impl Kitty { - pub fn new( - genes: KittyGenes, - birth_time: u64, - matron_id: u32, - sire_id: u32, - generation: u16, - ) -> Self { - Kitty { - genes, - birth_time, - cooldown_end: 0, - matron_id, - sire_id, - siring_with_id: 0, - nr_children: 0, - generation, - } - } - - pub fn get_next_cooldown_time(&self) -> u64 { - let tiredness = self.nr_children + self.generation / 2; - if tiredness > MAX_TIREDNESS { - return MAX_COOLDOWN; - } - - let cooldown = SECONDS_PER_MINUTE << tiredness; // 2^(tiredness) minutes - if cooldown > MAX_COOLDOWN { - MAX_COOLDOWN - } else { - cooldown - } - } - - pub fn get_fur_color(&self) -> Color { - self.genes.fur_color.clone() - } - - pub fn get_eye_color(&self) -> Color { - self.genes.eye_color.clone() - } - - pub fn get_meow_power(&self) -> u8 { - self.genes.meow_power - } - - pub fn is_pregnant(&self) -> bool { - self.siring_with_id != 0 - } -} - -// The default Kitty, which is not a valid kitty. Used for Kitty with ID 0 -impl Default for Kitty { - fn default() -> Self { - Kitty { - genes: KittyGenes::default(), - birth_time: 0, - cooldown_end: u64::MAX, - matron_id: 0, - sire_id: 0, - siring_with_id: 0, - nr_children: 0, - generation: 0, - } - } -} - -#[type_abi] -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, Clone, Default)] -pub struct KittyGenes { - pub fur_color: Color, - pub eye_color: Color, - pub meow_power: u8, // the higher the value, the louder the cat -} - -impl KittyGenes { - pub fn get_as_u64(&self) -> u64 { - (self.fur_color.as_u64() << 12 | self.eye_color.as_u64()) << 4 - | self.meow_power.to_be() as u64 - } -} - -#[type_abi] -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, Clone, Default)] -pub struct Color { - pub r: u8, - pub g: u8, - pub b: u8, -} - -impl Color { - // ratios are integers, 0 < ratio < 100, ratioFirst + ratioSecond = 100 - // checks should be done in the caller - #[must_use] - pub fn mix_with(&self, other_color: &Color, ratio_first: u8, ratio_second: u8) -> Color { - let r = ((self.r as u16 * ratio_first as u16 + other_color.r as u16 * ratio_second as u16) - / 100) as u8; - - let g = ((self.g as u16 * ratio_first as u16 + other_color.g as u16 * ratio_second as u16) - / 100) as u8; - - let b = ((self.b as u16 * ratio_first as u16 + other_color.b as u16 * ratio_second as u16) - / 100) as u8; - - Color { r, g, b } - } - - pub fn as_u64(&self) -> u64 { - ((self.r.to_be() as u64) << 4 | self.r.to_be() as u64) << 4 | self.r.to_be() as u64 - } -} - -impl Randomizeable for Color { - fn get_random(random: &mut Random) -> Self { - Color { - r: random.next_u8(), - g: random.next_u8(), - b: random.next_u8(), - } - } -} diff --git a/contracts/examples/crypto-zombies/src/kitty_ownership_proxy.rs b/contracts/examples/crypto-zombies/src/kitty_ownership_proxy.rs index aa6b43a3ee..41b707e2be 100644 --- a/contracts/examples/crypto-zombies/src/kitty_ownership_proxy.rs +++ b/contracts/examples/crypto-zombies/src/kitty_ownership_proxy.rs @@ -1,12 +1,3 @@ -// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. - -//////////////////////////////////////////////////// -////////////////// AUTO-GENERATED ////////////////// -//////////////////////////////////////////////////// - -#![allow(dead_code)] -#![allow(clippy::all)] - use multiversx_sc::proxy_imports::*; pub struct KittyOwnershipProxy; @@ -363,3 +354,16 @@ pub struct Color { pub g: u8, pub b: u8, } + +impl KittyGenes { + pub fn get_as_u64(&self) -> u64 { + (self.fur_color.as_u64() << 12 | self.eye_color.as_u64()) << 4 + | self.meow_power.to_be() as u64 + } +} + +impl Color { + pub fn as_u64(&self) -> u64 { + ((self.r.to_be() as u64) << 4 | self.r.to_be() as u64) << 4 | self.r.to_be() as u64 + } +} From 0ad4c78e8301c91c57db34da5e492319a888407d Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Thu, 4 Apr 2024 00:54:32 +0200 Subject: [PATCH 264/461] ContractCall* structs replace with unified syntax --- .../interact/src/multisig_interact_wegld.rs | 29 +++---- .../forwarder-queue/src/forwarder_queue.rs | 36 ++++----- .../forwarder-raw/src/forwarder_raw_async.rs | 12 ++- .../forwarder/src/vault_proxy.rs | 4 +- .../promises-features/src/vault_proxy.rs | 4 +- .../recursive-caller/src/vault_proxy.rs | 4 +- .../transfer-role-features/src/lib.rs | 4 +- .../tests/transfer_role_whitebox_test.rs | 8 +- .../composability/vault/src/vault.rs | 2 +- .../vault/wasm-vault-promises/src/lib.rs | 2 +- .../composability/vault/wasm/src/lib.rs | 2 +- contracts/modules/src/transfer_role_proxy.rs | 75 ++++++++++--------- framework/base/src/macros.rs | 7 -- framework/base/src/types/interaction/tx.rs | 24 +++++- .../interaction/tx_exec/tx_exec_async.rs | 1 + .../tx_exec/tx_exec_async_promises.rs | 19 +++++ .../tx_payment_egld_or_multi_esdt.rs | 60 +++++++++++++++ 17 files changed, 187 insertions(+), 106 deletions(-) diff --git a/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs b/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs index 6e3c10563e..b267f17357 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs @@ -1,19 +1,16 @@ use std::time::Duration; use multiversx_sc_scenario::{ - multiversx_sc::types::{ContractCallBase, FunctionCall, ReturnsResult}, + multiversx_sc::types::{FunctionCall, ManagedAddress, ReturnsResult}, NumExpr, }; #[allow(unused_imports)] use multiversx_sc_snippets::multiversx_sc::types::{ EsdtTokenPayment, MultiValueEncoded, TokenIdentifier, }; -use multiversx_sc_snippets::{ - multiversx_sc::types::ContractCallNoPayment, - multiversx_sc_scenario::{ - mandos_system::ScenarioRunner, scenario_format::interpret_trait::InterpretableFrom, - standalone::retrieve_account_as_scenario_set_state, - }, +use multiversx_sc_snippets::multiversx_sc_scenario::{ + mandos_system::ScenarioRunner, scenario_format::interpret_trait::InterpretableFrom, + standalone::retrieve_account_as_scenario_set_state, }; use super::*; @@ -85,16 +82,13 @@ impl MultisigInteract { } async fn propose_unwrap_egld(&mut self) -> usize { - let contract_call = ContractCallNoPayment::::new( - bech32::decode(WEGLD_SWAP_SC_BECH32).into(), - "unwrapEgld", - ) - .with_esdt_transfer(EsdtTokenPayment::new( + let to = ManagedAddress::::from(bech32::decode(WEGLD_SWAP_SC_BECH32)); + let payment = EsdtTokenPayment::new( TokenIdentifier::from(WEGLD_TOKEN_IDENTIFIER), 0u64, UNWRAP_AMOUNT.into(), - )) - .into_normalized(); + ); + let function_call = FunctionCall::new("unwrapEgld"); let action_id = self .interactor @@ -103,11 +97,8 @@ impl MultisigInteract { .to(&self.state.multisig().to_address()) .gas(NumExpr("10,000,000")) .typed(multisig_proxy::MultisigProxy) - .propose_async_call( - contract_call.basic.to, - 0u64, - contract_call.basic.function_call, - ) + .propose_async_call(to, 0u64, function_call) + .esdt(payment) .returns(ReturnsResult) .prepare_async() .run() diff --git a/contracts/feature-tests/composability/forwarder-queue/src/forwarder_queue.rs b/contracts/feature-tests/composability/forwarder-queue/src/forwarder_queue.rs index 66595bc54f..7b353e4ab0 100644 --- a/contracts/feature-tests/composability/forwarder-queue/src/forwarder_queue.rs +++ b/contracts/feature-tests/composability/forwarder-queue/src/forwarder_queue.rs @@ -172,30 +172,27 @@ pub trait ForwarderQueue { }, }; - let contract_call = ContractCallWithAnyPayment::<_, ()>::new( - call.to, - call.endpoint_name, - call.payments, - ); + let contract_call = self + .tx() + .raw_call(call.endpoint_name) + .to(&call.to) + .payment(&call.payments); match call.call_type { QueuedCallType::Sync => { - contract_call.execute_on_dest_context::<()>(); + contract_call.sync_call(); }, QueuedCallType::LegacyAsync => { - contract_call.async_call().call_and_exit(); + contract_call.async_call_and_exit(); }, QueuedCallType::TransferExecute => { - contract_call - .with_gas_limit(call.gas_limit) - .transfer_execute(); + contract_call.gas(call.gas_limit).transfer_execute(); }, QueuedCallType::Promise => { contract_call - .with_gas_limit(call.gas_limit) - .with_raw_arguments(call.args) - .async_call_promise() - .with_callback(self.callbacks().promises_callback_method()) + .gas(call.gas_limit) + .arguments_raw(call.args) + .callback(self.callbacks().promises_callback_method()) .register_promise(); }, } @@ -208,10 +205,13 @@ pub trait ForwarderQueue { self.callback_count().update(|c| *c += 1); let payments = self.call_value().any_payment(); - let payments_data_string = - ContractCallNoPayment::<_, ()>::new(ManagedAddress::default(), ManagedBuffer::new()) - .with_any_payment(payments) - .into_call_data_string(); + let payments_data_string = self + .tx() + .to(&ManagedAddress::default()) + .payment(payments) + .function_call(FunctionCall::empty()) + .to_call_data_string(); + self.callback_payments().set(payments_data_string); } diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs index 944e3365b6..fbd0eec1a4 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs @@ -196,12 +196,10 @@ pub trait ForwarderRawAsync: super::forwarder_raw_common::ForwarderRawCommon { all_payments.push(EsdtTokenPayment::new(token_identifier, token_nonce, amount)); } - ContractCallWithMultiEsdt::::new( - to, - "burn_and_create_retrive_async", - all_payments, - ) - .async_call() - .call_and_exit_ignore_callback() + self.tx() + .raw_call("burn_and_create_retrieve_async") + .to(&to) + .payment(&all_payments) + .async_call_and_exit() } } diff --git a/contracts/feature-tests/composability/forwarder/src/vault_proxy.rs b/contracts/feature-tests/composability/forwarder/src/vault_proxy.rs index 81dc99b8f0..656db40983 100644 --- a/contracts/feature-tests/composability/forwarder/src/vault_proxy.rs +++ b/contracts/feature-tests/composability/forwarder/src/vault_proxy.rs @@ -214,11 +214,11 @@ where .original_result() } - pub fn burn_and_create_retrive_async( + pub fn burn_and_create_retrieve_async( self, ) -> TxProxyCall { self.wrapped_tx - .raw_call("burn_and_create_retrive_async") + .raw_call("burn_and_create_retrieve_async") .original_result() } diff --git a/contracts/feature-tests/composability/promises-features/src/vault_proxy.rs b/contracts/feature-tests/composability/promises-features/src/vault_proxy.rs index 81dc99b8f0..656db40983 100644 --- a/contracts/feature-tests/composability/promises-features/src/vault_proxy.rs +++ b/contracts/feature-tests/composability/promises-features/src/vault_proxy.rs @@ -214,11 +214,11 @@ where .original_result() } - pub fn burn_and_create_retrive_async( + pub fn burn_and_create_retrieve_async( self, ) -> TxProxyCall { self.wrapped_tx - .raw_call("burn_and_create_retrive_async") + .raw_call("burn_and_create_retrieve_async") .original_result() } diff --git a/contracts/feature-tests/composability/recursive-caller/src/vault_proxy.rs b/contracts/feature-tests/composability/recursive-caller/src/vault_proxy.rs index 81dc99b8f0..656db40983 100644 --- a/contracts/feature-tests/composability/recursive-caller/src/vault_proxy.rs +++ b/contracts/feature-tests/composability/recursive-caller/src/vault_proxy.rs @@ -214,11 +214,11 @@ where .original_result() } - pub fn burn_and_create_retrive_async( + pub fn burn_and_create_retrieve_async( self, ) -> TxProxyCall { self.wrapped_tx - .raw_call("burn_and_create_retrive_async") + .raw_call("burn_and_create_retrieve_async") .original_result() } diff --git a/contracts/feature-tests/composability/transfer-role-features/src/lib.rs b/contracts/feature-tests/composability/transfer-role-features/src/lib.rs index b689b76d43..125cd4fb23 100644 --- a/contracts/feature-tests/composability/transfer-role-features/src/lib.rs +++ b/contracts/feature-tests/composability/transfer-role-features/src/lib.rs @@ -30,7 +30,7 @@ pub trait TransferRoleFeatures: } if !self.blockchain().is_smart_contract(&dest) { - self.transfer_to_user(original_caller, dest, payments.clone_value(), endpoint_name); + self.transfer_to_user(original_caller, dest, &payments, endpoint_name); } else { let mut args_buffer = ManagedArgBuffer::new(); for arg in args { @@ -40,7 +40,7 @@ pub trait TransferRoleFeatures: self.transfer_to_contract_raw( original_caller, dest, - payments.clone_value(), + &payments, endpoint_name, args_buffer, None, 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 155f82ce9d..f50b2f88ba 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 @@ -104,7 +104,7 @@ fn test_transfer_role() { sc.transfer_to_user( managed_address!(&address_expr_to_address(USER_ADDRESS_EXPR)), managed_address!(&address_expr_to_address(OWNER_ADDRESS_EXPR)), - payments, + &payments, managed_buffer!(b"enjoy"), ); }, @@ -135,7 +135,7 @@ fn test_transfer_role() { sc.transfer_to_user( managed_address!(&address_expr_to_address(USER_ADDRESS_EXPR)), managed_address!(&Address::zero()), - payments, + &payments, managed_buffer!(b"enjoy"), ); }, @@ -159,7 +159,7 @@ fn test_transfer_role() { sc.transfer_to_contract_raw( managed_address!(&address_expr_to_address(USER_ADDRESS_EXPR)), managed_address!(&address_expr_to_address(VAULT_ADDRESS_EXPR)), - payments, + &payments, managed_buffer!(ACCEPT_FUNDS_FUNC_NAME), ManagedArgBuffer::new(), None, @@ -191,7 +191,7 @@ fn test_transfer_role() { sc.transfer_to_contract_raw( managed_address!(&address_expr_to_address(USER_ADDRESS_EXPR)), managed_address!(&address_expr_to_address(VAULT_ADDRESS_EXPR)), - payments, + &payments, managed_buffer!(REJECT_FUNDS_FUNC_NAME), ManagedArgBuffer::new(), None, diff --git a/contracts/feature-tests/composability/vault/src/vault.rs b/contracts/feature-tests/composability/vault/src/vault.rs index ab22590572..d23123ca01 100644 --- a/contracts/feature-tests/composability/vault/src/vault.rs +++ b/contracts/feature-tests/composability/vault/src/vault.rs @@ -193,7 +193,7 @@ pub trait Vault { #[payable("*")] #[endpoint] - fn burn_and_create_retrive_async(&self) { + fn burn_and_create_retrieve_async(&self) { let payments = self.call_value().all_esdt_transfers(); let mut uris = ManagedVec::new(); uris.push(ManagedBuffer::new()); diff --git a/contracts/feature-tests/composability/vault/wasm-vault-promises/src/lib.rs b/contracts/feature-tests/composability/vault/wasm-vault-promises/src/lib.rs index f1a599dafe..6a814f3b57 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-promises/src/lib.rs +++ b/contracts/feature-tests/composability/vault/wasm-vault-promises/src/lib.rs @@ -30,7 +30,7 @@ multiversx_sc_wasm_adapter::endpoints! { retrieve_funds_with_transfer_exec => retrieve_funds_with_transfer_exec retrieve_funds => retrieve_funds retrieve_multi_funds_async => retrieve_multi_funds_async - burn_and_create_retrive_async => burn_and_create_retrive_async + burn_and_create_retrieve_async => burn_and_create_retrieve_async get_owner_address => get_owner_address call_counts => call_counts num_called_retrieve_funds_promises => num_called_retrieve_funds_promises diff --git a/contracts/feature-tests/composability/vault/wasm/src/lib.rs b/contracts/feature-tests/composability/vault/wasm/src/lib.rs index c6e864fbbe..0c5cd48e03 100644 --- a/contracts/feature-tests/composability/vault/wasm/src/lib.rs +++ b/contracts/feature-tests/composability/vault/wasm/src/lib.rs @@ -32,7 +32,7 @@ multiversx_sc_wasm_adapter::endpoints! { retrieve_funds_with_transfer_exec => retrieve_funds_with_transfer_exec retrieve_funds => retrieve_funds retrieve_multi_funds_async => retrieve_multi_funds_async - burn_and_create_retrive_async => burn_and_create_retrive_async + burn_and_create_retrieve_async => burn_and_create_retrieve_async get_owner_address => get_owner_address call_counts => call_counts num_called_retrieve_funds_promises => num_called_retrieve_funds_promises diff --git a/contracts/modules/src/transfer_role_proxy.rs b/contracts/modules/src/transfer_role_proxy.rs index 2c272eb01b..9001de263d 100644 --- a/contracts/modules/src/transfer_role_proxy.rs +++ b/contracts/modules/src/transfer_role_proxy.rs @@ -13,19 +13,26 @@ pub trait TransferRoleProxyModule { &self, original_caller: ManagedAddress, dest: ManagedAddress, - payments: PaymentsVec, + payments: &PaymentsVec, data: ManagedBuffer, ) -> ! { - let contract_call = - ContractCallWithMultiEsdt::::new(dest, data, payments.clone()); + let transaction = self.tx().to(&dest).raw_call(data).payment(payments); - self.execute_async_call(original_caller, payments, contract_call, None); + self.execute_async_call(original_caller, payments, transaction, None) } fn transfer_to_contract_typed_call( &self, original_caller: ManagedAddress, - contract_call: ContractCallWithMultiEsdt, + transaction: Tx< + TxScEnv, + (), + &ManagedAddress, + &ManagedVec>, + (), + FunctionCall, + (), + >, opt_custom_callback: Option>, ) -> ! where @@ -33,8 +40,8 @@ pub trait TransferRoleProxyModule { { self.execute_async_call( original_caller, - contract_call.esdt_payments.clone(), - contract_call, + transaction.payment, + transaction, opt_custom_callback, ); } @@ -43,59 +50,55 @@ pub trait TransferRoleProxyModule { &self, original_caller: ManagedAddress, dest: ManagedAddress, - payments: PaymentsVec, + payments: &PaymentsVec, endpoint_name: ManagedBuffer, args: ManagedArgBuffer, opt_custom_callback: Option>, ) -> ! { - let contract_call = - ContractCallWithMultiEsdt::::new(dest, endpoint_name, payments.clone()) - .with_raw_arguments(args); - - self.execute_async_call( - original_caller, - payments, - contract_call, - opt_custom_callback, - ); + let transaction = self + .tx() + .to(&dest) + .raw_call(endpoint_name) + .payment(payments) + .arguments_raw(args); + + self.execute_async_call(original_caller, payments, transaction, opt_custom_callback) } - fn execute_async_call( + fn execute_async_call( &self, original_caller: ManagedAddress, - initial_payments: PaymentsVec, - contract_call: ContractCallWithMultiEsdt, + initial_payments: &PaymentsVec, + transaction: Tx< + TxScEnv, + (), + &ManagedAddress, + &ManagedVec>, + (), + FunctionCall, + (), + >, opt_custom_callback: Option>, - ) -> ! - where - T: TopEncodeMulti, - { + ) -> ! { require!( - self.destination_whitelist() - .contains(&contract_call.basic.to), + self.destination_whitelist().contains(transaction.to), "Destination address not whitelisted" ); let remaining_gas = self.blockchain().get_gas_left(); - let cb_gas_needed = - CALLBACK_RESERVED_GAS_PER_TOKEN * contract_call.esdt_payments.len() as u64; + let cb_gas_needed = CALLBACK_RESERVED_GAS_PER_TOKEN * transaction.payment.len() as u64; require!( remaining_gas > cb_gas_needed, "Not enough gas to launch async call" ); - let async_call_gas = remaining_gas - cb_gas_needed; let cb = match opt_custom_callback { Some(custom_cb) => custom_cb, None => TransferRoleProxyModule::callbacks(self) - .transfer_callback(original_caller, initial_payments), + .transfer_callback(original_caller, initial_payments.clone()), }; - contract_call - .with_gas_limit(async_call_gas) - .async_call() - .with_callback(cb) - .call_and_exit() + transaction.callback(cb).async_call_and_exit() } #[callback] diff --git a/framework/base/src/macros.rs b/framework/base/src/macros.rs index 99a8d1d779..06f84b77e9 100644 --- a/framework/base/src/macros.rs +++ b/framework/base/src/macros.rs @@ -186,13 +186,6 @@ macro_rules! non_zero_usize { }; } -#[macro_export] -macro_rules! endpoints_proxy { - ($endpoint_name:ident, $address:ident) => { - multiversx_sc::types::ContractCallNoPayment::new($address, stringify!($endpoint_name)); - }; -} - #[macro_export] macro_rules! constructors_proxy { ($opt_address:ident) => { diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 1524bb22fe..ccd88f65c1 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -1,7 +1,7 @@ use crate::{ api::CallTypeApi, contract_base::BlockchainWrapper, - proxy_imports::{EgldOrEsdtTokenIdentifier, EgldOrEsdtTokenPaymentRefs}, + proxy_imports::{EgldOrEsdtTokenIdentifier, EgldOrEsdtTokenPaymentRefs, ManagedTypeApi}, types::{ BigUint, CodeMetadata, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EgldOrMultiEsdtPaymentRefs, EsdtTokenPayment, EsdtTokenPaymentRefs, ManagedAddress, @@ -15,9 +15,10 @@ use super::{ contract_deploy::UNSPECIFIED_GAS_LIMIT, AnnotatedValue, Code, ContractCallBase, ContractCallNoPayment, ContractCallWithEgld, ContractDeploy, DeployCall, Egld, EgldPayment, ExplicitGas, FromSource, FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, - RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, TxCodeValue, TxData, TxEgldValue, - TxEnv, TxFrom, TxFromSourceValue, TxGas, TxGasValue, TxPayment, TxPaymentEgldOnly, - TxPaymentMultiEsdt, TxProxyTrait, TxResultHandler, TxScEnv, TxTo, TxToSpecified, UpgradeCall, + RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, TxCodeValue, TxData, + TxDataFunctionCall, TxEgldValue, TxEnv, TxFrom, TxFromSourceValue, TxGas, TxGasValue, + TxPayment, TxPaymentEgldOnly, TxPaymentMultiEsdt, TxProxyTrait, TxResultHandler, TxScEnv, TxTo, + TxToSpecified, UpgradeCall, }; #[must_use] @@ -65,6 +66,21 @@ where } } +impl Tx +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Payment: TxPayment, + Gas: TxGas, + Data: TxDataFunctionCall, + RH: TxResultHandler, +{ + pub fn to_call_data_string(&self) -> ManagedBuffer { + self.data.to_call_data_string() + } +} + pub type TxBaseWithEnv = Tx; impl TxBaseWithEnv diff --git a/framework/base/src/types/interaction/tx_exec/tx_exec_async.rs b/framework/base/src/types/interaction/tx_exec/tx_exec_async.rs index 238b978139..6973e1ef5b 100644 --- a/framework/base/src/types/interaction/tx_exec/tx_exec_async.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_exec_async.rs @@ -1,6 +1,7 @@ use crate::{ api::{CallTypeApi, StorageWriteApi}, contract_base::SendRawWrapper, + proxy_imports::{ExplicitGas, ManagedBuffer, TxGasValue}, types::{ CallbackClosure, OriginalResultMarker, Tx, TxData, TxDataFunctionCall, TxEmptyResultHandler, TxEnv, TxFrom, TxGas, TxPayment, TxResultHandler, TxScEnv, TxTo, diff --git a/framework/base/src/types/interaction/tx_exec/tx_exec_async_promises.rs b/framework/base/src/types/interaction/tx_exec/tx_exec_async_promises.rs index 48bf520b05..c795a4385b 100644 --- a/framework/base/src/types/interaction/tx_exec/tx_exec_async_promises.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_exec_async_promises.rs @@ -1,6 +1,7 @@ use crate::{ api::{const_handles, CallTypeApi}, contract_base::SendRawWrapper, + proxy_imports::GasLeft, types::{ interaction::callback_closure::CallbackClosureWithGas, CallbackClosure, ExplicitGas, FunctionCall, ManagedBuffer, ManagedType, OriginalResultMarker, Tx, TxGas, TxGasValue, @@ -53,6 +54,24 @@ where } } +impl TxPromisesCallback for CallbackClosure +where + Api: CallTypeApi, +{ + fn callback_name(&self) -> &'static str { + self.callback_name + } + + fn overwrite_with_serialized_args(&self, cb_closure_args_serialized: &mut ManagedBuffer) { + self.closure_args + .serialize_overwrite(cb_closure_args_serialized); + } + + fn gas_for_callback(&self) -> u64 { + 0u64 + } +} + impl TxResultHandler> for CallbackClosureWithGas where Api: CallTypeApi, diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt.rs index 3ed53b9b8a..703166a601 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt.rs @@ -72,3 +72,63 @@ where } } } + +impl TxPayment for &EgldOrMultiEsdtPayment +where + Env: TxEnv, +{ + fn is_no_payment(&self, _env: &Env) -> bool { + self.is_empty() + } + + fn perform_transfer_execute( + self, + env: &Env, + to: &ManagedAddress, + gas_limit: u64, + fc: FunctionCall, + ) { + match self { + EgldOrMultiEsdtPayment::Egld(egld_amount) => { + Egld(egld_amount).perform_transfer_execute(env, to, gas_limit, fc) + }, + EgldOrMultiEsdtPayment::MultiEsdt(multi_esdt_payment) => { + multi_esdt_payment.perform_transfer_execute(env, to, gas_limit, fc) + }, + } + } + + fn with_normalized( + self, + env: &Env, + from: &From, + to: To, + fc: FunctionCall, + f: F, + ) -> R + where + From: TxFrom, + To: TxToSpecified, + F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, + { + match self { + EgldOrMultiEsdtPayment::Egld(egld_amount) => { + Egld(egld_amount).with_normalized(env, from, to, fc, f) + }, + EgldOrMultiEsdtPayment::MultiEsdt(multi_esdt_payment) => { + multi_esdt_payment.with_normalized(env, from, to, fc, f) + }, + } + } + + fn into_full_payment_data(self, env: &Env) -> FullPaymentData { + match self { + EgldOrMultiEsdtPayment::Egld(egld_amount) => { + TxPayment::::into_full_payment_data(Egld(egld_amount), env) + }, + EgldOrMultiEsdtPayment::MultiEsdt(multi_esdt_payment) => { + TxPayment::::into_full_payment_data(multi_esdt_payment, env) + }, + } + } +} From 3c9fbeae062382b70eb9823705e0da0411e3b1a8 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 4 Apr 2024 11:50:13 +0300 Subject: [PATCH 265/461] crypto kitties migration - remove struct from crypto zombies --- Cargo.lock | 2 + contracts/examples/crypto-zombies/Cargo.toml | 8 +++ .../src/kitty_ownership_proxy.rs | 50 ++++--------------- .../crypto-zombies/src/zombie_feeding.rs | 15 ++++-- .../examples/crypto-zombies/wasm/Cargo.lock | 23 +++++++-- 5 files changed, 52 insertions(+), 46 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9fd01b92b0..07c87be825 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -623,8 +623,10 @@ dependencies = [ name = "crypto-zombies" version = "0.0.0" dependencies = [ + "kitty", "multiversx-sc", "multiversx-sc-scenario", + "random", ] [[package]] diff --git a/contracts/examples/crypto-zombies/Cargo.toml b/contracts/examples/crypto-zombies/Cargo.toml index 7cb4431e16..31343fd127 100644 --- a/contracts/examples/crypto-zombies/Cargo.toml +++ b/contracts/examples/crypto-zombies/Cargo.toml @@ -15,3 +15,11 @@ path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] version = "0.48.0-alpha.1" path = "../../../framework/scenario" + +[dependencies.kitty] +version = "0.0.0" +path = "../crypto-kitties/common/kitty" + +[dependencies.random] +version = "0.0.0" +path = "../crypto-kitties/common/random" diff --git a/contracts/examples/crypto-zombies/src/kitty_ownership_proxy.rs b/contracts/examples/crypto-zombies/src/kitty_ownership_proxy.rs index 41b707e2be..e43a200ce2 100644 --- a/contracts/examples/crypto-zombies/src/kitty_ownership_proxy.rs +++ b/contracts/examples/crypto-zombies/src/kitty_ownership_proxy.rs @@ -1,3 +1,12 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(dead_code)] +#![allow(clippy::all)] + use multiversx_sc::proxy_imports::*; pub struct KittyOwnershipProxy; @@ -232,7 +241,7 @@ where >( self, kitty_id: Arg0, - ) -> TxProxyCall { + ) -> TxProxyCall { self.wrapped_tx .raw_call("getKittyById") .argument(&kitty_id) @@ -328,42 +337,3 @@ where .original_result() } } - -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct Kitty { - pub genes: KittyGenes, - pub birth_time: u64, - pub cooldown_end: u64, - pub matron_id: u32, - pub sire_id: u32, - pub siring_with_id: u32, - pub nr_children: u16, - pub generation: u16, -} - -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, Clone, Default)] -pub struct KittyGenes { - pub fur_color: Color, - pub eye_color: Color, - pub meow_power: u8, -} - -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, Clone, Default)] -pub struct Color { - pub r: u8, - pub g: u8, - pub b: u8, -} - -impl KittyGenes { - pub fn get_as_u64(&self) -> u64 { - (self.fur_color.as_u64() << 12 | self.eye_color.as_u64()) << 4 - | self.meow_power.to_be() as u64 - } -} - -impl Color { - pub fn as_u64(&self) -> u64 { - ((self.r.to_be() as u64) << 4 | self.r.to_be() as u64) << 4 | self.r.to_be() as u64 - } -} diff --git a/contracts/examples/crypto-zombies/src/zombie_feeding.rs b/contracts/examples/crypto-zombies/src/zombie_feeding.rs index 7de7f4a41e..716460e086 100644 --- a/contracts/examples/crypto-zombies/src/zombie_feeding.rs +++ b/contracts/examples/crypto-zombies/src/zombie_feeding.rs @@ -1,10 +1,19 @@ use multiversx_sc::imports::*; use crate::{ - kitty_ownership_proxy::{self, Kitty}, + kitty_ownership_proxy::{self}, storage, zombie_factory, zombie_helper, }; +pub fn get_as_u64(kitty_genes: kitty::kitty_genes::KittyGenes) -> u64 { + (as_u64(kitty_genes.fur_color) << 12 | as_u64(kitty_genes.eye_color)) << 4 + | kitty_genes.meow_power.to_be() as u64 +} + +pub fn as_u64(color: kitty::color::Color) -> u64 { + ((color.r.to_be() as u64) << 4 | color.r.to_be() as u64) << 4 | color.r.to_be() as u64 +} + #[multiversx_sc::module] pub trait ZombieFeeding: storage::Storage + zombie_factory::ZombieFactory + zombie_helper::ZombieHelper @@ -41,12 +50,12 @@ pub trait ZombieFeeding: #[callback] fn get_kitty_callback( &self, - #[call_result] result: ManagedAsyncCallResult, + #[call_result] result: ManagedAsyncCallResult, zombie_id: usize, ) { match result { ManagedAsyncCallResult::Ok(kitty) => { - let kitty_dna = kitty.genes.get_as_u64(); + let kitty_dna = get_as_u64(kitty.genes); self.feed_and_multiply(zombie_id, kitty_dna, ManagedBuffer::from(b"kitty")); }, ManagedAsyncCallResult::Err(_) => {}, diff --git a/contracts/examples/crypto-zombies/wasm/Cargo.lock b/contracts/examples/crypto-zombies/wasm/Cargo.lock index 9052befd7e..6e2bf1a6ea 100755 --- a/contracts/examples/crypto-zombies/wasm/Cargo.lock +++ b/contracts/examples/crypto-zombies/wasm/Cargo.lock @@ -24,7 +24,9 @@ checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" name = "crypto-zombies" version = "0.0.0" dependencies = [ + "kitty", "multiversx-sc", + "random", ] [[package]] @@ -53,9 +55,17 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" +[[package]] +name = "kitty" +version = "0.0.0" +dependencies = [ + "multiversx-sc", + "random", +] + [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0-alpha.1" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +94,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0-alpha.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +105,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0-alpha.1" dependencies = [ "multiversx-sc", ] @@ -146,6 +156,13 @@ dependencies = [ "nibble_vec", ] +[[package]] +name = "random" +version = "0.0.0" +dependencies = [ + "multiversx-sc", +] + [[package]] name = "smallvec" version = "1.13.2" From dc44d5cdf67aedc726d72a41376b17b10a06ecc8 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 4 Apr 2024 12:18:21 +0300 Subject: [PATCH 266/461] crypto kitties migration - changed dependencies' path in crypto zombies --- contracts/examples/crypto-zombies/Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/examples/crypto-zombies/Cargo.toml b/contracts/examples/crypto-zombies/Cargo.toml index 31343fd127..e900f23cb8 100644 --- a/contracts/examples/crypto-zombies/Cargo.toml +++ b/contracts/examples/crypto-zombies/Cargo.toml @@ -18,8 +18,8 @@ path = "../../../framework/scenario" [dependencies.kitty] version = "0.0.0" -path = "../crypto-kitties/common/kitty" +path = "../../../contracts/examples/crypto-kitties/common/kitty" [dependencies.random] version = "0.0.0" -path = "../crypto-kitties/common/random" +path = "../../../contracts/examples/crypto-kitties/common/random" From a9c59253bcbe5e05258505febf44a4dc8efdc8fb Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 4 Apr 2024 14:17:49 +0300 Subject: [PATCH 267/461] crypto kitties path cleanup --- .../crypto-kitties/common/kitty/src/kitty.rs | 89 +++++++++++++++++ .../crypto-kitties/common/kitty/src/lib.rs | 98 ++----------------- .../kitty-genetic-alg/src/lib.rs | 2 +- .../src/kitty_genetic_alg_proxy.rs | 2 +- .../crypto-kitties/kitty-ownership/src/lib.rs | 2 +- .../crypto-zombies/src/zombie_feeding.rs | 4 +- 6 files changed, 100 insertions(+), 97 deletions(-) create mode 100644 contracts/examples/crypto-kitties/common/kitty/src/kitty.rs diff --git a/contracts/examples/crypto-kitties/common/kitty/src/kitty.rs b/contracts/examples/crypto-kitties/common/kitty/src/kitty.rs new file mode 100644 index 0000000000..d234cac9f6 --- /dev/null +++ b/contracts/examples/crypto-kitties/common/kitty/src/kitty.rs @@ -0,0 +1,89 @@ +use crate::{Color, KittyGenes}; + +use multiversx_sc::derive_imports::*; + +const SECONDS_PER_MINUTE: u64 = 60; +const MAX_COOLDOWN: u64 = 60 * 60 * 24 * 7; // 7 days +const MAX_TIREDNESS: u16 = 20; + +#[type_abi] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] +pub struct Kitty { + pub genes: KittyGenes, + pub birth_time: u64, // timestamp + pub cooldown_end: u64, // timestamp, used for pregnancy timer and siring cooldown + pub matron_id: u32, + pub sire_id: u32, + pub siring_with_id: u32, // for pregnant cats, 0 otherwise + pub nr_children: u16, // cooldown period increases exponentially with every breeding/siring + pub generation: u16, // max(sire_gen, matron_gen) + 1. Generation also influences cooldown. +} + +impl Kitty { + pub fn new( + genes: KittyGenes, + birth_time: u64, + matron_id: u32, + sire_id: u32, + generation: u16, + ) -> Self { + Kitty { + genes, + birth_time, + cooldown_end: 0, + matron_id, + sire_id, + siring_with_id: 0, + nr_children: 0, + generation, + } + } +} + +impl Kitty { + pub fn get_next_cooldown_time(&self) -> u64 { + let tiredness = self.nr_children + self.generation / 2; + if tiredness > MAX_TIREDNESS { + return MAX_COOLDOWN; + } + + let cooldown = SECONDS_PER_MINUTE << tiredness; // 2^(tiredness) minutes + if cooldown > MAX_COOLDOWN { + MAX_COOLDOWN + } else { + cooldown + } + } + + pub fn get_fur_color(&self) -> Color { + self.genes.fur_color.clone() + } + + pub fn get_eye_color(&self) -> Color { + self.genes.eye_color.clone() + } + + pub fn get_meow_power(&self) -> u8 { + self.genes.meow_power + } + + pub fn is_pregnant(&self) -> bool { + self.siring_with_id != 0 + } +} + +// The default Kitty, which is not a valid kitty. Used for Kitty with ID 0 +impl Default for Kitty { + fn default() -> Self { + Kitty { + genes: KittyGenes::default(), + birth_time: 0, + cooldown_end: u64::MAX, + matron_id: 0, + sire_id: 0, + siring_with_id: 0, + nr_children: 0, + generation: 0, + } + } +} diff --git a/contracts/examples/crypto-kitties/common/kitty/src/lib.rs b/contracts/examples/crypto-kitties/common/kitty/src/lib.rs index 1a9a0ec436..863944215c 100644 --- a/contracts/examples/crypto-kitties/common/kitty/src/lib.rs +++ b/contracts/examples/crypto-kitties/common/kitty/src/lib.rs @@ -1,95 +1,9 @@ #![no_std] -use multiversx_sc::derive_imports::*; +mod color; +mod kitty; +mod kitty_genes; -const SECONDS_PER_MINUTE: u64 = 60; -const MAX_COOLDOWN: u64 = 60 * 60 * 24 * 7; // 7 days -const MAX_TIREDNESS: u16 = 20; - -pub mod color; -pub mod kitty_genes; - -use color::*; -use kitty_genes::*; - -#[type_abi] -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct Kitty { - pub genes: KittyGenes, - pub birth_time: u64, // timestamp - pub cooldown_end: u64, // timestamp, used for pregnancy timer and siring cooldown - pub matron_id: u32, - pub sire_id: u32, - pub siring_with_id: u32, // for pregnant cats, 0 otherwise - pub nr_children: u16, // cooldown period increases exponentially with every breeding/siring - pub generation: u16, // max(sire_gen, matron_gen) + 1. Generation also influences cooldown. -} - -impl Kitty { - pub fn new( - genes: KittyGenes, - birth_time: u64, - matron_id: u32, - sire_id: u32, - generation: u16, - ) -> Self { - Kitty { - genes, - birth_time, - cooldown_end: 0, - matron_id, - sire_id, - siring_with_id: 0, - nr_children: 0, - generation, - } - } -} - -impl Kitty { - pub fn get_next_cooldown_time(&self) -> u64 { - let tiredness = self.nr_children + self.generation / 2; - if tiredness > MAX_TIREDNESS { - return MAX_COOLDOWN; - } - - let cooldown = SECONDS_PER_MINUTE << tiredness; // 2^(tiredness) minutes - if cooldown > MAX_COOLDOWN { - MAX_COOLDOWN - } else { - cooldown - } - } - - pub fn get_fur_color(&self) -> Color { - self.genes.fur_color.clone() - } - - pub fn get_eye_color(&self) -> Color { - self.genes.eye_color.clone() - } - - pub fn get_meow_power(&self) -> u8 { - self.genes.meow_power - } - - pub fn is_pregnant(&self) -> bool { - self.siring_with_id != 0 - } -} - -// The default Kitty, which is not a valid kitty. Used for Kitty with ID 0 -impl Default for Kitty { - fn default() -> Self { - Kitty { - genes: KittyGenes::default(), - birth_time: 0, - cooldown_end: u64::MAX, - matron_id: 0, - sire_id: 0, - siring_with_id: 0, - nr_children: 0, - generation: 0, - } - } -} +pub use color::Color; +pub use kitty::Kitty; +pub use kitty_genes::KittyGenes; diff --git a/contracts/examples/crypto-kitties/kitty-genetic-alg/src/lib.rs b/contracts/examples/crypto-kitties/kitty-genetic-alg/src/lib.rs index aab6154cec..adc555585a 100644 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/src/lib.rs +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/src/lib.rs @@ -1,6 +1,6 @@ #![no_std] -use kitty::{kitty_genes::*, Kitty}; +use kitty::{Kitty, KittyGenes}; use random::Random; #[multiversx_sc::contract] diff --git a/contracts/examples/crypto-kitties/kitty-ownership/src/kitty_genetic_alg_proxy.rs b/contracts/examples/crypto-kitties/kitty-ownership/src/kitty_genetic_alg_proxy.rs index 564481a7d3..53f3409e9f 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/src/kitty_genetic_alg_proxy.rs +++ b/contracts/examples/crypto-kitties/kitty-ownership/src/kitty_genetic_alg_proxy.rs @@ -68,7 +68,7 @@ where self, matron: Arg0, sire: Arg1, - ) -> TxProxyCall { + ) -> TxProxyCall { self.wrapped_tx .raw_call("generateKittyGenes") .argument(&matron) diff --git a/contracts/examples/crypto-kitties/kitty-ownership/src/lib.rs b/contracts/examples/crypto-kitties/kitty-ownership/src/lib.rs index 730f6a3d0f..27f7474945 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/src/lib.rs +++ b/contracts/examples/crypto-kitties/kitty-ownership/src/lib.rs @@ -2,7 +2,7 @@ #![allow(clippy::suspicious_operation_groupings)] pub mod kitty_genetic_alg_proxy; -use kitty::{kitty_genes::KittyGenes, Kitty}; +use kitty::{Kitty, KittyGenes}; use multiversx_sc::imports::*; use core::cmp::max; diff --git a/contracts/examples/crypto-zombies/src/zombie_feeding.rs b/contracts/examples/crypto-zombies/src/zombie_feeding.rs index 716460e086..c910aa412a 100644 --- a/contracts/examples/crypto-zombies/src/zombie_feeding.rs +++ b/contracts/examples/crypto-zombies/src/zombie_feeding.rs @@ -5,12 +5,12 @@ use crate::{ storage, zombie_factory, zombie_helper, }; -pub fn get_as_u64(kitty_genes: kitty::kitty_genes::KittyGenes) -> u64 { +pub fn get_as_u64(kitty_genes: kitty::KittyGenes) -> u64 { (as_u64(kitty_genes.fur_color) << 12 | as_u64(kitty_genes.eye_color)) << 4 | kitty_genes.meow_power.to_be() as u64 } -pub fn as_u64(color: kitty::color::Color) -> u64 { +pub fn as_u64(color: kitty::Color) -> u64 { ((color.r.to_be() as u64) << 4 | color.r.to_be() as u64) << 4 | color.r.to_be() as u64 } From fff4015ecc4742995e0b097fa500ac38d615677c Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Thu, 4 Apr 2024 13:23:29 +0200 Subject: [PATCH 268/461] returns new managed address result handler --- .../adder/interact/src/basic_interact.rs | 4 +- .../interact/src/multisig_interact.rs | 4 +- .../feature-tests/abi-tester/src/abi_proxy.rs | 64 ++++++------------- .../parent/src/lib.rs | 2 +- .../src/forwarder_raw_deploy_upgrade.rs | 4 +- .../forwarder/src/contract_deploy.rs | 4 +- .../proxy-test-first/src/proxy-test-first.rs | 2 +- .../types/interaction/tx_result_handler.rs | 2 + .../tx_result_handler/returns_new_address.rs | 12 ++-- .../returns_new_managed_address.rs | 23 +++++++ .../src/facade/world_tx/scenario_rh_impl.rs | 19 +++++- 11 files changed, 80 insertions(+), 60 deletions(-) create mode 100644 framework/base/src/types/interaction/tx_result_handler/returns_new_managed_address.rs diff --git a/contracts/examples/adder/interact/src/basic_interact.rs b/contracts/examples/adder/interact/src/basic_interact.rs index 9179796675..6f3d8dbb07 100644 --- a/contracts/examples/adder/interact/src/basic_interact.rs +++ b/contracts/examples/adder/interact/src/basic_interact.rs @@ -119,7 +119,7 @@ impl AdderInteract { .run() .await; - let new_address_bech32 = bech32::encode(&new_address.to_address()); + let new_address_bech32 = bech32::encode(&new_address); println!("new address: {new_address_bech32}"); let new_address_expr = format!("bech32:{new_address_bech32}"); @@ -149,7 +149,7 @@ impl AdderInteract { let results = buffer.run().await; for result in results { - let new_address_bech32 = bech32::encode(&result.to_address()); + let new_address_bech32 = bech32::encode(&result); println!("new address: {new_address_bech32}"); let new_address_expr = format!("bech32:{new_address_bech32}"); diff --git a/contracts/examples/multisig/interact/src/multisig_interact.rs b/contracts/examples/multisig/interact/src/multisig_interact.rs index 9dc46fdf44..d80ab639f7 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact.rs @@ -174,7 +174,7 @@ impl MultisigInteract { .run() .await; - let new_address_bech32 = bech32::encode(&new_address.to_address()); + let new_address_bech32 = bech32::encode(&new_address); println!("new address: {new_address_bech32}"); let new_address_expr = format!("bech32:{new_address_bech32}"); @@ -205,7 +205,7 @@ impl MultisigInteract { let results = buffer.run().await; for result in results { - let new_address_bech32 = bech32::encode(&result.to_address()); + let new_address_bech32 = bech32::encode(&result); println!("new address: {new_address_bech32}"); let new_address_expr = format!("bech32:{new_address_bech32}"); diff --git a/contracts/feature-tests/abi-tester/src/abi_proxy.rs b/contracts/feature-tests/abi-tester/src/abi_proxy.rs index 1f860018b5..b6547d3385 100644 --- a/contracts/feature-tests/abi-tester/src/abi_proxy.rs +++ b/contracts/feature-tests/abi-tester/src/abi_proxy.rs @@ -402,8 +402,7 @@ pub struct AbiTestType { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested01 { -} +pub struct OnlyShowsUpAsNested01 {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested02 { @@ -415,19 +414,14 @@ pub enum AbiEnum { Nothing, Something(i32), SomethingMore(u8, OnlyShowsUpAsNested08), - SomeStruct { - a: u16, - b: OnlyShowsUpAsNested09, - }, + SomeStruct { a: u16, b: OnlyShowsUpAsNested09 }, } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested08 { -} +pub struct OnlyShowsUpAsNested08 {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested09 { -} +pub struct OnlyShowsUpAsNested09 {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct AbiManagedType @@ -440,36 +434,28 @@ where } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested03 { -} +pub struct OnlyShowsUpAsNested03 {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested04 { -} +pub struct OnlyShowsUpAsNested04 {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested05 { -} +pub struct OnlyShowsUpAsNested05 {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested06 { -} +pub struct OnlyShowsUpAsNested06 {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested07 { -} +pub struct OnlyShowsUpAsNested07 {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInSingleValueMapper { -} +pub struct OnlyShowsUpAsNestedInSingleValueMapper {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInVec { -} +pub struct OnlyShowsUpAsNestedInVec {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInArrayVec { -} +pub struct OnlyShowsUpAsNestedInArrayVec {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, ManagedVecItem)] pub struct AbiManagedVecItem { @@ -478,28 +464,22 @@ pub struct AbiManagedVecItem { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInArray { -} +pub struct OnlyShowsUpAsNestedInArray {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInBox { -} +pub struct OnlyShowsUpAsNestedInBox {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInBoxedSlice { -} +pub struct OnlyShowsUpAsNestedInBoxedSlice {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInRef { -} +pub struct OnlyShowsUpAsNestedInRef {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInSlice { -} +pub struct OnlyShowsUpAsNestedInSlice {} #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNestedInOption { -} +pub struct OnlyShowsUpAsNestedInOption {} #[derive(TopEncode, TopDecode)] pub struct OnlyShowsUpInEsdtAttr { @@ -507,8 +487,7 @@ pub struct OnlyShowsUpInEsdtAttr { } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] -pub struct OnlyShowsUpAsNested10 { -} +pub struct OnlyShowsUpAsNested10 {} #[derive(TopEncode, TopDecode)] pub enum ExplicitDiscriminant { @@ -525,8 +504,5 @@ pub enum ExplicitDiscriminantMixed { Unit, Tuple(u16), Five, - Struct { - a: u8, - b: u16, - }, + Struct { a: u8, b: u16 }, } diff --git a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/lib.rs b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/lib.rs index f334c393f6..d9dfe79d0e 100644 --- a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/lib.rs +++ b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/lib.rs @@ -24,7 +24,7 @@ pub trait Parent { .raw_deploy() .code(code) .with_gas_limit(gas_left) - .returns(ReturnsNewAddress) + .returns(ReturnsNewManagedAddress) .sync_call(); self.child_contract_address().set(&child_contract_address); diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs index acd385db2c..b57ac773e2 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs @@ -15,7 +15,7 @@ pub trait ForwarderRawDeployUpgrade { .code_metadata(code_metadata) .arguments_raw(args.to_arg_buffer()) .with_gas_limit(self.blockchain().get_gas_left()) - .returns(ReturnsNewAddress) + .returns(ReturnsNewManagedAddress) .returns(ReturnsRawResult) .sync_call() .into() @@ -34,7 +34,7 @@ pub trait ForwarderRawDeployUpgrade { .code_metadata(code_metadata) .arguments_raw(args.to_arg_buffer()) .with_gas_limit(self.blockchain().get_gas_left()) - .returns(ReturnsNewAddress) + .returns(ReturnsNewManagedAddress) .sync_call() } diff --git a/contracts/feature-tests/composability/forwarder/src/contract_deploy.rs b/contracts/feature-tests/composability/forwarder/src/contract_deploy.rs index 30bc967665..7145f2555a 100644 --- a/contracts/feature-tests/composability/forwarder/src/contract_deploy.rs +++ b/contracts/feature-tests/composability/forwarder/src/contract_deploy.rs @@ -39,7 +39,7 @@ pub trait DeployContractModule { .typed(vault_proxy::VaultProxy) .init(opt_arg) .code(code.clone()) - .returns(ReturnsNewAddress) + .returns(ReturnsNewManagedAddress) .returns(ReturnsResult) .sync_call() } @@ -55,7 +55,7 @@ pub trait DeployContractModule { .init(opt_arg) .code_metadata(CodeMetadata::DEFAULT) .from_source(source_address) - .returns(ReturnsNewAddress) + .returns(ReturnsNewManagedAddress) .returns(ReturnsResult) .sync_call() .into() diff --git a/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs b/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs index 58a2dd2684..bc3d648b56 100644 --- a/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs +++ b/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs @@ -37,7 +37,7 @@ pub trait ProxyTestFirst { .init(123) .code(code) .code_metadata(CodeMetadata::UPGRADEABLE) - .returns(ReturnsNewAddress) + .returns(ReturnsNewManagedAddress) .returns(ReturnsResult) .egld(payment) .sync_call(); diff --git a/framework/base/src/types/interaction/tx_result_handler.rs b/framework/base/src/types/interaction/tx_result_handler.rs index 754c339931..4bfddb56a4 100644 --- a/framework/base/src/types/interaction/tx_result_handler.rs +++ b/framework/base/src/types/interaction/tx_result_handler.rs @@ -1,5 +1,6 @@ mod returns_bt; mod returns_new_address; +mod returns_new_managed_address; mod returns_raw_result; mod returns_result; mod returns_result_conv; @@ -10,6 +11,7 @@ mod with_result_conv; pub use returns_bt::*; pub use returns_new_address::*; +pub use returns_new_managed_address::*; pub use returns_raw_result::*; pub use returns_result::*; pub use returns_result_conv::*; diff --git a/framework/base/src/types/interaction/tx_result_handler/returns_new_address.rs b/framework/base/src/types/interaction/tx_result_handler/returns_new_address.rs index 89854b906a..1f22c48e85 100644 --- a/framework/base/src/types/interaction/tx_result_handler/returns_new_address.rs +++ b/framework/base/src/types/interaction/tx_result_handler/returns_new_address.rs @@ -1,5 +1,9 @@ -use crate::types::{ - DeployRawResult, ManagedAddress, ManagedBuffer, ManagedVec, RHListItem, RHListItemExec, TxEnv, +use crate::{ + proxy_imports::Address, + types::{ + DeployRawResult, ManagedAddress, ManagedBuffer, ManagedVec, RHListItem, RHListItemExec, + TxEnv, + }, }; /// Indicates that the newly deployed address will be returned after a deploy. @@ -9,7 +13,7 @@ impl RHListItem for ReturnsNewAddress where Env: TxEnv, { - type Returns = ManagedAddress; + type Returns = Address; } impl RHListItemExec, Env, Original> for ReturnsNewAddress @@ -17,6 +21,6 @@ where Env: TxEnv, { fn item_process_result(self, raw_result: &DeployRawResult) -> Self::Returns { - raw_result.new_address.clone() + raw_result.new_address.to_address() } } diff --git a/framework/base/src/types/interaction/tx_result_handler/returns_new_managed_address.rs b/framework/base/src/types/interaction/tx_result_handler/returns_new_managed_address.rs new file mode 100644 index 0000000000..04f923fef2 --- /dev/null +++ b/framework/base/src/types/interaction/tx_result_handler/returns_new_managed_address.rs @@ -0,0 +1,23 @@ +use crate::types::{ + DeployRawResult, ManagedAddress, ManagedBuffer, ManagedVec, RHListItem, RHListItemExec, TxEnv, +}; + +/// Indicates that the newly deployed address will be returned after a deploy as a ManagedAddress. +pub struct ReturnsNewManagedAddress; + +impl RHListItem for ReturnsNewManagedAddress +where + Env: TxEnv, +{ + type Returns = ManagedAddress; +} + +impl RHListItemExec, Env, Original> + for ReturnsNewManagedAddress +where + Env: TxEnv, +{ + fn item_process_result(self, raw_result: &DeployRawResult) -> Self::Returns { + raw_result.new_address.clone() + } +} diff --git a/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs b/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs index 19d5e3a9a8..db41e10b75 100644 --- a/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs +++ b/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs @@ -1,8 +1,9 @@ use multiversx_sc::{ codec::{CodecFrom, TopDecodeMulti, TopEncodeMulti}, types::{ - ManagedAddress, RHList, RHListItem, RHListItemExec, ReturnsNewAddress, ReturnsResult, - ReturnsResultConv, TxEnv, WithNewAddress, WithResultConv, + ManagedAddress, RHList, RHListItem, RHListItemExec, ReturnsNewAddress, + ReturnsNewManagedAddress, ReturnsResult, ReturnsResultConv, TxEnv, WithNewAddress, + WithResultConv, }, }; @@ -57,6 +58,20 @@ where } impl RHListItemExec for ReturnsNewAddress +where + Env: TxEnv, +{ + fn item_process_result(self, tx_response: &TxResponse) -> Self::Returns { + let new_address = tx_response + .new_deployed_address + .clone() + .expect("missing returned address"); + + new_address + } +} + +impl RHListItemExec for ReturnsNewManagedAddress where Env: TxEnv, { From 6a16d24dfdc86deb481ab5f91889a29a474f4d85 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Thu, 4 Apr 2024 13:39:01 +0200 Subject: [PATCH 269/461] clippy and import fix --- .../interaction/tx_result_handler/returns_new_address.rs | 9 +++------ .../scenario/src/facade/world_tx/scenario_rh_impl.rs | 6 ++---- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/framework/base/src/types/interaction/tx_result_handler/returns_new_address.rs b/framework/base/src/types/interaction/tx_result_handler/returns_new_address.rs index 1f22c48e85..6e73ecf1d1 100644 --- a/framework/base/src/types/interaction/tx_result_handler/returns_new_address.rs +++ b/framework/base/src/types/interaction/tx_result_handler/returns_new_address.rs @@ -1,9 +1,6 @@ -use crate::{ - proxy_imports::Address, - types::{ - DeployRawResult, ManagedAddress, ManagedBuffer, ManagedVec, RHListItem, RHListItemExec, - TxEnv, - }, +use crate::types::{ + heap::Address, DeployRawResult, ManagedAddress, ManagedBuffer, ManagedVec, RHListItem, + RHListItemExec, TxEnv, }; /// Indicates that the newly deployed address will be returned after a deploy. diff --git a/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs b/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs index db41e10b75..bbf29a0d03 100644 --- a/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs +++ b/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs @@ -62,12 +62,10 @@ where Env: TxEnv, { fn item_process_result(self, tx_response: &TxResponse) -> Self::Returns { - let new_address = tx_response + tx_response .new_deployed_address .clone() - .expect("missing returned address"); - - new_address + .expect("missing returned address") } } From 9ad9c3d156f36d5df3ac66f89dabb60418ca62e4 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 4 Apr 2024 14:48:50 +0300 Subject: [PATCH 270/461] cleanup & optimization --- Cargo.lock | 1 - .../crypto-kitties/common/kitty/src/color.rs | 6 ++++++ .../common/kitty/src/kitty_genes.rs | 7 +++++++ .../crypto-kitties/kitty-auction/src/lib.rs | 2 +- .../crypto-kitties/kitty-ownership/src/lib.rs | 2 +- contracts/examples/crypto-zombies/Cargo.toml | 4 ---- .../crypto-zombies/src/zombie_feeding.rs | 16 ++-------------- 7 files changed, 17 insertions(+), 21 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fb7229bbaa..f4c87e8b84 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -626,7 +626,6 @@ dependencies = [ "kitty", "multiversx-sc", "multiversx-sc-scenario", - "random", ] [[package]] diff --git a/contracts/examples/crypto-kitties/common/kitty/src/color.rs b/contracts/examples/crypto-kitties/common/kitty/src/color.rs index 408b5eb06e..37a97b1dfc 100644 --- a/contracts/examples/crypto-kitties/common/kitty/src/color.rs +++ b/contracts/examples/crypto-kitties/common/kitty/src/color.rs @@ -37,3 +37,9 @@ impl Randomizeable for Color { } } } + +impl Color { + pub fn as_u64(&self) -> u64 { + ((self.r.to_be() as u64) << 4 | self.r.to_be() as u64) << 4 | self.r.to_be() as u64 + } +} diff --git a/contracts/examples/crypto-kitties/common/kitty/src/kitty_genes.rs b/contracts/examples/crypto-kitties/common/kitty/src/kitty_genes.rs index 958543605e..61d6623bf9 100644 --- a/contracts/examples/crypto-kitties/common/kitty/src/kitty_genes.rs +++ b/contracts/examples/crypto-kitties/common/kitty/src/kitty_genes.rs @@ -20,3 +20,10 @@ impl Randomizeable for KittyGenes { } } } + +impl KittyGenes { + pub fn get_as_u64(&self) -> u64 { + (self.fur_color.as_u64() << 12 | self.eye_color.as_u64()) << 4 + | self.meow_power.to_be() as u64 + } +} diff --git a/contracts/examples/crypto-kitties/kitty-auction/src/lib.rs b/contracts/examples/crypto-kitties/kitty-auction/src/lib.rs index 3b08682089..557673bb3d 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/src/lib.rs +++ b/contracts/examples/crypto-kitties/kitty-auction/src/lib.rs @@ -245,7 +245,7 @@ pub trait KittyAuction { self.tx() .to(&kitty_ownership_contract_address) .typed(kitty_ownership_proxy::KittyOwnershipProxy) - .allow_auctioning(caller.clone(), kitty_id) + .allow_auctioning(&caller, kitty_id) .with_callback(self.callbacks().allow_auctioning_callback( auction_type, kitty_id, diff --git a/contracts/examples/crypto-kitties/kitty-ownership/src/lib.rs b/contracts/examples/crypto-kitties/kitty-ownership/src/lib.rs index 27f7474945..d6e0771fa4 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/src/lib.rs +++ b/contracts/examples/crypto-kitties/kitty-ownership/src/lib.rs @@ -324,7 +324,6 @@ pub trait KittyOwnership { fn give_birth(&self, matron_id: u32) { require!(self.is_valid_id(matron_id), "Invalid kitty id!"); - let caller = self.blockchain().get_caller(); let matron = self.kitty_by_id(matron_id).get(); require!( @@ -337,6 +336,7 @@ pub trait KittyOwnership { let gene_science_contract_address = self.get_gene_science_contract_address_or_default(); if !gene_science_contract_address.is_zero() { + let caller = self.blockchain().get_caller(); self.tx() .to(&gene_science_contract_address) .typed(kitty_genetic_alg_proxy::KittyGeneticAlgProxy) diff --git a/contracts/examples/crypto-zombies/Cargo.toml b/contracts/examples/crypto-zombies/Cargo.toml index e900f23cb8..e7ce42e487 100644 --- a/contracts/examples/crypto-zombies/Cargo.toml +++ b/contracts/examples/crypto-zombies/Cargo.toml @@ -19,7 +19,3 @@ path = "../../../framework/scenario" [dependencies.kitty] version = "0.0.0" path = "../../../contracts/examples/crypto-kitties/common/kitty" - -[dependencies.random] -version = "0.0.0" -path = "../../../contracts/examples/crypto-kitties/common/random" diff --git a/contracts/examples/crypto-zombies/src/zombie_feeding.rs b/contracts/examples/crypto-zombies/src/zombie_feeding.rs index c910aa412a..7afd7a7be8 100644 --- a/contracts/examples/crypto-zombies/src/zombie_feeding.rs +++ b/contracts/examples/crypto-zombies/src/zombie_feeding.rs @@ -1,18 +1,6 @@ use multiversx_sc::imports::*; -use crate::{ - kitty_ownership_proxy::{self}, - storage, zombie_factory, zombie_helper, -}; - -pub fn get_as_u64(kitty_genes: kitty::KittyGenes) -> u64 { - (as_u64(kitty_genes.fur_color) << 12 | as_u64(kitty_genes.eye_color)) << 4 - | kitty_genes.meow_power.to_be() as u64 -} - -pub fn as_u64(color: kitty::Color) -> u64 { - ((color.r.to_be() as u64) << 4 | color.r.to_be() as u64) << 4 | color.r.to_be() as u64 -} +use crate::{kitty_ownership_proxy, storage, zombie_factory, zombie_helper}; #[multiversx_sc::module] pub trait ZombieFeeding: @@ -55,7 +43,7 @@ pub trait ZombieFeeding: ) { match result { ManagedAsyncCallResult::Ok(kitty) => { - let kitty_dna = get_as_u64(kitty.genes); + let kitty_dna = kitty.genes.get_as_u64(); self.feed_and_multiply(zombie_id, kitty_dna, ManagedBuffer::from(b"kitty")); }, ManagedAsyncCallResult::Err(_) => {}, From 67b75c39c9d9ccab334b5abe1bece9e98fd83e8f Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 4 Apr 2024 15:07:46 +0300 Subject: [PATCH 271/461] use-module cleanup --- .../tests/use_module_scenario_rs_test.rs | 5 +- .../use-module/tests/user_builtin_proxy.rs | 51 ------------------- 2 files changed, 1 insertion(+), 55 deletions(-) delete mode 100644 contracts/feature-tests/use-module/tests/user_builtin_proxy.rs diff --git a/contracts/feature-tests/use-module/tests/use_module_scenario_rs_test.rs b/contracts/feature-tests/use-module/tests/use_module_scenario_rs_test.rs index a234b631f2..a7360462a4 100644 --- a/contracts/feature-tests/use-module/tests/use_module_scenario_rs_test.rs +++ b/contracts/feature-tests/use-module/tests/use_module_scenario_rs_test.rs @@ -1,7 +1,4 @@ -pub mod user_builtin_proxy; mod dns_mock { - use crate::user_builtin_proxy; - multiversx_sc::imports!(); #[multiversx_sc::contract] @@ -13,7 +10,7 @@ mod dns_mock { let address = self.blockchain().get_caller(); self.tx() .to(&address) - .typed(user_builtin_proxy::UserBuiltinProxy) + .typed(system_proxy::UserBuiltinProxy) .set_user_name(&name) .async_call_and_exit(); } diff --git a/contracts/feature-tests/use-module/tests/user_builtin_proxy.rs b/contracts/feature-tests/use-module/tests/user_builtin_proxy.rs deleted file mode 100644 index fb57dffe11..0000000000 --- a/contracts/feature-tests/use-module/tests/user_builtin_proxy.rs +++ /dev/null @@ -1,51 +0,0 @@ -#![allow(clippy::all)] - -use multiversx_sc::proxy_imports::*; - -pub struct UserBuiltinProxy; - -impl TxProxyTrait for UserBuiltinProxy -where - Env: TxEnv, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ - type TxProxyMethods = UserBuiltinProxyMethods; - - fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { - UserBuiltinProxyMethods { wrapped_tx: tx } - } -} - -pub struct UserBuiltinProxyMethods -where - Env: TxEnv, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ - wrapped_tx: Tx, -} - -#[rustfmt::skip] -impl UserBuiltinProxyMethods -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ - pub fn set_user_name< - Arg0: CodecInto, - >( - self, - name: Arg0, - ) -> TxProxyCall> { - self.wrapped_tx - .raw_call("SetUserName") - .argument(&name) - .original_result() - } -} From 00689ceee7a410e98df91316534d0730fd849aed Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 4 Apr 2024 15:35:56 +0300 Subject: [PATCH 272/461] moved builtin_func_names to system_proxy --- framework/base/src/api.rs | 5 +++-- .../src/contract_base/wrappers/send_wrapper.rs | 17 +++++++++-------- .../base/src/types/interaction/system_proxy.rs | 1 + .../system_proxy/builtin_func_names.rs} | 0 .../system_proxy/builtin_func_proxy.rs | 10 ++++++++-- 5 files changed, 21 insertions(+), 12 deletions(-) rename framework/base/src/{api/builtin_function_names.rs => types/interaction/system_proxy/builtin_func_names.rs} (100%) diff --git a/framework/base/src/api.rs b/framework/base/src/api.rs index 88f18ca94b..094522d1ac 100644 --- a/framework/base/src/api.rs +++ b/framework/base/src/api.rs @@ -1,5 +1,4 @@ mod blockchain_api; -mod builtin_function_names; mod call_value_api; mod composite_api; mod crypto_api; @@ -16,7 +15,6 @@ pub mod uncallable; mod vm_api; pub use blockchain_api::*; -pub use builtin_function_names::*; pub use call_value_api::*; pub use composite_api::*; pub use crypto_api::*; @@ -30,3 +28,6 @@ pub use print_api::*; pub use send_api::*; pub use storage_api::*; pub use vm_api::VMApi; + +// Backwards compatibility. +pub use crate::types::system_proxy::builtin_func_names::*; diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index f122ba81db..100c1002ff 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -3,16 +3,17 @@ use core::marker::PhantomData; use crate::codec::Empty; use crate::{ - api::{ - BlockchainApi, BlockchainApiImpl, CallTypeApi, StorageReadApi, - CHANGE_OWNER_BUILTIN_FUNC_NAME, CLAIM_DEVELOPER_REWARDS_FUNC_NAME, - ESDT_LOCAL_BURN_FUNC_NAME, ESDT_LOCAL_MINT_FUNC_NAME, ESDT_NFT_ADD_QUANTITY_FUNC_NAME, - ESDT_NFT_ADD_URI_FUNC_NAME, ESDT_NFT_BURN_FUNC_NAME, ESDT_NFT_CREATE_FUNC_NAME, - ESDT_NFT_UPDATE_ATTRIBUTES_FUNC_NAME, - }, + api::{BlockchainApi, BlockchainApiImpl, CallTypeApi, StorageReadApi}, codec, types::{ - system_proxy, BigUint, ContractCall, ContractCallNoPayment, ESDTSystemSCAddress, + system_proxy, + system_proxy::builtin_func_names::{ + CHANGE_OWNER_BUILTIN_FUNC_NAME, CLAIM_DEVELOPER_REWARDS_FUNC_NAME, + ESDT_LOCAL_BURN_FUNC_NAME, ESDT_LOCAL_MINT_FUNC_NAME, ESDT_NFT_ADD_QUANTITY_FUNC_NAME, + ESDT_NFT_ADD_URI_FUNC_NAME, ESDT_NFT_BURN_FUNC_NAME, ESDT_NFT_CREATE_FUNC_NAME, + ESDT_NFT_UPDATE_ATTRIBUTES_FUNC_NAME, + }, + BigUint, ContractCall, ContractCallNoPayment, ESDTSystemSCAddress, EgldOrEsdtTokenIdentifier, EsdtTokenPayment, GasLeft, ManagedAddress, ManagedArgBuffer, ManagedBuffer, ManagedType, ManagedVec, ReturnsRawResult, ToSelf, TokenIdentifier, Tx, TxScEnv, diff --git a/framework/base/src/types/interaction/system_proxy.rs b/framework/base/src/types/interaction/system_proxy.rs index 4963c5f86a..42bbbcf53b 100644 --- a/framework/base/src/types/interaction/system_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy.rs @@ -2,6 +2,7 @@ mod builtin_func_proxy; mod esdt_system_sc_proxy; mod legacy_system_sc_proxy; pub(crate) mod token_properties; +pub mod builtin_func_names; pub use builtin_func_proxy::*; pub use esdt_system_sc_proxy::*; diff --git a/framework/base/src/api/builtin_function_names.rs b/framework/base/src/types/interaction/system_proxy/builtin_func_names.rs similarity index 100% rename from framework/base/src/api/builtin_function_names.rs rename to framework/base/src/types/interaction/system_proxy/builtin_func_names.rs diff --git a/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs b/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs index dcc3d4b2d8..748de5f870 100644 --- a/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs @@ -1,3 +1,9 @@ +use self::builtin_func_names::{ + CHANGE_OWNER_BUILTIN_FUNC_NAME, CLAIM_DEVELOPER_REWARDS_FUNC_NAME, DELETE_USERNAME_FUNC_NAME, + ESDT_LOCAL_BURN_FUNC_NAME, ESDT_LOCAL_MINT_FUNC_NAME, ESDT_NFT_ADD_QUANTITY_FUNC_NAME, + ESDT_NFT_ADD_URI_FUNC_NAME, ESDT_NFT_BURN_FUNC_NAME, ESDT_NFT_CREATE_FUNC_NAME, + ESDT_NFT_UPDATE_ATTRIBUTES_FUNC_NAME, SET_USERNAME_FUNC_NAME, +}; use crate::proxy_imports::*; /// Proxy describing the user builtin function signatures. @@ -43,7 +49,7 @@ where name: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call("SetUserName") + .raw_call(SET_USERNAME_FUNC_NAME) .argument(&name) .original_result() } @@ -52,7 +58,7 @@ where self, ) -> TxProxyCall { self.wrapped_tx - .raw_call("DeleteUserName") + .raw_call(DELETE_USERNAME_FUNC_NAME) .original_result() } } From 9e3a529d5412573f6da23f259e34a61817c6be74 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Fri, 5 Apr 2024 09:23:24 +0200 Subject: [PATCH 273/461] multi exec interact progress --- .../interact/src/multisig_interact.rs | 87 ++++++++----------- .../interact/src/multisig_interact_nfts.rs | 41 +++------ 2 files changed, 51 insertions(+), 77 deletions(-) diff --git a/contracts/examples/multisig/interact/src/multisig_interact.rs b/contracts/examples/multisig/interact/src/multisig_interact.rs index d80ab639f7..07e4360a26 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact.rs @@ -5,15 +5,15 @@ mod multisig_interact_state; mod multisig_interact_wegld; use clap::Parser; -use multisig::{ - multisig_perform::ProxyTrait as _, multisig_propose::ProxyTrait as _, multisig_proxy, - ProxyTrait as _, -}; +use multisig::{multisig_perform::ProxyTrait as _, multisig_proxy, ProxyTrait as _}; use multisig_interact_config::Config; use multisig_interact_state::State; use multiversx_sc_scenario::{ mandos_system::ScenarioRunner, - multiversx_sc::types::{BigUint, ReturnsNewAddress, ReturnsResult}, + multiversx_sc::{ + imports::OptionalValue, + types::{BigUint, ReturnsNewAddress, ReturnsResult}, + }, scenario_format::interpret_trait::InterpretableFrom, standalone::retrieve_account_as_scenario_set_state, test_wallets, NumExpr, @@ -257,36 +257,34 @@ impl MultisigInteract { println!("successfully performed action `{action_id}`"); } - async fn perform_actions(&mut self, actions: Vec, gas_expr: &str) { - let mut steps = Vec::new(); - for action_id in actions.iter() { - if !self.quorum_reached(*action_id).await && !self.sign(*action_id).await { - continue; + async fn perform_actions(&mut self, actions: Vec, gas_expr: u64) { + let mut buffer = self.interactor.homogenous_call_buffer(); + let multisig_address = self.state.multisig().to_address(); + let from = &self.wallet_address; + + for &action_id in actions.iter() { + if self.quorum_reached(action_id).await && self.sign(action_id).await { + buffer.push_tx(|tx| { + tx.from(from) + .to(&multisig_address) + .gas(gas_expr) + .typed(multisig_proxy::MultisigProxy) + .perform_action_endpoint(action_id) + .returns(ReturnsResult) + }); } - println!("quorum reached for action `{action_id}`"); - - let typed_sc_call = ScCallStep::new() - .call(self.state.multisig().perform_action_endpoint(action_id)) - .from(&self.wallet_address) - .gas_limit(gas_expr); - - steps.push(typed_sc_call); } - self.interactor - .multi_sc_exec(StepBuffer::from_sc_call_vec(&mut steps)) - .await; + let deployed_addresses = buffer.run().await; - for (i, action_id) in actions.iter().enumerate() { - if !steps[i].response().is_success() { + for (action_id, address) in deployed_addresses.iter().enumerate() { + println!("successfully performed action `{action_id}`"); + if address.is_some() { println!( - "perform action `{action_id}` failed with: {}", - steps[i].response().tx_error - ); - continue; + "new deployed address for action `{action_id}: {:#?}`", + address.clone().into_option().unwrap() + ) } - - println!("successfully performed action `{action_id}`"); } } @@ -316,7 +314,9 @@ impl MultisigInteract { async fn sign(&mut self, action_id: usize) -> bool { println!("signing action `{action_id}`..."); - let mut steps = Vec::new(); + let mut buffer = self.interactor.homogenous_call_buffer(); + let multisig_address = self.state.multisig().to_address(); + for signer in self.board().iter() { if self.signed(signer, action_id).await { println!( @@ -326,27 +326,16 @@ impl MultisigInteract { continue; } - let typed_sc_call = ScCallStep::new() - .call(self.state.multisig().sign(action_id)) - .from(signer) - .gas_limit("15,000,000"); - - steps.push(typed_sc_call); + buffer.push_tx(|tx| { + tx.from(signer) + .to(&multisig_address) + .gas(15_000_000u64) + .typed(multisig_proxy::MultisigProxy) + .sign(action_id) + }); } - self.interactor - .multi_sc_exec(StepBuffer::from_sc_call_vec(&mut steps)) - .await; - - for step in steps.iter() { - if !step.response().is_success() { - println!( - "perform sign `{action_id}` failed with: {}", - step.response().tx_error - ); - return false; - } - } + buffer.run().await; println!("successfully performed sign action `{action_id}`"); true diff --git a/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs b/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs index 62314ef63c..c677cf8fdf 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs @@ -189,17 +189,20 @@ impl MultisigInteract { println!("creating items..."); let multisig_address = self.state.multisig().to_address(); - let mut steps = Vec::new(); + let mut buffer = self.interactor.homogenous_call_buffer(); for item_index in 0..NUM_ITEMS { let item_name = format!("Test collection item #{item_index}"); let image_cid = format!( "https://ipfs.io/ipfs/QmYyAaEf1phJS5mN6wfou5de5GbpUddBxTY1VekKcjd5PC/nft{item_index:02}.png" ); - let typed_sc_call = ScCallStep::new() - .call( - self.state.multisig().propose_async_call( + buffer.push_tx(|tx| { + tx.from(&self.wallet_address) + .to(&multisig_address) + .gas(10_000_000u64) + .typed(multisig_proxy::MultisigProxy) + .propose_async_call( &multisig_address, 0u64, FunctionCall::new("ESDTNFTCreate") @@ -210,34 +213,16 @@ impl MultisigInteract { .argument(&Empty) .argument(&METADATA) .argument(&image_cid), - ), - ) - .from(&self.wallet_address) - .gas_limit("10,000,000"); - - steps.push(typed_sc_call); + ) + .returns(ReturnsResult) + }); } - self.interactor - .multi_sc_exec(StepBuffer::from_sc_call_vec(&mut steps)) - .await; - - let mut actions = Vec::new(); - for step in steps.iter() { - let result = step.result(); - if result.is_err() { - println!( - "propose ESDTNFTCreate failed with: {}", - result.err().unwrap() - ); - return; - } - - let action_id = result.unwrap(); + let action_ids = buffer.run().await; + for action_id in action_ids.iter() { println!("successfully proposed ESDTNFTCreate action `{action_id}`"); - actions.push(action_id); } - self.perform_actions(actions, "30,000,000").await; + self.perform_actions(action_ids, 30_000_000u64).await; } } From f4a32054ccf73d2ebcc86cef4353bfab19a57157 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 5 Apr 2024 10:39:48 +0300 Subject: [PATCH 274/461] multi exec interactor migration & fix --- .../interact/src/multisig_interact.rs | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/contracts/examples/multisig/interact/src/multisig_interact.rs b/contracts/examples/multisig/interact/src/multisig_interact.rs index 07e4360a26..e407c4f641 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact.rs @@ -5,15 +5,12 @@ mod multisig_interact_state; mod multisig_interact_wegld; use clap::Parser; -use multisig::{multisig_perform::ProxyTrait as _, multisig_proxy, ProxyTrait as _}; +use multisig::multisig_proxy; use multisig_interact_config::Config; use multisig_interact_state::State; use multiversx_sc_scenario::{ mandos_system::ScenarioRunner, - multiversx_sc::{ - imports::OptionalValue, - types::{BigUint, ReturnsNewAddress, ReturnsResult}, - }, + multiversx_sc::types::{BigUint, ReturnsNewAddress, ReturnsResult}, scenario_format::interpret_trait::InterpretableFrom, standalone::retrieve_account_as_scenario_set_state, test_wallets, NumExpr, @@ -25,7 +22,7 @@ use multiversx_sc_snippets::{ api::StaticApi, bech32, scenario_format::interpret_trait::InterpreterContext, scenario_model::*, ContractInfo, }, - tokio, Interactor, InteractorPrepareAsync, StepBuffer, + tokio, Interactor, InteractorPrepareAsync, }; const SYSTEM_SC_BECH32: &str = "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u"; @@ -258,23 +255,28 @@ impl MultisigInteract { } async fn perform_actions(&mut self, actions: Vec, gas_expr: u64) { - let mut buffer = self.interactor.homogenous_call_buffer(); let multisig_address = self.state.multisig().to_address(); - let from = &self.wallet_address; + let mut pending_action_ids = Vec::::new(); for &action_id in actions.iter() { if self.quorum_reached(action_id).await && self.sign(action_id).await { - buffer.push_tx(|tx| { - tx.from(from) - .to(&multisig_address) - .gas(gas_expr) - .typed(multisig_proxy::MultisigProxy) - .perform_action_endpoint(action_id) - .returns(ReturnsResult) - }); + pending_action_ids.push(action_id); } } + let from = &self.wallet_address; + let mut buffer = self.interactor.homogenous_call_buffer(); + for action_id in pending_action_ids { + buffer.push_tx(|tx| { + tx.from(from) + .to(&multisig_address) + .gas(gas_expr) + .typed(multisig_proxy::MultisigProxy) + .perform_action_endpoint(action_id) + .returns(ReturnsResult) + }); + } + let deployed_addresses = buffer.run().await; for (action_id, address) in deployed_addresses.iter().enumerate() { @@ -314,18 +316,22 @@ impl MultisigInteract { async fn sign(&mut self, action_id: usize) -> bool { println!("signing action `{action_id}`..."); - let mut buffer = self.interactor.homogenous_call_buffer(); let multisig_address = self.state.multisig().to_address(); + let mut pending_signers = Vec::
::new(); for signer in self.board().iter() { if self.signed(signer, action_id).await { println!( "{} - already signed action `{action_id}`", bech32::encode(signer) ); - continue; + } else { + pending_signers.push(signer.clone()); } + } + let mut buffer = self.interactor.homogenous_call_buffer(); + for signer in pending_signers { buffer.push_tx(|tx| { tx.from(signer) .to(&multisig_address) From 39d96f00e55f6e0179d710b4686111f9806c8700 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Fri, 5 Apr 2024 13:22:15 +0300 Subject: [PATCH 275/461] proxy multi config - multi path rename & fmt proxy gen --- .../kitty-genetic-alg/sc-config.toml | 10 +++- .../kitty-ownership/sc-config.toml | 16 ++++-- .../feature-tests/abi-tester/src/abi_proxy.rs | 10 +++- .../erc1155/sc-config.toml | 4 +- .../erc-style-contracts/erc20/sc-config.toml | 10 ++-- .../generate_proxy/proxy_generator.rs | 56 +++++++++++++------ .../cmd/contract/sc_config/sc_config_proxy.rs | 2 +- 7 files changed, 75 insertions(+), 33 deletions(-) diff --git a/contracts/examples/crypto-kitties/kitty-genetic-alg/sc-config.toml b/contracts/examples/crypto-kitties/kitty-genetic-alg/sc-config.toml index 9ef6cb0474..f18c45d308 100644 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/sc-config.toml +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/sc-config.toml @@ -1,2 +1,8 @@ -[settings] -proxy-paths = ["../kitty-ownership/src/kitty_genetic_alg_proxy.rs"] +[[proxy]] +path = "../kitty-ownership/src/kitty_genetic_alg_proxy.rs" +[[proxy.path-rename]] +from = "kitty::kitty" +to = "kitty" +[[proxy.path-rename]] +from = "kitty_genes" +to = "kitty" diff --git a/contracts/examples/crypto-kitties/kitty-ownership/sc-config.toml b/contracts/examples/crypto-kitties/kitty-ownership/sc-config.toml index 3bde9040f9..202f19e321 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/sc-config.toml +++ b/contracts/examples/crypto-kitties/kitty-ownership/sc-config.toml @@ -1,5 +1,11 @@ -[settings] -proxy-paths = [ - "../kitty-auction/src/kitty_ownership_proxy.rs", - "../../crypto-zombies/src/kitty_ownership_proxy.rs", -] +[[proxy]] +path = "../kitty-auction/src/kitty_ownership_proxy.rs" +[[proxy.path-rename]] +from = "kitty::kitty" +to = "kitty" + +[[proxy]] +path = "../../crypto-zombies/src/kitty_ownership_proxy.rs" +[[proxy.path-rename]] +from = "kitty::kitty" +to = "kitty" diff --git a/contracts/feature-tests/abi-tester/src/abi_proxy.rs b/contracts/feature-tests/abi-tester/src/abi_proxy.rs index b6547d3385..eb5d717025 100644 --- a/contracts/feature-tests/abi-tester/src/abi_proxy.rs +++ b/contracts/feature-tests/abi-tester/src/abi_proxy.rs @@ -414,7 +414,10 @@ pub enum AbiEnum { Nothing, Something(i32), SomethingMore(u8, OnlyShowsUpAsNested08), - SomeStruct { a: u16, b: OnlyShowsUpAsNested09 }, + SomeStruct { + a: u16, + b: OnlyShowsUpAsNested09, + }, } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] @@ -504,5 +507,8 @@ pub enum ExplicitDiscriminantMixed { Unit, Tuple(u16), Five, - Struct { a: u8, b: u16 }, + Struct { + a: u8, + b: u16, + }, } diff --git a/contracts/feature-tests/erc-style-contracts/erc1155/sc-config.toml b/contracts/feature-tests/erc-style-contracts/erc1155/sc-config.toml index e23006a55c..41ca1e2eee 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/sc-config.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155/sc-config.toml @@ -1,6 +1,8 @@ [settings] main = "erc1155" -proxy-paths = ["../erc1155-marketplace/src/erc1155_proxy.rs"] + +[[proxy]] +path = "../erc1155-marketplace/src/erc1155_proxy.rs" # the only purpose of this config is to specify the allocator [contracts.erc1155] diff --git a/contracts/feature-tests/erc-style-contracts/erc20/sc-config.toml b/contracts/feature-tests/erc-style-contracts/erc20/sc-config.toml index 45d4fccdce..68aff47cba 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/sc-config.toml +++ b/contracts/feature-tests/erc-style-contracts/erc20/sc-config.toml @@ -1,5 +1,7 @@ [settings] -proxy-paths = [ - "../crowdfunding-erc20/src/erc20_proxy.rs", - "../lottery-erc20/src/erc20_proxy.rs", -] + +[[proxy]] +path = "../crowdfunding-erc20/src/erc20_proxy.rs" + +[[proxy]] +path = "../lottery-erc20/src/erc20_proxy.rs" diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs index 60e121cf06..68f2554ab4 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs @@ -8,7 +8,8 @@ use multiversx_sc::abi::{ use crate::cmd::contract::{meta_config::MetaConfig, sc_config::ProxyConfigSerde}; use super::proxy_process_type_name::{ - extract_paths, extract_struct_crate, process_rust_type, proxy_methods_type_name, proxy_type_name + extract_paths, extract_struct_crate, process_rust_type, proxy_methods_type_name, + proxy_type_name, }; const PRELUDE: &str = "// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. @@ -438,6 +439,13 @@ where ) { self.start_write_type("enum", type_description, name); + if enum_variants.is_empty() { + self.writeln("}"); + return; + } + + self.writeln(""); + for variant in enum_variants { self.write(format!(" {}", variant.name)); if variant.fields.is_empty() { @@ -462,6 +470,13 @@ where ) { self.start_write_type("struct", type_description, name); + if struct_fields.is_empty() { + self.writeln("}"); + return; + } + + self.writeln(""); + for field in struct_fields { let adjusted_type_name = self.adjust_type_name_with_api(&field.field_type.rust); self.writeln(format!(" pub {}: {adjusted_type_name},", field.name)); @@ -499,7 +514,9 @@ where let processed_paths = self.process_paths(&paths); - process_rust_type(rust_type.to_string(), paths, processed_paths) + let processed_rust_type = process_rust_type(rust_type.to_string(), paths, processed_paths); + + self.rename_path_with_custome_config(&processed_rust_type) } fn start_write_type( @@ -522,7 +539,7 @@ where self.write(" "); } - self.writeln("{"); + self.write("{"); } pub fn write_macro_attributes(&mut self, macro_attributes: &[String]) { @@ -553,17 +570,23 @@ where self.writeln(" }"); } - fn extract_path_rename(&self) -> (&str, &str) { - if let Some(path_rename) = &self.proxy_config.path_rename { - return (&path_rename.from, &path_rename.to); + fn rename_path_with_custome_config(&self, processed_type: &str) -> String { + let mut renamed_processed_type = processed_type.to_owned(); + + if let Some(paths_rename) = &self.proxy_config.path_rename { + for path_rename in paths_rename { + if processed_type.contains(&path_rename.from) { + renamed_processed_type = + renamed_processed_type.replace(&path_rename.from, &path_rename.to); + } + } } - ("", "") + renamed_processed_type } fn process_paths(&self, paths: &Vec) -> Vec { let mut processed_paths: Vec = Vec::new(); - let (path_rename_from, path_rename_to) = self.extract_path_rename(); let crate_name = self .meta_config .original_contract_abi @@ -571,16 +594,13 @@ where for path in paths { let type_rust_name = path.split("::").last().unwrap(); - let processed_path = match path { - p if p == path_rename_from => path_rename_to.to_string(), - p if crate_name == extract_struct_crate(p) - || TYPES_FROM_FRAMEWORK.contains(&type_rust_name) => - { - type_rust_name.to_string() - }, - _ => path.to_string(), - }; - processed_paths.push(processed_path); + if crate_name == extract_struct_crate(path) + || TYPES_FROM_FRAMEWORK.contains(&type_rust_name) + { + processed_paths.push(type_rust_name.to_string()); + } else { + processed_paths.push(path.to_string()); + } } processed_paths diff --git a/framework/meta/src/cmd/contract/sc_config/sc_config_proxy.rs b/framework/meta/src/cmd/contract/sc_config/sc_config_proxy.rs index 5521b1ee38..56c9a5257a 100644 --- a/framework/meta/src/cmd/contract/sc_config/sc_config_proxy.rs +++ b/framework/meta/src/cmd/contract/sc_config/sc_config_proxy.rs @@ -14,7 +14,7 @@ pub struct ProxyConfigSerde { #[serde(default)] #[serde(rename = "path-rename")] - pub path_rename: Option, + pub path_rename: Option>, } impl ProxyConfigSerde { From 2b6f7a79bf5fadbf784dd850825a22c1127615c3 Mon Sep 17 00:00:00 2001 From: Laurentiu Ciobanu Date: Fri, 5 Apr 2024 13:41:35 +0300 Subject: [PATCH 276/461] sc-meta install wasm32 target --- framework/meta/src/cli_args/cli_args_standalone.rs | 6 ++++++ framework/meta/src/cmd/standalone/install.rs | 9 ++++++++- .../src/cmd/standalone/install/install_wasm32.rs | 12 ++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 framework/meta/src/cmd/standalone/install/install_wasm32.rs diff --git a/framework/meta/src/cli_args/cli_args_standalone.rs b/framework/meta/src/cli_args/cli_args_standalone.rs index 2f6c435e9c..02b5ac9f24 100644 --- a/framework/meta/src/cli_args/cli_args_standalone.rs +++ b/framework/meta/src/cli_args/cli_args_standalone.rs @@ -307,6 +307,9 @@ pub enum InstallCommand { #[command(about = "Installs the `mx-scenario-go` tool")] MxScenarioGo(InstallMxScenarioGoArgs), + + #[command(name = "wasm32", about = "Installs the `wasm32` target")] + Wasm32(InstallWasm32Args), } #[derive(Default, Clone, PartialEq, Eq, Debug, Args)] @@ -315,3 +318,6 @@ pub struct InstallMxScenarioGoArgs { #[arg(long, verbatim_doc_comment)] pub tag: Option, } + +#[derive(Default, Clone, PartialEq, Eq, Debug, Args)] +pub struct InstallWasm32Args {} diff --git a/framework/meta/src/cmd/standalone/install.rs b/framework/meta/src/cmd/standalone/install.rs index e96f23ad70..2c2befef95 100644 --- a/framework/meta/src/cmd/standalone/install.rs +++ b/framework/meta/src/cmd/standalone/install.rs @@ -1,7 +1,8 @@ mod install_scenario_go; +mod install_wasm32; mod system_info; -use crate::cli_args::{InstallArgs, InstallCommand, InstallMxScenarioGoArgs}; +use crate::cli_args::{InstallArgs, InstallCommand, InstallMxScenarioGoArgs, InstallWasm32Args}; use self::install_scenario_go::ScenarioGoInstaller; @@ -14,11 +15,17 @@ pub fn install(args: &InstallArgs) { match command { InstallCommand::All => { install_scenario_go(&InstallMxScenarioGoArgs::default()); + install_wasm32(&InstallWasm32Args::default()); }, InstallCommand::MxScenarioGo(sg_args) => install_scenario_go(sg_args), + InstallCommand::Wasm32(wam32_args) => install_wasm32(wam32_args), } } fn install_scenario_go(sg_args: &InstallMxScenarioGoArgs) { ScenarioGoInstaller::new(sg_args.tag.clone()).install(); } + +fn install_wasm32(_wasm32_args: &InstallWasm32Args) { + install_wasm32::install_wasm32_target(); +} diff --git a/framework/meta/src/cmd/standalone/install/install_wasm32.rs b/framework/meta/src/cmd/standalone/install/install_wasm32.rs new file mode 100644 index 0000000000..dbe6cc5eb7 --- /dev/null +++ b/framework/meta/src/cmd/standalone/install/install_wasm32.rs @@ -0,0 +1,12 @@ +use std::process::Command; + +pub fn install_wasm32_target() { + let cmd = Command::new("rustup") + .args(vec!["target", "add", "wasm32-unknown-unknown"]) + .status() + .expect("failed to execute `rustup`"); + + assert!(cmd.success(), "failed to install wasm32 target"); + + println!("wasm32 target installed successfully"); +} From 595709dc5253e5489380c9242f78b381f3da01c2 Mon Sep 17 00:00:00 2001 From: Laurentiu Ciobanu Date: Fri, 5 Apr 2024 14:41:46 +0300 Subject: [PATCH 277/461] sc-meta install wasm-opt --- framework/meta/src/cli_args/cli_args_standalone.rs | 6 ++++++ framework/meta/src/cmd/standalone/install.rs | 14 +++++++++++--- .../{install_wasm32.rs => install_wasm_tools.rs} | 11 +++++++++++ 3 files changed, 28 insertions(+), 3 deletions(-) rename framework/meta/src/cmd/standalone/install/{install_wasm32.rs => install_wasm_tools.rs} (55%) diff --git a/framework/meta/src/cli_args/cli_args_standalone.rs b/framework/meta/src/cli_args/cli_args_standalone.rs index 02b5ac9f24..00cf305e8d 100644 --- a/framework/meta/src/cli_args/cli_args_standalone.rs +++ b/framework/meta/src/cli_args/cli_args_standalone.rs @@ -310,6 +310,9 @@ pub enum InstallCommand { #[command(name = "wasm32", about = "Installs the `wasm32` target")] Wasm32(InstallWasm32Args), + + #[command(name = "wasm-opt", about = "Installs the `wasm-opt` tool")] + WasmOpt(InstallWasmOptArgs), } #[derive(Default, Clone, PartialEq, Eq, Debug, Args)] @@ -321,3 +324,6 @@ pub struct InstallMxScenarioGoArgs { #[derive(Default, Clone, PartialEq, Eq, Debug, Args)] pub struct InstallWasm32Args {} + +#[derive(Default, Clone, PartialEq, Eq, Debug, Args)] +pub struct InstallWasmOptArgs {} diff --git a/framework/meta/src/cmd/standalone/install.rs b/framework/meta/src/cmd/standalone/install.rs index 2c2befef95..2a3fc387c0 100644 --- a/framework/meta/src/cmd/standalone/install.rs +++ b/framework/meta/src/cmd/standalone/install.rs @@ -1,8 +1,10 @@ mod install_scenario_go; -mod install_wasm32; +mod install_wasm_tools; mod system_info; -use crate::cli_args::{InstallArgs, InstallCommand, InstallMxScenarioGoArgs, InstallWasm32Args}; +use crate::cli_args::{ + InstallArgs, InstallCommand, InstallMxScenarioGoArgs, InstallWasm32Args, InstallWasmOptArgs, +}; use self::install_scenario_go::ScenarioGoInstaller; @@ -16,9 +18,11 @@ pub fn install(args: &InstallArgs) { InstallCommand::All => { install_scenario_go(&InstallMxScenarioGoArgs::default()); install_wasm32(&InstallWasm32Args::default()); + install_wasm_opt(&InstallWasmOptArgs::default()); }, InstallCommand::MxScenarioGo(sg_args) => install_scenario_go(sg_args), InstallCommand::Wasm32(wam32_args) => install_wasm32(wam32_args), + InstallCommand::WasmOpt(wasm_opt_args) => install_wasm_opt(wasm_opt_args), } } @@ -27,5 +31,9 @@ fn install_scenario_go(sg_args: &InstallMxScenarioGoArgs) { } fn install_wasm32(_wasm32_args: &InstallWasm32Args) { - install_wasm32::install_wasm32_target(); + install_wasm_tools::install_wasm32_target(); +} + +fn install_wasm_opt(_wasm_opt_args: &InstallWasmOptArgs) { + install_wasm_tools::install_wasm_opt(); } diff --git a/framework/meta/src/cmd/standalone/install/install_wasm32.rs b/framework/meta/src/cmd/standalone/install/install_wasm_tools.rs similarity index 55% rename from framework/meta/src/cmd/standalone/install/install_wasm32.rs rename to framework/meta/src/cmd/standalone/install/install_wasm_tools.rs index dbe6cc5eb7..90577107fe 100644 --- a/framework/meta/src/cmd/standalone/install/install_wasm32.rs +++ b/framework/meta/src/cmd/standalone/install/install_wasm_tools.rs @@ -10,3 +10,14 @@ pub fn install_wasm32_target() { println!("wasm32 target installed successfully"); } + +pub fn install_wasm_opt() { + let cmd = Command::new("cargo") + .args(vec!["install", "wasm-opt"]) + .status() + .expect("failed to execute `cargo`"); + + assert!(cmd.success(), "failed to install wasm-opt"); + + println!("wasm-opt installed successfully"); +} From eba6e2897dec2f0974425aae6a8eb2c4a0c69b1a Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Fri, 5 Apr 2024 16:49:22 +0300 Subject: [PATCH 278/461] builtin func - claim dev rewards --- .../modules/src/claim_developer_rewards.rs | 9 +++++---- .../src/contract_base/wrappers/send_wrapper.rs | 17 +++-------------- .../system_proxy/builtin_func_proxy.rs | 11 +++++++++++ 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/contracts/modules/src/claim_developer_rewards.rs b/contracts/modules/src/claim_developer_rewards.rs index 05be2a0012..5a63ddd6bc 100644 --- a/contracts/modules/src/claim_developer_rewards.rs +++ b/contracts/modules/src/claim_developer_rewards.rs @@ -4,9 +4,10 @@ multiversx_sc::imports!(); pub trait ClaimDeveloperRewardsModule { #[endpoint(claimDeveloperRewards)] fn claim_developer_rewards(&self, child_sc_address: ManagedAddress) { - let () = self - .send() - .claim_developer_rewards(child_sc_address) - .execute_on_dest_context(); + self.tx() + .to(&child_sc_address) + .typed(system_proxy::UserBuiltinProxy) + .claim_developer_rewards() + .async_call_and_exit(); } } diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index 100c1002ff..a90ff3e5c4 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -8,10 +8,9 @@ use crate::{ types::{ system_proxy, system_proxy::builtin_func_names::{ - CHANGE_OWNER_BUILTIN_FUNC_NAME, CLAIM_DEVELOPER_REWARDS_FUNC_NAME, - ESDT_LOCAL_BURN_FUNC_NAME, ESDT_LOCAL_MINT_FUNC_NAME, ESDT_NFT_ADD_QUANTITY_FUNC_NAME, - ESDT_NFT_ADD_URI_FUNC_NAME, ESDT_NFT_BURN_FUNC_NAME, ESDT_NFT_CREATE_FUNC_NAME, - ESDT_NFT_UPDATE_ATTRIBUTES_FUNC_NAME, + CHANGE_OWNER_BUILTIN_FUNC_NAME, ESDT_LOCAL_BURN_FUNC_NAME, ESDT_LOCAL_MINT_FUNC_NAME, + ESDT_NFT_ADD_QUANTITY_FUNC_NAME, ESDT_NFT_ADD_URI_FUNC_NAME, ESDT_NFT_BURN_FUNC_NAME, + ESDT_NFT_CREATE_FUNC_NAME, ESDT_NFT_UPDATE_ATTRIBUTES_FUNC_NAME, }, BigUint, ContractCall, ContractCallNoPayment, ESDTSystemSCAddress, EgldOrEsdtTokenIdentifier, EsdtTokenPayment, GasLeft, ManagedAddress, ManagedArgBuffer, @@ -359,16 +358,6 @@ where .async_call_and_exit() } - /// 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, - ) -> ContractCallNoPayment { - ContractCallNoPayment::new(child_sc_address, CLAIM_DEVELOPER_REWARDS_FUNC_NAME) - } - /// 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. diff --git a/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs b/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs index 748de5f870..d71d398c75 100644 --- a/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs @@ -61,4 +61,15 @@ where .raw_call(DELETE_USERNAME_FUNC_NAME) .original_result() } + + /// 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, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call(CLAIM_DEVELOPER_REWARDS_FUNC_NAME) + .original_result() + } } From f4cce0d32a3952d66f713e820ab317c6e38e4bea Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 5 Apr 2024 19:17:10 +0300 Subject: [PATCH 279/461] ManagedBufferBuilder rename --- framework/base/src/io/finish.rs | 8 ++++---- framework/base/src/macros.rs | 4 ++-- framework/base/src/storage/storage_set.rs | 6 +++--- .../types/interaction/contract_call_exec.rs | 5 ++--- .../src/types/interaction/function_call.rs | 4 ++-- .../base/src/types/managed/wrapped/builder.rs | 5 +++++ .../managed_buffer_builder.rs} | 18 +++++++++--------- .../base/src/types/managed/wrapped/mod.rs | 4 ++-- .../src/preprocessing/substitution_list.rs | 2 +- .../src/api/local_api_vh/print_api_vh.rs | 4 ++-- 10 files changed, 32 insertions(+), 28 deletions(-) create mode 100644 framework/base/src/types/managed/wrapped/builder.rs rename framework/base/src/types/managed/wrapped/{managed_buffer_cached_builder.rs => builder/managed_buffer_builder.rs} (92%) diff --git a/framework/base/src/io/finish.rs b/framework/base/src/io/finish.rs index f44cc02c5e..49ec4c8560 100644 --- a/framework/base/src/io/finish.rs +++ b/framework/base/src/io/finish.rs @@ -8,8 +8,8 @@ use crate::{ contract_base::ExitCodecErrorHandler, err_msg, types::{ - BigInt, BigUint, ManagedBuffer, ManagedBufferCachedBuilder, ManagedSCError, ManagedType, - SCError, StaticSCError, + BigInt, BigUint, ManagedBuffer, ManagedBufferBuilder, ManagedSCError, ManagedType, SCError, + StaticSCError, }, }; @@ -47,7 +47,7 @@ impl TopEncodeOutput for ApiOutputAdapter where FA: ManagedTypeApi + EndpointFinishApi, { - type NestedBuffer = ManagedBufferCachedBuilder; + type NestedBuffer = ManagedBufferBuilder; fn set_slice_u8(self, bytes: &[u8]) { FA::finish_api_impl().finish_slice_u8(bytes); @@ -94,7 +94,7 @@ where } fn start_nested_encode(&self) -> Self::NestedBuffer { - ManagedBufferCachedBuilder::new_from_slice(&[]) + ManagedBufferBuilder::new_from_slice(&[]) } fn finalize_nested_encode(self, nb: Self::NestedBuffer) { diff --git a/framework/base/src/macros.rs b/framework/base/src/macros.rs index 1754688d03..86c963a057 100644 --- a/framework/base/src/macros.rs +++ b/framework/base/src/macros.rs @@ -63,7 +63,7 @@ macro_rules! require_old { macro_rules! sc_panic { ($msg:tt, $($arg:expr),+ $(,)?) => {{ let mut ___buffer___ = - multiversx_sc::types::ManagedBufferCachedBuilder::::new_from_slice(&[]); + multiversx_sc::types::ManagedBufferBuilder::::new_from_slice(&[]); multiversx_sc::derive::format_receiver_args!(___buffer___, $msg, $($arg),+); multiversx_sc::contract_base::ErrorHelper::::signal_error_with_message(___buffer___.into_managed_buffer()); }}; @@ -123,7 +123,7 @@ macro_rules! sc_print { macro_rules! sc_format { ($msg:tt, $($arg:expr),+ $(,)?) => {{ let mut ___buffer___ = - multiversx_sc::types::ManagedBufferCachedBuilder::::new_from_slice(&[]); + multiversx_sc::types::ManagedBufferBuilder::::new_from_slice(&[]); multiversx_sc::derive::format_receiver_args!(___buffer___, $msg, $($arg),+); ___buffer___.into_managed_buffer() }}; diff --git a/framework/base/src/storage/storage_set.rs b/framework/base/src/storage/storage_set.rs index e988b47351..1a407617f5 100644 --- a/framework/base/src/storage/storage_set.rs +++ b/framework/base/src/storage/storage_set.rs @@ -6,7 +6,7 @@ use crate::{ codec::*, contract_base::ExitCodecErrorHandler, err_msg, - types::{BigInt, BigUint, ManagedBuffer, ManagedBufferCachedBuilder, ManagedRef, ManagedType}, + types::{BigInt, BigUint, ManagedBuffer, ManagedBufferBuilder, ManagedRef, ManagedType}, }; use super::StorageKey; @@ -39,7 +39,7 @@ impl<'k, A> TopEncodeOutput for StorageSetOutput<'k, A> where A: StorageWriteApi + ManagedTypeApi + ErrorApi + 'static, { - type NestedBuffer = ManagedBufferCachedBuilder; + type NestedBuffer = ManagedBufferBuilder; fn set_slice_u8(self, bytes: &[u8]) { self.set_managed_buffer(&bytes.into()) @@ -71,7 +71,7 @@ where } fn start_nested_encode(&self) -> Self::NestedBuffer { - ManagedBufferCachedBuilder::new_from_slice(&[]) + ManagedBufferBuilder::new_from_slice(&[]) } fn finalize_nested_encode(self, nb: Self::NestedBuffer) { diff --git a/framework/base/src/types/interaction/contract_call_exec.rs b/framework/base/src/types/interaction/contract_call_exec.rs index 260897e1a6..fd9994f2b0 100644 --- a/framework/base/src/types/interaction/contract_call_exec.rs +++ b/framework/base/src/types/interaction/contract_call_exec.rs @@ -9,8 +9,7 @@ use crate::{ formatter::SCLowerHex, io::{ArgErrorHandler, ArgId, ManagedResultArgLoader}, types::{ - BigUint, EsdtTokenPayment, ManagedBuffer, ManagedBufferCachedBuilder, ManagedType, - ManagedVec, + BigUint, EsdtTokenPayment, ManagedBuffer, ManagedBufferBuilder, ManagedType, ManagedVec, }, }; @@ -56,7 +55,7 @@ where } pub fn to_call_data_string(&self) -> ManagedBuffer { - let mut result = ManagedBufferCachedBuilder::default(); + let mut result = ManagedBufferBuilder::default(); result.append_managed_buffer(&self.basic.function_call.function_name); for arg in self.basic.function_call.arg_buffer.raw_arg_iter() { result.append_bytes(b"@"); diff --git a/framework/base/src/types/interaction/function_call.rs b/framework/base/src/types/interaction/function_call.rs index a2140f14fa..94740624f5 100644 --- a/framework/base/src/types/interaction/function_call.rs +++ b/framework/base/src/types/interaction/function_call.rs @@ -11,7 +11,7 @@ use crate::{ }, formatter::SCLowerHex, types::{ - EsdtTokenPayment, ManagedAddress, ManagedBuffer, ManagedBufferCachedBuilder, ManagedVec, + EsdtTokenPayment, ManagedAddress, ManagedBuffer, ManagedBufferBuilder, ManagedVec, MultiValueEncoded, }, }; @@ -64,7 +64,7 @@ where } pub fn to_call_data_string(&self) -> ManagedBuffer { - let mut result = ManagedBufferCachedBuilder::default(); + let mut result = ManagedBufferBuilder::default(); result.append_managed_buffer(&self.function_name); for arg in self.arg_buffer.raw_arg_iter() { result.append_bytes(b"@"); diff --git a/framework/base/src/types/managed/wrapped/builder.rs b/framework/base/src/types/managed/wrapped/builder.rs new file mode 100644 index 0000000000..614edc8133 --- /dev/null +++ b/framework/base/src/types/managed/wrapped/builder.rs @@ -0,0 +1,5 @@ +mod managed_buffer_builder; + +pub use managed_buffer_builder::ManagedBufferBuilder; + +pub type ManagedBufferCachedBuilder = ManagedBufferBuilder; diff --git a/framework/base/src/types/managed/wrapped/managed_buffer_cached_builder.rs b/framework/base/src/types/managed/wrapped/builder/managed_buffer_builder.rs similarity index 92% rename from framework/base/src/types/managed/wrapped/managed_buffer_cached_builder.rs rename to framework/base/src/types/managed/wrapped/builder/managed_buffer_builder.rs index 85d6c5a264..efe0301e67 100644 --- a/framework/base/src/types/managed/wrapped/managed_buffer_cached_builder.rs +++ b/framework/base/src/types/managed/wrapped/builder/managed_buffer_builder.rs @@ -12,7 +12,7 @@ use crate::{ const HEX_CONVERSION_BUFFER_LEN: usize = 32; const BIN_CONVERSION_BUFFER_LEN: usize = 32; -pub struct ManagedBufferCachedBuilder +pub struct ManagedBufferBuilder where M: ManagedTypeApi, { @@ -20,7 +20,7 @@ where static_cache: Option>, } -impl ManagedBufferCachedBuilder +impl ManagedBufferBuilder where M: ManagedTypeApi, { @@ -31,12 +31,12 @@ where pub fn new_from_slice(slice: &[u8]) -> Self { let static_cache = StaticBufferRef::try_new(slice); if static_cache.is_some() { - ManagedBufferCachedBuilder { + ManagedBufferBuilder { managed_buffer: ManagedBuffer::new(), static_cache, } } else { - ManagedBufferCachedBuilder { + ManagedBufferBuilder { managed_buffer: slice.into(), static_cache: None, } @@ -44,7 +44,7 @@ where } } -impl Default for ManagedBufferCachedBuilder +impl Default for ManagedBufferBuilder where M: ManagedTypeApi, { @@ -54,7 +54,7 @@ where } } -impl ManagedBufferCachedBuilder +impl ManagedBufferBuilder where M: ManagedTypeApi, { @@ -125,7 +125,7 @@ where } } -impl NestedEncodeOutput for ManagedBufferCachedBuilder { +impl NestedEncodeOutput for ManagedBufferBuilder { fn write(&mut self, bytes: &[u8]) { self.append_bytes(bytes); } @@ -156,7 +156,7 @@ impl NestedEncodeOutput for ManagedBufferCachedBuilder { } } -impl FormatByteReceiver for ManagedBufferCachedBuilder +impl FormatByteReceiver for ManagedBufferBuilder where M: ManagedTypeApi, { @@ -179,7 +179,7 @@ where } } -impl FormatBuffer for ManagedBufferCachedBuilder { +impl FormatBuffer for ManagedBufferBuilder { fn append_ascii(&mut self, ascii: &[u8]) { self.append_bytes(ascii) } diff --git a/framework/base/src/types/managed/wrapped/mod.rs b/framework/base/src/types/managed/wrapped/mod.rs index 7ead89e3a0..e883e67e93 100644 --- a/framework/base/src/types/managed/wrapped/mod.rs +++ b/framework/base/src/types/managed/wrapped/mod.rs @@ -1,3 +1,4 @@ +mod builder; mod egld_or_esdt_token_identifier; mod egld_or_esdt_token_payment; mod egld_or_multi_esdt_payment; @@ -5,7 +6,6 @@ mod encoded_managed_vec_item; mod esdt_token_data; mod esdt_token_payment; mod managed_address; -mod managed_buffer_cached_builder; mod managed_byte_array; mod managed_option; mod managed_ref; @@ -19,6 +19,7 @@ mod randomness_source; mod token_identifier; mod traits; +pub use builder::*; pub use egld_or_esdt_token_identifier::EgldOrEsdtTokenIdentifier; pub use egld_or_esdt_token_payment::EgldOrEsdtTokenPayment; pub use egld_or_multi_esdt_payment::EgldOrMultiEsdtPayment; @@ -26,7 +27,6 @@ pub(crate) use encoded_managed_vec_item::EncodedManagedVecItem; pub use esdt_token_data::EsdtTokenData; pub use esdt_token_payment::{EsdtTokenPayment, MultiEsdtPayment}; pub use managed_address::ManagedAddress; -pub use managed_buffer_cached_builder::ManagedBufferCachedBuilder; pub(crate) use managed_byte_array::ManagedBufferSizeContext; pub use managed_byte_array::ManagedByteArray; pub use managed_option::ManagedOption; diff --git a/framework/derive/src/preprocessing/substitution_list.rs b/framework/derive/src/preprocessing/substitution_list.rs index 8084651a49..62fdb11823 100644 --- a/framework/derive/src/preprocessing/substitution_list.rs +++ b/framework/derive/src/preprocessing/substitution_list.rs @@ -71,7 +71,7 @@ fn add_managed_types(substitutions: &mut SubstitutionsMap) { add_managed_type(substitutions, "e!(EsdtTokenData)); add_managed_type(substitutions, "e!(EsdtTokenPayment)); add_managed_type(substitutions, "e!(ManagedAddress)); - add_managed_type(substitutions, "e!(ManagedBufferCachedBuilder)); + add_managed_type(substitutions, "e!(ManagedBufferBuilder)); add_managed_type_with_generics(substitutions, "e!(ManagedByteArray)); add_managed_type_with_generics(substitutions, "e!(ManagedOption)); add_managed_type_with_generics(substitutions, "e!(ManagedRef)); diff --git a/framework/scenario/src/api/local_api_vh/print_api_vh.rs b/framework/scenario/src/api/local_api_vh/print_api_vh.rs index 6774e9546d..58cdb7fd16 100644 --- a/framework/scenario/src/api/local_api_vh/print_api_vh.rs +++ b/framework/scenario/src/api/local_api_vh/print_api_vh.rs @@ -2,7 +2,7 @@ use std::cell::RefCell; use multiversx_sc::{ api::{PrintApi, PrintApiImpl}, - types::ManagedBufferCachedBuilder, + types::ManagedBufferBuilder, }; use crate::api::{VMHooksApi, VMHooksApiBackend}; @@ -34,7 +34,7 @@ impl PrintApi for VMHooksApi { } impl PrintApiImpl for VMHooksApi { - type Buffer = ManagedBufferCachedBuilder; + type Buffer = ManagedBufferBuilder; fn print_buffer(&self, buffer: Self::Buffer) { let bytes = buffer.into_managed_buffer().to_boxed_bytes(); From 7dcde7911ac3d547224149727106187bb4ad7b65 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 5 Apr 2024 19:46:59 +0300 Subject: [PATCH 280/461] ManagedBufferBuilder separated implementation --- .../base/src/formatter/formatter_traits.rs | 2 +- .../base/src/types/managed/wrapped/builder.rs | 6 ++ .../wrapped/builder/managed_buffer_builder.rs | 88 +++++++------------ .../builder/managed_buffer_builder_impl.rs | 14 +++ .../managed_buffer_builder_impl_cached.rs | 83 +++++++++++++++++ 5 files changed, 138 insertions(+), 55 deletions(-) create mode 100644 framework/base/src/types/managed/wrapped/builder/managed_buffer_builder_impl.rs create mode 100644 framework/base/src/types/managed/wrapped/builder/managed_buffer_builder_impl_cached.rs diff --git a/framework/base/src/formatter/formatter_traits.rs b/framework/base/src/formatter/formatter_traits.rs index 7faa0b00f5..015641e3b6 100644 --- a/framework/base/src/formatter/formatter_traits.rs +++ b/framework/base/src/formatter/formatter_traits.rs @@ -19,7 +19,7 @@ pub trait FormatByteReceiver { fn append_managed_buffer_binary(&mut self, item: &ManagedBuffer); } -pub trait FormatBuffer: Default { +pub trait FormatBuffer { fn append_ascii(&mut self, ascii: &[u8]); fn append_display(&mut self, item: &T); diff --git a/framework/base/src/types/managed/wrapped/builder.rs b/framework/base/src/types/managed/wrapped/builder.rs index 614edc8133..89bc92feb2 100644 --- a/framework/base/src/types/managed/wrapped/builder.rs +++ b/framework/base/src/types/managed/wrapped/builder.rs @@ -1,5 +1,11 @@ mod managed_buffer_builder; +mod managed_buffer_builder_impl; +mod managed_buffer_builder_impl_cached; pub use managed_buffer_builder::ManagedBufferBuilder; +pub use managed_buffer_builder_impl::ManagedBufferBuilderImpl; +pub use managed_buffer_builder_impl_cached::ManagedBufferBuilderImplCached; pub type ManagedBufferCachedBuilder = ManagedBufferBuilder; + +pub type ManagedBufferImplDefault = ManagedBufferBuilderImplCached; diff --git a/framework/base/src/types/managed/wrapped/builder/managed_buffer_builder.rs b/framework/base/src/types/managed/wrapped/builder/managed_buffer_builder.rs index efe0301e67..ac3b733ac7 100644 --- a/framework/base/src/types/managed/wrapped/builder/managed_buffer_builder.rs +++ b/framework/base/src/types/managed/wrapped/builder/managed_buffer_builder.rs @@ -1,3 +1,5 @@ +use core::marker::PhantomData; + use crate::codec::{EncodeError, EncodeErrorHandler, NestedEncodeOutput, TryStaticCast}; use crate::{ @@ -6,45 +8,41 @@ use crate::{ hex_util::{byte_to_binary_digits, byte_to_hex_digits}, FormatBuffer, FormatByteReceiver, SCBinary, SCCodec, SCDisplay, SCLowerHex, }, - types::{BigInt, BigUint, ManagedBuffer, StaticBufferRef}, + types::ManagedBuffer, }; +use super::{ManagedBufferBuilderImpl, ManagedBufferImplDefault}; + const HEX_CONVERSION_BUFFER_LEN: usize = 32; const BIN_CONVERSION_BUFFER_LEN: usize = 32; -pub struct ManagedBufferBuilder +pub struct ManagedBufferBuilder> where M: ManagedTypeApi, + Impl: ManagedBufferBuilderImpl, { - managed_buffer: ManagedBuffer, - static_cache: Option>, + _phantom: PhantomData, + implementation: Impl, } -impl ManagedBufferBuilder +impl ManagedBufferBuilder where M: ManagedTypeApi, + Impl: ManagedBufferBuilderImpl, { /// Creates instance as lazily as possible. /// If possible, the slice is loaded into the static buffer. /// If not, it is saved into the managed buffer so that the data is not lost. /// Use `flush_to_managed_buffer` after this to ensure that the managed buffer is populated. pub fn new_from_slice(slice: &[u8]) -> Self { - let static_cache = StaticBufferRef::try_new(slice); - if static_cache.is_some() { - ManagedBufferBuilder { - managed_buffer: ManagedBuffer::new(), - static_cache, - } - } else { - ManagedBufferBuilder { - managed_buffer: slice.into(), - static_cache: None, - } + ManagedBufferBuilder { + _phantom: PhantomData, + implementation: Impl::new_from_slice(slice), } } } -impl Default for ManagedBufferBuilder +impl Default for ManagedBufferBuilder> where M: ManagedTypeApi, { @@ -54,48 +52,21 @@ where } } -impl ManagedBufferBuilder +impl ManagedBufferBuilder where M: ManagedTypeApi, + Impl: ManagedBufferBuilderImpl, { - pub fn into_managed_buffer(mut self) -> ManagedBuffer { - self.flush_to_managed_buffer(); - self.managed_buffer - } - - fn flush_to_managed_buffer(&mut self) { - let old_static_cache = core::mem::take(&mut self.static_cache); - if let Some(static_cache) = &old_static_cache { - static_cache.with_buffer_contents(|bytes| { - self.managed_buffer.append_bytes(bytes); - }); - } + pub fn into_managed_buffer(self) -> ManagedBuffer { + self.implementation.into_managed_buffer() } pub fn append_bytes(&mut self, bytes: &[u8]) { - if let Some(static_cache) = &mut self.static_cache { - let success = static_cache.try_extend_from_slice(bytes); - if !success { - self.flush_to_managed_buffer(); - self.managed_buffer.append_bytes(bytes); - } - } else { - self.managed_buffer.append_bytes(bytes); - } + self.implementation.append_bytes(bytes); } pub fn append_managed_buffer(&mut self, item: &ManagedBuffer) { - if let Some(static_cache) = &mut self.static_cache { - let success = static_cache.try_extend_from_copy_bytes(item.len(), |dest_slice| { - let _ = item.load_slice(0, dest_slice); - }); - if !success { - self.flush_to_managed_buffer(); - self.managed_buffer.append(item); - } - } else { - self.managed_buffer.append(item); - } + self.implementation.append_managed_buffer(item); } /// Converts the input to hex and adds it to the current buffer. @@ -125,14 +96,18 @@ where } } -impl NestedEncodeOutput for ManagedBufferBuilder { +impl NestedEncodeOutput for ManagedBufferBuilder +where + M: ManagedTypeApi, + Impl: ManagedBufferBuilderImpl, +{ fn write(&mut self, bytes: &[u8]) { self.append_bytes(bytes); } #[inline] fn supports_specialized_type() -> bool { - T::type_eq::>() || T::type_eq::>() || T::type_eq::>() + T::type_eq::>() } #[inline] @@ -156,9 +131,10 @@ impl NestedEncodeOutput for ManagedBufferBuilder { } } -impl FormatByteReceiver for ManagedBufferBuilder +impl FormatByteReceiver for ManagedBufferBuilder where M: ManagedTypeApi, + Impl: ManagedBufferBuilderImpl, { type Api = M; @@ -179,7 +155,11 @@ where } } -impl FormatBuffer for ManagedBufferBuilder { +impl FormatBuffer for ManagedBufferBuilder +where + M: ManagedTypeApi, + Impl: ManagedBufferBuilderImpl, +{ fn append_ascii(&mut self, ascii: &[u8]) { self.append_bytes(ascii) } diff --git a/framework/base/src/types/managed/wrapped/builder/managed_buffer_builder_impl.rs b/framework/base/src/types/managed/wrapped/builder/managed_buffer_builder_impl.rs new file mode 100644 index 0000000000..dfade9b6e3 --- /dev/null +++ b/framework/base/src/types/managed/wrapped/builder/managed_buffer_builder_impl.rs @@ -0,0 +1,14 @@ +use crate::{api::ManagedTypeApi, types::ManagedBuffer}; + +pub trait ManagedBufferBuilderImpl +where + M: ManagedTypeApi, +{ + fn new_from_slice(slice: &[u8]) -> Self; + + fn into_managed_buffer(self) -> ManagedBuffer; + + fn append_bytes(&mut self, bytes: &[u8]); + + fn append_managed_buffer(&mut self, item: &ManagedBuffer); +} diff --git a/framework/base/src/types/managed/wrapped/builder/managed_buffer_builder_impl_cached.rs b/framework/base/src/types/managed/wrapped/builder/managed_buffer_builder_impl_cached.rs new file mode 100644 index 0000000000..c7977d056d --- /dev/null +++ b/framework/base/src/types/managed/wrapped/builder/managed_buffer_builder_impl_cached.rs @@ -0,0 +1,83 @@ +use crate::{ + api::ManagedTypeApi, + types::{ManagedBuffer, StaticBufferRef}, +}; + +use super::ManagedBufferBuilderImpl; + +pub struct ManagedBufferBuilderImplCached +where + M: ManagedTypeApi, +{ + managed_buffer: ManagedBuffer, + static_cache: Option>, +} + +impl ManagedBufferBuilderImplCached +where + M: ManagedTypeApi, +{ + fn flush_to_managed_buffer(&mut self) { + let old_static_cache = core::mem::take(&mut self.static_cache); + if let Some(static_cache) = &old_static_cache { + static_cache.with_buffer_contents(|bytes| { + self.managed_buffer.append_bytes(bytes); + }); + } + } +} + +impl ManagedBufferBuilderImpl for ManagedBufferBuilderImplCached +where + M: ManagedTypeApi, +{ + /// Creates instance as lazily as possible. + /// If possible, the slice is loaded into the static buffer. + /// If not, it is saved into the managed buffer so that the data is not lost. + /// Use `flush_to_managed_buffer` after this to ensure that the managed buffer is populated. + fn new_from_slice(slice: &[u8]) -> Self { + let static_cache = StaticBufferRef::try_new(slice); + if static_cache.is_some() { + ManagedBufferBuilderImplCached { + managed_buffer: ManagedBuffer::new(), + static_cache, + } + } else { + ManagedBufferBuilderImplCached { + managed_buffer: slice.into(), + static_cache: None, + } + } + } + + fn into_managed_buffer(mut self) -> ManagedBuffer { + self.flush_to_managed_buffer(); + self.managed_buffer + } + + fn append_bytes(&mut self, bytes: &[u8]) { + if let Some(static_cache) = &mut self.static_cache { + let success = static_cache.try_extend_from_slice(bytes); + if !success { + self.flush_to_managed_buffer(); + self.managed_buffer.append_bytes(bytes); + } + } else { + self.managed_buffer.append_bytes(bytes); + } + } + + fn append_managed_buffer(&mut self, item: &ManagedBuffer) { + if let Some(static_cache) = &mut self.static_cache { + let success = static_cache.try_extend_from_copy_bytes(item.len(), |dest_slice| { + let _ = item.load_slice(0, dest_slice); + }); + if !success { + self.flush_to_managed_buffer(); + self.managed_buffer.append(item); + } + } else { + self.managed_buffer.append(item); + } + } +} From 38e452d2b732f5bb5604bd316b15f7c936d0a757 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 5 Apr 2024 22:32:43 +0300 Subject: [PATCH 281/461] ManagedBufferBuilder fix --- framework/base/src/formatter/formatter_traits.rs | 2 +- .../types/managed/wrapped/builder/managed_buffer_builder.rs | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/framework/base/src/formatter/formatter_traits.rs b/framework/base/src/formatter/formatter_traits.rs index 015641e3b6..7faa0b00f5 100644 --- a/framework/base/src/formatter/formatter_traits.rs +++ b/framework/base/src/formatter/formatter_traits.rs @@ -19,7 +19,7 @@ pub trait FormatByteReceiver { fn append_managed_buffer_binary(&mut self, item: &ManagedBuffer); } -pub trait FormatBuffer { +pub trait FormatBuffer: Default { fn append_ascii(&mut self, ascii: &[u8]); fn append_display(&mut self, item: &T); diff --git a/framework/base/src/types/managed/wrapped/builder/managed_buffer_builder.rs b/framework/base/src/types/managed/wrapped/builder/managed_buffer_builder.rs index ac3b733ac7..b65aa8e0e0 100644 --- a/framework/base/src/types/managed/wrapped/builder/managed_buffer_builder.rs +++ b/framework/base/src/types/managed/wrapped/builder/managed_buffer_builder.rs @@ -155,10 +155,9 @@ where } } -impl FormatBuffer for ManagedBufferBuilder +impl FormatBuffer for ManagedBufferBuilder> where M: ManagedTypeApi, - Impl: ManagedBufferBuilderImpl, { fn append_ascii(&mut self, ascii: &[u8]) { self.append_bytes(ascii) From 36673864fc759cf10b6481a657c3520d9927bd11 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 5 Apr 2024 23:10:52 +0300 Subject: [PATCH 282/461] ManagedBufferBuilder removed cache by default --- framework/base/Cargo.toml | 1 + .../base/src/types/managed/wrapped/builder.rs | 7 ++++ .../managed_buffer_builder_impl_basic.rs | 40 +++++++++++++++++++ .../managed_buffer_builder_impl_cached.rs | 1 + 4 files changed, 49 insertions(+) create mode 100644 framework/base/src/types/managed/wrapped/builder/managed_buffer_builder_impl_basic.rs diff --git a/framework/base/Cargo.toml b/framework/base/Cargo.toml index 9edc7414d7..961a0c59d5 100644 --- a/framework/base/Cargo.toml +++ b/framework/base/Cargo.toml @@ -19,6 +19,7 @@ all-features = true [features] num-bigint = ["multiversx-sc-codec/num-bigint"] alloc = ["multiversx-sc-codec/alloc"] +managed-buffer-builder-cached = [] esdt-token-payment-legacy-decode = [] [dependencies] diff --git a/framework/base/src/types/managed/wrapped/builder.rs b/framework/base/src/types/managed/wrapped/builder.rs index 89bc92feb2..78f81f6e81 100644 --- a/framework/base/src/types/managed/wrapped/builder.rs +++ b/framework/base/src/types/managed/wrapped/builder.rs @@ -1,11 +1,18 @@ mod managed_buffer_builder; mod managed_buffer_builder_impl; +mod managed_buffer_builder_impl_basic; mod managed_buffer_builder_impl_cached; pub use managed_buffer_builder::ManagedBufferBuilder; pub use managed_buffer_builder_impl::ManagedBufferBuilderImpl; +pub use managed_buffer_builder_impl_basic::ManagedBufferBuilderImplBasic; pub use managed_buffer_builder_impl_cached::ManagedBufferBuilderImplCached; +#[deprecated(since = "0.48.0", note = "Renamed to ManagedBufferBuilder.")] pub type ManagedBufferCachedBuilder = ManagedBufferBuilder; +#[cfg(feature = "managed-buffer-builder-cached")] pub type ManagedBufferImplDefault = ManagedBufferBuilderImplCached; + +#[cfg(not(feature = "managed-buffer-builder-cached"))] +pub type ManagedBufferImplDefault = ManagedBufferBuilderImplBasic; diff --git a/framework/base/src/types/managed/wrapped/builder/managed_buffer_builder_impl_basic.rs b/framework/base/src/types/managed/wrapped/builder/managed_buffer_builder_impl_basic.rs new file mode 100644 index 0000000000..3c1e87c7fb --- /dev/null +++ b/framework/base/src/types/managed/wrapped/builder/managed_buffer_builder_impl_basic.rs @@ -0,0 +1,40 @@ +use crate::{api::ManagedTypeApi, types::ManagedBuffer}; + +use super::ManagedBufferBuilderImpl; + +/// Basic implementation of a ManagedBuffer builder, no caching. +/// +/// It is the ManagedBuffer itself, we just append to it each time. +pub struct ManagedBufferBuilderImplBasic +where + M: ManagedTypeApi, +{ + managed_buffer: ManagedBuffer, +} + +impl ManagedBufferBuilderImpl for ManagedBufferBuilderImplBasic +where + M: ManagedTypeApi, +{ + #[inline] + fn new_from_slice(slice: &[u8]) -> Self { + ManagedBufferBuilderImplBasic { + managed_buffer: slice.into(), + } + } + + #[inline] + fn into_managed_buffer(self) -> ManagedBuffer { + self.managed_buffer + } + + #[inline] + fn append_bytes(&mut self, bytes: &[u8]) { + self.managed_buffer.append_bytes(bytes); + } + + #[inline] + fn append_managed_buffer(&mut self, item: &ManagedBuffer) { + self.managed_buffer.append(item); + } +} diff --git a/framework/base/src/types/managed/wrapped/builder/managed_buffer_builder_impl_cached.rs b/framework/base/src/types/managed/wrapped/builder/managed_buffer_builder_impl_cached.rs index c7977d056d..ead06e151c 100644 --- a/framework/base/src/types/managed/wrapped/builder/managed_buffer_builder_impl_cached.rs +++ b/framework/base/src/types/managed/wrapped/builder/managed_buffer_builder_impl_cached.rs @@ -5,6 +5,7 @@ use crate::{ use super::ManagedBufferBuilderImpl; +/// A ManagedBuffer builder implementation that caches data to the static cache locally in the contract. pub struct ManagedBufferBuilderImplCached where M: ManagedTypeApi, From a358568c3b141796ac92bb27a66db2ea4ac559e6 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sun, 7 Apr 2024 22:06:49 +0300 Subject: [PATCH 283/461] fixed retrieving new token identifier --- .../scenario/model/transaction/tx_response.rs | 264 ++++++++++++++++++ sdk/core/src/data/transaction.rs | 1 + 2 files changed, 265 insertions(+) diff --git a/framework/scenario/src/scenario/model/transaction/tx_response.rs b/framework/scenario/src/scenario/model/transaction/tx_response.rs index 440db8258a..984d9ed810 100644 --- a/framework/scenario/src/scenario/model/transaction/tx_response.rs +++ b/framework/scenario/src/scenario/model/transaction/tx_response.rs @@ -208,11 +208,13 @@ impl TxResponse { let is_issue_semi_fungible = prev_tx.data.starts_with("issueSemiFungible@"); let is_issue_non_fungible = prev_tx.data.starts_with("issueNonFungible@"); let is_register_meta_esdt = prev_tx.data.starts_with("registerMetaESDT@"); + let is_register_and_set_all_roles_esdt = prev_tx.data.starts_with("registerAndSetAllRoles@"); if !is_issue_fungible && !is_issue_semi_fungible && !is_issue_non_fungible && !is_register_meta_esdt + && !is_register_and_set_all_roles_esdt { continue; } @@ -2370,4 +2372,266 @@ mod tests { assert_eq!(tx_response.new_issued_token_identifier, expected) } + + #[test] + fn test_multisig_issue_nft_and_set_all_roles() { + let data = r#" +{ + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "SCInvoking", + "processingTypeOnDestination": "SCInvoking", + "hash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", + "nonce": 53, + "round": 3050972, + "epoch": 1246, + "value": "0", + "receiver": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "sender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "gasPrice": 1000000000, + "gasLimit": 80000000, + "gasUsed": 80000000, + "data": "cGVyZm9ybUFjdGlvbkAwMQ==", + "signature": "cb67645595cee5f7967d8d85af05bb7db73e80d9b97611796819249d87cd174b69b4abfc2a3fbe52df1aec965bdea921f7eb34d2b1118aa480699ad1dc85790a", + "sourceShard": 0, + "destinationShard": 0, + "blockNonce": 2984930, + "blockHash": "644ae8703b826a23e89429953919ec37f875e34a547ea9f7edd53fb71a99c746", + "notarizedAtSourceInMetaNonce": 2988311, + "NotarizedAtSourceInMetaHash": "4f608a72e654dd9f466801cd489be8ee1a73fbcd77b128559cd46182d3b9455a", + "notarizedAtDestinationInMetaNonce": 2988311, + "notarizedAtDestinationInMetaHash": "4f608a72e654dd9f466801cd489be8ee1a73fbcd77b128559cd46182d3b9455a", + "miniblockType": "TxBlock", + "miniblockHash": "c5a73671bc1d37835ddd15b926157721bc83203ec4e00cd48ae0d46015cb5f0b", + "hyperblockNonce": 2988311, + "hyperblockHash": "4f608a72e654dd9f466801cd489be8ee1a73fbcd77b128559cd46182d3b9455a", + "timestamp": 1712305832, + "smartContractResults": [ + { + "hash": "b0b3c8df519c33b314c0ee3d25abae6f17c4432fb3382676ce17a42690811cff", + "nonce": 0, + "value": 50000000000000000, + "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "sender": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "data": "registerAndSetAllRoles@54657374436f6c6c656374696f6e31@54455354434f4c4c31@4e4654@@98fa4ff554b9c6990ce577fbb816a271f690dcbd6b148f6583fe7692868ae538@08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd@5e2338", + "prevTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", + "originalTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", + "gasLimit": 73052300, + "gasPrice": 1000000000, + "callType": 1, + "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "operation": "transfer", + "function": "registerAndSetAllRoles" + }, + { + "hash": "5ae4f74e134e4fa63c8b92e06ff12b2a4b544233d01d80db6a922af35ee55356", + "nonce": 1, + "value": 196430610000000, + "receiver": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "sender": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "data": "@6f6b", + "prevTxHash": "c4a24b01b48d32308636310e2d335d6ed1f34dcbdfc1133aed7995e78e831c18", + "originalTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "operation": "transfer", + "isRefund": true + }, + { + "hash": "7589c1ad622d8a9ab2f186731fc82aeeab0aea5a8198cb94b6eba85a966e7962", + "nonce": 0, + "value": 0, + "receiver": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqq2m3f0f", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "ESDTSetBurnRoleForAll@54455354434f4c4c312d356161383063", + "prevTxHash": "b0b3c8df519c33b314c0ee3d25abae6f17c4432fb3382676ce17a42690811cff", + "originalTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "logs": { + "address": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqq2m3f0f", + "events": [ + { + "address": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqq2m3f0f", + "identifier": "completedTxEvent", + "topics": [ + "sLPI31GcM7MUwO49JauubxfEQy+zOCZ2zhekJpCBHP8=" + ] + } + ] + }, + "operation": "transfer" + }, + { + "hash": "86d1ec3365ea1311dbde2f2366de4ea8627d7e49c29a974578c0869b66903cbc", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "ESDTSetRole@54455354434f4c4c312d356161383063@45534454526f6c654e4654437265617465@45534454526f6c654e46544275726e@45534454526f6c654e465455706461746541747472696275746573@45534454526f6c654e4654416464555249", + "prevTxHash": "b0b3c8df519c33b314c0ee3d25abae6f17c4432fb3382676ce17a42690811cff", + "originalTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "identifier": "ESDTSetRole", + "topics": [ + "VEVTVENPTEwxLTVhYTgwYw==", + "", + "", + "RVNEVFJvbGVORlRDcmVhdGU=", + "RVNEVFJvbGVORlRCdXJu", + "RVNEVFJvbGVORlRVcGRhdGVBdHRyaWJ1dGVz", + "RVNEVFJvbGVORlRBZGRVUkk=" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "identifier": "completedTxEvent", + "topics": [ + "sLPI31GcM7MUwO49JauubxfEQy+zOCZ2zhekJpCBHP8=" + ] + } + ] + }, + "operation": "ESDTSetRole", + "function": "ESDTSetRole" + }, + { + "hash": "c4a24b01b48d32308636310e2d335d6ed1f34dcbdfc1133aed7995e78e831c18", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "@00@54455354434f4c4c312d356161383063@3ec73c55022548038bbe06c0639156b3db70b7c770955e340f14fcfcd45df06a@98fa4ff554b9c6990ce577fbb816a271f690dcbd6b148f6583fe7692868ae538@08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd@00", + "prevTxHash": "b0b3c8df519c33b314c0ee3d25abae6f17c4432fb3382676ce17a42690811cff", + "originalTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", + "gasLimit": 23052300, + "gasPrice": 1000000000, + "callType": 2, + "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "identifier": "callBack", + "topics": [ + "YXN5bmNDYWxsU3VjY2Vzcw==", + "VEVTVENPTEwxLTVhYTgwYw==" + ], + "additionalData": [ + "" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "identifier": "completedTxEvent", + "topics": [ + "sLPI31GcM7MUwO49JauubxfEQy+zOCZ2zhekJpCBHP8=" + ] + } + ] + }, + "operation": "transfer" + } + ], + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "identifier": "performAction", + "topics": [ + "c3RhcnRQZXJmb3JtQWN0aW9u" + ], + "data": "AAAAAQYAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAL//wAAAAexorwuxQAAAAAAFnJlZ2lzdGVyQW5kU2V0QWxsUm9sZXMAAAAEAAAAD1Rlc3RDb2xsZWN0aW9uMQAAAAlURVNUQ09MTDEAAAADTkZUAAAAAAAAAATjKv7ckE/hk5dGrZc76zg1Y89jZCumabMED5uUKKXtYLE6AXQjw2bK/4zs+3ehJhChMPSIgTQSLHk3/q4NbX0XOvjZyUI7JXfGJSciwdkCEqQRH3ID+XRPdvz6HQoxADOyoRVVzlIeSUTgmrF1SdhbSH3NJshLUBejnjGjZwiJug==", + "additionalData": [ + "AAAAAQYAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAL//wAAAAexorwuxQAAAAAAFnJlZ2lzdGVyQW5kU2V0QWxsUm9sZXMAAAAEAAAAD1Rlc3RDb2xsZWN0aW9uMQAAAAlURVNUQ09MTDEAAAADTkZUAAAAAAAAAATjKv7ckE/hk5dGrZc76zg1Y89jZCumabMED5uUKKXtYLE6AXQjw2bK/4zs+3ehJhChMPSIgTQSLHk3/q4NbX0XOvjZyUI7JXfGJSciwdkCEqQRH3ID+XRPdvz6HQoxADOyoRVVzlIeSUTgmrF1SdhbSH3NJshLUBejnjGjZwiJug==" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "identifier": "performAction", + "topics": [ + "cGVyZm9ybUFzeW5jQ2FsbA==", + "AQ==", + "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=", + "saK8LsUAAA==", + "BGa4HQ==", + "cmVnaXN0ZXJBbmRTZXRBbGxSb2xlcw==", + "VGVzdENvbGxlY3Rpb24x", + "VEVTVENPTEwx", + "TkZU", + "" + ], + "additionalData": [ + "" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "identifier": "transferValueOnly", + "topics": [ + "saK8LsUAAA==", + "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=" + ], + "data": "QXN5bmNDYWxs", + "additionalData": [ + "QXN5bmNDYWxs", + "cmVnaXN0ZXJBbmRTZXRBbGxSb2xlcw==", + "VGVzdENvbGxlY3Rpb24x", + "VEVTVENPTEwx", + "TkZU", + "" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "identifier": "writeLog", + "topics": [ + "4yr+3JBP4ZOXRq2XO+s4NWPPY2QrpmmzBA+blCil7WA=" + ], + "data": "QDZmNmI=", + "additionalData": [ + "QDZmNmI=" + ] + } + ] + }, + "status": "success", + "operation": "transfer", + "function": "performAction", + "initiallyPaidFee": "873260000000000", + "fee": "873260000000000", + "chainID": "D", + "version": 1, + "options": 0 + } + }, + "code": "successful" +} + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + + let expected = Some("TESTCOLL1-5aa80c".to_string()); + + assert_eq!(tx_response.new_issued_token_identifier, expected) + } } diff --git a/sdk/core/src/data/transaction.rs b/sdk/core/src/data/transaction.rs index 452f0d3679..2df6f37d87 100644 --- a/sdk/core/src/data/transaction.rs +++ b/sdk/core/src/data/transaction.rs @@ -132,6 +132,7 @@ pub struct TransactionInfoData { // TransactionInfo holds a transaction info response from the network #[derive(Debug, Clone, Serialize, Deserialize)] pub struct TransactionInfo { + #[serde(default)] pub error: String, pub code: String, pub data: Option, From d123aead75124bebcf48e818385827cf22b2bdf2 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 8 Apr 2024 00:09:52 +0300 Subject: [PATCH 284/461] multisig replace send_raw --- .../examples/multisig/src/multisig_perform.rs | 51 ++++++++++--------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/contracts/examples/multisig/src/multisig_perform.rs b/contracts/examples/multisig/src/multisig_perform.rs index dfa7016340..3024df2696 100644 --- a/contracts/examples/multisig/src/multisig_perform.rs +++ b/contracts/examples/multisig/src/multisig_perform.rs @@ -167,16 +167,13 @@ pub trait MultisigPerformModule: &call_data.endpoint_name, call_data.arguments.as_multi(), ); - let result = self.send_raw().direct_egld_execute( - &call_data.to, - &call_data.egld_amount, - gas, - &call_data.endpoint_name, - &call_data.arguments.into(), - ); - if let Result::Err(e) = result { - sc_panic!(e); - } + self.tx() + .to(call_data.to) + .egld(call_data.egld_amount) + .gas(gas) + .raw_call(call_data.endpoint_name) + .arguments_raw(call_data.arguments.into()) + .transfer_execute(); OptionalValue::None }, Action::SendAsyncCall(call_data) => { @@ -213,13 +210,16 @@ pub trait MultisigPerformModule: gas_left, arguments.as_multi(), ); - let (new_address, _) = self.send_raw().deploy_from_source_contract( - gas_left, - &amount, - &source, - code_metadata, - &arguments.into(), - ); + let new_address = self + .tx() + .egld(amount) + .gas(gas_left) + .raw_deploy() + .from_source(source) + .code_metadata(code_metadata) + .arguments_raw(arguments.into()) + .returns(ReturnsNewManagedAddress) + .sync_call(); OptionalValue::Some(new_address) }, Action::SCUpgradeFromSource { @@ -239,14 +239,15 @@ pub trait MultisigPerformModule: gas_left, arguments.as_multi(), ); - self.send_raw().upgrade_from_source_contract( - &sc_address, - gas_left, - &amount, - &source, - code_metadata, - &arguments.into(), - ); + self.tx() + .to(sc_address) + .egld(amount) + .gas(gas_left) + .raw_upgrade() + .from_source(source) + .code_metadata(code_metadata) + .arguments_raw(arguments.into()) + .upgrade_async_call_and_exit(); OptionalValue::None }, } From 17c9e62b13510ec13a49e24a66ee9175d1eacb05 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 8 Apr 2024 00:12:37 +0300 Subject: [PATCH 285/461] multisig interactor - multi sign multiple actions --- .../interact/src/multisig_interact.rs | 49 ++++++++++--------- .../interact/src/multisig_interact_nfts.rs | 9 ++-- 2 files changed, 32 insertions(+), 26 deletions(-) diff --git a/contracts/examples/multisig/interact/src/multisig_interact.rs b/contracts/examples/multisig/interact/src/multisig_interact.rs index e407c4f641..62074b08a8 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact.rs @@ -235,8 +235,8 @@ impl MultisigInteract { } async fn perform_action(&mut self, action_id: usize, gas_expr: u64) { - if !self.quorum_reached(action_id).await && !self.sign(action_id).await { - return; + if !self.quorum_reached(action_id).await { + self.sign(&[action_id]).await } println!("quorum reached for action `{action_id}`"); @@ -254,19 +254,23 @@ impl MultisigInteract { println!("successfully performed action `{action_id}`"); } - async fn perform_actions(&mut self, actions: Vec, gas_expr: u64) { + async fn perform_actions(&mut self, action_ids: Vec, gas_expr: u64) { let multisig_address = self.state.multisig().to_address(); - let mut pending_action_ids = Vec::::new(); - for &action_id in actions.iter() { - if self.quorum_reached(action_id).await && self.sign(action_id).await { - pending_action_ids.push(action_id); + let mut actions_no_quorum_reached = Vec::new(); + for &action_id in &action_ids { + if self.quorum_reached(action_id).await { + println!("quorum reached for action `{action_id}`"); + } else { + actions_no_quorum_reached.push(action_id) } } + self.sign(&actions_no_quorum_reached).await; + let from = &self.wallet_address; let mut buffer = self.interactor.homogenous_call_buffer(); - for action_id in pending_action_ids { + for action_id in action_ids { buffer.push_tx(|tx| { tx.from(from) .to(&multisig_address) @@ -314,24 +318,26 @@ impl MultisigInteract { .await } - async fn sign(&mut self, action_id: usize) -> bool { - println!("signing action `{action_id}`..."); + async fn sign(&mut self, action_ids: &[usize]) { + println!("signing actions `{action_ids:?}`..."); let multisig_address = self.state.multisig().to_address(); - let mut pending_signers = Vec::
::new(); - for signer in self.board().iter() { - if self.signed(signer, action_id).await { - println!( - "{} - already signed action `{action_id}`", - bech32::encode(signer) - ); - } else { - pending_signers.push(signer.clone()); + let mut pending_signers = Vec::<(Address, usize)>::new(); + for &action_id in action_ids { + for signer in self.board().iter() { + if self.signed(signer, action_id).await { + println!( + "{} - already signed action `{action_id}`", + bech32::encode(signer) + ); + } else { + pending_signers.push((signer.clone(), action_id)); + } } } let mut buffer = self.interactor.homogenous_call_buffer(); - for signer in pending_signers { + for (signer, action_id) in pending_signers { buffer.push_tx(|tx| { tx.from(signer) .to(&multisig_address) @@ -343,8 +349,7 @@ impl MultisigInteract { buffer.run().await; - println!("successfully performed sign action `{action_id}`"); - true + println!("successfully performed sign action `{action_ids:?}`"); } async fn dns_register(&mut self, name: &str) { diff --git a/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs b/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs index c677cf8fdf..e15000bc4c 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs @@ -71,8 +71,8 @@ impl MultisigInteract { println!("perfoming issue collection with all roles action `{action_id}`..."); - if !self.quorum_reached(action_id).await && !self.sign(action_id).await { - return; + if !self.quorum_reached(action_id).await { + self.sign(&[action_id]).await; } println!("quorum reached for action `{action_id}`"); @@ -127,10 +127,11 @@ impl MultisigInteract { println!("perfoming issue collection action `{action_id}`..."); - if !self.quorum_reached(action_id).await && !self.sign(action_id).await { - return; + if !self.quorum_reached(action_id).await { + self.sign(&[action_id]).await; } println!("quorum reached for action `{action_id}`"); + let new_token_id = self .interactor .tx() From 9b91546652a6ac1283102748c39c3e48bc5f5aec Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 8 Apr 2024 00:15:36 +0300 Subject: [PATCH 286/461] multisig interactor minor refactor --- .../multisig/interact/src/multisig_interact.rs | 7 +++++++ .../multisig/interact/src/multisig_interact_nfts.rs | 10 ++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/contracts/examples/multisig/interact/src/multisig_interact.rs b/contracts/examples/multisig/interact/src/multisig_interact.rs index 62074b08a8..65b6c0dbb1 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact.rs @@ -352,6 +352,13 @@ impl MultisigInteract { println!("successfully performed sign action `{action_ids:?}`"); } + async fn sign_if_quorum_not_reached(&mut self, action_id: usize) { + if !self.quorum_reached(action_id).await { + self.sign(&[action_id]).await; + } + println!("quorum reached for action `{action_id}`"); + } + async fn dns_register(&mut self, name: &str) { let dns_address = dns_address_for_name(name); self.interactor diff --git a/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs b/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs index e15000bc4c..61788f99af 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs @@ -71,10 +71,7 @@ impl MultisigInteract { println!("perfoming issue collection with all roles action `{action_id}`..."); - if !self.quorum_reached(action_id).await { - self.sign(&[action_id]).await; - } - println!("quorum reached for action `{action_id}`"); + self.sign_if_quorum_not_reached(action_id).await; let new_token_id = self .interactor @@ -127,10 +124,7 @@ impl MultisigInteract { println!("perfoming issue collection action `{action_id}`..."); - if !self.quorum_reached(action_id).await { - self.sign(&[action_id]).await; - } - println!("quorum reached for action `{action_id}`"); + self.sign_if_quorum_not_reached(action_id).await; let new_token_id = self .interactor From 012cb6ffeb96e40329a9eb5ada9463af7a11f714 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 8 Apr 2024 01:30:35 +0300 Subject: [PATCH 287/461] test fix --- .../scenarios/ping-pong-call-pong-all-interrupted-2.scen.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/examples/ping-pong-egld/scenarios/ping-pong-call-pong-all-interrupted-2.scen.json b/contracts/examples/ping-pong-egld/scenarios/ping-pong-call-pong-all-interrupted-2.scen.json index 2b597650b6..9253cff4f8 100644 --- a/contracts/examples/ping-pong-egld/scenarios/ping-pong-call-pong-all-interrupted-2.scen.json +++ b/contracts/examples/ping-pong-egld/scenarios/ping-pong-call-pong-all-interrupted-2.scen.json @@ -21,7 +21,7 @@ "to": "sc:ping-pong", "function": "pongAll", "arguments": [], - "gasLimit": "6,100,000", + "gasLimit": "3,500,000", "gasPrice": "0" }, "expect": { From 57eb90470f2eb9d46f11e6811c80beed0c9f66db Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 8 Apr 2024 02:15:55 +0300 Subject: [PATCH 288/461] test fix --- .../scenarios/use_module_ongoing_operation_example.scen.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/feature-tests/use-module/scenarios/use_module_ongoing_operation_example.scen.json b/contracts/feature-tests/use-module/scenarios/use_module_ongoing_operation_example.scen.json index 45a659c44e..3e43e9270a 100644 --- a/contracts/feature-tests/use-module/scenarios/use_module_ongoing_operation_example.scen.json +++ b/contracts/feature-tests/use-module/scenarios/use_module_ongoing_operation_example.scen.json @@ -52,7 +52,7 @@ "to": "sc:use_module", "function": "countTo100", "arguments": [], - "gasLimit": "5,350,000", + "gasLimit": "4,500,000", "gasPrice": "0" }, "expect": { From ed8e28e99dc904cceddf4b3ddff1c87dc1df9af6 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 8 Apr 2024 12:53:35 +0300 Subject: [PATCH 289/461] ManagedBufferBuilder gas benchmark --- contracts/benchmarks/str-repeat/Cargo.toml | 3 + .../benchmarks/str-repeat/sc-config.toml | 12 +- .../scenarios/mb_builder_basic.scen.json | 80 +++++++++ .../scenarios/mb_builder_cached.scen.json | 80 +++++++++ .../benchmarks/str-repeat/src/str_repeat.rs | 11 ++ .../str-repeat/tests/scenario_go_test.rs | 12 ++ .../str-repeat/tests/scenario_rs_test.rs | 18 ++ .../Cargo.lock | 170 ++++++++++++++++++ .../Cargo.toml | 32 ++++ .../src/lib.rs | 27 +++ .../Cargo.lock | 170 ++++++++++++++++++ .../Cargo.toml | 33 ++++ .../src/lib.rs | 27 +++ 13 files changed, 674 insertions(+), 1 deletion(-) create mode 100644 contracts/benchmarks/str-repeat/scenarios/mb_builder_basic.scen.json create mode 100644 contracts/benchmarks/str-repeat/scenarios/mb_builder_cached.scen.json create mode 100644 contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.lock create mode 100644 contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml create mode 100644 contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/src/lib.rs create mode 100644 contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.lock create mode 100644 contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml create mode 100644 contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/src/lib.rs diff --git a/contracts/benchmarks/str-repeat/Cargo.toml b/contracts/benchmarks/str-repeat/Cargo.toml index 116327da15..867b7a97fa 100644 --- a/contracts/benchmarks/str-repeat/Cargo.toml +++ b/contracts/benchmarks/str-repeat/Cargo.toml @@ -8,6 +8,9 @@ publish = false [lib] path = "src/str_repeat.rs" +[features] +managed-buffer-builder-cached = ["multiversx-sc/managed-buffer-builder-cached"] + [dependencies.multiversx-sc] version = "0.47.8" path = "../../../framework/base" diff --git a/contracts/benchmarks/str-repeat/sc-config.toml b/contracts/benchmarks/str-repeat/sc-config.toml index a850f32470..964b5500c8 100644 --- a/contracts/benchmarks/str-repeat/sc-config.toml +++ b/contracts/benchmarks/str-repeat/sc-config.toml @@ -1,6 +1,16 @@ [settings] main = "str-repeat" -# the only purpose of this config is to specify the allocator [contracts.str-repeat] allocator = "leaking" + +[contracts.str-repeat-mb-builder-basic] +add-unlabelled = false +add-labels = ["mb-builder"] +add-endpoints = ["init"] + +[contracts.str-repeat-mb-builder-cached] +add-unlabelled = false +add-labels = ["mb-builder"] +add-endpoints = ["init"] +features = ["managed-buffer-builder-cached"] diff --git a/contracts/benchmarks/str-repeat/scenarios/mb_builder_basic.scen.json b/contracts/benchmarks/str-repeat/scenarios/mb_builder_basic.scen.json new file mode 100644 index 0000000000..81086d866e --- /dev/null +++ b/contracts/benchmarks/str-repeat/scenarios/mb_builder_basic.scen.json @@ -0,0 +1,80 @@ +{ + "name": "str-repeat", + "steps": [ + { + "step": "setState", + "accounts": { + "address:owner": { + "nonce": "0", + "balance": "0" + }, + "sc:contract": { + "code": "mxsc:../output/str-repeat-mb-builder-basic.mxsc.json" + } + } + }, + { + "step": "scCall", + "id": "benchmark-mb-builder-basic-10", + "comment": "code is smaller, so basic wins here", + "tx": { + "from": "address:owner", + "to": "sc:contract", + "function": "mb_builder_benchmark", + "arguments": [ + "0x01020304", + "10" + ], + "gasLimit": "10,000,000", + "gasPrice": "0" + }, + "expect": { + "out": "*", + "status": "", + "gas": "8855882" + } + }, + { + "step": "scCall", + "id": "benchmark-mb-builder-basic-tipping-point", + "comment": "the caching optimization starts to compensate the larger code size", + "tx": { + "from": "address:owner", + "to": "sc:contract", + "function": "mb_builder_benchmark", + "arguments": [ + "0x01020304", + "22" + ], + "gasLimit": "10,000,000", + "gasPrice": "0" + }, + "expect": { + "out": "*", + "status": "", + "gas": "8778242" + } + }, + { + "step": "scCall", + "id": "benchmark-mb-builder-basic", + "comment": "for many repeats, the cached version wins", + "tx": { + "from": "address:owner", + "to": "sc:contract", + "function": "mb_builder_benchmark", + "arguments": [ + "0x01020304", + "10000" + ], + "gasLimit": "10,000,000,000", + "gasPrice": "0" + }, + "expect": { + "out": "*", + "status": "", + "gas": "9934220582" + } + } + ] +} diff --git a/contracts/benchmarks/str-repeat/scenarios/mb_builder_cached.scen.json b/contracts/benchmarks/str-repeat/scenarios/mb_builder_cached.scen.json new file mode 100644 index 0000000000..9261fabd37 --- /dev/null +++ b/contracts/benchmarks/str-repeat/scenarios/mb_builder_cached.scen.json @@ -0,0 +1,80 @@ +{ + "name": "str-repeat", + "steps": [ + { + "step": "setState", + "accounts": { + "address:owner": { + "nonce": "0", + "balance": "0" + }, + "sc:contract": { + "code": "mxsc:../output/str-repeat-mb-builder-cached.mxsc.json" + } + } + }, + { + "step": "scCall", + "id": "benchmark-mb-builder-cached-10", + "comment": "code is smaller, so basic wins here", + "tx": { + "from": "address:owner", + "to": "sc:contract", + "function": "mb_builder_benchmark", + "arguments": [ + "0x01020304", + "10" + ], + "gasLimit": "10,000,000", + "gasPrice": "0" + }, + "expect": { + "out": "*", + "status": "", + "gas": "8834532" + } + }, + { + "step": "scCall", + "id": "benchmark-mb-builder-cached-tipping-point", + "comment": "the caching optimization starts to compensate the larger code size", + "tx": { + "from": "address:owner", + "to": "sc:contract", + "function": "mb_builder_benchmark", + "arguments": [ + "0x01020304", + "22" + ], + "gasLimit": "10,000,000", + "gasPrice": "0" + }, + "expect": { + "out": "*", + "status": "", + "gas": "8779332" + } + }, + { + "step": "scCall", + "id": "benchmark-mb-builder-cached", + "comment": "for many repeats, the cached version wins", + "tx": { + "from": "address:owner", + "to": "sc:contract", + "function": "mb_builder_benchmark", + "arguments": [ + "0x01020304", + "10000" + ], + "gasLimit": "10,000,000,000", + "gasPrice": "0" + }, + "expect": { + "out": "*", + "status": "", + "gas": "9938367902" + } + } + ] +} diff --git a/contracts/benchmarks/str-repeat/src/str_repeat.rs b/contracts/benchmarks/str-repeat/src/str_repeat.rs index 0cd6fb0325..81ad7fa874 100644 --- a/contracts/benchmarks/str-repeat/src/str_repeat.rs +++ b/contracts/benchmarks/str-repeat/src/str_repeat.rs @@ -25,4 +25,15 @@ pub trait StrRepeat { #[view(getByteArray)] #[storage_mapper("byteArray")] fn byte_array(&self) -> SingleValueMapper>; + + #[view] + #[label("mb-builder")] + fn mb_builder_benchmark(&self, payload: u32, num_repeats: usize) -> ManagedBuffer { + let mut builder = ManagedBufferBuilder::default(); + let payload_bytes = payload.to_be_bytes(); + for _ in 0..num_repeats { + builder.append_bytes(&payload_bytes); + } + builder.into_managed_buffer() + } } diff --git a/contracts/benchmarks/str-repeat/tests/scenario_go_test.rs b/contracts/benchmarks/str-repeat/tests/scenario_go_test.rs index e1be038d02..325d9ac866 100644 --- a/contracts/benchmarks/str-repeat/tests/scenario_go_test.rs +++ b/contracts/benchmarks/str-repeat/tests/scenario_go_test.rs @@ -4,6 +4,18 @@ fn world() -> ScenarioWorld { ScenarioWorld::vm_go() } +#[test] +#[ignore = "gas benchmark, too brittle to include permanently"] +fn mb_builder_basic_go() { + world().run("scenarios/mb_builder_basic.scen.json"); +} + +#[test] +#[ignore = "gas benchmark, too brittle to include permanently"] +fn mb_builder_cached_go() { + world().run("scenarios/mb_builder_cached.scen.json"); +} + #[test] fn str_repeat_go() { world().run("scenarios/str_repeat.scen.json"); diff --git a/contracts/benchmarks/str-repeat/tests/scenario_rs_test.rs b/contracts/benchmarks/str-repeat/tests/scenario_rs_test.rs index 42f585f314..4fcef41480 100644 --- a/contracts/benchmarks/str-repeat/tests/scenario_rs_test.rs +++ b/contracts/benchmarks/str-repeat/tests/scenario_rs_test.rs @@ -6,9 +6,27 @@ fn world() -> ScenarioWorld { "mxsc:output/str-repeat.mxsc.json", str_repeat::ContractBuilder, ); + blockchain.register_contract( + "mxsc:output/str-repeat-mb-builder-basic.mxsc.json", + str_repeat::ContractBuilder, + ); + blockchain.register_contract( + "mxsc:output/str-repeat-mb-builder-cached.mxsc.json", + str_repeat::ContractBuilder, + ); blockchain } +#[test] +fn mb_builder_basic_rs() { + world().run("scenarios/mb_builder_basic.scen.json"); +} + +#[test] +fn mb_builder_cached_rs() { + world().run("scenarios/mb_builder_cached.scen.json"); +} + #[test] fn str_repeat_rs() { world().run("scenarios/str_repeat.scen.json"); diff --git a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.lock b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.lock new file mode 100644 index 0000000000..7f11ee332c --- /dev/null +++ b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.lock @@ -0,0 +1,170 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "autocfg" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" + +[[package]] +name = "bitflags" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" + +[[package]] +name = "endian-type" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" + +[[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.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "multiversx-sc" +version = "0.47.8" +dependencies = [ + "bitflags", + "hex-literal", + "multiversx-sc-codec", + "multiversx-sc-derive", + "num-traits", +] + +[[package]] +name = "multiversx-sc-codec" +version = "0.18.6" +dependencies = [ + "arrayvec", + "multiversx-sc-codec-derive", +] + +[[package]] +name = "multiversx-sc-codec-derive" +version = "0.18.6" +dependencies = [ + "hex", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "multiversx-sc-derive" +version = "0.47.8" +dependencies = [ + "hex", + "proc-macro2", + "quote", + "radix_trie", + "syn", +] + +[[package]] +name = "multiversx-sc-wasm-adapter" +version = "0.47.8" +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.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "proc-macro2" +version = "1.0.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +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.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "str-repeat" +version = "0.0.0" +dependencies = [ + "multiversx-sc", +] + +[[package]] +name = "str-repeat-mb-builder-basic-wasm" +version = "0.0.0" +dependencies = [ + "multiversx-sc-wasm-adapter", + "str-repeat", +] + +[[package]] +name = "syn" +version = "2.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" diff --git a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml new file mode 100644 index 0000000000..2e124ace9c --- /dev/null +++ b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml @@ -0,0 +1,32 @@ +# Code generated by the multiversx-sc build system. DO NOT EDIT. + +# ########################################## +# ############## AUTO-GENERATED ############# +# ########################################## + +[package] +name = "str-repeat-mb-builder-basic-wasm" +version = "0.0.0" +edition = "2021" +publish = false + +[lib] +crate-type = ["cdylib"] + +[profile.release] +codegen-units = 1 +opt-level = "z" +lto = true +debug = false +panic = "abort" +overflow-checks = false + +[dependencies.str-repeat] +path = ".." + +[dependencies.multiversx-sc-wasm-adapter] +version = "0.47.8" +path = "../../../../framework/wasm-adapter" + +[workspace] +members = ["."] diff --git a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/src/lib.rs b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/src/lib.rs new file mode 100644 index 0000000000..868b673634 --- /dev/null +++ b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/src/lib.rs @@ -0,0 +1,27 @@ +// Code generated by the multiversx-sc build system. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +// Init: 1 +// Endpoints: 1 +// Async Callback (empty): 1 +// Total number of exported functions: 3 + +#![no_std] +#![allow(internal_features)] +#![feature(lang_items)] + +multiversx_sc_wasm_adapter::allocator!(); +multiversx_sc_wasm_adapter::panic_handler!(); + +multiversx_sc_wasm_adapter::endpoints! { + str_repeat + ( + init => init + mb_builder_benchmark => mb_builder_benchmark + ) +} + +multiversx_sc_wasm_adapter::async_callback_empty! {} diff --git a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.lock b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.lock new file mode 100644 index 0000000000..a866ae3bba --- /dev/null +++ b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.lock @@ -0,0 +1,170 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "autocfg" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" + +[[package]] +name = "bitflags" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" + +[[package]] +name = "endian-type" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" + +[[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.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "multiversx-sc" +version = "0.47.8" +dependencies = [ + "bitflags", + "hex-literal", + "multiversx-sc-codec", + "multiversx-sc-derive", + "num-traits", +] + +[[package]] +name = "multiversx-sc-codec" +version = "0.18.6" +dependencies = [ + "arrayvec", + "multiversx-sc-codec-derive", +] + +[[package]] +name = "multiversx-sc-codec-derive" +version = "0.18.6" +dependencies = [ + "hex", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "multiversx-sc-derive" +version = "0.47.8" +dependencies = [ + "hex", + "proc-macro2", + "quote", + "radix_trie", + "syn", +] + +[[package]] +name = "multiversx-sc-wasm-adapter" +version = "0.47.8" +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.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "proc-macro2" +version = "1.0.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +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.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "str-repeat" +version = "0.0.0" +dependencies = [ + "multiversx-sc", +] + +[[package]] +name = "str-repeat-mb-builder-cached-wasm" +version = "0.0.0" +dependencies = [ + "multiversx-sc-wasm-adapter", + "str-repeat", +] + +[[package]] +name = "syn" +version = "2.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" diff --git a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml new file mode 100644 index 0000000000..0ab57dce26 --- /dev/null +++ b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml @@ -0,0 +1,33 @@ +# Code generated by the multiversx-sc build system. DO NOT EDIT. + +# ########################################## +# ############## AUTO-GENERATED ############# +# ########################################## + +[package] +name = "str-repeat-mb-builder-cached-wasm" +version = "0.0.0" +edition = "2021" +publish = false + +[lib] +crate-type = ["cdylib"] + +[profile.release] +codegen-units = 1 +opt-level = "z" +lto = true +debug = false +panic = "abort" +overflow-checks = false + +[dependencies.str-repeat] +path = ".." +features = ["managed-buffer-builder-cached"] + +[dependencies.multiversx-sc-wasm-adapter] +version = "0.47.8" +path = "../../../../framework/wasm-adapter" + +[workspace] +members = ["."] diff --git a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/src/lib.rs b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/src/lib.rs new file mode 100644 index 0000000000..868b673634 --- /dev/null +++ b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/src/lib.rs @@ -0,0 +1,27 @@ +// Code generated by the multiversx-sc build system. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +// Init: 1 +// Endpoints: 1 +// Async Callback (empty): 1 +// Total number of exported functions: 3 + +#![no_std] +#![allow(internal_features)] +#![feature(lang_items)] + +multiversx_sc_wasm_adapter::allocator!(); +multiversx_sc_wasm_adapter::panic_handler!(); + +multiversx_sc_wasm_adapter::endpoints! { + str_repeat + ( + init => init + mb_builder_benchmark => mb_builder_benchmark + ) +} + +multiversx_sc_wasm_adapter::async_callback_empty! {} From dee6e081c083f69e6574e1ca19d68059f699ed8e Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Mon, 8 Apr 2024 16:21:23 +0200 Subject: [PATCH 290/461] send_raw migration and other small impls and modifications --- .../crypto-kitties/kitty-auction/src/lib.rs | 8 +- .../crypto-kitties/kitty-ownership/src/lib.rs | 2 +- .../crypto-zombies/src/zombie_feeding.rs | 2 +- .../examples/multisig/src/multisig_perform.rs | 55 ++++++------ .../examples/order-book/factory/src/lib.rs | 20 +++-- .../first-contract/src/lib.rs | 41 ++++----- .../parent/src/lib.rs | 4 +- .../src/forwarder_raw_alt_init.rs | 17 ++-- .../forwarder-raw/src/forwarder_raw_async.rs | 21 +++-- .../src/forwarder_raw_deploy_upgrade.rs | 6 +- .../forwarder-raw/src/forwarder_raw_sync.rs | 67 ++++++++------ .../composability/forwarder/src/call_async.rs | 42 ++++----- .../composability/forwarder/src/call_sync.rs | 18 ++-- .../forwarder/src/call_transf_exec.rs | 20 ++--- .../composability/forwarder/src/nft.rs | 17 ++-- .../local-esdt-and-nft/src/lib.rs | 18 ++-- .../promises-features/src/call_promises.rs | 10 +-- .../promises-features/src/call_promises_bt.rs | 6 +- .../proxy-test-first/src/proxy-test-first.rs | 10 +-- .../recursive-caller/src/recursive_caller.rs | 5 +- .../composability/vault/src/vault.rs | 16 ++-- .../src/crowdfunding_erc20.rs | 2 +- .../erc1155/src/erc1155.rs | 4 +- .../lottery-erc20/src/lottery.rs | 4 +- .../rust-testing-framework-tester/src/lib.rs | 40 ++++----- .../mappers/token/fungible_token_mapper.rs | 2 +- .../token/non_fungible_token_mapper.rs | 2 +- .../interaction/tx_exec/tx_exec_upgrade.rs | 90 +++++++++++++++++++ .../src/types/interaction/upgrade_call.rs | 9 +- 29 files changed, 331 insertions(+), 227 deletions(-) diff --git a/contracts/examples/crypto-kitties/kitty-auction/src/lib.rs b/contracts/examples/crypto-kitties/kitty-auction/src/lib.rs index 557673bb3d..60a30c382e 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/src/lib.rs +++ b/contracts/examples/crypto-kitties/kitty-auction/src/lib.rs @@ -50,7 +50,7 @@ pub trait KittyAuction { .to(&kitty_ownership_contract_address) .typed(kitty_ownership_proxy::KittyOwnershipProxy) .create_gen_zero_kitty() - .with_callback(self.callbacks().create_gen_zero_kitty_callback()) + .callback(self.callbacks().create_gen_zero_kitty_callback()) .async_call_and_exit(); } @@ -246,7 +246,7 @@ pub trait KittyAuction { .to(&kitty_ownership_contract_address) .typed(kitty_ownership_proxy::KittyOwnershipProxy) .allow_auctioning(&caller, kitty_id) - .with_callback(self.callbacks().allow_auctioning_callback( + .callback(self.callbacks().allow_auctioning_callback( auction_type, kitty_id, starting_price, @@ -283,7 +283,7 @@ pub trait KittyAuction { .to(&kitty_ownership_contract_address) .typed(kitty_ownership_proxy::KittyOwnershipProxy) .transfer(address, kitty_id) - .with_callback(self.callbacks().transfer_callback(kitty_id)) + .callback(self.callbacks().transfer_callback(kitty_id)) .async_call_and_exit(); } } @@ -302,7 +302,7 @@ pub trait KittyAuction { .typed(kitty_ownership_proxy::KittyOwnershipProxy) .approve_siring_and_return_kitty(approved_address, kitty_owner, kitty_id) // not a mistake, same callback for transfer and approveSiringAndReturnKitty - .with_callback(self.callbacks().transfer_callback(kitty_id)) + .callback(self.callbacks().transfer_callback(kitty_id)) .async_call_and_exit(); } } diff --git a/contracts/examples/crypto-kitties/kitty-ownership/src/lib.rs b/contracts/examples/crypto-kitties/kitty-ownership/src/lib.rs index d6e0771fa4..dbde8aed52 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/src/lib.rs +++ b/contracts/examples/crypto-kitties/kitty-ownership/src/lib.rs @@ -341,7 +341,7 @@ pub trait KittyOwnership { .to(&gene_science_contract_address) .typed(kitty_genetic_alg_proxy::KittyGeneticAlgProxy) .generate_kitty_genes(matron, sire) - .with_callback( + .callback( self.callbacks() .generate_kitty_genes_callback(matron_id, caller), ) diff --git a/contracts/examples/crypto-zombies/src/zombie_feeding.rs b/contracts/examples/crypto-zombies/src/zombie_feeding.rs index 7afd7a7be8..56ef89cb7c 100644 --- a/contracts/examples/crypto-zombies/src/zombie_feeding.rs +++ b/contracts/examples/crypto-zombies/src/zombie_feeding.rs @@ -57,7 +57,7 @@ pub trait ZombieFeeding: .to(&crypto_kitties_sc_address) .typed(kitty_ownership_proxy::KittyOwnershipProxy) .get_kitty_by_id_endpoint(kitty_id) - .with_callback(self.callbacks().get_kitty_callback(zombie_id)) + .callback(self.callbacks().get_kitty_callback(zombie_id)) .async_call_and_exit(); } } diff --git a/contracts/examples/multisig/src/multisig_perform.rs b/contracts/examples/multisig/src/multisig_perform.rs index dfa7016340..ef7a3ec257 100644 --- a/contracts/examples/multisig/src/multisig_perform.rs +++ b/contracts/examples/multisig/src/multisig_perform.rs @@ -167,16 +167,15 @@ pub trait MultisigPerformModule: &call_data.endpoint_name, call_data.arguments.as_multi(), ); - let result = self.send_raw().direct_egld_execute( - &call_data.to, - &call_data.egld_amount, - gas, - &call_data.endpoint_name, - &call_data.arguments.into(), - ); - if let Result::Err(e) = result { - sc_panic!(e); - } + + self.tx() + .to(&call_data.to) + .raw_call(call_data.endpoint_name) + .arguments_raw(call_data.arguments.into()) + .gas(gas) + .egld(&call_data.egld_amount) + .transfer_execute(); + OptionalValue::None }, Action::SendAsyncCall(call_data) => { @@ -213,13 +212,17 @@ pub trait MultisigPerformModule: gas_left, arguments.as_multi(), ); - let (new_address, _) = self.send_raw().deploy_from_source_contract( - gas_left, - &amount, - &source, - code_metadata, - &arguments.into(), - ); + let new_address = self + .tx() + .gas(gas_left) + .egld(&amount) + .raw_deploy() + .arguments_raw(arguments.into()) + .from_source(source) + .code_metadata(code_metadata) + .returns(ReturnsNewManagedAddress) + .sync_call(); + OptionalValue::Some(new_address) }, Action::SCUpgradeFromSource { @@ -239,14 +242,16 @@ pub trait MultisigPerformModule: gas_left, arguments.as_multi(), ); - self.send_raw().upgrade_from_source_contract( - &sc_address, - gas_left, - &amount, - &source, - code_metadata, - &arguments.into(), - ); + + self.tx() + .to(&sc_address) + .raw_upgrade() + .arguments_raw(arguments.into()) + .egld(&amount) + .from_source(source) + .code_metadata(code_metadata) + .upgrade_async_call_and_exit(); + OptionalValue::None }, } diff --git a/contracts/examples/order-book/factory/src/lib.rs b/contracts/examples/order-book/factory/src/lib.rs index cac1192361..fb83863ae3 100644 --- a/contracts/examples/order-book/factory/src/lib.rs +++ b/contracts/examples/order-book/factory/src/lib.rs @@ -23,13 +23,19 @@ pub trait Factory { arguments.push_arg(&token_id_pair.first_token_id); arguments.push_arg(&token_id_pair.second_token_id); - let (pair_address, _) = self.send_raw().deploy_from_source_contract( - self.blockchain().get_gas_left(), - &BigUint::zero(), - &self.pair_template_address().get(), - CodeMetadata::DEFAULT, - &arguments, - ); + let gas_left = self.blockchain().get_gas_left(); + let source = self.pair_template_address().get(); + + let pair_address = self + .tx() + .gas(gas_left) + .raw_deploy() + .arguments_raw(arguments) + .from_source(source) + .code_metadata(CodeMetadata::DEFAULT) + .returns(ReturnsNewManagedAddress) + .sync_call(); + self.pairs().insert(token_id_pair, pair_address.clone()); pair_address diff --git a/contracts/feature-tests/composability/esdt-contract-pair/first-contract/src/lib.rs b/contracts/feature-tests/composability/esdt-contract-pair/first-contract/src/lib.rs index dfa6ff75e5..ad089ef4ce 100644 --- a/contracts/feature-tests/composability/esdt-contract-pair/first-contract/src/lib.rs +++ b/contracts/feature-tests/composability/esdt-contract-pair/first-contract/src/lib.rs @@ -90,14 +90,13 @@ pub trait FirstContract { "Wrong esdt token" ); - let _ = self.send_raw().transfer_esdt_execute( - &second_contract_address, - &expected_token_identifier, - &esdt_value, - self.blockchain().get_gas_left(), - &ManagedBuffer::from(SECOND_CONTRACT_REJECT_ESDT_PAYMENT), - &ManagedArgBuffer::new(), - ); + let gas_left = self.blockchain().get_gas_left(); + self.tx() + .to(&second_contract_address) + .gas(gas_left) + .raw_call(ManagedBuffer::from(SECOND_CONTRACT_REJECT_ESDT_PAYMENT)) + .single_esdt(&expected_token_identifier, 0u64, &esdt_value) + .transfer_execute(); } #[payable("*")] @@ -112,14 +111,13 @@ pub trait FirstContract { "Wrong esdt token" ); - let _ = self.send_raw().transfer_esdt_execute( - &second_contract_address, - &expected_token_identifier, - &esdt_value, - self.blockchain().get_gas_left(), - &ManagedBuffer::from(SECOND_CONTRACT_ACCEPT_ESDT_PAYMENT), - &ManagedArgBuffer::new(), - ); + let gas_left = self.blockchain().get_gas_left(); + self.tx() + .to(&second_contract_address) + .gas(gas_left) + .raw_call(ManagedBuffer::from(SECOND_CONTRACT_ACCEPT_ESDT_PAYMENT)) + .single_esdt(&expected_token_identifier, 0u64, &esdt_value) + .transfer_execute(); } fn call_esdt_second_contract( @@ -138,12 +136,11 @@ pub trait FirstContract { arg_buffer.push_arg_raw(arg); } - self.send_raw().async_call_raw( - to, - &BigUint::zero(), - &ManagedBuffer::from(ESDT_TRANSFER_STRING), - &arg_buffer, - ); + self.tx() + .to(to) + .raw_call(ManagedBuffer::from(ESDT_TRANSFER_STRING)) + .arguments_raw(arg_buffer) + .async_call_and_exit(); } // storage diff --git a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/lib.rs b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/lib.rs index d9dfe79d0e..5c4bff50d0 100644 --- a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/lib.rs +++ b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/lib.rs @@ -23,7 +23,7 @@ pub trait Parent { .tx() .raw_deploy() .code(code) - .with_gas_limit(gas_left) + .gas(gas_left) .returns(ReturnsNewManagedAddress) .sync_call(); @@ -46,7 +46,7 @@ pub trait Parent { .typed(child_proxy::ChildProxy) .issue_wrapped_egld(token_display_name, token_ticker, initial_supply) .egld(issue_cost) - .with_gas_limit(ISSUE_EXPECTED_GAS_COST) + .gas(ISSUE_EXPECTED_GAS_COST) .sync_call(); } diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_alt_init.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_alt_init.rs index 0ded59b36d..f00a10d434 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_alt_init.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_alt_init.rs @@ -54,13 +54,16 @@ pub trait ForwarderRawAlterativeInit: super::forwarder_raw_common::ForwarderRawC ) { let payment = self.call_value().egld_value(); let half_gas = self.blockchain().get_gas_left() / 2; - let result = self.send_raw().execute_on_dest_context_raw( - half_gas, - &to, - &payment, - &endpoint_name, - &args.to_arg_buffer(), - ); + + let result = self + .tx() + .to(&to) + .gas(half_gas) + .egld(payment) + .raw_call(endpoint_name) + .arguments_raw(args.to_arg_buffer()) + .returns(ReturnsRawResult) + .sync_call(); self.execute_on_dest_context_result(result); } diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs index fbd0eec1a4..39638bbe6f 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs @@ -98,7 +98,7 @@ pub trait ForwarderRawAsync: super::forwarder_raw_common::ForwarderRawCommon { endpoint_name, args, ) - .with_gas_limit(self.blockchain().get_gas_left() / 2) + .gas(self.blockchain().get_gas_left() / 2) .transfer_execute(); } @@ -118,7 +118,7 @@ pub trait ForwarderRawAsync: super::forwarder_raw_common::ForwarderRawCommon { endpoint_name, args, ) - .with_gas_limit(self.blockchain().get_gas_left() / 2) + .gas(self.blockchain().get_gas_left() / 2) .transfer_execute(); } @@ -132,7 +132,7 @@ pub trait ForwarderRawAsync: super::forwarder_raw_common::ForwarderRawCommon { ) { let (token, payment) = self.call_value().egld_or_single_fungible_esdt(); self.forward_contract_call(to, token, payment, endpoint_name, args) - .with_gas_limit(self.blockchain().get_gas_left() / 2) + .gas(self.blockchain().get_gas_left() / 2) .transfer_execute(); } @@ -153,10 +153,10 @@ pub trait ForwarderRawAsync: super::forwarder_raw_common::ForwarderRawCommon { endpoint_name.clone(), args.clone(), ) - .with_gas_limit(self.blockchain().get_gas_left() / 2) + .gas(self.blockchain().get_gas_left() / 2) .transfer_execute(); self.forward_contract_call(to, token, half_payment, endpoint_name, args) - .with_gas_limit(self.blockchain().get_gas_left() / 2) + .gas(self.blockchain().get_gas_left() / 2) .transfer_execute(); } @@ -175,12 +175,11 @@ pub trait ForwarderRawAsync: super::forwarder_raw_common::ForwarderRawCommon { arg_buffer.push_arg(amount); } - self.send_raw().async_call_raw( - &to, - &BigUint::zero(), - &ManagedBuffer::from(&b"retrieve_multi_funds_async"[..]), - &arg_buffer, - ); + self.tx() + .to(&to) + .raw_call("retrieve_multi_funds_async") + .arguments_raw(arg_buffer) + .async_call_and_exit(); } #[endpoint] diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs index b57ac773e2..803119c140 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_deploy_upgrade.rs @@ -14,7 +14,7 @@ pub trait ForwarderRawDeployUpgrade { .code(code) .code_metadata(code_metadata) .arguments_raw(args.to_arg_buffer()) - .with_gas_limit(self.blockchain().get_gas_left()) + .gas(self.blockchain().get_gas_left()) .returns(ReturnsNewManagedAddress) .returns(ReturnsRawResult) .sync_call() @@ -33,7 +33,7 @@ pub trait ForwarderRawDeployUpgrade { .from_source(source_contract_address) .code_metadata(code_metadata) .arguments_raw(args.to_arg_buffer()) - .with_gas_limit(self.blockchain().get_gas_left()) + .gas(self.blockchain().get_gas_left()) .returns(ReturnsNewManagedAddress) .sync_call() } @@ -69,7 +69,7 @@ pub trait ForwarderRawDeployUpgrade { .from_source(source_contract_address) .code_metadata(code_metadata) .arguments_raw(args.to_arg_buffer()) - .with_gas_limit(self.blockchain().get_gas_left()) + .gas(self.blockchain().get_gas_left()) .upgrade_async_call_and_exit(); } } diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_sync.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_sync.rs index 662518d093..a4e98f36a7 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_sync.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_sync.rs @@ -18,7 +18,7 @@ pub trait ForwarderRawSync: super::forwarder_raw_common::ForwarderRawCommon { .egld(payment) .raw_call(endpoint_name) .argument(&args) - .with_gas_limit(half_gas) + .gas(half_gas) .returns(ReturnsRawResult) .sync_call(); @@ -38,22 +38,28 @@ pub trait ForwarderRawSync: super::forwarder_raw_common::ForwarderRawCommon { let half_payment = &*payment / 2u32; let arg_buffer = args.to_arg_buffer(); - let result = self.send_raw().execute_on_dest_context_raw( - one_third_gas, - &to, - &half_payment, - &endpoint_name, - &arg_buffer, - ); + let result = self + .tx() + .to(&to) + .gas(one_third_gas) + .egld(&half_payment) + .raw_call(endpoint_name.clone()) + .arguments_raw(arg_buffer.clone()) + .returns(ReturnsRawResult) + .sync_call(); + self.execute_on_dest_context_result(result); - let result = self.send_raw().execute_on_dest_context_raw( - one_third_gas, - &to, - &half_payment, - &endpoint_name, - &arg_buffer, - ); + let result = self + .tx() + .to(&to) + .gas(one_third_gas) + .egld(&half_payment) + .raw_call(endpoint_name) + .arguments_raw(arg_buffer) + .returns(ReturnsRawResult) + .sync_call(); + self.execute_on_dest_context_result(result); } @@ -67,13 +73,16 @@ pub trait ForwarderRawSync: super::forwarder_raw_common::ForwarderRawCommon { ) { let payment = self.call_value().egld_value(); let half_gas = self.blockchain().get_gas_left() / 2; - let result = self.send_raw().execute_on_same_context_raw( - half_gas, - &to, - &payment, - &endpoint_name, - &args.to_arg_buffer(), - ); + + let result = self + .tx() + .to(&to) + .gas(half_gas) + .egld(payment) + .raw_call(endpoint_name) + .arguments_raw(args.to_arg_buffer()) + .returns(ReturnsRawResult) + .sync_call(); self.execute_on_same_context_result(result); } @@ -86,12 +95,14 @@ pub trait ForwarderRawSync: super::forwarder_raw_common::ForwarderRawCommon { args: MultiValueEncoded, ) { let half_gas = self.blockchain().get_gas_left() / 2; - let result = self.send_raw().execute_on_dest_context_readonly_raw( - half_gas, - &to, - &endpoint_name, - &args.to_arg_buffer(), - ); + let result = self + .tx() + .to(&to) + .gas(half_gas) + .raw_call(endpoint_name) + .arguments_raw(args.to_arg_buffer()) + .returns(ReturnsRawResult) + .sync_call(); self.execute_on_dest_context_result(result); } diff --git a/contracts/feature-tests/composability/forwarder/src/call_async.rs b/contracts/feature-tests/composability/forwarder/src/call_async.rs index 04ba78faab..2de43a6752 100644 --- a/contracts/feature-tests/composability/forwarder/src/call_async.rs +++ b/contracts/feature-tests/composability/forwarder/src/call_async.rs @@ -22,9 +22,8 @@ pub trait ForwarderAsyncCallModule { .to(&to) .typed(vault_proxy::VaultProxy) .echo_arguments(args) - .async_call() - .with_callback(self.callbacks().echo_args_callback()) - .call_and_exit(); + .callback(self.callbacks().echo_args_callback()) + .async_call_and_exit(); } #[callback] @@ -61,7 +60,7 @@ pub trait ForwarderAsyncCallModule { .to(&to) .typed(vault_proxy::VaultProxy) .accept_funds() - .with_egld_or_single_esdt_transfer(payment) + .payment(payment) .async_call() .call_and_exit() } @@ -75,11 +74,11 @@ pub trait ForwarderAsyncCallModule { .to(&to) .typed(vault_proxy::VaultProxy) .accept_funds() - .with_egld_or_single_esdt_transfer(( - payment.token_identifier, + .egld_or_single_esdt( + &payment.token_identifier, payment.token_nonce, - half_payment, - )) + &half_payment, + ) .async_call() .call_and_exit() } @@ -95,13 +94,12 @@ pub trait ForwarderAsyncCallModule { .to(&to) .typed(vault_proxy::VaultProxy) .accept_funds() - .with_egld_or_single_esdt_transfer(( - payment.token_identifier, + .egld_or_single_esdt( + &payment.token_identifier, payment.token_nonce, - amount_to_send, - )) - .async_call() - .call_and_exit() + &amount_to_send, + ) + .async_call_and_exit(); } #[endpoint] @@ -117,7 +115,7 @@ pub trait ForwarderAsyncCallModule { .typed(vault_proxy::VaultProxy) .retrieve_funds(token, token_nonce, amount) .async_call() - .with_callback(self.callbacks().retrieve_funds_callback()) + .callback(self.callbacks().retrieve_funds_callback()) .call_and_exit() } @@ -154,13 +152,12 @@ pub trait ForwarderAsyncCallModule { .to(to) .typed(vault_proxy::VaultProxy) .accept_funds() - .with_egld_or_single_esdt_transfer((token_identifier.clone(), 0u64, amount.clone())) - .async_call() - .with_callback( + .egld_or_single_esdt(token_identifier, 0u64, amount) + .callback( self.callbacks() .send_funds_twice_callback(to, token_identifier, amount), ) - .call_and_exit(); + .async_call_and_exit(); } #[callback] @@ -174,9 +171,8 @@ pub trait ForwarderAsyncCallModule { .to(to) .typed(vault_proxy::VaultProxy) .accept_funds() - .with_egld_or_single_esdt_transfer((token_identifier.clone(), 0u64, cb_amount.clone())) - .async_call() - .call_and_exit(); + .egld_or_single_esdt(token_identifier, 0u64, cb_amount) + .async_call_and_exit(); } #[endpoint] @@ -198,7 +194,7 @@ pub trait ForwarderAsyncCallModule { .to(&to) .typed(vault_proxy::VaultProxy) .accept_funds() - .with_multi_token_transfer(all_token_payments) + .payment(all_token_payments) .async_call() .call_and_exit(); } diff --git a/contracts/feature-tests/composability/forwarder/src/call_sync.rs b/contracts/feature-tests/composability/forwarder/src/call_sync.rs index 8366f0ae29..13fbcd40db 100644 --- a/contracts/feature-tests/composability/forwarder/src/call_sync.rs +++ b/contracts/feature-tests/composability/forwarder/src/call_sync.rs @@ -14,7 +14,7 @@ pub trait ForwarderSyncCallModule { let result = self .tx() .to(&to) - .with_gas_limit(half_gas) + .gas(half_gas) .typed(vault_proxy::VaultProxy) .echo_arguments(args) .returns(ReturnsResult) @@ -35,7 +35,7 @@ pub trait ForwarderSyncCallModule { let result = self .tx() .to(&to) - .with_gas_limit(one_third_gas) + .gas(one_third_gas) .typed(vault_proxy::VaultProxy) .echo_arguments(args.clone()) .returns(ReturnsResult) @@ -46,7 +46,7 @@ pub trait ForwarderSyncCallModule { let result = self .tx() .to(&to) - .with_gas_limit(one_third_gas) + .gas(one_third_gas) .typed(vault_proxy::VaultProxy) .echo_arguments(args) .returns(ReturnsResult) @@ -67,10 +67,10 @@ pub trait ForwarderSyncCallModule { let result = self .tx() .to(&to) - .with_gas_limit(half_gas) + .gas(half_gas) .typed(vault_proxy::VaultProxy) .accept_funds_echo_payment() - .with_egld_or_single_esdt_transfer(payment) + .payment(payment) .returns(ReturnsResult) .sync_call(); @@ -90,7 +90,7 @@ pub trait ForwarderSyncCallModule { .to(&to) .typed(vault_proxy::VaultProxy) .accept_funds() - .with_egld_or_single_esdt_transfer((token_id, 0u64, amount_to_send)) + .egld_or_single_esdt(&token_id, 0u64, &amount_to_send) .returns(ReturnsResult) .sync_call(); } @@ -110,7 +110,7 @@ pub trait ForwarderSyncCallModule { .to(&to) .typed(vault_proxy::VaultProxy) .accept_funds() - .with_egld_or_single_esdt_transfer(payment) + .payment(payment) .sync_call(); self.tx() @@ -154,7 +154,7 @@ pub trait ForwarderSyncCallModule { amount, OptionalValue::::Some(b"accept_funds_func".into()), ) - .with_multi_token_transfer(payments.clone_value()) + .payment(payments) .sync_call(); } @@ -180,7 +180,7 @@ pub trait ForwarderSyncCallModule { .to(&to) .typed(vault_proxy::VaultProxy) .accept_funds() - .with_multi_token_transfer(all_token_payments) + .payment(all_token_payments) .sync_call(); } } diff --git a/contracts/feature-tests/composability/forwarder/src/call_transf_exec.rs b/contracts/feature-tests/composability/forwarder/src/call_transf_exec.rs index 3573987867..952f50275c 100644 --- a/contracts/feature-tests/composability/forwarder/src/call_transf_exec.rs +++ b/contracts/feature-tests/composability/forwarder/src/call_transf_exec.rs @@ -14,7 +14,7 @@ pub trait ForwarderTransferExecuteModule { .to(&to) .typed(vault_proxy::VaultProxy) .accept_funds() - .with_egld_or_single_esdt_transfer(payment) + .payment(payment) .transfer_execute(); } @@ -33,7 +33,7 @@ pub trait ForwarderTransferExecuteModule { .to(&to) .typed(vault_proxy::VaultProxy) .accept_funds() - .with_egld_or_single_esdt_transfer((token_id, 0u64, amount_to_send)) + .egld_or_single_esdt(&token_id, 0u64, &amount_to_send) .transfer_execute(); } @@ -48,16 +48,16 @@ pub trait ForwarderTransferExecuteModule { .to(&to) .typed(vault_proxy::VaultProxy) .accept_funds() - .with_egld_or_single_esdt_transfer((token.clone(), token_nonce, half_payment.clone())) - .with_gas_limit(half_gas) + .egld_or_single_esdt(&token, token_nonce, &half_payment) + .gas(half_gas) .transfer_execute(); self.tx() .to(&to) .typed(vault_proxy::VaultProxy) .accept_funds() - .with_egld_or_single_esdt_transfer((token, token_nonce, half_payment)) - .with_gas_limit(half_gas) + .egld_or_single_esdt(&token, token_nonce, &half_payment) + .gas(half_gas) .transfer_execute(); } @@ -77,7 +77,7 @@ pub trait ForwarderTransferExecuteModule { .to(&to) .typed(vault_proxy::VaultProxy) .accept_funds() - .with_egld_or_single_esdt_transfer(payment) + .payment(payment) .transfer_execute(); let gas_left_after = self.blockchain().get_gas_left(); @@ -110,7 +110,7 @@ pub trait ForwarderTransferExecuteModule { .to(&to) .typed(vault_proxy::VaultProxy) .accept_funds() - .with_multi_token_transfer(all_token_payments) + .payment(all_token_payments) .transfer_execute() } @@ -133,7 +133,7 @@ pub trait ForwarderTransferExecuteModule { .to(&to) .typed(vault_proxy::VaultProxy) .accept_funds() - .with_multi_token_transfer(all_token_payments) + .payment(all_token_payments) .transfer_execute() } @@ -156,7 +156,7 @@ pub trait ForwarderTransferExecuteModule { .to(&to) .typed(vault_proxy::VaultProxy) .reject_funds() - .with_multi_token_transfer(all_token_payments) + .payment(all_token_payments) .transfer_execute() } } diff --git a/contracts/feature-tests/composability/forwarder/src/nft.rs b/contracts/feature-tests/composability/forwarder/src/nft.rs index 65e5eb7de1..8eae1e83c5 100644 --- a/contracts/feature-tests/composability/forwarder/src/nft.rs +++ b/contracts/feature-tests/composability/forwarder/src/nft.rs @@ -238,15 +238,14 @@ pub trait ForwarderNftModule: storage::ForwarderStorageModule { function: ManagedBuffer, arguments: MultiValueEncoded, ) { - let _ = self.send_raw().transfer_esdt_nft_execute( - &to, - &token_identifier, - nonce, - &amount, - self.blockchain().get_gas_left(), - &function, - &arguments.to_arg_buffer(), - ); + let gas_left = self.blockchain().get_gas_left(); + self.tx() + .to(&to) + .gas(gas_left) + .raw_call(function) + .arguments_raw(arguments.to_arg_buffer()) + .single_esdt(&token_identifier, nonce, &amount) + .transfer_execute(); } #[endpoint] diff --git a/contracts/feature-tests/composability/local-esdt-and-nft/src/lib.rs b/contracts/feature-tests/composability/local-esdt-and-nft/src/lib.rs index e65fd789b4..2f0bf64dc2 100644 --- a/contracts/feature-tests/composability/local-esdt-and-nft/src/lib.rs +++ b/contracts/feature-tests/composability/local-esdt-and-nft/src/lib.rs @@ -157,15 +157,15 @@ pub trait LocalEsdtAndEsdtNft { arg_buffer.push_arg_raw(arg); } - let _ = self.send_raw().transfer_esdt_nft_execute( - &to, - &token_identifier, - nonce, - &amount, - self.blockchain().get_gas_left(), - &function, - &arg_buffer, - ); + let gas_left = self.blockchain().get_gas_left(); + + self.tx() + .to(&to) + .gas(gas_left) + .raw_call(function) + .arguments_raw(arg_buffer) + .single_esdt(&token_identifier, nonce, &amount) + .transfer_execute(); } // Semi-Fungible diff --git a/contracts/feature-tests/composability/promises-features/src/call_promises.rs b/contracts/feature-tests/composability/promises-features/src/call_promises.rs index 2b116215cc..92a2c8e0e1 100644 --- a/contracts/feature-tests/composability/promises-features/src/call_promises.rs +++ b/contracts/feature-tests/composability/promises-features/src/call_promises.rs @@ -17,8 +17,8 @@ pub trait CallPromisesModule: common::CommonModule { .to(&to) .typed(vault_proxy::VaultProxy) .accept_funds() - .with_gas_limit(gas_limit) - .with_egld_or_single_esdt_transfer(payment) + .gas(gas_limit) + .payment(payment) .register_promise(); } @@ -36,9 +36,9 @@ pub trait CallPromisesModule: common::CommonModule { .to(&to) .typed(vault_proxy::VaultProxy) .retrieve_funds(token, token_nonce, amount) - .with_gas_limit(gas_limit) - .with_callback(self.callbacks().retrieve_funds_callback()) - .with_extra_gas_for_callback(10_000_000) + .gas(gas_limit) + .callback(self.callbacks().retrieve_funds_callback()) + .gas_for_callback(10_000_000) .register_promise(); } diff --git a/contracts/feature-tests/composability/promises-features/src/call_promises_bt.rs b/contracts/feature-tests/composability/promises-features/src/call_promises_bt.rs index 6f5d85179e..f6cbbfa188 100644 --- a/contracts/feature-tests/composability/promises-features/src/call_promises_bt.rs +++ b/contracts/feature-tests/composability/promises-features/src/call_promises_bt.rs @@ -20,10 +20,10 @@ pub trait CallPromisesBackTransfersModule: common::CommonModule { .to(&to) .typed(vault_proxy::VaultProxy) .retrieve_funds(token, token_nonce, amount) - .with_gas_limit(gas_limit) + .gas(gas_limit) .async_call() - .with_callback(self.callbacks().retrieve_funds_back_transfers_callback()) - .with_extra_gas_for_callback(10_000_000) + .callback(self.callbacks().retrieve_funds_back_transfers_callback()) + .gas_for_callback(10_000_000) .register_promise(); } diff --git a/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs b/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs index bc3d648b56..ccc9c45406 100644 --- a/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs +++ b/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs @@ -84,9 +84,8 @@ pub trait ProxyTestFirst { .typed(pay_me_proxy::PayMeProxy) .pay_me_with_result(0x56) .egld(payment) - .async_call() - .with_callback(self.callbacks().pay_callback()) - .call_and_exit(); + .callback(self.callbacks().pay_callback()) + .async_call_and_exit(); } #[endpoint(messageOtherContract)] @@ -117,9 +116,8 @@ pub trait ProxyTestFirst { [3u8; 3].to_vec(), &ManagedAddress::from(&HARDCODED_ADDRESS), ) - .async_call() - .with_callback(self.callbacks().message_callback()) - .call_and_exit() + .callback(self.callbacks().message_callback()) + .async_call_and_exit() } #[callback(payCallback)] // although uncommon, custom callback names are possible diff --git a/contracts/feature-tests/composability/recursive-caller/src/recursive_caller.rs b/contracts/feature-tests/composability/recursive-caller/src/recursive_caller.rs index 94f26e7e8d..339a9c7304 100644 --- a/contracts/feature-tests/composability/recursive-caller/src/recursive_caller.rs +++ b/contracts/feature-tests/composability/recursive-caller/src/recursive_caller.rs @@ -26,14 +26,13 @@ pub trait RecursiveCaller { .typed(vault_proxy::VaultProxy) .accept_funds() .egld_or_single_esdt(token_identifier, 0, amount) - .async_call() - .with_callback(self.callbacks().recursive_send_funds_callback( + .callback(self.callbacks().recursive_send_funds_callback( to, token_identifier, amount, counter, )) - .call_and_exit(); + .async_call_and_exit(); } #[callback] diff --git a/contracts/feature-tests/composability/vault/src/vault.rs b/contracts/feature-tests/composability/vault/src/vault.rs index d23123ca01..6984291b06 100644 --- a/contracts/feature-tests/composability/vault/src/vault.rs +++ b/contracts/feature-tests/composability/vault/src/vault.rs @@ -107,16 +107,12 @@ pub trait Vault { let caller = self.blockchain().get_caller(); let func_name = opt_receive_func.into_option().unwrap_or_default(); - self.send_raw() - .transfer_esdt_execute( - &caller, - &token, - &amount, - 50_000_000, - &func_name, - &ManagedArgBuffer::new(), - ) - .unwrap_or_else(|_| sc_panic!("ESDT transfer failed")); + self.tx() + .to(&caller) + .gas(50_000_000u64) + .raw_call(func_name) + .single_esdt(&token, 0u64, &amount) + .transfer_execute(); } #[allow_multiple_var_args] diff --git a/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/src/crowdfunding_erc20.rs b/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/src/crowdfunding_erc20.rs index 72b1cf8708..019ec560a5 100644 --- a/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/src/crowdfunding_erc20.rs +++ b/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/src/crowdfunding_erc20.rs @@ -36,7 +36,7 @@ pub trait Crowdfunding { .to(&erc20_address) .typed(erc20_proxy::SimpleErc20TokenProxy) .transfer_from(caller.clone(), cf_contract_address, token_amount.clone()) - .with_callback( + .callback( self.callbacks() .transfer_from_callback(caller, token_amount), ) diff --git a/contracts/feature-tests/erc-style-contracts/erc1155/src/erc1155.rs b/contracts/feature-tests/erc-style-contracts/erc1155/src/erc1155.rs index c6e9c5ce9a..725cff90de 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/src/erc1155.rs +++ b/contracts/feature-tests/erc-style-contracts/erc1155/src/erc1155.rs @@ -354,7 +354,7 @@ pub trait Erc1155 { .to(to.clone()) .typed(erc1155_user_proxy::Erc1155UserProxy) .on_erc1155_received(caller, from.clone(), type_id.clone(), value.clone(), data) - .with_callback(self.callbacks().transfer_callback( + .callback(self.callbacks().transfer_callback( from, to, [type_id].to_vec(), @@ -383,7 +383,7 @@ pub trait Erc1155 { values.to_vec(), data, ) - .with_callback(self.callbacks().transfer_callback( + .callback(self.callbacks().transfer_callback( from, to, type_ids.to_vec(), diff --git a/contracts/feature-tests/erc-style-contracts/lottery-erc20/src/lottery.rs b/contracts/feature-tests/erc-style-contracts/lottery-erc20/src/lottery.rs index 105b19b166..1bbd1f7370 100644 --- a/contracts/feature-tests/erc-style-contracts/lottery-erc20/src/lottery.rs +++ b/contracts/feature-tests/erc-style-contracts/lottery-erc20/src/lottery.rs @@ -214,7 +214,7 @@ pub trait Lottery { .to(&erc20_address) .typed(erc20_proxy::SimpleErc20TokenProxy) .transfer_from(caller.clone(), lottery_contract_address, token_amount) - .with_callback( + .callback( self.callbacks() .transfer_from_callback(lottery_name, &caller), ) @@ -285,7 +285,7 @@ pub trait Lottery { .to(&erc20_address) .typed(erc20_proxy::SimpleErc20TokenProxy) .transfer(winner_address, prize) - .with_callback(self.callbacks().distribute_prizes_callback(lottery_name)) + .callback(self.callbacks().distribute_prizes_callback(lottery_name)) .async_call_and_exit(); } diff --git a/contracts/feature-tests/rust-testing-framework-tester/src/lib.rs b/contracts/feature-tests/rust-testing-framework-tester/src/lib.rs index dae11542e4..7a5b181028 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/src/lib.rs +++ b/contracts/feature-tests/rust-testing-framework-tester/src/lib.rs @@ -176,13 +176,14 @@ pub trait RustTestingFrameworkTester: dummy_module::DummyModule { #[endpoint] fn call_other_contract_execute_on_dest(&self, other_sc_address: ManagedAddress) -> BigUint { - let call_result = self.send_raw().execute_on_dest_context_raw( - self.blockchain().get_gas_left(), - &other_sc_address, - &BigUint::zero(), - &ManagedBuffer::new_from_bytes(b"getTotalValue"), - &ManagedArgBuffer::new(), - ); + let gas_left = self.blockchain().get_gas_left(); + let call_result = self + .tx() + .to(&other_sc_address) + .gas(gas_left) + .raw_call("getTotalValue") + .returns(ReturnsRawResult) + .sync_call(); if let Some(raw_value) = call_result.try_get(0) { BigUint::from_bytes_be_buffer(&raw_value) } else { @@ -195,12 +196,11 @@ pub trait RustTestingFrameworkTester: dummy_module::DummyModule { let mut args = ManagedArgBuffer::new(); args.push_arg(&value); - self.send_raw().async_call_raw( - &other_sc_address, - &BigUint::zero(), - &ManagedBuffer::new_from_bytes(b"add"), - &args, - ); + self.tx() + .to(&other_sc_address) + .raw_call("call") + .arguments_raw(args) + .async_call_and_exit(); } #[callback_raw] @@ -218,13 +218,13 @@ pub trait RustTestingFrameworkTester: dummy_module::DummyModule { let mut args = ManagedArgBuffer::new(); args.push_arg(value); - let _ = self.send_raw().execute_on_dest_context_raw( - self.blockchain().get_gas_left(), - &other_sc_address, - &BigUint::zero(), - &ManagedBuffer::new_from_bytes(b"addValue"), - &args, - ); + let gas_left = self.blockchain().get_gas_left(); + self.tx() + .to(&other_sc_address) + .gas(gas_left) + .raw_call("addValue") + .arguments_raw(args) + .sync_call(); } #[endpoint(addValue)] diff --git a/framework/base/src/storage/mappers/token/fungible_token_mapper.rs b/framework/base/src/storage/mappers/token/fungible_token_mapper.rs index f24e6139bf..efc322c2eb 100644 --- a/framework/base/src/storage/mappers/token/fungible_token_mapper.rs +++ b/framework/base/src/storage/mappers/token/fungible_token_mapper.rs @@ -184,7 +184,7 @@ where EsdtTokenType::Fungible, num_decimals, ) - .with_callback(callback) + .callback(callback) .async_call_and_exit(); } diff --git a/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs b/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs index 666776e88b..3e886f21de 100644 --- a/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs +++ b/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs @@ -202,7 +202,7 @@ where num_decimals, ) .async_call() - .with_callback(callback) + .callback(callback) .call_and_exit() } diff --git a/framework/base/src/types/interaction/tx_exec/tx_exec_upgrade.rs b/framework/base/src/types/interaction/tx_exec/tx_exec_upgrade.rs index 5a08481640..01a0107d68 100644 --- a/framework/base/src/types/interaction/tx_exec/tx_exec_upgrade.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_exec_upgrade.rs @@ -79,6 +79,41 @@ where } } +impl + Tx< + TxScEnv, + (), + &ManagedAddress, + Payment, + Gas, + UpgradeCall, FromSource>, + RH, + > +where + Api: CallTypeApi, + Payment: TxPaymentEgldOnly>, + Gas: TxGas>, + FromSourceValue: TxFromSourceValue>, + RH: TxEmptyResultHandler>, +{ + /// Launches the upgrade from source async call. + /// + /// TODO: change return type to `!`. + pub fn upgrade_async_call_and_exit(self) { + let gas = self.gas.explicit_or_gas_left(&self.env); + self.payment.with_egld_value(&self.env, |egld_value| { + SendRawWrapper::::new().upgrade_from_source_contract( + self.to, + gas, + egld_value, + &self.data.code_source.0.into_value(&self.env), + self.data.code_metadata, + &self.data.arg_buffer, + ); + }); + } +} + impl Tx, (), ManagedAddress, Payment, Gas, UpgradeCall, ()>, RH> where @@ -133,3 +168,58 @@ where }); } } + +impl + Tx, (), &ManagedAddress, Payment, Gas, UpgradeCall, ()>, RH> +where + Api: CallTypeApi, + Payment: TxPaymentEgldOnly>, + Gas: TxGas>, + RH: TxEmptyResultHandler>, +{ + /// Backwards compatibility, immitates the old API. + /// + /// Note that the data type (the `UpgradeCall`) doesn't have the code set. + /// This is because the old API was passing it as paramter, so we use it from the `code` argument. + /// + /// Also note that the code metadata is taken from the `code_metadata` argument. + /// If another one was previously set in the `Tx` object, that one will be ignored. + pub fn upgrade_contract(self, code: &ManagedBuffer, code_metadata: CodeMetadata) { + let gas = self.gas.explicit_or_gas_left(&self.env); + self.payment.with_egld_value(&self.env, |egld_value| { + SendRawWrapper::::new().upgrade_contract( + self.to, + gas, + egld_value, + code, + code_metadata, + &self.data.arg_buffer, + ); + }); + } + + /// Backwards compatibility, immitates the old API. + /// + /// Note that the data type (the `UpgradeCall`) doesn't have the code set. + /// This is because the old API was passing it as paramter, so we use it from the `code` argument. + /// + /// Also note that the code metadata is taken from the `code_metadata` argument. + /// If another one was previously set in the `Tx` object, that one will be ignored. + pub fn upgrade_from_source( + self, + source_address: &ManagedAddress, + code_metadata: CodeMetadata, + ) { + let gas = self.gas.explicit_or_gas_left(&self.env); + self.payment.with_egld_value(&self.env, |egld_value| { + SendRawWrapper::::new().upgrade_from_source_contract( + self.to, + gas, + egld_value, + source_address, + code_metadata, + &self.data.arg_buffer, + ); + }); + } +} diff --git a/framework/base/src/types/interaction/upgrade_call.rs b/framework/base/src/types/interaction/upgrade_call.rs index d69895f029..c33290e82b 100644 --- a/framework/base/src/types/interaction/upgrade_call.rs +++ b/framework/base/src/types/interaction/upgrade_call.rs @@ -1,8 +1,13 @@ use multiversx_sc_codec::TopEncodeMulti; -use crate::types::{CodeMetadata, ManagedBuffer, ManagedBufferCachedBuilder}; +use crate::{ + proxy_imports::ManagedTypeApi, + types::{CodeMetadata, ManagedBuffer, ManagedBufferCachedBuilder}, +}; -use super::{ManagedArgBuffer, TxCodeSource, TxData, TxEnv}; +use super::{ + FunctionCall, ManagedArgBuffer, TxCodeSource, TxData, TxDataFunctionCall, TxEnv, TxScEnv, +}; /// Holds deploy data: code, code metadata, and arguments. pub struct UpgradeCall From 16ff8d198d0aeba4c209b0e08bbe4d868ea4f790 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Mon, 8 Apr 2024 16:41:54 +0200 Subject: [PATCH 291/461] fix mandos --- .../composability/scenarios/forw_raw_sync_echo.scen.json | 9 ++------- .../scenarios/forw_raw_sync_echo_caller.scen.json | 7 ++----- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/contracts/feature-tests/composability/scenarios/forw_raw_sync_echo.scen.json b/contracts/feature-tests/composability/scenarios/forw_raw_sync_echo.scen.json index 37715399ae..ed599f9492 100644 --- a/contracts/feature-tests/composability/scenarios/forw_raw_sync_echo.scen.json +++ b/contracts/feature-tests/composability/scenarios/forw_raw_sync_echo.scen.json @@ -91,12 +91,7 @@ "gasPrice": "0" }, "expect": { - "out": [ - "1", - "2", - "1", - "2" - ], + "out": [], "status": "0", "logs": [ { @@ -163,4 +158,4 @@ } } ] -} +} \ No newline at end of file diff --git a/contracts/feature-tests/composability/scenarios/forw_raw_sync_echo_caller.scen.json b/contracts/feature-tests/composability/scenarios/forw_raw_sync_echo_caller.scen.json index 50b291e3b4..0bfa9fd894 100644 --- a/contracts/feature-tests/composability/scenarios/forw_raw_sync_echo_caller.scen.json +++ b/contracts/feature-tests/composability/scenarios/forw_raw_sync_echo_caller.scen.json @@ -80,10 +80,7 @@ "gasPrice": "0" }, "expect": { - "out": [ - "sc:forwarder", - "sc:forwarder" - ], + "out": [], "status": "0", "logs": [ { @@ -136,4 +133,4 @@ } } ] -} +} \ No newline at end of file From 10dcd1d7bca7df233082d8bdd4e66a7ca7010676 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Mon, 8 Apr 2024 17:46:08 +0300 Subject: [PATCH 292/461] builtin func - claim dev rewards send wrapper --- contracts/modules/src/claim_developer_rewards.rs | 6 +----- .../src/contract_base/wrappers/send_wrapper.rs | 15 ++++++++++++++- .../system_proxy/builtin_func_proxy.rs | 4 ---- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/contracts/modules/src/claim_developer_rewards.rs b/contracts/modules/src/claim_developer_rewards.rs index 5a63ddd6bc..31911b815f 100644 --- a/contracts/modules/src/claim_developer_rewards.rs +++ b/contracts/modules/src/claim_developer_rewards.rs @@ -4,10 +4,6 @@ multiversx_sc::imports!(); pub trait ClaimDeveloperRewardsModule { #[endpoint(claimDeveloperRewards)] fn claim_developer_rewards(&self, child_sc_address: ManagedAddress) { - self.tx() - .to(&child_sc_address) - .typed(system_proxy::UserBuiltinProxy) - .claim_developer_rewards() - .async_call_and_exit(); + self.claim_developer_rewards(child_sc_address); } } diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index a90ff3e5c4..ce9a130eed 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -358,6 +358,19 @@ where .async_call_and_exit() } + /// 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, + ) -> system_proxy::UserBuiltinProxyMethods, (), ManagedAddress, ()> { + Tx::new_tx_from_sc() + .to(child_sc_address) + .typed(system_proxy::UserBuiltinProxy) + .claim_developer_rewards() + } + /// 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. @@ -398,7 +411,7 @@ where .gas(GasLeft) .raw_call(function_name) .arguments_raw(arg_buffer) - .sync_call() + // .sync_call() } /// Allows synchronous minting of ESDT/SFT (depending on nonce). Execution is resumed afterwards. diff --git a/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs b/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs index d71d398c75..e838bbc49f 100644 --- a/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs @@ -37,7 +37,6 @@ where impl UserBuiltinProxyMethods where Env: TxEnv, - Env::Api: VMApi, From: TxFrom, To: TxTo, Gas: TxGas, @@ -62,9 +61,6 @@ where .original_result() } - /// 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, ) -> TxProxyCall { From 70b4a4463d86d635e9ba8474bfdcf9b06a786e11 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 8 Apr 2024 18:01:25 +0300 Subject: [PATCH 293/461] builtin func - clam dev rewards fix --- contracts/modules/src/claim_developer_rewards.rs | 4 +++- .../base/src/contract_base/wrappers/send_wrapper.rs | 12 +++++++----- framework/base/src/types/interaction/system_proxy.rs | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/contracts/modules/src/claim_developer_rewards.rs b/contracts/modules/src/claim_developer_rewards.rs index 31911b815f..ac1187ab20 100644 --- a/contracts/modules/src/claim_developer_rewards.rs +++ b/contracts/modules/src/claim_developer_rewards.rs @@ -4,6 +4,8 @@ multiversx_sc::imports!(); pub trait ClaimDeveloperRewardsModule { #[endpoint(claimDeveloperRewards)] fn claim_developer_rewards(&self, child_sc_address: ManagedAddress) { - self.claim_developer_rewards(child_sc_address); + self.send() + .claim_developer_rewards(child_sc_address) + .sync_call(); } } diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index ce9a130eed..959ae206f0 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -13,9 +13,9 @@ use crate::{ ESDT_NFT_CREATE_FUNC_NAME, ESDT_NFT_UPDATE_ATTRIBUTES_FUNC_NAME, }, BigUint, ContractCall, ContractCallNoPayment, ESDTSystemSCAddress, - EgldOrEsdtTokenIdentifier, EsdtTokenPayment, GasLeft, ManagedAddress, ManagedArgBuffer, - ManagedBuffer, ManagedType, ManagedVec, ReturnsRawResult, ToSelf, TokenIdentifier, Tx, - TxScEnv, + EgldOrEsdtTokenIdentifier, EsdtTokenPayment, FunctionCall, GasLeft, ManagedAddress, + ManagedArgBuffer, ManagedBuffer, ManagedType, ManagedVec, OriginalResultMarker, + ReturnsRawResult, ToSelf, TokenIdentifier, Tx, TxScEnv, }, }; @@ -361,10 +361,12 @@ where /// 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. + #[allow(clippy::type_complexity)] pub fn claim_developer_rewards( &self, child_sc_address: ManagedAddress, - ) -> system_proxy::UserBuiltinProxyMethods, (), ManagedAddress, ()> { + ) -> Tx, (), ManagedAddress, (), (), FunctionCall, OriginalResultMarker<()>> + { Tx::new_tx_from_sc() .to(child_sc_address) .typed(system_proxy::UserBuiltinProxy) @@ -411,7 +413,7 @@ where .gas(GasLeft) .raw_call(function_name) .arguments_raw(arg_buffer) - // .sync_call() + .sync_call() } /// Allows synchronous minting of ESDT/SFT (depending on nonce). Execution is resumed afterwards. diff --git a/framework/base/src/types/interaction/system_proxy.rs b/framework/base/src/types/interaction/system_proxy.rs index 42bbbcf53b..d9ca05198d 100644 --- a/framework/base/src/types/interaction/system_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy.rs @@ -1,8 +1,8 @@ +pub mod builtin_func_names; mod builtin_func_proxy; mod esdt_system_sc_proxy; mod legacy_system_sc_proxy; pub(crate) mod token_properties; -pub mod builtin_func_names; pub use builtin_func_proxy::*; pub use esdt_system_sc_proxy::*; From 978c5629f810318bfef196241e6f06b7b1033842 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 8 Apr 2024 18:28:26 +0300 Subject: [PATCH 294/461] codec - universal_decode_number optimziation --- .../src/impl_for_types/impl_num_signed.rs | 8 ++-- .../src/impl_for_types/impl_num_unsigned.rs | 8 ++-- data/codec/src/num_conv.rs | 41 +++++++++++-------- data/codec/src/single/top_de_input.rs | 9 ++-- data/codec/tests/derive_hygiene.rs | 1 + 5 files changed, 39 insertions(+), 28 deletions(-) diff --git a/data/codec/src/impl_for_types/impl_num_signed.rs b/data/codec/src/impl_for_types/impl_num_signed.rs index 50cb85614e..3596c65e80 100644 --- a/data/codec/src/impl_for_types/impl_num_signed.rs +++ b/data/codec/src/impl_for_types/impl_num_signed.rs @@ -1,7 +1,7 @@ use crate::{ - dep_encode_num_mimic, num_conv::universal_decode_number, DecodeError, DecodeErrorHandler, - EncodeErrorHandler, NestedDecode, NestedDecodeInput, NestedEncode, NestedEncodeOutput, - TopDecode, TopDecodeInput, TopEncode, TopEncodeOutput, + dep_encode_num_mimic, num_conv::universal_decode_number_unchecked, DecodeError, + DecodeErrorHandler, EncodeErrorHandler, NestedDecode, NestedDecodeInput, NestedEncode, + NestedEncodeOutput, TopDecode, TopDecodeInput, TopEncode, TopEncodeOutput, }; macro_rules! top_encode_num_signed { @@ -42,7 +42,7 @@ macro_rules! dep_decode_num_signed { { let mut bytes = [0u8; $num_bytes]; input.read_into(&mut bytes[..], h)?; - let num = universal_decode_number(&bytes[..], true) as $ty; + let num = universal_decode_number_unchecked(&bytes[..], true) as $ty; Ok(num) } } diff --git a/data/codec/src/impl_for_types/impl_num_unsigned.rs b/data/codec/src/impl_for_types/impl_num_unsigned.rs index b9e98051fc..aa099628d2 100644 --- a/data/codec/src/impl_for_types/impl_num_unsigned.rs +++ b/data/codec/src/impl_for_types/impl_num_unsigned.rs @@ -1,7 +1,7 @@ use crate::{ - dep_encode_num_mimic, num_conv::universal_decode_number, DecodeError, DecodeErrorHandler, - EncodeErrorHandler, NestedDecode, NestedDecodeInput, NestedEncode, NestedEncodeOutput, - TopDecode, TopDecodeInput, TopEncode, TopEncodeOutput, + dep_encode_num_mimic, num_conv::universal_decode_number_unchecked, DecodeError, + DecodeErrorHandler, EncodeErrorHandler, NestedDecode, NestedDecodeInput, NestedEncode, + NestedEncodeOutput, TopDecode, TopDecodeInput, TopEncode, TopEncodeOutput, }; // No reversing needed for u8, because it is a single byte. @@ -102,7 +102,7 @@ macro_rules! dep_decode_num_unsigned { { let mut bytes = [0u8; $num_bytes]; input.read_into(&mut bytes[..], h)?; - let num = universal_decode_number(&bytes[..], false) as $ty; + let num = universal_decode_number_unchecked(&bytes[..], false) as $ty; Ok(num) } } diff --git a/data/codec/src/num_conv.rs b/data/codec/src/num_conv.rs index cfca20180b..38c3ba767f 100644 --- a/data/codec/src/num_conv.rs +++ b/data/codec/src/num_conv.rs @@ -110,23 +110,32 @@ fn fill_buffer_find_offset(x: u64, signed: bool, buffer: &mut TopEncodeNumberBuf /// /// No generics here, we avoid monomorphization to make the SC binary as small as possible. pub fn universal_decode_number(bytes: &[u8], signed: bool) -> u64 { - if bytes.is_empty() { - return 0; - } - let negative = signed && msbit_is_one(bytes[0]); - let mut result = if negative { - // start with all bits set to 1, - // to ensure that if there are fewer bytes than the result type width, - // the leading bits will be 1 instead of 0 - u64::MAX - } else { - 0u64 - }; - for byte in bytes.iter() { - result <<= 8; - result |= *byte as u64; + // it is almost impossible to get a slice longer than 8 + // just a basic overflow/underflow protection + let safe_len = bytes.len() % 9; + universal_decode_number_impl(bytes, safe_len, signed) +} + +/// Same as [`universal_decode_number`], but assumes that the input length does not exceed 8. +pub fn universal_decode_number_unchecked(bytes: &[u8], signed: bool) -> u64 { + universal_decode_number_impl(bytes, bytes.len(), signed) +} + +fn universal_decode_number_impl(bytes: &[u8], len: usize, signed: bool) -> u64 { + let negative = signed && len > 0 && msbit_is_one(bytes[0]); + let skippable_byte = skippable_byte(negative); + + let mut extended_buffer = [skippable_byte; 8]; + let offset = 8 - len; + unsafe { + core::ptr::copy_nonoverlapping( + bytes.as_ptr(), + extended_buffer.as_mut_ptr().add(offset), + len, + ) } - result + + u64::from_be_bytes(extended_buffer) } /// Most significant bit is 1. diff --git a/data/codec/src/single/top_de_input.rs b/data/codec/src/single/top_de_input.rs index 594785c35c..dc74370daf 100644 --- a/data/codec/src/single/top_de_input.rs +++ b/data/codec/src/single/top_de_input.rs @@ -1,6 +1,7 @@ use crate::{ - num_conv::universal_decode_number, transmute::vec_into_boxed_slice, DecodeError, - DecodeErrorHandler, NestedDecodeInput, OwnedBytesNestedDecodeInput, TryStaticCast, + num_conv::{universal_decode_number, universal_decode_number_unchecked}, + transmute::vec_into_boxed_slice, + DecodeError, DecodeErrorHandler, NestedDecodeInput, OwnedBytesNestedDecodeInput, TryStaticCast, }; use alloc::{boxed::Box, vec::Vec}; @@ -38,7 +39,7 @@ pub trait TopDecodeInput: Sized { { let mut buffer = [0u8; 8]; let slice = self.into_max_size_buffer(&mut buffer, h)?; - Ok(universal_decode_number(slice, false)) + Ok(universal_decode_number_unchecked(slice, false)) } /// Retrieves the underlying data as a pre-parsed i64. @@ -51,7 +52,7 @@ pub trait TopDecodeInput: Sized { { let mut buffer = [0u8; 8]; let slice = self.into_max_size_buffer(&mut buffer, h)?; - Ok(universal_decode_number(slice, true) as i64) + Ok(universal_decode_number_unchecked(slice, true) as i64) } #[inline] diff --git a/data/codec/tests/derive_hygiene.rs b/data/codec/tests/derive_hygiene.rs index 4f9cc5e1f9..1ac67e6478 100644 --- a/data/codec/tests/derive_hygiene.rs +++ b/data/codec/tests/derive_hygiene.rs @@ -35,6 +35,7 @@ use crate::Result::{Err, Ok}; // They are not used in the derive, but just to make sure: fn top_encode_number() {} fn universal_decode_number() {} +fn universal_decode_number_unchecked() {} fn dep_decode_from_byte_slice() {} fn dep_encode_to_vec() {} fn top_decode_from_nested_or_handle_err() {} From ac7efa72b8d7f56f5e6de454a2876b44de34edb5 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Mon, 8 Apr 2024 19:17:11 +0300 Subject: [PATCH 295/461] builtin func - change owner address & esdt local burn --- .../scenarios/stress_submit_test.scen.json | 100 +++++++++--------- .../forwarder/src/contract_change_owner.rs | 2 +- .../contract_base/wrappers/send_wrapper.rs | 45 ++++---- .../system_proxy/builtin_func_proxy.rs | 46 ++++++-- 4 files changed, 107 insertions(+), 86 deletions(-) diff --git a/contracts/core/price-aggregator/scenarios/stress_submit_test.scen.json b/contracts/core/price-aggregator/scenarios/stress_submit_test.scen.json index 6ed4ec81ac..e2b19c9966 100644 --- a/contracts/core/price-aggregator/scenarios/stress_submit_test.scen.json +++ b/contracts/core/price-aggregator/scenarios/stress_submit_test.scen.json @@ -1133,7 +1133,7 @@ "0x45474c44", "0x55534443", "0x5f", - "0x7e73f7325747f41e", + "0xd7fd71920be3e621", "0x" ], "gasLimit": "7,000,000" @@ -1154,7 +1154,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x67da5ce3a07967b4", + "0x5a032236cff2ff06", "0x" ], "gasLimit": "7,000,000" @@ -1175,7 +1175,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x42345d9c03249906", + "0x2e874347688dffa1", "0x" ], "gasLimit": "7,000,000" @@ -1196,7 +1196,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x729cbab7559d2418", + "0x4c94033d5e15a73a", "0x" ], "gasLimit": "7,000,000" @@ -1217,7 +1217,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x4b1f1fb91704289a", + "0x2bd5b88173750be6", "0x" ], "gasLimit": "7,000,000" @@ -1238,7 +1238,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x9041a66f9a8eddd3", + "0xe4cb406e5f95d9d7", "0x" ], "gasLimit": "7,000,000" @@ -1259,7 +1259,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x119426970178f4e8", + "0xfd4dd723ed0b256e", "0x" ], "gasLimit": "7,000,000" @@ -1280,7 +1280,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xa4a00453870b1413", + "0x66b6bfe973064cfd", "0x" ], "gasLimit": "7,000,000" @@ -1301,7 +1301,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x506335784433b85b", + "0xbc6a51b940c5c479", "0x" ], "gasLimit": "7,000,000" @@ -1322,7 +1322,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xa272188ead522f3c", + "0x47ca1962093887df", "0x" ], "gasLimit": "7,000,000" @@ -1343,7 +1343,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x899a358acd3a916d", + "0xa9657f2b7c255e3c", "0x" ], "gasLimit": "7,000,000" @@ -1364,7 +1364,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xa72819f377890189", + "0xadaf4aaa5e63f2e5", "0x" ], "gasLimit": "7,000,000" @@ -1385,7 +1385,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x67c7c355dbf99be8", + "0x153a1384b3d68656", "0x" ], "gasLimit": "7,000,000" @@ -1406,7 +1406,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xfbb7382befbf0ba3", + "0x4ba5dda59b2ba4e9", "0x" ], "gasLimit": "7,000,000" @@ -1427,7 +1427,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x3b6e67573e4e3f73", + "0x973e0d62157afb51", "0x" ], "gasLimit": "7,000,000" @@ -1448,7 +1448,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xf1cad9d61b5dea8e", + "0xe18cb77b44399b45", "0x" ], "gasLimit": "7,000,000" @@ -1469,7 +1469,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x0f125f34c142d4dd", + "0x30a1ed7ed6069074", "0x" ], "gasLimit": "7,000,000" @@ -1490,7 +1490,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xe78b1d333ef1d9cb", + "0xfbd288d325739548", "0x" ], "gasLimit": "7,000,000" @@ -1511,7 +1511,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x2d95a8f7484f98c5", + "0x83ad3ad74745e6f5", "0x" ], "gasLimit": "7,000,000" @@ -1532,7 +1532,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x7a97d84d6b233203", + "0x0cc85234d5ea00b2", "0x" ], "gasLimit": "7,000,000" @@ -1553,7 +1553,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xb874fdc44ac92cff", + "0x8dae036c75e9a62c", "0x" ], "gasLimit": "7,000,000" @@ -1574,7 +1574,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x8cb05ff6dcfb459f", + "0x31549118c983eaa0", "0x" ], "gasLimit": "7,000,000" @@ -1595,7 +1595,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xa402f6a3b4ee09e7", + "0x8228096b6388b4bd", "0x" ], "gasLimit": "7,000,000" @@ -1616,7 +1616,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x24f913b5c6d6d687", + "0x2dc8b16251c44710", "0x" ], "gasLimit": "7,000,000" @@ -1637,7 +1637,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x601430ad5b35c7b2", + "0xbc66b6f85858d98c", "0x" ], "gasLimit": "7,000,000" @@ -1658,7 +1658,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xa66e3496b143093d", + "0x2937c9b0c1073c0b", "0x" ], "gasLimit": "7,000,000" @@ -1679,7 +1679,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x10fbd80dee58e58c", + "0xa2b7bd06214aabc4", "0x" ], "gasLimit": "7,000,000" @@ -1700,7 +1700,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xdbe95503112f8855", + "0x61ae8ac001144476", "0x" ], "gasLimit": "7,000,000" @@ -1721,7 +1721,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x799a64362d43ecb5", + "0x5f6de265c643495f", "0x" ], "gasLimit": "7,000,000" @@ -1742,7 +1742,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xc4040f7c568dfe5f", + "0x67430307e2f864f0", "0x" ], "gasLimit": "7,000,000" @@ -1763,7 +1763,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x5f0934092a3b285e", + "0x7de010a49d52cd3f", "0x" ], "gasLimit": "7,000,000" @@ -1784,7 +1784,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xbab97635db0333b2", + "0xb27799264f3b84ec", "0x" ], "gasLimit": "7,000,000" @@ -1805,7 +1805,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x3a540081e9ccd62e", + "0x53d7a1ade83e0f2e", "0x" ], "gasLimit": "7,000,000" @@ -1826,7 +1826,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x05bea873f4825a82", + "0x2ec40e01673b8ad7", "0x" ], "gasLimit": "7,000,000" @@ -1847,7 +1847,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x67d016dd357634ca", + "0xfb616537f76f8ffb", "0x" ], "gasLimit": "7,000,000" @@ -1868,7 +1868,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x4d6b5212f854c77d", + "0x387268d229f4ec9a", "0x" ], "gasLimit": "7,000,000" @@ -1889,7 +1889,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x7c62a09f1a3336c8", + "0xdea0f1c84325ea3a", "0x" ], "gasLimit": "7,000,000" @@ -1910,7 +1910,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x21c179faeb48f1d7", + "0x12eb7cb637de6e86", "0x" ], "gasLimit": "7,000,000" @@ -1931,7 +1931,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xe7f11437e10fa779", + "0x5f6b1784511d622d", "0x" ], "gasLimit": "7,000,000" @@ -1952,7 +1952,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xb06dea0282c5fa22", + "0x1a41106366209d8d", "0x" ], "gasLimit": "7,000,000" @@ -1973,7 +1973,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x805ed8f4a0a71cce", + "0x2324bca02526fec9", "0x" ], "gasLimit": "7,000,000" @@ -1994,7 +1994,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x483ef0b2517c0915", + "0xccf33fc47ef34300", "0x" ], "gasLimit": "7,000,000" @@ -2015,7 +2015,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x45e24c96cc048c8e", + "0xebfab26bff9c74a3", "0x" ], "gasLimit": "7,000,000" @@ -2036,7 +2036,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x2c9cfe97258a6099", + "0x116a45e410db659b", "0x" ], "gasLimit": "7,000,000" @@ -2057,7 +2057,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xf0c3114cbb06b7ac", + "0xc9bddc2b06ba1f1e", "0x" ], "gasLimit": "7,000,000" @@ -2078,7 +2078,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x9400e2a0a2b4c559", + "0xde7473b9bfdfe96c", "0x" ], "gasLimit": "7,000,000" @@ -2099,7 +2099,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x6ff6239cf418528a", + "0x91c2ff3a5c73267e", "0x" ], "gasLimit": "7,000,000" @@ -2120,7 +2120,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x3a1e0de1fb534547", + "0x95bb44dffc62bb47", "0x" ], "gasLimit": "7,000,000" @@ -2141,7 +2141,7 @@ "0x45474c44", "0x55534443", "0x64", - "0x3a549a5c074f3805", + "0x2f28d194b7659f9f", "0x" ], "gasLimit": "7,000,000" @@ -2162,7 +2162,7 @@ "0x45474c44", "0x55534443", "0x64", - "0xaebe838a44d1559e", + "0xc1bd397146f3353e", "0x" ], "gasLimit": "7,000,000" diff --git a/contracts/feature-tests/composability/forwarder/src/contract_change_owner.rs b/contracts/feature-tests/composability/forwarder/src/contract_change_owner.rs index e90920a29b..855abcc2fd 100644 --- a/contracts/feature-tests/composability/forwarder/src/contract_change_owner.rs +++ b/contracts/feature-tests/composability/forwarder/src/contract_change_owner.rs @@ -13,7 +13,7 @@ pub trait ChangeOwnerModule { let () = self .send() .change_owner_address(child_sc_address.clone(), &new_owner) - .execute_on_dest_context(); + .sync_call(); self.get_owner_of_vault_contract(child_sc_address) } diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index 959ae206f0..594079bf9b 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -8,14 +8,13 @@ use crate::{ types::{ system_proxy, system_proxy::builtin_func_names::{ - CHANGE_OWNER_BUILTIN_FUNC_NAME, ESDT_LOCAL_BURN_FUNC_NAME, ESDT_LOCAL_MINT_FUNC_NAME, - ESDT_NFT_ADD_QUANTITY_FUNC_NAME, ESDT_NFT_ADD_URI_FUNC_NAME, ESDT_NFT_BURN_FUNC_NAME, + ESDT_LOCAL_MINT_FUNC_NAME, ESDT_NFT_ADD_QUANTITY_FUNC_NAME, ESDT_NFT_ADD_URI_FUNC_NAME, ESDT_NFT_CREATE_FUNC_NAME, ESDT_NFT_UPDATE_ATTRIBUTES_FUNC_NAME, }, - BigUint, ContractCall, ContractCallNoPayment, ESDTSystemSCAddress, - EgldOrEsdtTokenIdentifier, EsdtTokenPayment, FunctionCall, GasLeft, ManagedAddress, - ManagedArgBuffer, ManagedBuffer, ManagedType, ManagedVec, OriginalResultMarker, - ReturnsRawResult, ToSelf, TokenIdentifier, Tx, TxScEnv, + BigUint, ContractCallNoPayment, ESDTSystemSCAddress, EgldOrEsdtTokenIdentifier, + EsdtTokenPayment, FunctionCall, GasLeft, ManagedAddress, ManagedArgBuffer, ManagedBuffer, + ManagedType, ManagedVec, OriginalResultMarker, ReturnsRawResult, ToSelf, TokenIdentifier, + Tx, TxScEnv, }, }; @@ -359,8 +358,6 @@ where } /// 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. #[allow(clippy::type_complexity)] pub fn claim_developer_rewards( &self, @@ -374,15 +371,17 @@ where } /// 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. + #[allow(clippy::type_complexity)] pub fn change_owner_address( &self, child_sc_address: ManagedAddress, new_owner: &ManagedAddress, - ) -> ContractCallNoPayment { - self.contract_call(child_sc_address, CHANGE_OWNER_BUILTIN_FUNC_NAME) - .argument(&new_owner) + ) -> Tx, (), ManagedAddress, (), (), FunctionCall, OriginalResultMarker<()>> + { + Tx::new_tx_from_sc() + .to(child_sc_address) + .typed(system_proxy::UserBuiltinProxy) + .change_owner_address(new_owner) } /// Allows synchronously calling a local function by name. Execution is resumed afterwards. @@ -468,20 +467,12 @@ where /// Note that the SC must have the ESDTLocalBurn or ESDTNftBurn roles set, /// 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; - - 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); - - self.call_local_esdt_built_in_function_minimal(func_name, arg_buffer); + Tx::new_tx_from_sc() + .to(ToSelf) + .gas(GasLeft) + .typed(system_proxy::UserBuiltinProxy) + .esdt_local_burn(token, nonce, amount) + .sync_call() } /// Allows synchronous burning of ESDT/SFT/NFT (depending on nonce). Execution is resumed afterwards. diff --git a/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs b/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs index e838bbc49f..8018f3fdc1 100644 --- a/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs @@ -33,7 +33,6 @@ where wrapped_tx: Tx, } -#[rustfmt::skip] impl UserBuiltinProxyMethods where Env: TxEnv, @@ -41,9 +40,7 @@ where To: TxTo, Gas: TxGas, { - pub fn set_user_name< - Arg0: CodecInto>, - >( + pub fn set_user_name>>( self, name: Arg0, ) -> TxProxyCall { @@ -53,19 +50,52 @@ where .original_result() } - pub fn delete_user_name( + pub fn delete_user_name(self) -> TxProxyCall { + self.wrapped_tx + .raw_call(DELETE_USERNAME_FUNC_NAME) + .original_result() + } + + pub fn claim_developer_rewards(self) -> TxProxyCall { + self.wrapped_tx + .raw_call(CLAIM_DEVELOPER_REWARDS_FUNC_NAME) + .original_result() + } + + pub fn change_owner_address>>( self, + new_owner: Arg0, ) -> TxProxyCall { self.wrapped_tx - .raw_call(DELETE_USERNAME_FUNC_NAME) + .raw_call(CHANGE_OWNER_BUILTIN_FUNC_NAME) + .argument(&new_owner) .original_result() } - pub fn claim_developer_rewards( + pub fn esdt_local_burn< + Arg0: CodecInto>, + Arg1: CodecInto + core::cmp::PartialEq, + Arg2: CodecInto>, + >( self, + token: &Arg0, + nonce: Arg1, + amount: &Arg2, ) -> TxProxyCall { + if nonce.eq(&0) { + return self + .wrapped_tx + .raw_call(ESDT_LOCAL_BURN_FUNC_NAME) + .argument(token) + .argument(amount) + .original_result(); + } + self.wrapped_tx - .raw_call(CLAIM_DEVELOPER_REWARDS_FUNC_NAME) + .raw_call(ESDT_NFT_BURN_FUNC_NAME) + .argument(token) + .argument(&nonce) + .argument(amount) .original_result() } } From bdea87726f387a6f8589e1b1ce224e00bfe311ee Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 8 Apr 2024 20:04:30 +0300 Subject: [PATCH 296/461] codec - universal_decode_number optimziation --- data/codec/src/num_conv.rs | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/data/codec/src/num_conv.rs b/data/codec/src/num_conv.rs index 38c3ba767f..f68671596e 100644 --- a/data/codec/src/num_conv.rs +++ b/data/codec/src/num_conv.rs @@ -113,27 +113,23 @@ pub fn universal_decode_number(bytes: &[u8], signed: bool) -> u64 { // it is almost impossible to get a slice longer than 8 // just a basic overflow/underflow protection let safe_len = bytes.len() % 9; - universal_decode_number_impl(bytes, safe_len, signed) + + unsafe { universal_decode_number_impl(bytes.as_ptr(), safe_len, signed) } } /// Same as [`universal_decode_number`], but assumes that the input length does not exceed 8. pub fn universal_decode_number_unchecked(bytes: &[u8], signed: bool) -> u64 { - universal_decode_number_impl(bytes, bytes.len(), signed) + unsafe { universal_decode_number_impl(bytes.as_ptr(), bytes.len(), signed) } } -fn universal_decode_number_impl(bytes: &[u8], len: usize, signed: bool) -> u64 { - let negative = signed && len > 0 && msbit_is_one(bytes[0]); +#[inline(never)] +unsafe fn universal_decode_number_impl(bytes: *const u8, len: usize, signed: bool) -> u64 { + let negative = signed && len > 0 && msbit_is_one(*bytes); let skippable_byte = skippable_byte(negative); let mut extended_buffer = [skippable_byte; 8]; - let offset = 8 - len; - unsafe { - core::ptr::copy_nonoverlapping( - bytes.as_ptr(), - extended_buffer.as_mut_ptr().add(offset), - len, - ) - } + let offset = 8usize.wrapping_sub(len); + core::ptr::copy_nonoverlapping(bytes, extended_buffer.as_mut_ptr().add(offset), len); u64::from_be_bytes(extended_buffer) } From 3e8dd5fdf7b6de7e083775f70cf684cf69dca232 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Mon, 8 Apr 2024 23:49:58 +0300 Subject: [PATCH 297/461] builtin func - edst local mint & nft add multiple uri --- .../contract_base/wrappers/send_wrapper.rs | 37 ++++------- .../system_proxy/builtin_func_proxy.rs | 62 +++++++++++++++---- 2 files changed, 62 insertions(+), 37 deletions(-) diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index 594079bf9b..31f6c6a158 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -8,7 +8,6 @@ use crate::{ types::{ system_proxy, system_proxy::builtin_func_names::{ - ESDT_LOCAL_MINT_FUNC_NAME, ESDT_NFT_ADD_QUANTITY_FUNC_NAME, ESDT_NFT_ADD_URI_FUNC_NAME, ESDT_NFT_CREATE_FUNC_NAME, ESDT_NFT_UPDATE_ATTRIBUTES_FUNC_NAME, }, BigUint, ContractCallNoPayment, ESDTSystemSCAddress, EgldOrEsdtTokenIdentifier, @@ -424,21 +423,12 @@ where /// /// 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(); - 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); - - self.call_local_esdt_built_in_function_minimal(func_name, arg_buffer); + Tx::new_tx_from_sc() + .to(ToSelf) + .gas(GasLeft) + .typed(system_proxy::UserBuiltinProxy) + .esdt_local_mint(token, nonce, amount) + .sync_call() } /// Allows synchronous minting of ESDT/SFT (depending on nonce). Execution is resumed afterwards. @@ -774,15 +764,12 @@ where return; } - let mut arg_buffer = ManagedArgBuffer::new(); - arg_buffer.push_arg(token_id); - arg_buffer.push_arg(nft_nonce); - - for uri in new_uris { - arg_buffer.push_arg(uri); - } - - self.call_local_esdt_built_in_function_minimal(ESDT_NFT_ADD_URI_FUNC_NAME, arg_buffer); + Tx::new_tx_from_sc() + .to(ToSelf) + .gas(GasLeft) + .typed(system_proxy::UserBuiltinProxy) + .nft_add_multiple_uri(token_id, nft_nonce, new_uris) + .sync_call() } /// Changes attributes of an NFT, via a synchronous builtin function call. diff --git a/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs b/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs index 8018f3fdc1..53fd76d371 100644 --- a/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs @@ -62,27 +62,23 @@ where .original_result() } - pub fn change_owner_address>>( + pub fn change_owner_address( self, - new_owner: Arg0, + new_owner: &ManagedAddress, ) -> TxProxyCall { self.wrapped_tx .raw_call(CHANGE_OWNER_BUILTIN_FUNC_NAME) - .argument(&new_owner) + .argument(new_owner) .original_result() } - pub fn esdt_local_burn< - Arg0: CodecInto>, - Arg1: CodecInto + core::cmp::PartialEq, - Arg2: CodecInto>, - >( + pub fn esdt_local_burn( self, - token: &Arg0, - nonce: Arg1, - amount: &Arg2, + token: &TokenIdentifier, + nonce: u64, + amount: &BigUint, ) -> TxProxyCall { - if nonce.eq(&0) { + if nonce == 0 { return self .wrapped_tx .raw_call(ESDT_LOCAL_BURN_FUNC_NAME) @@ -98,4 +94,46 @@ where .argument(amount) .original_result() } + + pub fn esdt_local_mint( + self, + token: &TokenIdentifier, + nonce: u64, + amount: &BigUint, + ) -> TxProxyCall { + if nonce == 0 { + return self + .wrapped_tx + .raw_call(ESDT_LOCAL_MINT_FUNC_NAME) + .argument(token) + .argument(amount) + .original_result(); + } + self.wrapped_tx + .raw_call(ESDT_NFT_ADD_QUANTITY_FUNC_NAME) + .argument(token) + .argument(&nonce) + .argument(amount) + .original_result() + } + + pub fn nft_add_multiple_uri( + self, + token_id: &TokenIdentifier, + nft_nonce: u64, + new_uris: &ManagedVec>, + ) -> TxProxyCall { + let mut arg_buffer = ManagedArgBuffer::new(); + arg_buffer.push_arg(token_id); + arg_buffer.push_arg(nft_nonce); + + for uri in new_uris { + arg_buffer.push_arg(uri); + } + + self.wrapped_tx + .raw_call(ESDT_NFT_ADD_URI_FUNC_NAME) + .arguments_raw(arg_buffer) + .original_result() + } } From bd70cef082c369ba72ca5f905a8789fc24fbd1ee Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Tue, 9 Apr 2024 02:47:45 +0200 Subject: [PATCH 298/461] fix after review --- .../first-contract/src/lib.rs | 2 +- .../scenarios/forw_raw_sync_echo.scen.json | 2 +- .../forw_raw_sync_echo_caller.scen.json | 2 +- .../rust-testing-framework-tester/src/lib.rs | 12 +- .../interaction/tx_exec/tx_exec_upgrade.rs | 132 ++++-------------- 5 files changed, 30 insertions(+), 120 deletions(-) diff --git a/contracts/feature-tests/composability/esdt-contract-pair/first-contract/src/lib.rs b/contracts/feature-tests/composability/esdt-contract-pair/first-contract/src/lib.rs index ad089ef4ce..7ce368781a 100644 --- a/contracts/feature-tests/composability/esdt-contract-pair/first-contract/src/lib.rs +++ b/contracts/feature-tests/composability/esdt-contract-pair/first-contract/src/lib.rs @@ -94,7 +94,7 @@ pub trait FirstContract { self.tx() .to(&second_contract_address) .gas(gas_left) - .raw_call(ManagedBuffer::from(SECOND_CONTRACT_REJECT_ESDT_PAYMENT)) + .raw_call(SECOND_CONTRACT_REJECT_ESDT_PAYMENT) .single_esdt(&expected_token_identifier, 0u64, &esdt_value) .transfer_execute(); } diff --git a/contracts/feature-tests/composability/scenarios/forw_raw_sync_echo.scen.json b/contracts/feature-tests/composability/scenarios/forw_raw_sync_echo.scen.json index ed599f9492..a34e9497fd 100644 --- a/contracts/feature-tests/composability/scenarios/forw_raw_sync_echo.scen.json +++ b/contracts/feature-tests/composability/scenarios/forw_raw_sync_echo.scen.json @@ -158,4 +158,4 @@ } } ] -} \ No newline at end of file +} diff --git a/contracts/feature-tests/composability/scenarios/forw_raw_sync_echo_caller.scen.json b/contracts/feature-tests/composability/scenarios/forw_raw_sync_echo_caller.scen.json index 0bfa9fd894..a964ec9e19 100644 --- a/contracts/feature-tests/composability/scenarios/forw_raw_sync_echo_caller.scen.json +++ b/contracts/feature-tests/composability/scenarios/forw_raw_sync_echo_caller.scen.json @@ -133,4 +133,4 @@ } } ] -} \ No newline at end of file +} diff --git a/contracts/feature-tests/rust-testing-framework-tester/src/lib.rs b/contracts/feature-tests/rust-testing-framework-tester/src/lib.rs index 7a5b181028..8aae4d0b79 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/src/lib.rs +++ b/contracts/feature-tests/rust-testing-framework-tester/src/lib.rs @@ -193,13 +193,10 @@ pub trait RustTestingFrameworkTester: dummy_module::DummyModule { #[endpoint] fn call_other_contract_add_async_call(&self, other_sc_address: ManagedAddress, value: BigUint) { - let mut args = ManagedArgBuffer::new(); - args.push_arg(&value); - self.tx() .to(&other_sc_address) - .raw_call("call") - .arguments_raw(args) + .raw_call("add") + .argument(&value) .async_call_and_exit(); } @@ -215,15 +212,12 @@ pub trait RustTestingFrameworkTester: dummy_module::DummyModule { #[endpoint] fn execute_on_dest_add_value(&self, other_sc_address: ManagedAddress, value: BigUint) { - let mut args = ManagedArgBuffer::new(); - args.push_arg(value); - let gas_left = self.blockchain().get_gas_left(); self.tx() .to(&other_sc_address) .gas(gas_left) .raw_call("addValue") - .arguments_raw(args) + .argument(&value) .sync_call(); } diff --git a/framework/base/src/types/interaction/tx_exec/tx_exec_upgrade.rs b/framework/base/src/types/interaction/tx_exec/tx_exec_upgrade.rs index 01a0107d68..74285517c7 100644 --- a/framework/base/src/types/interaction/tx_exec/tx_exec_upgrade.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_exec_upgrade.rs @@ -1,6 +1,7 @@ use crate::{ api::CallTypeApi, contract_base::SendRawWrapper, + proxy_imports::TxToSpecified, tuple_util::NestedTupleFlatten, types::{ Code, CodeMetadata, DeployRawResult, FromSource, ManagedAddress, ManagedBuffer, ManagedVec, @@ -79,100 +80,11 @@ where } } -impl - Tx< - TxScEnv, - (), - &ManagedAddress, - Payment, - Gas, - UpgradeCall, FromSource>, - RH, - > -where - Api: CallTypeApi, - Payment: TxPaymentEgldOnly>, - Gas: TxGas>, - FromSourceValue: TxFromSourceValue>, - RH: TxEmptyResultHandler>, -{ - /// Launches the upgrade from source async call. - /// - /// TODO: change return type to `!`. - pub fn upgrade_async_call_and_exit(self) { - let gas = self.gas.explicit_or_gas_left(&self.env); - self.payment.with_egld_value(&self.env, |egld_value| { - SendRawWrapper::::new().upgrade_from_source_contract( - self.to, - gas, - egld_value, - &self.data.code_source.0.into_value(&self.env), - self.data.code_metadata, - &self.data.arg_buffer, - ); - }); - } -} - -impl - Tx, (), ManagedAddress, Payment, Gas, UpgradeCall, ()>, RH> -where - Api: CallTypeApi, - Payment: TxPaymentEgldOnly>, - Gas: TxGas>, - RH: TxEmptyResultHandler>, -{ - /// Backwards compatibility, immitates the old API. - /// - /// Note that the data type (the `UpgradeCall`) doesn't have the code set. - /// This is because the old API was passing it as paramter, so we use it from the `code` argument. - /// - /// Also note that the code metadata is taken from the `code_metadata` argument. - /// If another one was previously set in the `Tx` object, that one will be ignored. - pub fn upgrade_contract(self, code: &ManagedBuffer, code_metadata: CodeMetadata) { - let gas = self.gas.explicit_or_gas_left(&self.env); - self.payment.with_egld_value(&self.env, |egld_value| { - SendRawWrapper::::new().upgrade_contract( - &self.to, - gas, - egld_value, - code, - code_metadata, - &self.data.arg_buffer, - ); - }); - } - - /// Backwards compatibility, immitates the old API. - /// - /// Note that the data type (the `UpgradeCall`) doesn't have the code set. - /// This is because the old API was passing it as paramter, so we use it from the `code` argument. - /// - /// Also note that the code metadata is taken from the `code_metadata` argument. - /// If another one was previously set in the `Tx` object, that one will be ignored. - pub fn upgrade_from_source( - self, - source_address: &ManagedAddress, - code_metadata: CodeMetadata, - ) { - let gas = self.gas.explicit_or_gas_left(&self.env); - self.payment.with_egld_value(&self.env, |egld_value| { - SendRawWrapper::::new().upgrade_from_source_contract( - &self.to, - gas, - egld_value, - source_address, - code_metadata, - &self.data.arg_buffer, - ); - }); - } -} - -impl - Tx, (), &ManagedAddress, Payment, Gas, UpgradeCall, ()>, RH> +impl + Tx, (), To, Payment, Gas, UpgradeCall, ()>, RH> where Api: CallTypeApi, + To: TxToSpecified>, Payment: TxPaymentEgldOnly>, Gas: TxGas>, RH: TxEmptyResultHandler>, @@ -187,14 +99,16 @@ where pub fn upgrade_contract(self, code: &ManagedBuffer, code_metadata: CodeMetadata) { let gas = self.gas.explicit_or_gas_left(&self.env); self.payment.with_egld_value(&self.env, |egld_value| { - SendRawWrapper::::new().upgrade_contract( - self.to, - gas, - egld_value, - code, - code_metadata, - &self.data.arg_buffer, - ); + self.to.with_value_ref(&self.env, |to| { + SendRawWrapper::::new().upgrade_contract( + to, + gas, + egld_value, + code, + code_metadata, + &self.data.arg_buffer, + ); + }); }); } @@ -212,14 +126,16 @@ where ) { let gas = self.gas.explicit_or_gas_left(&self.env); self.payment.with_egld_value(&self.env, |egld_value| { - SendRawWrapper::::new().upgrade_from_source_contract( - self.to, - gas, - egld_value, - source_address, - code_metadata, - &self.data.arg_buffer, - ); + self.to.with_value_ref(&self.env, |to| { + SendRawWrapper::::new().upgrade_from_source_contract( + to, + gas, + egld_value, + source_address, + code_metadata, + &self.data.arg_buffer, + ); + }); }); } } From 43abcf3e69cffa1d24d534bf70255643689a27a1 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 9 Apr 2024 09:47:48 +0300 Subject: [PATCH 299/461] sc 0.48.0 --- CHANGELOG.md | 5 +++++ Cargo.lock | 18 +++++++++--------- 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 ++-- .../mappers/linked-list-repeat/meta/Cargo.toml | 2 +- .../mappers/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 +- .../benchmarks/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 +- contracts/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 +- .../Cargo.toml | 2 +- .../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 +- .../examples/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 +++--- contracts/examples/check-pause/meta/Cargo.toml | 2 +- contracts/examples/check-pause/wasm/Cargo.toml | 2 +- .../examples/crowdfunding-esdt/Cargo.toml | 4 ++-- .../examples/crowdfunding-esdt/meta/Cargo.toml | 2 +- .../examples/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 +- .../examples/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 +- contracts/examples/nft-subscription/Cargo.toml | 6 +++--- .../examples/nft-subscription/meta/Cargo.toml | 2 +- .../examples/nft-subscription/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 ++-- contracts/examples/proxy-pause/meta/Cargo.toml | 2 +- contracts/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 +- .../wasm-alloc-mem-fail/Cargo.toml | 2 +- .../wasm-alloc-mem-leaking/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 | 4 ++-- .../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 +- .../composability/promises-features/Cargo.toml | 2 +- .../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 +- .../composability/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 +- .../vault/wasm-vault-upgrade/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 ++-- .../erc-style-contracts/erc721/meta/Cargo.toml | 2 +- .../erc-style-contracts/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 +- .../feature-tests/exchange-features/Cargo.toml | 4 ++-- .../exchange-features/meta/Cargo.toml | 2 +- .../exchange-features/wasm/Cargo.toml | 2 +- .../formatted-message-features/Cargo.toml | 4 ++-- .../formatted-message-features/meta/Cargo.toml | 2 +- .../formatted-message-features/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 +- .../use-module/wasm-use-module-view/Cargo.toml | 2 +- .../feature-tests/use-module/wasm/Cargo.toml | 2 +- contracts/modules/Cargo.toml | 4 ++-- framework/base/Cargo.toml | 4 ++-- framework/derive/Cargo.toml | 2 +- framework/meta/Cargo.toml | 4 ++-- .../generate_snippets/snippet_crate_gen.rs | 2 +- framework/meta/src/cmd/contract/meta_config.rs | 4 ++-- framework/meta/src/version_history.rs | 3 ++- framework/scenario/Cargo.toml | 6 +++--- 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 | 4 ++-- 267 files changed, 393 insertions(+), 387 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index db5a580558..8c22847501 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,11 @@ They are: - `multiversx-chain-scenario-format`, in short `scenario-format`, scenario JSON serializer/deserializer, 1 crate. - `multiversx-sdk`, in short `sdk`, allows communication with the chain(s), 1 crate. +## [sc 0.48.0] - 2024-04-09 +- When serializing to a managed buffer, static buffer caching is disabled by default. +- `sc-meta:` - installers for wasm32 target and wasm-opt. +- Integrated traits for token management: `FixedSupplyToken`, `Mergeable`. + ## [sc 0.47.8] - 2024-03-22 - Test coverage functionality in sc-meta. - Removed deprecation from legacy whitebox testing framework, since it is still used extensively. diff --git a/Cargo.lock b/Cargo.lock index 031c4b0647..c8c6746cad 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -1798,7 +1798,7 @@ checksum = "b59072fa0624b55ae5ae3fa6bfa91515bbeb4ac440214bc4a509e2c8806d6e9f" [[package]] name = "multiversx-price-aggregator-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "arrayvec", "getrandom 0.2.12", @@ -1819,7 +1819,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags 2.4.2", "hex-literal", @@ -1849,7 +1849,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -1860,7 +1860,7 @@ dependencies = [ [[package]] name = "multiversx-sc-meta" -version = "0.47.8" +version = "0.48.0" dependencies = [ "clap", "colored", @@ -1886,14 +1886,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-scenario" -version = "0.47.8" +version = "0.48.0" dependencies = [ "base64", "bech32", @@ -1919,7 +1919,7 @@ dependencies = [ [[package]] name = "multiversx-sc-snippets" -version = "0.47.8" +version = "0.48.0" dependencies = [ "base64", "env_logger", @@ -1933,7 +1933,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] @@ -1964,7 +1964,7 @@ dependencies = [ [[package]] name = "multiversx-wegld-swap-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", "multiversx-sc-modules", diff --git a/contracts/benchmarks/large-storage/Cargo.toml b/contracts/benchmarks/large-storage/Cargo.toml index d8d51ae966..9aae12836b 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/large-storage/meta/Cargo.toml b/contracts/benchmarks/large-storage/meta/Cargo.toml index fc26387f50..0345a383dc 100644 --- a/contracts/benchmarks/large-storage/meta/Cargo.toml +++ b/contracts/benchmarks/large-storage/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/large-storage/wasm/Cargo.toml b/contracts/benchmarks/large-storage/wasm/Cargo.toml index 43578fbca6..776e59a0ce 100644 --- a/contracts/benchmarks/large-storage/wasm/Cargo.toml +++ b/contracts/benchmarks/large-storage/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/benchmark-common/Cargo.toml b/contracts/benchmarks/mappers/benchmark-common/Cargo.toml index 8677e1dc01..4c5fdb3fbc 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.47.8" +version = "0.48.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/linked-list-repeat/Cargo.toml b/contracts/benchmarks/mappers/linked-list-repeat/Cargo.toml index af3d114fd2..e2edd8010e 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.47.8" +version = "0.48.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 3c360bd518..d09a21b81b 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/linked-list-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml index bb1eb11323..8289547693 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/map-repeat/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/Cargo.toml index 18ff68251c..8090f309d1 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.47.8" +version = "0.48.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml index 2ef4df4850..3d4974e6c0 100644 --- a/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml index c49b4cfb90..9653a54fc7 100644 --- a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/queue-repeat/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/Cargo.toml index 82615c61e9..024846618c 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.47.8" +version = "0.48.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml index 6c017510da..edba3ec0f0 100644 --- a/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml index ca9077b541..77c061d305 100644 --- a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/set-repeat/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/Cargo.toml index cfabe4e46d..84bcc8722d 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.47.8" +version = "0.48.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml index c722ed9b9e..e8f3967a3a 100644 --- a/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml index 8737881c35..31ca740ad8 100644 --- a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 456e49050c..2975e1ae49 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.47.8" +version = "0.48.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 efb702f58c..1633ab9cde 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/single-value-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml index 1373a98a29..19af5c7c51 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/vec-repeat/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/Cargo.toml index 66a7f34c1e..3cd913d909 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.47.8" +version = "0.48.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml index 12c7a4952d..200297db20 100644 --- a/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml index 71308601eb..520aa883b1 100644 --- a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/send-tx-repeat/Cargo.toml b/contracts/benchmarks/send-tx-repeat/Cargo.toml index 7284596303..d0bc9aa646 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml b/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml index 0bc84fbdc2..d8b911fd5e 100644 --- a/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml index c0c13946cc..14a876b56e 100644 --- a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/str-repeat/Cargo.toml b/contracts/benchmarks/str-repeat/Cargo.toml index 867b7a97fa..7d0b90f1ba 100644 --- a/contracts/benchmarks/str-repeat/Cargo.toml +++ b/contracts/benchmarks/str-repeat/Cargo.toml @@ -12,10 +12,10 @@ path = "src/str_repeat.rs" managed-buffer-builder-cached = ["multiversx-sc/managed-buffer-builder-cached"] [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/str-repeat/meta/Cargo.toml b/contracts/benchmarks/str-repeat/meta/Cargo.toml index 6792de337f..d27ba4d2ff 100644 --- a/contracts/benchmarks/str-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/str-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml index 2e124ace9c..07a34e0d0c 100644 --- a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml +++ b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml index 0ab57dce26..69a11ff01e 100644 --- a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml +++ b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml @@ -26,7 +26,7 @@ path = ".." features = ["managed-buffer-builder-cached"] [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/str-repeat/wasm/Cargo.toml b/contracts/benchmarks/str-repeat/wasm/Cargo.toml index a36fe3ee2c..e6f3ddba95 100644 --- a/contracts/benchmarks/str-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/str-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/core/price-aggregator/Cargo.toml b/contracts/core/price-aggregator/Cargo.toml index ed988e0663..6ef93360eb 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.47.8" +version = "0.48.0" authors = [ "Claudiu-Marcel Bruda ", "MultiversX ", @@ -19,15 +19,15 @@ edition = "2021" path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.8" +version = "0.48.0" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" [dependencies] diff --git a/contracts/core/price-aggregator/meta/Cargo.toml b/contracts/core/price-aggregator/meta/Cargo.toml index 2cd9bbab1a..f8cbef8d57 100644 --- a/contracts/core/price-aggregator/meta/Cargo.toml +++ b/contracts/core/price-aggregator/meta/Cargo.toml @@ -8,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/core/price-aggregator/wasm/Cargo.toml b/contracts/core/price-aggregator/wasm/Cargo.toml index b553602e97..dc2c54549f 100644 --- a/contracts/core/price-aggregator/wasm/Cargo.toml +++ b/contracts/core/price-aggregator/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/core/wegld-swap/Cargo.toml b/contracts/core/wegld-swap/Cargo.toml index 64157bb652..f788d5c243 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.47.8" +version = "0.48.0" authors = [ "Dorin Iancu ", @@ -20,13 +20,13 @@ edition = "2021" path = "src/wegld.rs" [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.8" +version = "0.48.0" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" diff --git a/contracts/core/wegld-swap/meta/Cargo.toml b/contracts/core/wegld-swap/meta/Cargo.toml index 213dfa0c5e..f9595aea8d 100644 --- a/contracts/core/wegld-swap/meta/Cargo.toml +++ b/contracts/core/wegld-swap/meta/Cargo.toml @@ -11,10 +11,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/core/wegld-swap/wasm/Cargo.toml b/contracts/core/wegld-swap/wasm/Cargo.toml index 3dee2153c4..68037cc393 100644 --- a/contracts/core/wegld-swap/wasm/Cargo.toml +++ b/contracts/core/wegld-swap/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/adder/Cargo.toml b/contracts/examples/adder/Cargo.toml index f5a121ae40..af28bd0554 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" diff --git a/contracts/examples/adder/interact/Cargo.toml b/contracts/examples/adder/interact/Cargo.toml index 142f39c28c..3d4ad2fd1a 100644 --- a/contracts/examples/adder/interact/Cargo.toml +++ b/contracts/examples/adder/interact/Cargo.toml @@ -18,5 +18,5 @@ toml = "0.8.6" path = ".." [dependencies.multiversx-sc-snippets] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/snippets" diff --git a/contracts/examples/adder/meta/Cargo.toml b/contracts/examples/adder/meta/Cargo.toml index dfe91b3e7d..88f66d1c86 100644 --- a/contracts/examples/adder/meta/Cargo.toml +++ b/contracts/examples/adder/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/adder/wasm/Cargo.toml b/contracts/examples/adder/wasm/Cargo.toml index 21d0226bb2..d7cff9ee02 100644 --- a/contracts/examples/adder/wasm/Cargo.toml +++ b/contracts/examples/adder/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/bonding-curve-contract/Cargo.toml b/contracts/examples/bonding-curve-contract/Cargo.toml index 214b810a7f..9379cb6240 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.8" +version = "0.48.0" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" diff --git a/contracts/examples/bonding-curve-contract/meta/Cargo.toml b/contracts/examples/bonding-curve-contract/meta/Cargo.toml index 531d3b0113..42aedeffb2 100644 --- a/contracts/examples/bonding-curve-contract/meta/Cargo.toml +++ b/contracts/examples/bonding-curve-contract/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/bonding-curve-contract/wasm/Cargo.toml b/contracts/examples/bonding-curve-contract/wasm/Cargo.toml index f575a2ff9f..351e890820 100644 --- a/contracts/examples/bonding-curve-contract/wasm/Cargo.toml +++ b/contracts/examples/bonding-curve-contract/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/check-pause/Cargo.toml b/contracts/examples/check-pause/Cargo.toml index 008b308b83..3de8796660 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" [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.8" +version = "0.48.0" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" diff --git a/contracts/examples/check-pause/meta/Cargo.toml b/contracts/examples/check-pause/meta/Cargo.toml index c4b5f792f1..6fa4de8996 100644 --- a/contracts/examples/check-pause/meta/Cargo.toml +++ b/contracts/examples/check-pause/meta/Cargo.toml @@ -9,6 +9,6 @@ authors = ["Alin Cruceat "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/check-pause/wasm/Cargo.toml b/contracts/examples/check-pause/wasm/Cargo.toml index 1c40a1c120..16f0ab1ba3 100644 --- a/contracts/examples/check-pause/wasm/Cargo.toml +++ b/contracts/examples/check-pause/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crowdfunding-esdt/Cargo.toml b/contracts/examples/crowdfunding-esdt/Cargo.toml index e5a85e92fb..b2cdf8c41e 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" [dev-dependencies] diff --git a/contracts/examples/crowdfunding-esdt/meta/Cargo.toml b/contracts/examples/crowdfunding-esdt/meta/Cargo.toml index 100c48ff0b..a32bd3567a 100644 --- a/contracts/examples/crowdfunding-esdt/meta/Cargo.toml +++ b/contracts/examples/crowdfunding-esdt/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml b/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml index 2202fb5bf2..51e3aa0862 100644 --- a/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml +++ b/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-bubbles/Cargo.toml b/contracts/examples/crypto-bubbles/Cargo.toml index 2e3590429a..47b0cc1c12 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" diff --git a/contracts/examples/crypto-bubbles/meta/Cargo.toml b/contracts/examples/crypto-bubbles/meta/Cargo.toml index a1f11927a9..cff3b28c2e 100644 --- a/contracts/examples/crypto-bubbles/meta/Cargo.toml +++ b/contracts/examples/crypto-bubbles/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-bubbles/wasm/Cargo.toml b/contracts/examples/crypto-bubbles/wasm/Cargo.toml index 7075fe64da..3d0f3d9cd6 100644 --- a/contracts/examples/crypto-bubbles/wasm/Cargo.toml +++ b/contracts/examples/crypto-bubbles/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 23eaa019f3..97ff64e9ac 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.47.8" +version = "0.48.0" 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 cca99947d8..9b63e6b416 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.47.8" +version = "0.48.0" path = "../../../../../framework/base" diff --git a/contracts/examples/crypto-kitties/kitty-auction/Cargo.toml b/contracts/examples/crypto-kitties/kitty-auction/Cargo.toml index 9ee13ed08d..6fdda40603 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.47.8" +version = "0.48.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 aaf92d9d1d..2c57c9ac05 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-auction/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml index fd1bc05228..1f19435dce 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-kitties/kitty-genetic-alg/Cargo.toml b/contracts/examples/crypto-kitties/kitty-genetic-alg/Cargo.toml index 75ffc5989c..171ebb65f8 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.47.8" +version = "0.48.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 17514bb97f..a9f0a17cfa 100644 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false 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 ad70a987be..deb7ae9c6f 100644 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-kitties/kitty-ownership/Cargo.toml b/contracts/examples/crypto-kitties/kitty-ownership/Cargo.toml index 9d7e08a9cf..da5800286f 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.47.8" +version = "0.48.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 582fa4313f..ccf8cb2ea2 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-ownership/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml index 6c7f572232..b00ca52a2b 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-zombies/Cargo.toml b/contracts/examples/crypto-zombies/Cargo.toml index 63d67d258b..b0e2a4e81e 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" diff --git a/contracts/examples/crypto-zombies/meta/Cargo.toml b/contracts/examples/crypto-zombies/meta/Cargo.toml index 8a3ac45fa8..fc1eb0073f 100644 --- a/contracts/examples/crypto-zombies/meta/Cargo.toml +++ b/contracts/examples/crypto-zombies/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-zombies/wasm/Cargo.toml b/contracts/examples/crypto-zombies/wasm/Cargo.toml index fd7179dea8..51f46ac505 100644 --- a/contracts/examples/crypto-zombies/wasm/Cargo.toml +++ b/contracts/examples/crypto-zombies/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/digital-cash/Cargo.toml b/contracts/examples/digital-cash/Cargo.toml index d9bdd6b52c..6d75b7b98e 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" diff --git a/contracts/examples/digital-cash/meta/Cargo.toml b/contracts/examples/digital-cash/meta/Cargo.toml index 5692d13296..7cdda9a523 100644 --- a/contracts/examples/digital-cash/meta/Cargo.toml +++ b/contracts/examples/digital-cash/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/digital-cash/wasm/Cargo.toml b/contracts/examples/digital-cash/wasm/Cargo.toml index 1a990dca60..14a1a7e95b 100644 --- a/contracts/examples/digital-cash/wasm/Cargo.toml +++ b/contracts/examples/digital-cash/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/empty/Cargo.toml b/contracts/examples/empty/Cargo.toml index 5ed6cf966f..d36449cf82 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" [dev-dependencies] diff --git a/contracts/examples/empty/meta/Cargo.toml b/contracts/examples/empty/meta/Cargo.toml index c27adb6ad1..7b869c9cdf 100644 --- a/contracts/examples/empty/meta/Cargo.toml +++ b/contracts/examples/empty/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/empty/wasm/Cargo.toml b/contracts/examples/empty/wasm/Cargo.toml index 1c3cae4528..50c6c7519c 100644 --- a/contracts/examples/empty/wasm/Cargo.toml +++ b/contracts/examples/empty/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 e56c0ace06..62efe492c6 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 b774dd1607..41be9842d9 100644 --- a/contracts/examples/esdt-transfer-with-fee/meta/Cargo.toml +++ b/contracts/examples/esdt-transfer-with-fee/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml index 1c81968938..8e57a857ec 100644 --- a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml +++ b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/factorial/Cargo.toml b/contracts/examples/factorial/Cargo.toml index bec69a21be..f49f2de799 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" diff --git a/contracts/examples/factorial/meta/Cargo.toml b/contracts/examples/factorial/meta/Cargo.toml index 746a2c9143..561e5cc8bb 100644 --- a/contracts/examples/factorial/meta/Cargo.toml +++ b/contracts/examples/factorial/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/factorial/wasm/Cargo.toml b/contracts/examples/factorial/wasm/Cargo.toml index 550140a626..33ef155fb4 100644 --- a/contracts/examples/factorial/wasm/Cargo.toml +++ b/contracts/examples/factorial/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/fractional-nfts/Cargo.toml b/contracts/examples/fractional-nfts/Cargo.toml index 0709e73516..fda3f92c61 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.8" +version = "0.48.0" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" diff --git a/contracts/examples/fractional-nfts/meta/Cargo.toml b/contracts/examples/fractional-nfts/meta/Cargo.toml index 9026904365..330433a42f 100644 --- a/contracts/examples/fractional-nfts/meta/Cargo.toml +++ b/contracts/examples/fractional-nfts/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/fractional-nfts/wasm/Cargo.toml b/contracts/examples/fractional-nfts/wasm/Cargo.toml index 26ca3dc694..036b0bfd69 100644 --- a/contracts/examples/fractional-nfts/wasm/Cargo.toml +++ b/contracts/examples/fractional-nfts/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/lottery-esdt/Cargo.toml b/contracts/examples/lottery-esdt/Cargo.toml index 51341883a4..47ef0326fd 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" diff --git a/contracts/examples/lottery-esdt/meta/Cargo.toml b/contracts/examples/lottery-esdt/meta/Cargo.toml index f528e0359d..5b87c8ade8 100644 --- a/contracts/examples/lottery-esdt/meta/Cargo.toml +++ b/contracts/examples/lottery-esdt/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/lottery-esdt/wasm/Cargo.toml b/contracts/examples/lottery-esdt/wasm/Cargo.toml index c780b8253f..6839c9dec0 100644 --- a/contracts/examples/lottery-esdt/wasm/Cargo.toml +++ b/contracts/examples/lottery-esdt/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/multisig/Cargo.toml b/contracts/examples/multisig/Cargo.toml index 5a4ac52971..f7bdb30ed5 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.8" +version = "0.48.0" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" [dev-dependencies.adder] @@ -27,7 +27,7 @@ path = "../adder" path = "../factorial" [dev-dependencies.multiversx-wegld-swap-sc] -version = "0.47.8" +version = "0.48.0" path = "../../core/wegld-swap" [dev-dependencies] diff --git a/contracts/examples/multisig/interact/Cargo.toml b/contracts/examples/multisig/interact/Cargo.toml index 06f7debcdc..fef68a6a22 100644 --- a/contracts/examples/multisig/interact/Cargo.toml +++ b/contracts/examples/multisig/interact/Cargo.toml @@ -18,13 +18,13 @@ toml = "0.8.6" path = ".." [dependencies.multiversx-sc-modules] -version = "0.47.8" +version = "0.48.0" path = "../../../../contracts/modules" [dependencies.multiversx-sc-snippets] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/snippets" [dependencies.multiversx-sc-scenario] -version = "=0.47.8" +version = "=0.48.0" path = "../../../../framework/scenario" diff --git a/contracts/examples/multisig/meta/Cargo.toml b/contracts/examples/multisig/meta/Cargo.toml index 67b228a5dd..02d4e80d81 100644 --- a/contracts/examples/multisig/meta/Cargo.toml +++ b/contracts/examples/multisig/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/multisig/wasm-multisig-full/Cargo.toml b/contracts/examples/multisig/wasm-multisig-full/Cargo.toml index 004b0e97f5..7660525b67 100644 --- a/contracts/examples/multisig/wasm-multisig-full/Cargo.toml +++ b/contracts/examples/multisig/wasm-multisig-full/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 28b230710b..49be4aa565 100644 --- a/contracts/examples/multisig/wasm-multisig-view/Cargo.toml +++ b/contracts/examples/multisig/wasm-multisig-view/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/multisig/wasm/Cargo.toml b/contracts/examples/multisig/wasm/Cargo.toml index 3a2268d369..708980188e 100644 --- a/contracts/examples/multisig/wasm/Cargo.toml +++ b/contracts/examples/multisig/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-minter/Cargo.toml b/contracts/examples/nft-minter/Cargo.toml index 89ee1e27f1..b845b98fc9 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-minter/meta/Cargo.toml b/contracts/examples/nft-minter/meta/Cargo.toml index 6e3b2dfc81..16bc48dabd 100644 --- a/contracts/examples/nft-minter/meta/Cargo.toml +++ b/contracts/examples/nft-minter/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-minter/wasm/Cargo.toml b/contracts/examples/nft-minter/wasm/Cargo.toml index d9001e8b30..800d0012f8 100644 --- a/contracts/examples/nft-minter/wasm/Cargo.toml +++ b/contracts/examples/nft-minter/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-storage-prepay/Cargo.toml b/contracts/examples/nft-storage-prepay/Cargo.toml index ee4e7cbf03..b3fe4779eb 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-storage-prepay/meta/Cargo.toml b/contracts/examples/nft-storage-prepay/meta/Cargo.toml index faa27e4d8b..8bd9be5154 100644 --- a/contracts/examples/nft-storage-prepay/meta/Cargo.toml +++ b/contracts/examples/nft-storage-prepay/meta/Cargo.toml @@ -11,6 +11,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-storage-prepay/wasm/Cargo.toml b/contracts/examples/nft-storage-prepay/wasm/Cargo.toml index 1e5478ddae..4966016fe3 100644 --- a/contracts/examples/nft-storage-prepay/wasm/Cargo.toml +++ b/contracts/examples/nft-storage-prepay/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-subscription/Cargo.toml b/contracts/examples/nft-subscription/Cargo.toml index deb7f32494..fce4b0e4be 100644 --- a/contracts/examples/nft-subscription/Cargo.toml +++ b/contracts/examples/nft-subscription/Cargo.toml @@ -9,13 +9,13 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.8" +version = "0.48.0" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-subscription/meta/Cargo.toml b/contracts/examples/nft-subscription/meta/Cargo.toml index 2d002e2afb..60363c9f03 100644 --- a/contracts/examples/nft-subscription/meta/Cargo.toml +++ b/contracts/examples/nft-subscription/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-subscription/wasm/Cargo.toml b/contracts/examples/nft-subscription/wasm/Cargo.toml index 9d6afb20b4..20cfc13365 100644 --- a/contracts/examples/nft-subscription/wasm/Cargo.toml +++ b/contracts/examples/nft-subscription/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/order-book/factory/Cargo.toml b/contracts/examples/order-book/factory/Cargo.toml index 89c01440da..1715338ef5 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.47.8" +version = "0.48.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/scenario" diff --git a/contracts/examples/order-book/factory/meta/Cargo.toml b/contracts/examples/order-book/factory/meta/Cargo.toml index 9854915232..3b5a3f22e1 100644 --- a/contracts/examples/order-book/factory/meta/Cargo.toml +++ b/contracts/examples/order-book/factory/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/order-book/factory/wasm/Cargo.toml b/contracts/examples/order-book/factory/wasm/Cargo.toml index 1d66994d44..e198620a70 100644 --- a/contracts/examples/order-book/factory/wasm/Cargo.toml +++ b/contracts/examples/order-book/factory/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/order-book/pair/Cargo.toml b/contracts/examples/order-book/pair/Cargo.toml index 0063356649..e87e2df5fd 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.47.8" +version = "0.48.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/scenario" diff --git a/contracts/examples/order-book/pair/meta/Cargo.toml b/contracts/examples/order-book/pair/meta/Cargo.toml index b71a025162..944ad90283 100644 --- a/contracts/examples/order-book/pair/meta/Cargo.toml +++ b/contracts/examples/order-book/pair/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/order-book/pair/wasm/Cargo.toml b/contracts/examples/order-book/pair/wasm/Cargo.toml index 08d0fb2c86..db63ea95cf 100644 --- a/contracts/examples/order-book/pair/wasm/Cargo.toml +++ b/contracts/examples/order-book/pair/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/ping-pong-egld/Cargo.toml b/contracts/examples/ping-pong-egld/Cargo.toml index ed353384c1..7b835c30a9 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" diff --git a/contracts/examples/ping-pong-egld/meta/Cargo.toml b/contracts/examples/ping-pong-egld/meta/Cargo.toml index 627ba0bf33..35e1eb7004 100644 --- a/contracts/examples/ping-pong-egld/meta/Cargo.toml +++ b/contracts/examples/ping-pong-egld/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/ping-pong-egld/wasm/Cargo.toml b/contracts/examples/ping-pong-egld/wasm/Cargo.toml index ca2420cd15..212fc83957 100644 --- a/contracts/examples/ping-pong-egld/wasm/Cargo.toml +++ b/contracts/examples/ping-pong-egld/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/proxy-pause/Cargo.toml b/contracts/examples/proxy-pause/Cargo.toml index 8f185a46a3..1cb8060d0c 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 13a900ebe5..654659ac3a 100644 --- a/contracts/examples/proxy-pause/meta/Cargo.toml +++ b/contracts/examples/proxy-pause/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = [ "you",] path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/proxy-pause/wasm/Cargo.toml b/contracts/examples/proxy-pause/wasm/Cargo.toml index 214e9930eb..9071e6aad0 100644 --- a/contracts/examples/proxy-pause/wasm/Cargo.toml +++ b/contracts/examples/proxy-pause/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/rewards-distribution/Cargo.toml b/contracts/examples/rewards-distribution/Cargo.toml index 6addeb95a8..d17e0cf877 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.8" +version = "0.48.0" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" diff --git a/contracts/examples/rewards-distribution/meta/Cargo.toml b/contracts/examples/rewards-distribution/meta/Cargo.toml index 92c25000a7..6e3700a114 100644 --- a/contracts/examples/rewards-distribution/meta/Cargo.toml +++ b/contracts/examples/rewards-distribution/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = ["Claudiu-Marcel Bruda "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/rewards-distribution/wasm/Cargo.toml b/contracts/examples/rewards-distribution/wasm/Cargo.toml index e095d7be11..0240cad321 100644 --- a/contracts/examples/rewards-distribution/wasm/Cargo.toml +++ b/contracts/examples/rewards-distribution/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/seed-nft-minter/Cargo.toml b/contracts/examples/seed-nft-minter/Cargo.toml index f544ddebf2..466ef0d0d0 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.8" +version = "0.48.0" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" diff --git a/contracts/examples/seed-nft-minter/meta/Cargo.toml b/contracts/examples/seed-nft-minter/meta/Cargo.toml index c9f4fb9159..2a9164c5d5 100644 --- a/contracts/examples/seed-nft-minter/meta/Cargo.toml +++ b/contracts/examples/seed-nft-minter/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = ["Claudiu-Marcel Bruda "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/seed-nft-minter/wasm/Cargo.toml b/contracts/examples/seed-nft-minter/wasm/Cargo.toml index d32e1ba149..b16c0eb5be 100644 --- a/contracts/examples/seed-nft-minter/wasm/Cargo.toml +++ b/contracts/examples/seed-nft-minter/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/token-release/Cargo.toml b/contracts/examples/token-release/Cargo.toml index 4909074ab7..1ef042c083 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" diff --git a/contracts/examples/token-release/meta/Cargo.toml b/contracts/examples/token-release/meta/Cargo.toml index 2b61364559..9f5e40cb3f 100644 --- a/contracts/examples/token-release/meta/Cargo.toml +++ b/contracts/examples/token-release/meta/Cargo.toml @@ -10,7 +10,7 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/token-release/wasm/Cargo.toml b/contracts/examples/token-release/wasm/Cargo.toml index 48ca0061b0..a5e9ad9ebb 100644 --- a/contracts/examples/token-release/wasm/Cargo.toml +++ b/contracts/examples/token-release/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/abi-tester/Cargo.toml b/contracts/feature-tests/abi-tester/Cargo.toml index d2335a15b8..388a559e3f 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.47.8" +version = "0.48.0" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" [dev-dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" 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 d3e2a4d8ac..2e2ef38272 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.47.8" + "version": "0.48.0" } }, "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 5d1bde1cfa..1219d4fe9b 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.47.8" + "version": "0.48.0" } }, "docs": [ diff --git a/contracts/feature-tests/abi-tester/meta/Cargo.toml b/contracts/feature-tests/abi-tester/meta/Cargo.toml index f8070e33ff..f494dd338d 100644 --- a/contracts/feature-tests/abi-tester/meta/Cargo.toml +++ b/contracts/feature-tests/abi-tester/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false 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 64cdfb6c85..05200dcfbb 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 a8952129d6..6bc368141a 100644 --- a/contracts/feature-tests/abi-tester/wasm/Cargo.toml +++ b/contracts/feature-tests/abi-tester/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/Cargo.toml b/contracts/feature-tests/alloc-features/Cargo.toml index 814c55b656..ed5f30b32f 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.47.8" +version = "0.48.0" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 62255e15fa..95d1615d64 100644 --- a/contracts/feature-tests/alloc-features/meta/Cargo.toml +++ b/contracts/feature-tests/alloc-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml index 52c6563e32..e79f7e1f26 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml index 1fac4d058d..e8ca98b331 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/wasm/Cargo.toml b/contracts/feature-tests/alloc-features/wasm/Cargo.toml index ab5fb829ca..b5565d0ed2 100644 --- a/contracts/feature-tests/alloc-features/wasm/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/basic-features/Cargo.toml b/contracts/feature-tests/basic-features/Cargo.toml index 5529ecea8d..a9d29b944a 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" [dependencies.multiversx-sc-modules] -version = "0.47.8" +version = "0.48.0" 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 89b7ac2add..73201f5eaa 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.8.6" path = ".." [dependencies.multiversx-sc-snippets] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/snippets" diff --git a/contracts/feature-tests/basic-features/meta/Cargo.toml b/contracts/feature-tests/basic-features/meta/Cargo.toml index 327f8c74a4..8afa191498 100644 --- a/contracts/feature-tests/basic-features/meta/Cargo.toml +++ b/contracts/feature-tests/basic-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false 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 661bc1146e..d138f0ea4b 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 3973b0842c..21bdef1ace 100644 --- a/contracts/feature-tests/basic-features/wasm/Cargo.toml +++ b/contracts/feature-tests/basic-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = true path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 8ac9cfb28a..720bcbd08e 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 ae56a96cbe..e30a20c1c5 100644 --- a/contracts/feature-tests/big-float-features/meta/Cargo.toml +++ b/contracts/feature-tests/big-float-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/big-float-features/wasm/Cargo.toml b/contracts/feature-tests/big-float-features/wasm/Cargo.toml index 6f693347c9..52dbbfc0b8 100644 --- a/contracts/feature-tests/big-float-features/wasm/Cargo.toml +++ b/contracts/feature-tests/big-float-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/Cargo.toml b/contracts/feature-tests/composability/Cargo.toml index 72b9f9f248..abfaefa4b8 100644 --- a/contracts/feature-tests/composability/Cargo.toml +++ b/contracts/feature-tests/composability/Cargo.toml @@ -33,9 +33,9 @@ path = "recursive-caller" path = "vault" [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 ffa3071ea0..be47382548 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.47.8" +version = "0.48.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 8ad49c4ae9..6bc3a0d913 100644 --- a/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false 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 5e5e2253c2..07f233341c 100644 --- a/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 7e9bdb354b..7a5ca344e2 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.47.8" +version = "0.48.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 96088fcc89..46f86e301b 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.47.8" +version = "0.48.0" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 83d74291d0..08b8dc1856 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../../framework/meta" default-features = false 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 3d060317d0..209e8f2846 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 158aae66f8..862cbd2b83 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.47.8" +version = "0.48.0" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 9d5bce7286..186a1e4e03 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../../framework/meta" default-features = false 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 ce110829f3..0e23835bda 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 bcd33e4734..fd79fe48f9 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 3b8cfb5174..3059fd0285 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.47.8" +version = "0.48.0" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 850924c2d7..060df7dcde 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../../framework/meta" default-features = false 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 894f1e4a4b..680b44e189 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 f338b5dece..503d0fc258 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.47.8" +version = "0.48.0" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 571de47a23..046302572d 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../../framework/meta" default-features = false 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 5efabe6632..a6be0ec3ff 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 45d7fd86c0..7f9e36e869 100644 --- a/contracts/feature-tests/composability/forwarder-queue/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/Cargo.toml @@ -12,14 +12,14 @@ path = "src/forwarder_queue.rs" path = "../vault" [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/base" [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" optional = true [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 9683e7d49b..83a6f94e22 100644 --- a/contracts/feature-tests/composability/forwarder-queue/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false 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 3b33f8dedc..3f8605b67d 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 e50bec1684..522720c797 100644 --- a/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 63f7f1d1f9..898735c43e 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.47.8" +version = "0.48.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 f10e13d7dd..5cf1a567e8 100644 --- a/contracts/feature-tests/composability/forwarder-raw/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-raw/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false 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 3e70d341d7..44f7e3b5eb 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 028cc4f9c8..7f865a4e03 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 82fdd0688b..cbc950745d 100644 --- a/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/forwarder/Cargo.toml b/contracts/feature-tests/composability/forwarder/Cargo.toml index 92b1504a59..d4cd960015 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.47.8" +version = "0.48.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/forwarder/meta/Cargo.toml b/contracts/feature-tests/composability/forwarder/meta/Cargo.toml index 613c92b16e..677ae9b198 100644 --- a/contracts/feature-tests/composability/forwarder/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml b/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml index 5bb46d0307..87d3ac47c6 100644 --- a/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/interact/Cargo.toml b/contracts/feature-tests/composability/interact/Cargo.toml index b3721732fd..f06c1178a1 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.47.8" +version = "0.48.0" path = "../../../../contracts/modules" [dependencies.multiversx-sc-snippets] -version = "0.47.8" +version = "0.48.0" 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 46f7436547..8ad9825389 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.47.8" +version = "0.48.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 999999a718..fea51513bd 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,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false 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 bfca51da3a..73dceaa520 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 342c5b1456..9efa7a4a11 100644 --- a/contracts/feature-tests/composability/promises-features/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/Cargo.toml @@ -12,6 +12,6 @@ path = "src/promises_main.rs" path = "../vault" [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/base" diff --git a/contracts/feature-tests/composability/promises-features/meta/Cargo.toml b/contracts/feature-tests/composability/promises-features/meta/Cargo.toml index c0375d049f..ca156aaf23 100644 --- a/contracts/feature-tests/composability/promises-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml b/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml index 557e5818c2..324dafa5d4 100644 --- a/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 f3629b7af5..fe652ba3d0 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.4.1" [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 68f5e3fce2..db20a499dd 100644 --- a/contracts/feature-tests/composability/proxy-test-first/meta/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-first/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false 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 44d547460f..c1eebcc5b9 100644 --- a/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 3f985bf59b..1f84784bcc 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.47.8" +version = "0.48.0" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 da932e6e3e..1838388c4a 100644 --- a/contracts/feature-tests/composability/proxy-test-second/meta/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-second/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false 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 883b4ca57e..3dc55bf167 100644 --- a/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 edf1153a21..e68bc01059 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.47.8" +version = "0.48.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 b7d04141e7..631c940ac7 100644 --- a/contracts/feature-tests/composability/recursive-caller/meta/Cargo.toml +++ b/contracts/feature-tests/composability/recursive-caller/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml index e4b324558a..d040ee6a0e 100644 --- a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 f8b73bd1ed..ec4dd83adb 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.47.8" +version = "0.48.0" path = "../../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.47.8" +version = "0.48.0" path = "../../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 838f62ec07..1e918a72cc 100644 --- a/contracts/feature-tests/composability/transfer-role-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/transfer-role-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false 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 7b4e0119bd..dca2b5415f 100644 --- a/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/vault/Cargo.toml b/contracts/feature-tests/composability/vault/Cargo.toml index 4ffd03f581..a4a8ecc80c 100644 --- a/contracts/feature-tests/composability/vault/Cargo.toml +++ b/contracts/feature-tests/composability/vault/Cargo.toml @@ -10,9 +10,9 @@ path = "src/vault.rs" [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/vault/meta/Cargo.toml b/contracts/feature-tests/composability/vault/meta/Cargo.toml index 0f93896e19..e99529f668 100644 --- a/contracts/feature-tests/composability/vault/meta/Cargo.toml +++ b/contracts/feature-tests/composability/vault/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false 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 2693692ecb..f598ee7a66 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml index 9a3472c495..cb8b2e5076 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 13fd270b33..7513310bff 100644 --- a/contracts/feature-tests/composability/vault/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 8927b8f85e..ff4595fa13 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.47.8" +version = "0.48.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 0450a2b95d..0dc9b2ca7f 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false 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 7d42a6b0c3..0aea0a7c62 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 52e5e2a3d1..747b44ed09 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.47.8" +version = "0.48.0" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 f6a0e60410..50152e90f4 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false 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 d8fe625b1d..516a43eb63 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 4827e78bf8..29330a315c 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.47.8" +version = "0.48.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 1162ceb5ba..5094698b9a 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false 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 ae8a024f7d..ceb1f2e24f 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 3fb1f66765..ba949e755a 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.47.8" +version = "0.48.0" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 73652ff74a..34f1067c10 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false 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 6ecc47676f..32dc473808 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 b7406f877d..b4cf18bfad 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.47.8" +version = "0.48.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 e823cd155d..41e8801b40 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc20/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false 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 101d4d596f..236319abc4 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 d1a58ed741..4501c0b464 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.47.8" +version = "0.48.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 bd511266c5..a9529971a8 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc721/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false 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 d76eb68fd8..e5db8a5667 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/wasm-adapter" [workspace] 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 464c79efd7..3469c841a7 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.47.8" +version = "0.48.0" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 40901de7a7..02486b2086 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/meta" default-features = false 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 ec4f4653ac..42237353f2 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/esdt-system-sc-mock/Cargo.toml b/contracts/feature-tests/esdt-system-sc-mock/Cargo.toml index 6cdb6d9217..8740d1fdcb 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 d66c92f437..88dc69e511 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/meta/Cargo.toml +++ b/contracts/feature-tests/esdt-system-sc-mock/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false 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 910198734b..710f03a2f5 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.toml +++ b/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/exchange-features/Cargo.toml b/contracts/feature-tests/exchange-features/Cargo.toml index bdb1a7dd66..adf86f8ae9 100644 --- a/contracts/feature-tests/exchange-features/Cargo.toml +++ b/contracts/feature-tests/exchange-features/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/exchange_features.rs" [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/exchange-features/meta/Cargo.toml b/contracts/feature-tests/exchange-features/meta/Cargo.toml index ca186c0ec1..589d79efaa 100644 --- a/contracts/feature-tests/exchange-features/meta/Cargo.toml +++ b/contracts/feature-tests/exchange-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/exchange-features/wasm/Cargo.toml b/contracts/feature-tests/exchange-features/wasm/Cargo.toml index 977914cedf..ab4527595f 100644 --- a/contracts/feature-tests/exchange-features/wasm/Cargo.toml +++ b/contracts/feature-tests/exchange-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 13c5d9ec32..684fa23b9d 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 6059435514..3657415363 100644 --- a/contracts/feature-tests/formatted-message-features/meta/Cargo.toml +++ b/contracts/feature-tests/formatted-message-features/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = [ "you",] path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml b/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml index 0ada82ca9b..4f674abe4b 100644 --- a/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml +++ b/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/managed-map-features/Cargo.toml b/contracts/feature-tests/managed-map-features/Cargo.toml index cf64d6b26b..cb63f04709 100644 --- a/contracts/feature-tests/managed-map-features/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/Cargo.toml @@ -9,11 +9,11 @@ publish = false path = "src/mmap_features.rs" [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 022e576282..61694618e8 100644 --- a/contracts/feature-tests/managed-map-features/meta/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/managed-map-features/wasm/Cargo.toml b/contracts/feature-tests/managed-map-features/wasm/Cargo.toml index b01e83de22..17766d61c0 100644 --- a/contracts/feature-tests/managed-map-features/wasm/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 55b238d90f..3dbd436d23 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 7a30e9f032..47d91e055b 100644 --- a/contracts/feature-tests/multi-contract-features/meta/Cargo.toml +++ b/contracts/feature-tests/multi-contract-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false 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 9e59c8cf59..d79a234dd7 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 e455698505..e0860d7f9f 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 @@ -26,7 +26,7 @@ path = ".." features = ["example_feature"] [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 c57395bee3..a54dbf64d6 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 a4ccad2d0a..43733a6182 100644 --- a/contracts/feature-tests/multi-contract-features/wasm/Cargo.toml +++ b/contracts/feature-tests/multi-contract-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 3c6eb639a6..91e73a3ee1 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 b5b6de2443..c456c8c35c 100644 --- a/contracts/feature-tests/panic-message-features/meta/Cargo.toml +++ b/contracts/feature-tests/panic-message-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/panic-message-features/wasm/Cargo.toml b/contracts/feature-tests/panic-message-features/wasm/Cargo.toml index 0df3393018..06895f2613 100644 --- a/contracts/feature-tests/panic-message-features/wasm/Cargo.toml +++ b/contracts/feature-tests/panic-message-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/payable-features/Cargo.toml b/contracts/feature-tests/payable-features/Cargo.toml index bcb27446c2..713b045b04 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/payable-features/meta/Cargo.toml b/contracts/feature-tests/payable-features/meta/Cargo.toml index baced24321..93e4981ee2 100644 --- a/contracts/feature-tests/payable-features/meta/Cargo.toml +++ b/contracts/feature-tests/payable-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/payable-features/wasm/Cargo.toml b/contracts/feature-tests/payable-features/wasm/Cargo.toml index 58274256ad..790b323a3a 100644 --- a/contracts/feature-tests/payable-features/wasm/Cargo.toml +++ b/contracts/feature-tests/payable-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 21ff7ba5f7..e90edbe6d6 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.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 7415ce614c..e0912a5305 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.47.8" +version = "0.48.0" 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 a134a77263..7395919b55 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/meta/Cargo.toml +++ b/contracts/feature-tests/rust-snippets-generator-test/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false 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 deb116da19..4724df6a59 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.47.8" +// version = "0.48.0" // 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 62dc6c73a4..60ad1ebb93 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.toml +++ b/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 1a5fa9375d..fcdf74843b 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.47.8" +version = "0.48.0" path = "../../../framework/base" features = [ "alloc" ] @@ -17,7 +17,7 @@ path = "../../examples/adder" path = "../../feature-tests/basic-features" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" 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 d9601c6185..cf03d27bcb 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/meta/Cargo.toml +++ b/contracts/feature-tests/rust-testing-framework-tester/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false 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 aa6193531a..2431c1c2b8 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.toml +++ b/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/use-module/Cargo.toml b/contracts/feature-tests/use-module/Cargo.toml index f0dd37e380..501ea6f461 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.47.8" +version = "0.48.0" path = "../../../contracts/modules" [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/scenario" [dev-dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../framework/meta" diff --git a/contracts/feature-tests/use-module/meta/Cargo.toml b/contracts/feature-tests/use-module/meta/Cargo.toml index c23e5696aa..c5f47f1892 100644 --- a/contracts/feature-tests/use-module/meta/Cargo.toml +++ b/contracts/feature-tests/use-module/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/use-module/meta/abi/Cargo.toml b/contracts/feature-tests/use-module/meta/abi/Cargo.toml index 41b204dcd7..6a6a8b029c 100644 --- a/contracts/feature-tests/use-module/meta/abi/Cargo.toml +++ b/contracts/feature-tests/use-module/meta/abi/Cargo.toml @@ -9,10 +9,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/meta" default-features = false 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 b40f0e911c..cd34bba6d9 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.47.8" + "version": "0.48.0" } }, "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 a2e1621128..e91480ad37 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.47.8" + "version": "0.48.0" } }, "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 55ded78fe6..455a51b925 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" 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 571611596c..2a4a269055 100644 --- a/contracts/feature-tests/use-module/wasm/Cargo.toml +++ b/contracts/feature-tests/use-module/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.47.8" +version = "0.48.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/modules/Cargo.toml b/contracts/modules/Cargo.toml index b7df46cac1..14775b4f4d 100644 --- a/contracts/modules/Cargo.toml +++ b/contracts/modules/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-modules" -version = "0.47.8" +version = "0.48.0" edition = "2021" authors = ["MultiversX "] @@ -17,5 +17,5 @@ categories = ["no-std", "wasm", "cryptography::cryptocurrencies"] alloc = ["multiversx-sc/alloc"] [dependencies.multiversx-sc] -version = "0.47.8" +version = "0.48.0" path = "../../framework/base" diff --git a/framework/base/Cargo.toml b/framework/base/Cargo.toml index 961a0c59d5..646fc2fe56 100644 --- a/framework/base/Cargo.toml +++ b/framework/base/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" edition = "2021" authors = ["Andrei Marinica ", "MultiversX "] @@ -28,7 +28,7 @@ bitflags = "=2.4.2" num-traits = { version = "=0.2.17", default-features = false } [dependencies.multiversx-sc-derive] -version = "=0.47.8" +version = "=0.48.0" path = "../derive" [dependencies.multiversx-sc-codec] diff --git a/framework/derive/Cargo.toml b/framework/derive/Cargo.toml index c615da8563..2130f5c384 100644 --- a/framework/derive/Cargo.toml +++ b/framework/derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" edition = "2021" authors = ["Andrei Marinica ", "MultiversX "] diff --git a/framework/meta/Cargo.toml b/framework/meta/Cargo.toml index a8775be7a2..9080bf7e04 100644 --- a/framework/meta/Cargo.toml +++ b/framework/meta/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-meta" -version = "0.47.8" +version = "0.48.0" edition = "2021" authors = [ @@ -52,7 +52,7 @@ pathdiff = { version = "0.2.1", optional = true } common-path = { version = "1.0.0", optional = true } [dependencies.multiversx-sc] -version = "=0.47.8" +version = "=0.48.0" path = "../base" features = ["alloc", "num-bigint"] 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 98e686cd90..a6dfb155a3 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.47.8" +version = "0.48.0" # [workspace] diff --git a/framework/meta/src/cmd/contract/meta_config.rs b/framework/meta/src/cmd/contract/meta_config.rs index df9f1ab337..760e4f6b38 100644 --- a/framework/meta/src/cmd/contract/meta_config.rs +++ b/framework/meta/src/cmd/contract/meta_config.rs @@ -205,7 +205,7 @@ overflow-checks = false path = \"..\" [dependencies.multiversx-sc-wasm-adapter] -version = \"0.47.8\" +version = \"0.48.0\" path = \"../../../../framework/wasm-adapter\" [workspace] @@ -218,7 +218,7 @@ members = [\".\"] name: "test".to_string(), edition: "2021".to_string(), profile: ContractVariantProfile::default(), - framework_version: "0.47.8".to_string(), + framework_version: "0.48.0".to_string(), framework_path: Option::Some("../../../framework/base".to_string()), contract_features: Vec::::new(), }; diff --git a/framework/meta/src/version_history.rs b/framework/meta/src/version_history.rs index 7b79e2ff5b..45b66d2e25 100644 --- a/framework/meta/src/version_history.rs +++ b/framework/meta/src/version_history.rs @@ -3,7 +3,7 @@ use crate::{framework_version, framework_versions, version::FrameworkVersion}; /// 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: FrameworkVersion = framework_version!(0.47.8); +pub const LAST_VERSION: FrameworkVersion = framework_version!(0.48.0); /// Indicates where to stop with the upgrades. pub const LAST_UPGRADE_VERSION: FrameworkVersion = LAST_VERSION; @@ -66,6 +66,7 @@ pub const VERSIONS: &[FrameworkVersion] = framework_versions![ 0.47.6, 0.47.7, 0.47.8, + 0.48.0, ]; #[rustfmt::skip] diff --git a/framework/scenario/Cargo.toml b/framework/scenario/Cargo.toml index 0e138752e6..0d487891c3 100644 --- a/framework/scenario/Cargo.toml +++ b/framework/scenario/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-scenario" -version = "0.47.8" +version = "0.48.0" edition = "2021" authors = [ @@ -40,12 +40,12 @@ path = "src/main.rs" run-go-tests = [] [dependencies.multiversx-sc] -version = "=0.47.8" +version = "=0.48.0" features = ["alloc", "num-bigint"] path = "../base" [dependencies.multiversx-sc-meta] -version = "=0.47.8" +version = "=0.48.0" path = "../meta" [dependencies.multiversx-chain-scenario-format] diff --git a/framework/snippets/Cargo.toml b/framework/snippets/Cargo.toml index 14426e25fe..8fd24f67cb 100644 --- a/framework/snippets/Cargo.toml +++ b/framework/snippets/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-snippets" -version = "0.47.8" +version = "0.48.0" edition = "2021" authors = ["MultiversX "] @@ -22,7 +22,7 @@ env_logger = "0.11" futures = "0.3" [dependencies.multiversx-sc-scenario] -version = "=0.47.8" +version = "=0.48.0" path = "../scenario" [dependencies.multiversx-sdk] diff --git a/framework/wasm-adapter/Cargo.toml b/framework/wasm-adapter/Cargo.toml index b75da45633..a73659240a 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.47.8" +version = "0.48.0" edition = "2021" authors = [ @@ -22,5 +22,5 @@ categories = [ ] [dependencies.multiversx-sc] -version = "=0.47.8" +version = "=0.48.0" path = "../base" diff --git a/tools/mxpy-snippet-generator/Cargo.toml b/tools/mxpy-snippet-generator/Cargo.toml index 4253ef6872..ca71edf2e8 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.47.8" +version = "0.48.0" path = "../../framework/base" [dependencies] diff --git a/tools/rust-debugger/format-tests/Cargo.toml b/tools/rust-debugger/format-tests/Cargo.toml index c838a1d924..0e22178945 100644 --- a/tools/rust-debugger/format-tests/Cargo.toml +++ b/tools/rust-debugger/format-tests/Cargo.toml @@ -9,11 +9,11 @@ name = "format-tests" path = "src/format_tests.rs" [dependencies.multiversx-sc] -version = "=0.47.8" +version = "=0.48.0" path = "../../../framework/base" [dependencies.multiversx-sc-scenario] -version = "=0.47.8" +version = "=0.48.0" path = "../../../framework/scenario" [dependencies.multiversx-chain-vm] From 66e38cbfa399789053ab29e0d31346098ee0674f Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 9 Apr 2024 09:50:38 +0300 Subject: [PATCH 300/461] Cargo.lock update --- .../benchmarks/large-storage/wasm/Cargo.lock | 10 ++++----- .../linked-list-repeat/wasm/Cargo.lock | 10 ++++----- .../mappers/map-repeat/wasm/Cargo.lock | 10 ++++----- .../mappers/queue-repeat/wasm/Cargo.lock | 10 ++++----- .../mappers/set-repeat/wasm/Cargo.lock | 10 ++++----- .../single-value-repeat/wasm/Cargo.lock | 10 ++++----- .../mappers/vec-repeat/wasm/Cargo.lock | 10 ++++----- .../benchmarks/send-tx-repeat/wasm/Cargo.lock | 10 ++++----- .../Cargo.lock | 6 ++--- .../Cargo.lock | 6 ++--- .../benchmarks/str-repeat/wasm/Cargo.lock | 10 ++++----- .../core/price-aggregator/wasm/Cargo.lock | 22 +++++++++---------- contracts/examples/adder/wasm/Cargo.lock | 10 ++++----- .../bonding-curve-contract/wasm/Cargo.lock | 12 +++++----- .../examples/check-pause/wasm/Cargo.lock | 12 +++++----- .../crowdfunding-esdt/wasm/Cargo.lock | 10 ++++----- .../examples/crypto-bubbles/wasm/Cargo.lock | 10 ++++----- .../kitty-auction/wasm/Cargo.lock | 10 ++++----- .../kitty-genetic-alg/wasm/Cargo.lock | 10 ++++----- .../kitty-ownership/wasm/Cargo.lock | 10 ++++----- .../examples/crypto-zombies/wasm/Cargo.lock | 10 ++++----- .../examples/digital-cash/wasm/Cargo.lock | 10 ++++----- contracts/examples/empty/wasm/Cargo.lock | 10 ++++----- .../esdt-transfer-with-fee/wasm/Cargo.lock | 10 ++++----- contracts/examples/factorial/wasm/Cargo.lock | 10 ++++----- .../examples/fractional-nfts/wasm/Cargo.lock | 12 +++++----- .../examples/lottery-esdt/wasm/Cargo.lock | 10 ++++----- .../multisig/wasm-multisig-full/Cargo.lock | 12 +++++----- .../multisig/wasm-multisig-view/Cargo.lock | 12 +++++----- contracts/examples/multisig/wasm/Cargo.lock | 12 +++++----- contracts/examples/nft-minter/wasm/Cargo.lock | 10 ++++----- .../nft-storage-prepay/wasm/Cargo.lock | 10 ++++----- .../examples/nft-subscription/wasm/Cargo.lock | 12 +++++----- .../order-book/factory/wasm/Cargo.lock | 10 ++++----- .../examples/order-book/pair/wasm/Cargo.lock | 10 ++++----- .../examples/ping-pong-egld/wasm/Cargo.lock | 10 ++++----- .../examples/proxy-pause/wasm/Cargo.lock | 10 ++++----- .../rewards-distribution/wasm/Cargo.lock | 12 +++++----- .../examples/seed-nft-minter/wasm/Cargo.lock | 12 +++++----- .../examples/token-release/wasm/Cargo.lock | 10 ++++----- .../abi-tester/wasm-abi-tester-ev/Cargo.lock | 10 ++++----- .../feature-tests/abi-tester/wasm/Cargo.lock | 10 ++++----- .../wasm-alloc-mem-fail/Cargo.lock | 10 ++++----- .../wasm-alloc-mem-leaking/Cargo.lock | 10 ++++----- .../alloc-features/wasm/Cargo.lock | 10 ++++----- .../Cargo.lock | 12 +++++----- .../basic-features/wasm/Cargo.lock | 12 +++++----- .../big-float-features/wasm/Cargo.lock | 10 ++++----- .../builtin-func-features/wasm/Cargo.lock | 10 ++++----- .../first-contract/wasm/Cargo.lock | 10 ++++----- .../second-contract/wasm/Cargo.lock | 10 ++++----- .../child/wasm/Cargo.lock | 10 ++++----- .../parent/wasm/Cargo.lock | 10 ++++----- .../wasm-forwarder-queue-promises/Cargo.lock | 10 ++++----- .../forwarder-queue/wasm/Cargo.lock | 10 ++++----- .../Cargo.lock | 10 ++++----- .../Cargo.lock | 10 ++++----- .../forwarder-raw/wasm/Cargo.lock | 10 ++++----- .../composability/forwarder/wasm/Cargo.lock | 10 ++++----- .../local-esdt-and-nft/wasm/Cargo.lock | 10 ++++----- .../promises-features/wasm/Cargo.lock | 10 ++++----- .../proxy-test-first/wasm/Cargo.lock | 10 ++++----- .../proxy-test-second/wasm/Cargo.lock | 10 ++++----- .../recursive-caller/wasm/Cargo.lock | 10 ++++----- .../transfer-role-features/wasm/Cargo.lock | 12 +++++----- .../vault/wasm-vault-promises/Cargo.lock | 10 ++++----- .../vault/wasm-vault-upgrade/Cargo.lock | 10 ++++----- .../composability/vault/wasm/Cargo.lock | 10 ++++----- .../crowdfunding-erc20/wasm/Cargo.lock | 10 ++++----- .../erc1155-marketplace/wasm/Cargo.lock | 10 ++++----- .../erc1155-user-mock/wasm/Cargo.lock | 10 ++++----- .../erc1155/wasm/Cargo.lock | 10 ++++----- .../erc-style-contracts/erc20/wasm/Cargo.lock | 10 ++++----- .../erc721/wasm/Cargo.lock | 10 ++++----- .../lottery-erc20/wasm/Cargo.lock | 10 ++++----- .../esdt-system-sc-mock/wasm/Cargo.lock | 10 ++++----- .../exchange-features/wasm/Cargo.lock | 6 ++--- .../wasm/Cargo.lock | 10 ++++----- .../managed-map-features/wasm/Cargo.lock | 10 ++++----- .../wasm-multi-contract-alt-impl/Cargo.lock | 10 ++++----- .../Cargo.lock | 10 ++++----- .../Cargo.lock | 10 ++++----- .../multi-contract-features/wasm/Cargo.lock | 10 ++++----- .../panic-message-features/wasm/Cargo.lock | 10 ++++----- .../payable-features/wasm/Cargo.lock | 10 ++++----- .../wasm/Cargo.lock | 10 ++++----- .../wasm/Cargo.lock | 10 ++++----- .../wasm-use-module-view/Cargo.lock | 12 +++++----- .../feature-tests/use-module/wasm/Cargo.lock | 12 +++++----- 89 files changed, 459 insertions(+), 459 deletions(-) diff --git a/contracts/benchmarks/large-storage/wasm/Cargo.lock b/contracts/benchmarks/large-storage/wasm/Cargo.lock index 3b7ddf924d..cb13777edf 100755 --- a/contracts/benchmarks/large-storage/wasm/Cargo.lock +++ b/contracts/benchmarks/large-storage/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 1cf1efc122..78ff5aef10 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "benchmark-common" @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock index 946c9f3148..3ee28394b7 100644 --- a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "benchmark-common" @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock index 78846158be..4df3ab54da 100644 --- a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "benchmark-common" @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock index 9e34dfc959..4f8e72b115 100644 --- a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "benchmark-common" @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 5a1e115b0d..fdfa32de28 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "benchmark-common" @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock index 6a46869df7..f51214f9f1 100644 --- a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "benchmark-common" @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock index 8d5515d04d..13533956e8 100755 --- a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.lock b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.lock index 7f11ee332c..4683a2b046 100644 --- a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.lock +++ b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.lock b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.lock index a866ae3bba..f750a8d328 100644 --- a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.lock +++ b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/str-repeat/wasm/Cargo.lock b/contracts/benchmarks/str-repeat/wasm/Cargo.lock index f85a43a545..e2b54817be 100755 --- a/contracts/benchmarks/str-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/str-repeat/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/core/price-aggregator/wasm/Cargo.lock b/contracts/core/price-aggregator/wasm/Cargo.lock index 4331327ffd..9e64d41b47 100644 --- a/contracts/core/price-aggregator/wasm/Cargo.lock +++ b/contracts/core/price-aggregator/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -22,9 +22,9 @@ checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" [[package]] name = "bumpalo" -version = "3.15.4" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "cfg-if" @@ -40,9 +40,9 @@ checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" dependencies = [ "cfg-if", "js-sys", @@ -86,7 +86,7 @@ checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "multiversx-price-aggregator-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "arrayvec", "getrandom", @@ -105,7 +105,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -134,7 +134,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -145,14 +145,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/adder/wasm/Cargo.lock b/contracts/examples/adder/wasm/Cargo.lock index d0b2c19aa6..c7b8a8f917 100755 --- a/contracts/examples/adder/wasm/Cargo.lock +++ b/contracts/examples/adder/wasm/Cargo.lock @@ -25,9 +25,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/bonding-curve-contract/wasm/Cargo.lock b/contracts/examples/bonding-curve-contract/wasm/Cargo.lock index d6238edca0..0fa9693639 100644 --- a/contracts/examples/bonding-curve-contract/wasm/Cargo.lock +++ b/contracts/examples/bonding-curve-contract/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/check-pause/wasm/Cargo.lock b/contracts/examples/check-pause/wasm/Cargo.lock index 5ee107a05b..1d886bba04 100644 --- a/contracts/examples/check-pause/wasm/Cargo.lock +++ b/contracts/examples/check-pause/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock b/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock index 8d30b32a98..9a14efccc8 100644 --- a/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock +++ b/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/crypto-bubbles/wasm/Cargo.lock b/contracts/examples/crypto-bubbles/wasm/Cargo.lock index 58d2a4be8b..6af31b83b6 100755 --- a/contracts/examples/crypto-bubbles/wasm/Cargo.lock +++ b/contracts/examples/crypto-bubbles/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 aeaec8ffb0..82fd08dc78 100755 --- a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.lock +++ b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -113,7 +113,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -124,7 +124,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 c3842dae09..95368370cb 100755 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.lock +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -65,7 +65,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -94,7 +94,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -105,7 +105,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 f11b790b7f..d497d47054 100755 --- a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.lock +++ b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -104,7 +104,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -115,7 +115,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/crypto-zombies/wasm/Cargo.lock b/contracts/examples/crypto-zombies/wasm/Cargo.lock index 9052befd7e..53c26db1eb 100755 --- a/contracts/examples/crypto-zombies/wasm/Cargo.lock +++ b/contracts/examples/crypto-zombies/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/digital-cash/wasm/Cargo.lock b/contracts/examples/digital-cash/wasm/Cargo.lock index 844e04e7d1..602c7d856b 100644 --- a/contracts/examples/digital-cash/wasm/Cargo.lock +++ b/contracts/examples/digital-cash/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/empty/wasm/Cargo.lock b/contracts/examples/empty/wasm/Cargo.lock index c697c0de43..5a87b422d2 100755 --- a/contracts/examples/empty/wasm/Cargo.lock +++ b/contracts/examples/empty/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 fdf2a62489..cee7278178 100644 --- a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.lock +++ b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/factorial/wasm/Cargo.lock b/contracts/examples/factorial/wasm/Cargo.lock index de7d1ca2ae..4dff18babf 100755 --- a/contracts/examples/factorial/wasm/Cargo.lock +++ b/contracts/examples/factorial/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/fractional-nfts/wasm/Cargo.lock b/contracts/examples/fractional-nfts/wasm/Cargo.lock index d13522f894..f95919526e 100644 --- a/contracts/examples/fractional-nfts/wasm/Cargo.lock +++ b/contracts/examples/fractional-nfts/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/lottery-esdt/wasm/Cargo.lock b/contracts/examples/lottery-esdt/wasm/Cargo.lock index ce9560173c..6f1cace25d 100755 --- a/contracts/examples/lottery-esdt/wasm/Cargo.lock +++ b/contracts/examples/lottery-esdt/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/multisig/wasm-multisig-full/Cargo.lock b/contracts/examples/multisig/wasm-multisig-full/Cargo.lock index 83333cc9d2..953a8551f3 100644 --- a/contracts/examples/multisig/wasm-multisig-full/Cargo.lock +++ b/contracts/examples/multisig/wasm-multisig-full/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -56,7 +56,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/multisig/wasm-multisig-view/Cargo.lock b/contracts/examples/multisig/wasm-multisig-view/Cargo.lock index 7e84c623fa..df77559d67 100644 --- a/contracts/examples/multisig/wasm-multisig-view/Cargo.lock +++ b/contracts/examples/multisig/wasm-multisig-view/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -56,7 +56,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/multisig/wasm/Cargo.lock b/contracts/examples/multisig/wasm/Cargo.lock index b56f8b9f00..d72aa67e30 100755 --- a/contracts/examples/multisig/wasm/Cargo.lock +++ b/contracts/examples/multisig/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -56,7 +56,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/nft-minter/wasm/Cargo.lock b/contracts/examples/nft-minter/wasm/Cargo.lock index 89c376064b..ce0b2650f9 100644 --- a/contracts/examples/nft-minter/wasm/Cargo.lock +++ b/contracts/examples/nft-minter/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/nft-storage-prepay/wasm/Cargo.lock b/contracts/examples/nft-storage-prepay/wasm/Cargo.lock index 161c20f4ee..319176681e 100755 --- a/contracts/examples/nft-storage-prepay/wasm/Cargo.lock +++ b/contracts/examples/nft-storage-prepay/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/nft-subscription/wasm/Cargo.lock b/contracts/examples/nft-subscription/wasm/Cargo.lock index b862e4314c..2244415577 100644 --- a/contracts/examples/nft-subscription/wasm/Cargo.lock +++ b/contracts/examples/nft-subscription/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/order-book/factory/wasm/Cargo.lock b/contracts/examples/order-book/factory/wasm/Cargo.lock index 884b17c296..60c0b2cabd 100644 --- a/contracts/examples/order-book/factory/wasm/Cargo.lock +++ b/contracts/examples/order-book/factory/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/order-book/pair/wasm/Cargo.lock b/contracts/examples/order-book/pair/wasm/Cargo.lock index 6488a5eaa5..14b8551309 100644 --- a/contracts/examples/order-book/pair/wasm/Cargo.lock +++ b/contracts/examples/order-book/pair/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/ping-pong-egld/wasm/Cargo.lock b/contracts/examples/ping-pong-egld/wasm/Cargo.lock index 1d697bc89d..a86f53d6dd 100755 --- a/contracts/examples/ping-pong-egld/wasm/Cargo.lock +++ b/contracts/examples/ping-pong-egld/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/proxy-pause/wasm/Cargo.lock b/contracts/examples/proxy-pause/wasm/Cargo.lock index 7847d7e907..73d7607641 100644 --- a/contracts/examples/proxy-pause/wasm/Cargo.lock +++ b/contracts/examples/proxy-pause/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/rewards-distribution/wasm/Cargo.lock b/contracts/examples/rewards-distribution/wasm/Cargo.lock index ed367793e0..d5303f9494 100644 --- a/contracts/examples/rewards-distribution/wasm/Cargo.lock +++ b/contracts/examples/rewards-distribution/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/seed-nft-minter/wasm/Cargo.lock b/contracts/examples/seed-nft-minter/wasm/Cargo.lock index 5b0c14e4c0..d322f26404 100644 --- a/contracts/examples/seed-nft-minter/wasm/Cargo.lock +++ b/contracts/examples/seed-nft-minter/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/token-release/wasm/Cargo.lock b/contracts/examples/token-release/wasm/Cargo.lock index 982ffe7e5b..0d4d728f3e 100644 --- a/contracts/examples/token-release/wasm/Cargo.lock +++ b/contracts/examples/token-release/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 6224f94e8e..a99ecaccaf 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 @@ -25,9 +25,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/abi-tester/wasm/Cargo.lock b/contracts/feature-tests/abi-tester/wasm/Cargo.lock index 648921bf93..db59638442 100755 --- a/contracts/feature-tests/abi-tester/wasm/Cargo.lock +++ b/contracts/feature-tests/abi-tester/wasm/Cargo.lock @@ -25,9 +25,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock index f7d9075764..1a3bc7da70 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock @@ -25,9 +25,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock index e278d208aa..b32efb0d4a 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock @@ -25,9 +25,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/alloc-features/wasm/Cargo.lock b/contracts/feature-tests/alloc-features/wasm/Cargo.lock index 911763d1ee..6a0f3330d7 100644 --- a/contracts/feature-tests/alloc-features/wasm/Cargo.lock +++ b/contracts/feature-tests/alloc-features/wasm/Cargo.lock @@ -25,9 +25,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 4096da06a6..f5d8794bb9 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "basic-features" @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/basic-features/wasm/Cargo.lock b/contracts/feature-tests/basic-features/wasm/Cargo.lock index b771e88a45..bfb8c41ea7 100755 --- a/contracts/feature-tests/basic-features/wasm/Cargo.lock +++ b/contracts/feature-tests/basic-features/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "basic-features" @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 e219eb63f1..40beaf8d03 100644 --- a/contracts/feature-tests/big-float-features/wasm/Cargo.lock +++ b/contracts/feature-tests/big-float-features/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "big-float-features" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 b24993d7ef..bb57eeb64e 100644 --- a/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 2df38c78c8..a2c55964c7 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 dae06b0b1b..99cd973235 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 ceffed2f48..b7b7846eb2 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 543b947e37..fd4d0794e8 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 ad9a1f4b49..9ce03493b3 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 4e148e341c..dbef7fe1c4 100644 --- a/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 8d5690eae5..1b3b56c133 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 1e4d942595..dcb63c28ef 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 951a706535..4b56a477a5 100755 --- a/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock b/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock index 9fb9899a61..14ba905f98 100755 --- a/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 3ecce8a599..cf8b7eaeb8 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 74b8399729..1cce0c20ac 100644 --- a/contracts/feature-tests/composability/promises-features/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/promises-features/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 c4e3b77125..2616a0e326 100755 --- a/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 b45fac9e48..cb41667a6d 100755 --- a/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 d3ff7c1587..d2e41ac725 100755 --- a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 8f6bc439b6..bbbb12c9f9 100644 --- a/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 547f949bf0..e86afd77c4 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.lock +++ b/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock index 8a1fb523c4..0b7112be8c 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock +++ b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/vault/wasm/Cargo.lock b/contracts/feature-tests/composability/vault/wasm/Cargo.lock index fad7e9967d..6d0b58aed6 100755 --- a/contracts/feature-tests/composability/vault/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/vault/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 542c92a53d..ad10f006f4 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -63,7 +63,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 c0031acd5f..0a96032377 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -63,7 +63,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 556081cf37..a6f053b5c8 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 8e9ff2e68a..90f97cfb61 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 9d4ae04370..c7d25eb4e2 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 391b426bb2..b91f78bb52 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 b24dd728d1..36b9febca3 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 cd0ce287fb..d52e047711 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.lock +++ b/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/exchange-features/wasm/Cargo.lock b/contracts/feature-tests/exchange-features/wasm/Cargo.lock index e9ffb74f36..09349d87e7 100644 --- a/contracts/feature-tests/exchange-features/wasm/Cargo.lock +++ b/contracts/feature-tests/exchange-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 fc222834e1..9dbe2ad726 100644 --- a/contracts/feature-tests/formatted-message-features/wasm/Cargo.lock +++ b/contracts/feature-tests/formatted-message-features/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 a01751bebe..a555da68eb 100644 --- a/contracts/feature-tests/managed-map-features/wasm/Cargo.lock +++ b/contracts/feature-tests/managed-map-features/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 6a372a85c5..3997752036 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 e6c247041d..13230fc27c 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 eb10f6d145..b1fa6d8b6b 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 db59aa094a..2815c003c8 100755 --- a/contracts/feature-tests/multi-contract-features/wasm/Cargo.lock +++ b/contracts/feature-tests/multi-contract-features/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 59e64f220b..ddf9332c59 100755 --- a/contracts/feature-tests/panic-message-features/wasm/Cargo.lock +++ b/contracts/feature-tests/panic-message-features/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/payable-features/wasm/Cargo.lock b/contracts/feature-tests/payable-features/wasm/Cargo.lock index 29d59c1f86..3ffdf49ece 100755 --- a/contracts/feature-tests/payable-features/wasm/Cargo.lock +++ b/contracts/feature-tests/payable-features/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 4398ef5691..b8d98314e7 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.lock +++ b/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 39a57994af..f95eb564c3 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.lock +++ b/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" 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 f01d124f6d..969d71832f 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/use-module/wasm/Cargo.lock b/contracts/feature-tests/use-module/wasm/Cargo.lock index 49e4869bf9..c97622bd31 100644 --- a/contracts/feature-tests/use-module/wasm/Cargo.lock +++ b/contracts/feature-tests/use-module/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.47.8" +version = "0.48.0" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.47.8" +version = "0.48.0" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.47.8" +version = "0.48.0" dependencies = [ "multiversx-sc", ] From 7f2a441aabd08fe7eaf697bd256b738af26fb85e Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Tue, 9 Apr 2024 10:36:31 +0300 Subject: [PATCH 301/461] builtin func - nft update attributes & esdt nft create --- .../contract_base/wrappers/send_wrapper.rs | 73 +++++-------------- .../system_proxy/builtin_func_proxy.rs | 50 +++++++++++++ 2 files changed, 68 insertions(+), 55 deletions(-) diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index 31f6c6a158..e763a12f39 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -3,17 +3,13 @@ use core::marker::PhantomData; use crate::codec::Empty; use crate::{ - api::{BlockchainApi, BlockchainApiImpl, CallTypeApi, StorageReadApi}, + api::{BlockchainApi, CallTypeApi, StorageReadApi}, codec, types::{ - system_proxy, - system_proxy::builtin_func_names::{ - ESDT_NFT_CREATE_FUNC_NAME, ESDT_NFT_UPDATE_ATTRIBUTES_FUNC_NAME, - }, - BigUint, ContractCallNoPayment, ESDTSystemSCAddress, EgldOrEsdtTokenIdentifier, - EsdtTokenPayment, FunctionCall, GasLeft, ManagedAddress, ManagedArgBuffer, ManagedBuffer, - ManagedType, ManagedVec, OriginalResultMarker, ReturnsRawResult, ToSelf, TokenIdentifier, - Tx, TxScEnv, + system_proxy, BigUint, ContractCallNoPayment, ESDTSystemSCAddress, + EgldOrEsdtTokenIdentifier, EsdtTokenPayment, FunctionCall, GasLeft, ManagedAddress, + ManagedArgBuffer, ManagedBuffer, ManagedType, ManagedVec, OriginalResultMarker, + ReturnsRawResult, ToSelf, TokenIdentifier, Tx, TxScEnv, }, }; @@ -401,19 +397,6 @@ where .sync_call() } - fn call_local_esdt_built_in_function_minimal( - &self, - function_name: &str, - arg_buffer: ManagedArgBuffer, - ) { - Tx::new_tx_from_sc() - .to(ToSelf) - .gas(GasLeft) - .raw_call(function_name) - .arguments_raw(arg_buffer) - .sync_call() - } - /// 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, @@ -530,30 +513,13 @@ where attributes: &T, uris: &ManagedVec>, ) -> u64 { - 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, - ); + let output = Tx::new_tx_from_sc() + .to(ToSelf) + .gas(GasLeft) + .typed(system_proxy::UserBuiltinProxy) + .esdt_nft_create(token, amount, name, royalties, hash, attributes, uris) + .returns(ReturnsRawResult) + .sync_call(); if let Some(first_result_bytes) = output.try_get(0) { first_result_bytes.parse_as_u64().unwrap_or_default() @@ -779,14 +745,11 @@ where nft_nonce: u64, new_attributes: &T, ) { - let mut arg_buffer = ManagedArgBuffer::new(); - arg_buffer.push_arg(token_id); - arg_buffer.push_arg(nft_nonce); - arg_buffer.push_arg(new_attributes); - - self.call_local_esdt_built_in_function_minimal( - ESDT_NFT_UPDATE_ATTRIBUTES_FUNC_NAME, - arg_buffer, - ); + Tx::new_tx_from_sc() + .to(ToSelf) + .gas(GasLeft) + .typed(system_proxy::UserBuiltinProxy) + .nft_update_attributes(token_id, nft_nonce, new_attributes) + .sync_call() } } diff --git a/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs b/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs index 53fd76d371..746ca8a664 100644 --- a/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs @@ -136,4 +136,54 @@ where .arguments_raw(arg_buffer) .original_result() } + + pub fn nft_update_attributes( + self, + token_id: &TokenIdentifier, + nft_nonce: u64, + new_attributes: &T, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call(ESDT_NFT_UPDATE_ATTRIBUTES_FUNC_NAME) + .argument(token_id) + .argument(&nft_nonce) + .argument(new_attributes) + .original_result() + } + + #[allow(clippy::too_many_arguments)] + pub fn esdt_nft_create( + self, + token: &TokenIdentifier, + amount: &BigUint, + name: &ManagedBuffer, + royalties: &BigUint, + hash: &ManagedBuffer, + attributes: &T, + uris: &ManagedVec>, + ) -> TxProxyCall { + 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); + } + } + + self.wrapped_tx + .raw_call(ESDT_NFT_CREATE_FUNC_NAME) + .arguments_raw(arg_buffer) + .original_result() + } } From 413023412ae96a8b714df1be8c9e282037de46d9 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 9 Apr 2024 13:14:33 +0300 Subject: [PATCH 302/461] builtin func - ESDT NFT create proxy returns u64 --- .../src/contract_base/wrappers/send_wrapper.rs | 14 ++++---------- .../interaction/system_proxy/builtin_func_proxy.rs | 2 +- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index e763a12f39..74180719b4 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -9,7 +9,7 @@ use crate::{ system_proxy, BigUint, ContractCallNoPayment, ESDTSystemSCAddress, EgldOrEsdtTokenIdentifier, EsdtTokenPayment, FunctionCall, GasLeft, ManagedAddress, ManagedArgBuffer, ManagedBuffer, ManagedType, ManagedVec, OriginalResultMarker, - ReturnsRawResult, ToSelf, TokenIdentifier, Tx, TxScEnv, + ReturnsRawResult, ReturnsResult, ToSelf, TokenIdentifier, Tx, TxScEnv, }, }; @@ -513,19 +513,13 @@ where attributes: &T, uris: &ManagedVec>, ) -> u64 { - let output = Tx::new_tx_from_sc() + Tx::new_tx_from_sc() .to(ToSelf) .gas(GasLeft) .typed(system_proxy::UserBuiltinProxy) .esdt_nft_create(token, amount, name, royalties, hash, attributes, uris) - .returns(ReturnsRawResult) - .sync_call(); - - if let Some(first_result_bytes) = output.try_get(0) { - first_result_bytes.parse_as_u64().unwrap_or_default() - } else { - 0 - } + .returns(ReturnsResult) + .sync_call() } /// Creates a new NFT token of a certain type (determined by `token_identifier`). diff --git a/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs b/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs index 746ca8a664..df94d09dc9 100644 --- a/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs @@ -161,7 +161,7 @@ where hash: &ManagedBuffer, attributes: &T, uris: &ManagedVec>, - ) -> TxProxyCall { + ) -> TxProxyCall { let mut arg_buffer = ManagedArgBuffer::new(); arg_buffer.push_arg(token); arg_buffer.push_arg(amount); From 615c0fbf2d5624fca1fb9e7a5a0a3876dacce19d Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 9 Apr 2024 13:20:17 +0300 Subject: [PATCH 303/461] builtin func proxy small optimization --- .../system_proxy/builtin_func_proxy.rs | 40 +++++++++---------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs b/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs index df94d09dc9..77dec351c5 100644 --- a/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs @@ -123,18 +123,17 @@ where nft_nonce: u64, new_uris: &ManagedVec>, ) -> TxProxyCall { - let mut arg_buffer = ManagedArgBuffer::new(); - arg_buffer.push_arg(token_id); - arg_buffer.push_arg(nft_nonce); + let mut tx = self + .wrapped_tx + .raw_call(ESDT_NFT_ADD_URI_FUNC_NAME) + .argument(token_id) + .argument(&nft_nonce); for uri in new_uris { - arg_buffer.push_arg(uri); + tx = tx.argument(&uri); } - self.wrapped_tx - .raw_call(ESDT_NFT_ADD_URI_FUNC_NAME) - .arguments_raw(arg_buffer) - .original_result() + tx.original_result() } pub fn nft_update_attributes( @@ -162,28 +161,27 @@ where attributes: &T, uris: &ManagedVec>, ) -> TxProxyCall { - 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); + let mut tx = self + .wrapped_tx + .raw_call(ESDT_NFT_CREATE_FUNC_NAME) + .argument(token) + .argument(amount) + .argument(name) + .argument(royalties) + .argument(hash) + .argument(attributes); if uris.is_empty() { // at least one URI is required, so we push an empty one - arg_buffer.push_arg(codec::Empty); + tx = tx.argument(&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); + tx = tx.argument(&uri); } } - self.wrapped_tx - .raw_call(ESDT_NFT_CREATE_FUNC_NAME) - .arguments_raw(arg_buffer) - .original_result() + tx.original_result() } } From aaaf7d68e238c4e31de946518097e1aca28eca04 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Tue, 9 Apr 2024 15:25:56 +0300 Subject: [PATCH 304/461] fmt TxProxy - rustfmt skip on enums that contain struct as variant --- .../examples/multisig/src/multisig_proxy.rs | 1 + .../feature-tests/abi-tester/src/abi_proxy.rs | 2 ++ .../generate_proxy/proxy_generator.rs | 19 +++++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/contracts/examples/multisig/src/multisig_proxy.rs b/contracts/examples/multisig/src/multisig_proxy.rs index 4dca7b99db..616fb88be5 100644 --- a/contracts/examples/multisig/src/multisig_proxy.rs +++ b/contracts/examples/multisig/src/multisig_proxy.rs @@ -501,6 +501,7 @@ where pub signers: ManagedVec>, } +#[rustfmt::skip] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, Clone)] pub enum Action where diff --git a/contracts/feature-tests/abi-tester/src/abi_proxy.rs b/contracts/feature-tests/abi-tester/src/abi_proxy.rs index eb5d717025..b5b4b931c2 100644 --- a/contracts/feature-tests/abi-tester/src/abi_proxy.rs +++ b/contracts/feature-tests/abi-tester/src/abi_proxy.rs @@ -409,6 +409,7 @@ pub struct OnlyShowsUpAsNested02 { pub something: [u8; 0], } +#[rustfmt::skip] #[derive(TopEncode, TopDecode)] pub enum AbiEnum { Nothing, @@ -501,6 +502,7 @@ pub enum ExplicitDiscriminant { FiftyOne, } +#[rustfmt::skip] #[derive(TopEncode, TopDecode)] pub enum ExplicitDiscriminantMixed { Zero, diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs index 68f2554ab4..532f08ada3 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs @@ -437,6 +437,11 @@ where type_description: &TypeDescription, name: &str, ) { + if self.enum_contains_struct_variant(enum_variants) { + self.writeln(""); + self.write(format!("#[rustfmt::skip]")); + } + self.start_write_type("enum", type_description, name); if enum_variants.is_empty() { @@ -605,6 +610,20 @@ where processed_paths } + + fn enum_contains_struct_variant(&self, enum_variants: &Vec) -> bool { + for variant in enum_variants { + if variant.fields.is_empty() { + continue; + } + + if variant.fields[0].name != ZERO { + return true; + } + } + + false + } } #[cfg(test)] From 56500de69515eb4c8f0ebc7660c7b6f0eb00d491 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Tue, 9 Apr 2024 15:34:20 +0300 Subject: [PATCH 305/461] fmt TxProxy - fix clippy --- .../meta/src/cmd/contract/generate_proxy/proxy_generator.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs index 532f08ada3..e66da1e45d 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs @@ -439,7 +439,7 @@ where ) { if self.enum_contains_struct_variant(enum_variants) { self.writeln(""); - self.write(format!("#[rustfmt::skip]")); + self.write(r#"#[rustfmt::skip]"#); } self.start_write_type("enum", type_description, name); From 354e5bbcbe9e95e6d31293610ae32a37e595f107 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Tue, 9 Apr 2024 15:49:46 +0300 Subject: [PATCH 306/461] fmt TxProxy - aggregate 2 write lines into 1 --- .../meta/src/cmd/contract/generate_proxy/proxy_generator.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs index e66da1e45d..82f37cdfba 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs @@ -438,8 +438,7 @@ where name: &str, ) { if self.enum_contains_struct_variant(enum_variants) { - self.writeln(""); - self.write(r#"#[rustfmt::skip]"#); + self.write("\n#[rustfmt::skip]"); } self.start_write_type("enum", type_description, name); From 718acb5c4934f924440002a3c97559ece080947e Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Tue, 9 Apr 2024 15:38:06 +0200 Subject: [PATCH 307/461] partial test fix --- .../scenarios/forw_raw_init_sync_echo.scen.json | 5 +---- .../composability/scenarios/forw_raw_sync_readonly.scen.json | 5 +---- .../scenarios/forw_raw_sync_same_context.scen.json | 5 +---- 3 files changed, 3 insertions(+), 12 deletions(-) diff --git a/contracts/feature-tests/composability/scenarios/forw_raw_init_sync_echo.scen.json b/contracts/feature-tests/composability/scenarios/forw_raw_init_sync_echo.scen.json index 2c1bc8dff7..085233e5a9 100644 --- a/contracts/feature-tests/composability/scenarios/forw_raw_init_sync_echo.scen.json +++ b/contracts/feature-tests/composability/scenarios/forw_raw_init_sync_echo.scen.json @@ -37,10 +37,7 @@ "gasPrice": "0" }, "expect": { - "out": [ - "1", - "2" - ], + "out": [], "status": "", "logs": [ { diff --git a/contracts/feature-tests/composability/scenarios/forw_raw_sync_readonly.scen.json b/contracts/feature-tests/composability/scenarios/forw_raw_sync_readonly.scen.json index f1b53d61ea..0da08b7c08 100644 --- a/contracts/feature-tests/composability/scenarios/forw_raw_sync_readonly.scen.json +++ b/contracts/feature-tests/composability/scenarios/forw_raw_sync_readonly.scen.json @@ -37,10 +37,7 @@ "gasPrice": "0" }, "expect": { - "out": [ - "1", - "2" - ], + "out": [], "status": "", "gas": "*", "refund": "*" diff --git a/contracts/feature-tests/composability/scenarios/forw_raw_sync_same_context.scen.json b/contracts/feature-tests/composability/scenarios/forw_raw_sync_same_context.scen.json index 08b6b3349b..ff8b81238c 100644 --- a/contracts/feature-tests/composability/scenarios/forw_raw_sync_same_context.scen.json +++ b/contracts/feature-tests/composability/scenarios/forw_raw_sync_same_context.scen.json @@ -38,10 +38,7 @@ "gasPrice": "0" }, "expect": { - "out": [ - "1", - "2" - ], + "out": [], "status": "", "logs": [ { From 4feff9a9958a48afc0c2b0b766123a1a84642400 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 9 Apr 2024 15:08:25 +0300 Subject: [PATCH 308/461] imports - base framework cleanup --- framework/base/src/imports_reexport.rs | 41 +++++++++++++++++ framework/base/src/lib.rs | 44 ++----------------- .../system_proxy/builtin_func_proxy.rs | 19 +++++--- .../system_proxy/legacy_system_sc_proxy.rs | 5 +-- framework/base/src/types/interaction/tx.rs | 10 ++--- .../interaction/tx_exec/tx_exec_async.rs | 7 ++- .../tx_exec/tx_exec_async_promises.rs | 5 +-- .../wrapped/traits/fixed_token_supply.rs | 5 ++- .../types/managed/wrapped/traits/mergeable.rs | 5 ++- 9 files changed, 78 insertions(+), 63 deletions(-) create mode 100644 framework/base/src/imports_reexport.rs diff --git a/framework/base/src/imports_reexport.rs b/framework/base/src/imports_reexport.rs new file mode 100644 index 0000000000..710bd8bbf3 --- /dev/null +++ b/framework/base/src/imports_reexport.rs @@ -0,0 +1,41 @@ +/// Conveniently groups all framework imports required by a smart contract form the framework. +pub mod imports { + pub use crate::{ + abi::TypeAbi, + api::{ErrorApiImpl, ManagedTypeApi, VMApi}, + arrayvec::ArrayVec, + codec::{ + multi_types::*, CodecFrom, CodecFromSelf, CodecInto, DecodeError, IntoMultiValue, + NestedDecode, NestedEncode, TopDecode, TopEncode, + }, + contract_base::{ContractBase, ProxyObjBase, ProxyObjNew}, + err_msg, + io::*, + non_zero_usize, + non_zero_util::*, + require, sc_format, sc_panic, sc_print, + storage::mappers::*, + types::{system_proxy::*, *}, + }; + pub use core::ops::{ + Add, AddAssign, BitAnd, BitAndAssign, BitOr, BitOrAssign, BitXor, BitXorAssign, Div, + DivAssign, Mul, MulAssign, Rem, RemAssign, Shl, ShlAssign, Shr, ShrAssign, Sub, SubAssign, + }; +} + +/// Conveniently groups all imports required for deriving framework-related traits for types. +pub mod derive_imports { + pub use crate::{ + codec, + codec::derive::{ + NestedDecode, NestedEncode, TopDecode, TopDecodeOrDefault, TopEncode, + TopEncodeOrDefault, + }, + derive::{type_abi, ManagedVecItem, TypeAbi}, + }; +} + +/// Conveniently groups all imports required for generated proxies. +pub mod proxy_imports { + pub use super::{derive_imports::*, imports::*}; +} diff --git a/framework/base/src/lib.rs b/framework/base/src/lib.rs index 3d2fa0f9e5..b5aaecd378 100644 --- a/framework/base/src/lib.rs +++ b/framework/base/src/lib.rs @@ -38,44 +38,6 @@ pub use hex_call_data::*; pub use hex_literal; pub use storage::{storage_clear, storage_get, storage_get_len, storage_set}; -/// Conveniently groups all framework imports required by a smart contract form the framework. -pub mod imports { - pub use crate::{ - abi::TypeAbi, - api::{ErrorApiImpl, ManagedTypeApi, VMApi}, - arrayvec::ArrayVec, - codec::{ - multi_types::*, CodecFrom, CodecFromSelf, CodecInto, DecodeError, IntoMultiValue, - NestedDecode, NestedEncode, TopDecode, TopEncode, - }, - contract_base::{ContractBase, ProxyObjBase, ProxyObjNew}, - err_msg, - io::*, - non_zero_usize, - non_zero_util::*, - require, sc_format, sc_panic, sc_print, - storage::mappers::*, - types::{system_proxy::*, *}, - }; - pub use core::ops::{ - Add, AddAssign, BitAnd, BitAndAssign, BitOr, BitOrAssign, BitXor, BitXorAssign, Div, - DivAssign, Mul, MulAssign, Rem, RemAssign, Shl, ShlAssign, Shr, ShrAssign, Sub, SubAssign, - }; -} - -/// Conveniently groups all imports required for deriving framework-related traits for types. -pub mod derive_imports { - pub use crate::{ - codec, - codec::derive::{ - NestedDecode, NestedEncode, TopDecode, TopDecodeOrDefault, TopEncode, - TopEncodeOrDefault, - }, - derive::{type_abi, ManagedVecItem, TypeAbi}, - }; -} - -/// Conveniently groups all imports required for generated proxies. -pub mod proxy_imports { - pub use crate::{derive_imports::*, imports::*}; -} +// not to be used internally +mod imports_reexport; +pub use imports_reexport::{derive_imports, imports, proxy_imports}; diff --git a/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs b/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs index 77dec351c5..66a660a6d8 100644 --- a/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs @@ -1,10 +1,19 @@ -use self::builtin_func_names::{ +use multiversx_sc_codec::{CodecInto, Empty, TopEncode}; + +use crate::{ + api::VMApi, + types::{ + BigUint, ManagedAddress, ManagedBuffer, ManagedVec, TokenIdentifier, Tx, TxEnv, TxFrom, + TxGas, TxProxyCall, TxProxyTrait, TxTo, + }, +}; + +use super::builtin_func_names::{ CHANGE_OWNER_BUILTIN_FUNC_NAME, CLAIM_DEVELOPER_REWARDS_FUNC_NAME, DELETE_USERNAME_FUNC_NAME, ESDT_LOCAL_BURN_FUNC_NAME, ESDT_LOCAL_MINT_FUNC_NAME, ESDT_NFT_ADD_QUANTITY_FUNC_NAME, ESDT_NFT_ADD_URI_FUNC_NAME, ESDT_NFT_BURN_FUNC_NAME, ESDT_NFT_CREATE_FUNC_NAME, ESDT_NFT_UPDATE_ATTRIBUTES_FUNC_NAME, SET_USERNAME_FUNC_NAME, }; -use crate::proxy_imports::*; /// Proxy describing the user builtin function signatures. pub struct UserBuiltinProxy; @@ -136,7 +145,7 @@ where tx.original_result() } - pub fn nft_update_attributes( + pub fn nft_update_attributes( self, token_id: &TokenIdentifier, nft_nonce: u64, @@ -151,7 +160,7 @@ where } #[allow(clippy::too_many_arguments)] - pub fn esdt_nft_create( + pub fn esdt_nft_create( self, token: &TokenIdentifier, amount: &BigUint, @@ -173,7 +182,7 @@ where if uris.is_empty() { // at least one URI is required, so we push an empty one - tx = tx.argument(&codec::Empty); + tx = tx.argument(&Empty); } else { // The API function has the last argument as variadic, // so we top-encode each and send as separate argument diff --git a/framework/base/src/types/interaction/system_proxy/legacy_system_sc_proxy.rs b/framework/base/src/types/interaction/system_proxy/legacy_system_sc_proxy.rs index b161b28575..b784da1f8e 100644 --- a/framework/base/src/types/interaction/system_proxy/legacy_system_sc_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy/legacy_system_sc_proxy.rs @@ -5,10 +5,9 @@ use hex_literal::hex; use crate::{ api::{CallTypeApi, SendApi}, - proxy_imports::ESDTSystemSCAddress, types::{ - BigUint, ContractCall, ContractCallNoPayment, ContractCallWithEgld, EsdtLocalRole, - EsdtTokenType, ManagedAddress, ManagedBuffer, TokenIdentifier, + BigUint, ContractCall, ContractCallNoPayment, ContractCallWithEgld, ESDTSystemSCAddress, + EsdtLocalRole, EsdtTokenType, ManagedAddress, ManagedBuffer, TokenIdentifier, }, }; diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index ccd88f65c1..75d565b97b 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -1,11 +1,11 @@ use crate::{ - api::CallTypeApi, + api::{CallTypeApi, ManagedTypeApi}, contract_base::BlockchainWrapper, - proxy_imports::{EgldOrEsdtTokenIdentifier, EgldOrEsdtTokenPaymentRefs, ManagedTypeApi}, types::{ - BigUint, CodeMetadata, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, - EgldOrMultiEsdtPaymentRefs, EsdtTokenPayment, EsdtTokenPaymentRefs, ManagedAddress, - ManagedBuffer, ManagedOption, ManagedVec, MultiEsdtPayment, TokenIdentifier, + BigUint, CodeMetadata, EgldOrEsdtTokenIdentifier, EgldOrEsdtTokenPayment, + EgldOrEsdtTokenPaymentRefs, EgldOrMultiEsdtPayment, EgldOrMultiEsdtPaymentRefs, + EsdtTokenPayment, EsdtTokenPaymentRefs, ManagedAddress, ManagedBuffer, ManagedOption, + ManagedVec, MultiEsdtPayment, TokenIdentifier, }, }; diff --git a/framework/base/src/types/interaction/tx_exec/tx_exec_async.rs b/framework/base/src/types/interaction/tx_exec/tx_exec_async.rs index 6973e1ef5b..0e883eca3a 100644 --- a/framework/base/src/types/interaction/tx_exec/tx_exec_async.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_exec_async.rs @@ -1,11 +1,10 @@ use crate::{ api::{CallTypeApi, StorageWriteApi}, contract_base::SendRawWrapper, - proxy_imports::{ExplicitGas, ManagedBuffer, TxGasValue}, types::{ - CallbackClosure, OriginalResultMarker, Tx, TxData, TxDataFunctionCall, - TxEmptyResultHandler, TxEnv, TxFrom, TxGas, TxPayment, TxResultHandler, TxScEnv, TxTo, - TxToSpecified, + CallbackClosure, ExplicitGas, ManagedBuffer, OriginalResultMarker, Tx, TxData, + TxDataFunctionCall, TxEmptyResultHandler, TxEnv, TxFrom, TxGas, TxGasValue, TxPayment, + TxResultHandler, TxScEnv, TxTo, TxToSpecified, }, }; diff --git a/framework/base/src/types/interaction/tx_exec/tx_exec_async_promises.rs b/framework/base/src/types/interaction/tx_exec/tx_exec_async_promises.rs index c795a4385b..4b6fadc102 100644 --- a/framework/base/src/types/interaction/tx_exec/tx_exec_async_promises.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_exec_async_promises.rs @@ -1,11 +1,10 @@ use crate::{ api::{const_handles, CallTypeApi}, contract_base::SendRawWrapper, - proxy_imports::GasLeft, types::{ interaction::callback_closure::CallbackClosureWithGas, CallbackClosure, ExplicitGas, - FunctionCall, ManagedBuffer, ManagedType, OriginalResultMarker, Tx, TxGas, TxGasValue, - TxPayment, TxResultHandler, TxScEnv, TxToSpecified, + FunctionCall, GasLeft, ManagedBuffer, ManagedType, OriginalResultMarker, Tx, TxGas, + TxGasValue, TxPayment, TxResultHandler, TxScEnv, TxToSpecified, }, }; diff --git a/framework/base/src/types/managed/wrapped/traits/fixed_token_supply.rs b/framework/base/src/types/managed/wrapped/traits/fixed_token_supply.rs index 838486c203..0b94cbbf6b 100644 --- a/framework/base/src/types/managed/wrapped/traits/fixed_token_supply.rs +++ b/framework/base/src/types/managed/wrapped/traits/fixed_token_supply.rs @@ -1,4 +1,7 @@ -use crate::imports::{BigUint, ErrorApiImpl, ManagedTypeApi}; +use crate::{ + api::{ErrorApiImpl, ManagedTypeApi}, + types::BigUint, +}; pub trait FixedSupplyToken { fn get_total_supply(&self) -> BigUint; diff --git a/framework/base/src/types/managed/wrapped/traits/mergeable.rs b/framework/base/src/types/managed/wrapped/traits/mergeable.rs index 2ed714973a..51298ba130 100644 --- a/framework/base/src/types/managed/wrapped/traits/mergeable.rs +++ b/framework/base/src/types/managed/wrapped/traits/mergeable.rs @@ -1,4 +1,7 @@ -use crate::imports::{ErrorApiImpl, EsdtTokenPayment, ManagedTypeApi, ManagedVec, ManagedVecItem}; +use crate::{ + api::{ErrorApiImpl, ManagedTypeApi}, + types::{EsdtTokenPayment, ManagedVec, ManagedVecItem}, +}; pub static CANNOT_MERGE_ERR_MSG: &[u8] = b"Cannot merge"; From 4ffca0ea5af3834bc0661e2820ff665cf0bd3bbe Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 9 Apr 2024 16:45:44 +0300 Subject: [PATCH 309/461] imports - scenario & snippets --- .../tests/linked_list_repeat_blackbox_test.rs | 3 +-- .../tests/price_aggregator_blackbox_test.rs | 12 ++------- .../tests/price_aggregator_stress_blackbox.rs | 12 ++------- .../tests/price_aggregator_whitebox_test.rs | 5 +--- .../adder/interact/src/basic_interact.rs | 19 +++---------- .../tests/adder_blackbox_chained_test.rs | 5 ++-- .../tests/adder_blackbox_legacy_proxy_test.rs | 8 +++--- .../tests/adder_blackbox_raw_steps_test.rs | 2 +- .../adder/tests/adder_blackbox_test.rs | 5 ++-- .../tests/adder_blackbox_upgrade_test.rs | 2 +- .../adder/tests/adder_whitebox_test.rs | 2 +- .../tests/crowdfunding_esdt_blackbox_test.rs | 14 ++-------- .../interact/src/multisig_interact.rs | 18 ++----------- .../interact/src/multisig_interact_nfts.rs | 8 +----- .../interact/src/multisig_interact_wegld.rs | 13 +-------- .../multisig/tests/multisig_blackbox_test.rs | 19 +++---------- .../multisig/tests/multisig_whitebox_test.rs | 21 +-------------- .../rewards_distribution_blackbox_test.rs | 18 +------------ .../feature-tests/abi-tester/src/abi_proxy.rs | 10 ++----- .../interact/src/bf_interact.rs | 16 ++--------- .../basic_features_managed_buffer_test.rs | 3 +-- .../tests/basic_features_managed_vec_test.rs | 3 +-- ...basic_features_ordered_binary_tree_test.rs | 6 ++--- .../basic_features_token_identifier_test.rs | 3 +-- .../tests/forwarder_blackbox_test.rs | 8 +----- .../tests/forwarder_whitebox_test.rs | 9 +------ .../src/call_tree_calling_functions.rs | 13 +++------ .../interact/src/call_tree_deploy.rs | 14 ++-------- .../interact/src/comp_interact_config.rs | 6 ++--- .../interact/src/comp_interact_controller.rs | 12 ++------- .../interact/src/comp_interact_main.rs | 6 +---- .../tests/promises_feature_blackbox_test.rs | 6 +---- .../tests/transfer_role_blackbox_test.rs | 10 +------ .../tests/transfer_role_whitebox_test.rs | 11 +------- .../tests/exchange_features_blackbox_test.rs | 2 +- .../tests/pmf_blackbox_test.rs | 4 +-- .../tests/payable_blackbox_test.rs | 2 +- .../interact-rs/src/interactor_main.rs | 14 +--------- .../tests/tester_blackbox_test.rs | 4 +-- .../tests/tester_whitebox_legacy_test.rs | 15 +++-------- .../tests/gov_module_whitebox_test.rs | 9 +------ .../tests/staking_module_whitebox_test.rs | 9 +------ .../tests/token_merge_module_whitebox_test.rs | 16 ++--------- framework/base/src/imports_reexport.rs | 4 +-- .../generate_snippets/snippet_template_gen.rs | 14 +--------- framework/scenario/src/facade.rs | 5 ++-- .../src/facade/{world_tx => }/expr.rs | 0 .../facade/{world_tx => }/expr/file_expr.rs | 8 +----- .../facade/{world_tx => }/expr/mxsc_expr.rs | 10 ++----- .../facade/{world_tx => }/expr/num_expr.rs | 14 ++++------ framework/scenario/src/facade/world_tx.rs | 4 +-- framework/scenario/src/imports.rs | 27 +++++++++++++++++++ framework/scenario/src/lib.rs | 5 +++- framework/snippets/src/imports.rs | 6 +++++ framework/snippets/src/lib.rs | 3 +++ 55 files changed, 125 insertions(+), 372 deletions(-) rename framework/scenario/src/facade/{world_tx => }/expr.rs (100%) rename framework/scenario/src/facade/{world_tx => }/expr/file_expr.rs (83%) rename framework/scenario/src/facade/{world_tx => }/expr/mxsc_expr.rs (78%) rename framework/scenario/src/facade/{world_tx => }/expr/num_expr.rs (73%) create mode 100644 framework/scenario/src/imports.rs create mode 100644 framework/snippets/src/imports.rs diff --git a/contracts/benchmarks/mappers/linked-list-repeat/tests/linked_list_repeat_blackbox_test.rs b/contracts/benchmarks/mappers/linked-list-repeat/tests/linked_list_repeat_blackbox_test.rs index 47af800bb8..12fde7ba31 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/tests/linked_list_repeat_blackbox_test.rs +++ b/contracts/benchmarks/mappers/linked-list-repeat/tests/linked_list_repeat_blackbox_test.rs @@ -1,7 +1,6 @@ use benchmark_common::ExampleStruct; use linked_list_repeat::ProxyTrait; -use multiversx_sc::types::{MultiValueEncoded, TokenIdentifier}; -use multiversx_sc_scenario::{api::StaticApi, scenario_model::*, *}; +use multiversx_sc_scenario::imports::*; const WASM_PATH_EXPR: &str = "mxsc:output/linked-list-repeat.mxsc.json"; diff --git a/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs b/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs index b1b28e4fcf..cc2dc7b994 100644 --- a/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs +++ b/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs @@ -2,17 +2,9 @@ use multiversx_price_aggregator_sc::{ price_aggregator_data::{OracleStatus, TimestampedPrice, TokenPair}, ContractObj, PriceAggregator, ProxyTrait as _, MAX_ROUND_DURATION_SECONDS, }; -use multiversx_sc::{ - codec::multi_types::MultiValueVec, - types::{Address, EgldOrEsdtTokenIdentifier}, -}; use multiversx_sc_modules::{pause::ProxyTrait, staking::ProxyTrait as _}; -use multiversx_sc_scenario::{ - api::StaticApi, - managed_address, managed_biguint, managed_buffer, - scenario_model::{Account, AddressValue, ScCallStep, ScDeployStep, SetStateStep, TxExpect}, - ContractInfo, DebugApi, ScenarioWorld, WhiteboxContract, -}; + +use multiversx_sc_scenario::imports::*; const DECIMALS: u8 = 0; const EGLD_TICKER: &[u8] = b"EGLD"; diff --git a/contracts/core/price-aggregator/tests/price_aggregator_stress_blackbox.rs b/contracts/core/price-aggregator/tests/price_aggregator_stress_blackbox.rs index 1170a4d964..44650679d3 100644 --- a/contracts/core/price-aggregator/tests/price_aggregator_stress_blackbox.rs +++ b/contracts/core/price-aggregator/tests/price_aggregator_stress_blackbox.rs @@ -2,17 +2,9 @@ use multiversx_price_aggregator_sc::{ price_aggregator_data::{OracleStatus, TokenPair}, ContractObj, PriceAggregator, ProxyTrait as _, }; -use multiversx_sc::{ - codec::multi_types::MultiValueVec, contract_base::ContractBase, - types::EgldOrEsdtTokenIdentifier, -}; use multiversx_sc_modules::{pause::ProxyTrait, staking::ProxyTrait as _}; -use multiversx_sc_scenario::{ - api::StaticApi, - managed_address, managed_buffer, - scenario_model::{Account, AddressValue, ScCallStep, ScDeployStep, SetStateStep}, - ContractInfo, DebugApi, ScenarioWorld, WhiteboxContract, -}; + +use multiversx_sc_scenario::imports::*; const DECIMALS: u8 = 0; const EGLD_TICKER: &[u8] = b"EGLD"; 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 a2a432127e..50b05a6a41 100644 --- a/contracts/core/price-aggregator/tests/price_aggregator_whitebox_test.rs +++ b/contracts/core/price-aggregator/tests/price_aggregator_whitebox_test.rs @@ -2,14 +2,11 @@ use multiversx_price_aggregator_sc::{ price_aggregator_data::{OracleStatus, TimestampedPrice, TokenPair}, PriceAggregator, MAX_ROUND_DURATION_SECONDS, }; -use multiversx_sc::types::{EgldOrEsdtTokenIdentifier, MultiValueEncoded}; use multiversx_sc_modules::{ pause::EndpointWrappers as PauseEndpointWrappers, staking::EndpointWrappers as StakingEndpointWrappers, }; -use multiversx_sc_scenario::{ - managed_address, managed_biguint, managed_buffer, scenario_model::*, WhiteboxContract, *, -}; +use multiversx_sc_scenario::imports::*; pub const DECIMALS: u8 = 0; pub const EGLD_TICKER: &[u8] = b"EGLD"; diff --git a/contracts/examples/adder/interact/src/basic_interact.rs b/contracts/examples/adder/interact/src/basic_interact.rs index 6f3d8dbb07..4fc748c95e 100644 --- a/contracts/examples/adder/interact/src/basic_interact.rs +++ b/contracts/examples/adder/interact/src/basic_interact.rs @@ -6,21 +6,8 @@ use adder::adder_proxy; use basic_interact_config::Config; use basic_interact_state::State; use clap::Parser; -use multiversx_sc_snippets::{ - env_logger, - multiversx_sc::types::{Address, ReturnsNewAddress, ReturnsResultConv}, - multiversx_sc_scenario::{ - api::StaticApi, - bech32, - mandos_system::ScenarioRunner, - num_bigint::BigUint, - scenario_format::interpret_trait::{InterpretableFrom, InterpreterContext}, - scenario_model::{BytesValue, Scenario}, - standalone::retrieve_account_as_scenario_set_state, - test_wallets, ContractInfo, NumExpr, WithRawTxResponse, - }, - tokio, Interactor, InteractorPrepareAsync, -}; + +use multiversx_sc_snippets::imports::*; const INTERACTOR_SCENARIO_TRACE_PATH: &str = "interactor_trace.scen.json"; @@ -189,7 +176,7 @@ impl AdderInteract { .to(self.state.adder().to_address()) .typed(adder_proxy::AdderProxy) .sum() - .returns(ReturnsResultConv::::new()) + .returns(ReturnsResultConv::::new()) .prepare_async() .run() .await; diff --git a/contracts/examples/adder/tests/adder_blackbox_chained_test.rs b/contracts/examples/adder/tests/adder_blackbox_chained_test.rs index 05b95ba905..b10b3e3a54 100644 --- a/contracts/examples/adder/tests/adder_blackbox_chained_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_chained_test.rs @@ -1,6 +1,7 @@ +use multiversx_sc_scenario::imports::*; +use num_bigint::BigUint; + use adder::*; -use multiversx_sc::types::{AddressExpr, ScExpr, WithNewAddress, WithResultConv}; -use multiversx_sc_scenario::{api::StaticApi, num_bigint::BigUint, scenario_model::*, *}; const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; diff --git a/contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs b/contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs index 1370a064fc..e3a2540386 100644 --- a/contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs @@ -1,9 +1,7 @@ +use multiversx_sc_scenario::imports::*; +use num_bigint::BigUint; + use adder::*; -use multiversx_sc::{ - storage::mappers::SingleValue, - types::{AddressExpr, ReturnsResultConv, WithNewAddress}, -}; -use multiversx_sc_scenario::{api::StaticApi, num_bigint::BigUint, scenario_model::*, *}; const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; diff --git a/contracts/examples/adder/tests/adder_blackbox_raw_steps_test.rs b/contracts/examples/adder/tests/adder_blackbox_raw_steps_test.rs index 92dba83b12..a88e4eb9b6 100644 --- a/contracts/examples/adder/tests/adder_blackbox_raw_steps_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_raw_steps_test.rs @@ -1,4 +1,4 @@ -use multiversx_sc_scenario::{scenario_model::*, *}; +use multiversx_sc_scenario::imports::*; const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; diff --git a/contracts/examples/adder/tests/adder_blackbox_test.rs b/contracts/examples/adder/tests/adder_blackbox_test.rs index ec98935ba4..6a3142a207 100644 --- a/contracts/examples/adder/tests/adder_blackbox_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_test.rs @@ -1,6 +1,7 @@ +use multiversx_sc_scenario::imports::*; +use num_bigint::BigUint; + use adder::*; -use multiversx_sc::types::{AddressExpr, ReturnsResultConv, ScExpr, WithNewAddress}; -use multiversx_sc_scenario::{api::StaticApi, num_bigint::BigUint, scenario_model::*, *}; const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; diff --git a/contracts/examples/adder/tests/adder_blackbox_upgrade_test.rs b/contracts/examples/adder/tests/adder_blackbox_upgrade_test.rs index 4cb12cad54..5a38f7c5df 100644 --- a/contracts/examples/adder/tests/adder_blackbox_upgrade_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_upgrade_test.rs @@ -1,4 +1,4 @@ -use multiversx_sc_scenario::{scenario_model::*, *}; +use multiversx_sc_scenario::imports::*; const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; diff --git a/contracts/examples/adder/tests/adder_whitebox_test.rs b/contracts/examples/adder/tests/adder_whitebox_test.rs index d068aa1b1d..50ad95faa6 100644 --- a/contracts/examples/adder/tests/adder_whitebox_test.rs +++ b/contracts/examples/adder/tests/adder_whitebox_test.rs @@ -1,5 +1,5 @@ use adder::*; -use multiversx_sc_scenario::{scenario_model::*, *}; +use multiversx_sc_scenario::imports::*; const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; diff --git a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs index c6387e5c43..5dceba3659 100644 --- a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs +++ b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs @@ -1,16 +1,6 @@ use crowdfunding_esdt::{ProxyTrait as _, Status}; -use multiversx_sc::{ - storage::mappers::SingleValue, - types::{Address, EgldOrEsdtTokenIdentifier}, -}; -use multiversx_sc_scenario::{ - api::StaticApi, - scenario_model::{ - Account, AddressValue, CheckAccount, CheckStateStep, ScCallStep, ScDeployStep, ScQueryStep, - SetStateStep, TxExpect, - }, - ContractInfo, ScenarioWorld, -}; + +use multiversx_sc_scenario::imports::*; use num_bigint::BigUint; const CF_DEADLINE: u64 = 7 * 24 * 60 * 60; // 1 week in seconds diff --git a/contracts/examples/multisig/interact/src/multisig_interact.rs b/contracts/examples/multisig/interact/src/multisig_interact.rs index 65b6c0dbb1..9148af2e86 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact.rs @@ -8,22 +8,8 @@ use clap::Parser; use multisig::multisig_proxy; use multisig_interact_config::Config; use multisig_interact_state::State; -use multiversx_sc_scenario::{ - mandos_system::ScenarioRunner, - multiversx_sc::types::{BigUint, ReturnsNewAddress, ReturnsResult}, - scenario_format::interpret_trait::InterpretableFrom, - standalone::retrieve_account_as_scenario_set_state, - test_wallets, NumExpr, -}; -use multiversx_sc_snippets::{ - dns_address_for_name, env_logger, - multiversx_sc::{codec::multi_types::MultiValueVec, types::Address}, - multiversx_sc_scenario::{ - api::StaticApi, bech32, scenario_format::interpret_trait::InterpreterContext, - scenario_model::*, ContractInfo, - }, - tokio, Interactor, InteractorPrepareAsync, -}; + +use multiversx_sc_snippets::imports::*; const SYSTEM_SC_BECH32: &str = "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u"; const INTERACTOR_SCENARIO_TRACE_PATH: &str = "interactor_trace.scen.json"; diff --git a/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs b/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs index 61788f99af..e7fb0104af 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs @@ -1,12 +1,6 @@ use std::time::Duration; -use multiversx_sc_scenario::{ - multiversx_sc::{ - codec::Empty, - types::{FunctionCall, ReturnsResult}, - }, - NumExpr, ReturnsNewTokenIdentifier, -}; +use multiversx_sc_snippets::imports::*; use super::*; diff --git a/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs b/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs index b267f17357..fbfdd6f4a6 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs @@ -1,17 +1,6 @@ use std::time::Duration; -use multiversx_sc_scenario::{ - multiversx_sc::types::{FunctionCall, ManagedAddress, ReturnsResult}, - NumExpr, -}; -#[allow(unused_imports)] -use multiversx_sc_snippets::multiversx_sc::types::{ - EsdtTokenPayment, MultiValueEncoded, TokenIdentifier, -}; -use multiversx_sc_snippets::multiversx_sc_scenario::{ - mandos_system::ScenarioRunner, scenario_format::interpret_trait::InterpretableFrom, - standalone::retrieve_account_as_scenario_set_state, -}; +use multiversx_sc_snippets::imports::*; use super::*; diff --git a/contracts/examples/multisig/tests/multisig_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_blackbox_test.rs index 7107a6628e..691c2750db 100644 --- a/contracts/examples/multisig/tests/multisig_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_blackbox_test.rs @@ -1,24 +1,11 @@ +use multiversx_sc::codec::top_encode_to_vec_u8_or_panic; +use multiversx_sc_scenario::imports::*; + 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, - types::{Address, AddressExpr, CodeMetadata, FunctionCall, ReturnsResult}, -}; -use multiversx_sc_scenario::{ - api::StaticApi, - scenario_model::{ - Account, AddressValue, CheckAccount, CheckStateStep, ScCallStep, ScDeployStep, ScQueryStep, - SetStateStep, TxExpect, - }, - ContractInfo, ScenarioTxRun, ScenarioWorld, -}; use num_bigint::BigUint; const ADDER_ADDRESS_EXPR: &str = "sc:adder"; diff --git a/contracts/examples/multisig/tests/multisig_whitebox_test.rs b/contracts/examples/multisig/tests/multisig_whitebox_test.rs index 227c012bc7..456fc9f96f 100644 --- a/contracts/examples/multisig/tests/multisig_whitebox_test.rs +++ b/contracts/examples/multisig/tests/multisig_whitebox_test.rs @@ -1,5 +1,6 @@ #![allow(unused)] +use multiversx_sc_scenario::imports::*; use std::borrow::Borrow; use adder::Adder; @@ -8,26 +9,6 @@ use multisig::{ multisig_perform::MultisigPerformModule, multisig_propose::MultisigProposeModule, user_role::UserRole, Multisig, }; -use multiversx_sc::{ - api::ManagedTypeApi, - codec::multi_types::OptionalValue, - storage::mappers::SingleValue, - types::{ - Address, BigUint, BoxedBytes, CodeMetadata, FunctionCall, ManagedAddress, ManagedBuffer, - ManagedVec, - }, -}; -use multiversx_sc_scenario::{ - managed_address, managed_biguint, - multiversx_chain_vm::types::VMAddress, - rust_biguint, - scenario_model::{ - Account, AddressValue, CheckAccount, CheckStateStep, ScCallStep, ScDeployStep, ScQueryStep, - SetStateStep, TxExpect, TypedScQuery, - }, - testing_framework::TxResult, - DebugApi, ScenarioWorld, WhiteboxContract, -}; const OWNER_ADDRESS_EXPR: &str = "address:owner"; const PROPOSER_ADDRESS_EXPR: &str = "address:proposer"; diff --git a/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs b/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs index 2902c7832c..4380f0122f 100644 --- a/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs +++ b/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs @@ -1,25 +1,9 @@ mod mock_seed_nft_minter; mod utils; +use multiversx_sc_scenario::imports::*; use std::iter::zip; -use multiversx_sc::{ - codec::multi_types::MultiValue2, - storage::mappers::SingleValue, - types::{ - Address, BigUint, EgldOrEsdtTokenIdentifier, ManagedVec, MultiValueEncoded, - OperationCompletionStatus, TokenIdentifier, - }, -}; -use multiversx_sc_scenario::{ - api::StaticApi, - scenario_model::{ - Account, AddressValue, CheckAccount, CheckStateStep, ScCallStep, ScDeployStep, ScQueryStep, - SetStateStep, TxESDT, TypedResponse, - }, - ContractInfo, DebugApi, ScenarioWorld, WhiteboxContract, -}; - use crate::mock_seed_nft_minter::ProxyTrait as _; use rewards_distribution::{ Bracket, ContractObj, ProxyTrait as _, RewardsDistribution, DIVISION_SAFETY_CONSTANT, diff --git a/contracts/feature-tests/abi-tester/src/abi_proxy.rs b/contracts/feature-tests/abi-tester/src/abi_proxy.rs index b5b4b931c2..66548a21d8 100644 --- a/contracts/feature-tests/abi-tester/src/abi_proxy.rs +++ b/contracts/feature-tests/abi-tester/src/abi_proxy.rs @@ -415,10 +415,7 @@ pub enum AbiEnum { Nothing, Something(i32), SomethingMore(u8, OnlyShowsUpAsNested08), - SomeStruct { - a: u16, - b: OnlyShowsUpAsNested09, - }, + SomeStruct { a: u16, b: OnlyShowsUpAsNested09 }, } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] @@ -509,8 +506,5 @@ pub enum ExplicitDiscriminantMixed { Unit, Tuple(u16), Five, - Struct { - a: u8, - b: u16, - }, + Struct { a: u8, b: u16 }, } diff --git a/contracts/feature-tests/basic-features/interact/src/bf_interact.rs b/contracts/feature-tests/basic-features/interact/src/bf_interact.rs index ceca3ace12..b93f0baac3 100644 --- a/contracts/feature-tests/basic-features/interact/src/bf_interact.rs +++ b/contracts/feature-tests/basic-features/interact/src/bf_interact.rs @@ -8,20 +8,8 @@ use basic_features::{ use bf_interact_config::Config; use bf_interact_state::State; use clap::Parser; -use multiversx_sc_snippets::{ - env_logger, - multiversx_sc::{codec::multi_types::IgnoreValue, types::Address}, - multiversx_sc_scenario::{ - api::StaticApi, - bech32, - mandos_system::ScenarioRunner, - scenario_format::interpret_trait::{InterpretableFrom, InterpreterContext}, - scenario_model::{BytesValue, ScCallStep, ScDeployStep, Scenario, TxExpect}, - standalone::retrieve_account_as_scenario_set_state, - test_wallets, ContractInfo, - }, - tokio, Interactor, -}; + +use multiversx_sc_snippets::imports::*; const INTERACTOR_SCENARIO_TRACE_PATH: &str = "interactor_trace.scen.json"; diff --git a/contracts/feature-tests/basic-features/tests/basic_features_managed_buffer_test.rs b/contracts/feature-tests/basic-features/tests/basic_features_managed_buffer_test.rs index cde4caa56e..88320b17f6 100644 --- a/contracts/feature-tests/basic-features/tests/basic_features_managed_buffer_test.rs +++ b/contracts/feature-tests/basic-features/tests/basic_features_managed_buffer_test.rs @@ -1,5 +1,4 @@ -use multiversx_sc::types::{ManagedAddress, ManagedBuffer}; -use multiversx_sc_scenario::{api::StaticApi, *}; +use multiversx_sc_scenario::imports::*; use basic_features::managed_buffer_features::ManagedBufferFeatures; diff --git a/contracts/feature-tests/basic-features/tests/basic_features_managed_vec_test.rs b/contracts/feature-tests/basic-features/tests/basic_features_managed_vec_test.rs index 62790660d0..fccc91e431 100644 --- a/contracts/feature-tests/basic-features/tests/basic_features_managed_vec_test.rs +++ b/contracts/feature-tests/basic-features/tests/basic_features_managed_vec_test.rs @@ -1,5 +1,4 @@ -use multiversx_sc::types::{BigUint, ManagedVec}; -use multiversx_sc_scenario::{api::StaticApi, *}; +use multiversx_sc_scenario::imports::*; use basic_features::managed_vec_features::ManagedVecFeatures; diff --git a/contracts/feature-tests/basic-features/tests/basic_features_ordered_binary_tree_test.rs b/contracts/feature-tests/basic-features/tests/basic_features_ordered_binary_tree_test.rs index 071da4a958..fe48caecba 100644 --- a/contracts/feature-tests/basic-features/tests/basic_features_ordered_binary_tree_test.rs +++ b/contracts/feature-tests/basic-features/tests/basic_features_ordered_binary_tree_test.rs @@ -1,10 +1,8 @@ #![allow(deprecated)] use basic_features::BasicFeatures; -use multiversx_sc::imports::{OrderedBinaryTreeNode, NULL_NODE_ID}; -use multiversx_sc_scenario::{ - managed_biguint, rust_biguint, testing_framework::BlockchainStateWrapper, -}; + +use multiversx_sc_scenario::imports::*; #[test] fn ordered_binary_tree_test() { diff --git a/contracts/feature-tests/basic-features/tests/basic_features_token_identifier_test.rs b/contracts/feature-tests/basic-features/tests/basic_features_token_identifier_test.rs index 3b85d24b4f..8cfe9ba2d2 100644 --- a/contracts/feature-tests/basic-features/tests/basic_features_token_identifier_test.rs +++ b/contracts/feature-tests/basic-features/tests/basic_features_token_identifier_test.rs @@ -1,5 +1,4 @@ -use multiversx_sc::types::{EgldOrEsdtTokenIdentifier, ManagedBuffer, TokenIdentifier}; -use multiversx_sc_scenario::{api::StaticApi, *}; +use multiversx_sc_scenario::imports::*; use basic_features::token_identifier_features::TokenIdentifierFeatures; diff --git a/contracts/feature-tests/composability/forwarder/tests/forwarder_blackbox_test.rs b/contracts/feature-tests/composability/forwarder/tests/forwarder_blackbox_test.rs index bbe8d68ecb..f6812aa0bc 100644 --- a/contracts/feature-tests/composability/forwarder/tests/forwarder_blackbox_test.rs +++ b/contracts/feature-tests/composability/forwarder/tests/forwarder_blackbox_test.rs @@ -1,12 +1,6 @@ use forwarder::nft::{Color, ProxyTrait as _}; -use multiversx_sc_scenario::{ - api::StaticApi, - scenario_model::{ - Account, CheckAccount, CheckStateStep, ScCallStep, SetStateStep, TransferStep, - }, - ContractInfo, ScenarioWorld, -}; +use multiversx_sc_scenario::imports::*; const USER_ADDRESS_EXPR: &str = "address:user"; const FORWARDER_ADDRESS_EXPR: &str = "sc:forwarder"; diff --git a/contracts/feature-tests/composability/forwarder/tests/forwarder_whitebox_test.rs b/contracts/feature-tests/composability/forwarder/tests/forwarder_whitebox_test.rs index 4cb15d884f..0adb09b286 100644 --- a/contracts/feature-tests/composability/forwarder/tests/forwarder_whitebox_test.rs +++ b/contracts/feature-tests/composability/forwarder/tests/forwarder_whitebox_test.rs @@ -1,12 +1,5 @@ use forwarder::nft::{Color, ForwarderNftModule}; -use multiversx_sc::{contract_base::ContractBase, types::Address}; -use multiversx_sc_scenario::{ - managed_address, managed_biguint, managed_token_id, - scenario_model::{ - Account, AddressValue, CheckAccount, CheckStateStep, ScCallStep, SetStateStep, - }, - ScenarioWorld, WhiteboxContract, -}; +use multiversx_sc_scenario::imports::*; const USER_ADDRESS_EXPR: &str = "address:user"; const FORWARDER_ADDRESS_EXPR: &str = "sc:forwarder"; diff --git a/contracts/feature-tests/composability/interact/src/call_tree_calling_functions.rs b/contracts/feature-tests/composability/interact/src/call_tree_calling_functions.rs index 9e86f5dfdb..9305aca3be 100644 --- a/contracts/feature-tests/composability/interact/src/call_tree_calling_functions.rs +++ b/contracts/feature-tests/composability/interact/src/call_tree_calling_functions.rs @@ -1,16 +1,9 @@ use std::{cell::RefCell, rc::Rc}; use forwarder_queue::QueuedCallType; -use multiversx_sc_snippets::{ - multiversx_sc::types::{EgldOrEsdtTokenIdentifier, EgldOrEsdtTokenPayment, MultiValueEncoded}, - multiversx_sc_scenario::{ - api::StaticApi, - bech32, - num_bigint::BigUint, - scenario_model::{ScCallStep, TxExpect}, - }, - StepBuffer, -}; + +use multiversx_sc_snippets::imports::*; +use num_bigint::BigUint; use crate::{ call_tree::{CallNode, CallState, ForwarderQueueTarget}, diff --git a/contracts/feature-tests/composability/interact/src/call_tree_deploy.rs b/contracts/feature-tests/composability/interact/src/call_tree_deploy.rs index c9c2f1498c..46e5c4804d 100644 --- a/contracts/feature-tests/composability/interact/src/call_tree_deploy.rs +++ b/contracts/feature-tests/composability/interact/src/call_tree_deploy.rs @@ -1,20 +1,10 @@ use crate::{call_tree::CallState, comp_interact_controller::ComposabilityInteract}; use forwarder_queue::ProxyTrait as _; -use multiversx_sc_snippets::{ - multiversx_sc::{ - codec::multi_types::OptionalValue, - types::{BoxedBytes, ManagedBuffer}, - }, - multiversx_sc_scenario::{ - api::StaticApi, - bech32, - scenario_model::{ScDeployStep, TypedScDeploy}, - }, - StepBuffer, -}; use vault::ProxyTrait as _; +use multiversx_sc_snippets::imports::*; + impl ComposabilityInteract { pub async fn deploy_call_tree_contracts(&mut self, call_state: &CallState) { let mut typed_vault_deploys = self.typed_sc_deploy_vault(call_state).await; diff --git a/contracts/feature-tests/composability/interact/src/comp_interact_config.rs b/contracts/feature-tests/composability/interact/src/comp_interact_config.rs index c27957a9fb..cbe6d6498f 100644 --- a/contracts/feature-tests/composability/interact/src/comp_interact_config.rs +++ b/contracts/feature-tests/composability/interact/src/comp_interact_config.rs @@ -1,8 +1,6 @@ use forwarder_queue::QueuedCallType; -use multiversx_sc_snippets::{ - multiversx_sc::types::{EgldOrEsdtTokenIdentifier, TokenIdentifier}, - multiversx_sc_scenario::{api::StaticApi, num_bigint::BigUint}, -}; +use multiversx_sc_snippets::imports::*; +use num_bigint::BigUint; use serde::Deserialize; use std::{fmt::Debug, io::Read, str::FromStr}; diff --git a/contracts/feature-tests/composability/interact/src/comp_interact_controller.rs b/contracts/feature-tests/composability/interact/src/comp_interact_controller.rs index f5851d6e6c..409ce234a7 100644 --- a/contracts/feature-tests/composability/interact/src/comp_interact_controller.rs +++ b/contracts/feature-tests/composability/interact/src/comp_interact_controller.rs @@ -1,14 +1,6 @@ use crate::{call_tree::CallState, comp_interact_config::Config, comp_interact_state::State}; -use multiversx_sc_snippets::{ - multiversx_sc::types::Address, - multiversx_sc_scenario::{ - scenario_format::interpret_trait::{InterpretableFrom, InterpreterContext}, - scenario_model::BytesValue, - test_wallets::judy, - }, - Interactor, -}; +use multiversx_sc_snippets::imports::*; const INTERACTOR_SCENARIO_TRACE_PATH: &str = "comp_interact_trace.scen.json"; @@ -27,7 +19,7 @@ impl ComposabilityInteract { .await .with_tracer(INTERACTOR_SCENARIO_TRACE_PATH) .await; - let wallet_address = interactor.register_wallet(judy()); + let wallet_address = interactor.register_wallet(test_wallets::judy()); let forw_queue_code = BytesValue::interpret_from( "mxsc:../forwarder-queue/output/forwarder-queue.mxsc.json", &InterpreterContext::default(), diff --git a/contracts/feature-tests/composability/interact/src/comp_interact_main.rs b/contracts/feature-tests/composability/interact/src/comp_interact_main.rs index b6e0ba9778..cefa9272f2 100644 --- a/contracts/feature-tests/composability/interact/src/comp_interact_main.rs +++ b/contracts/feature-tests/composability/interact/src/comp_interact_main.rs @@ -12,11 +12,7 @@ use clap::Parser; use comp_interact_controller::ComposabilityInteract; -use multiversx_sc_snippets::{ - env_logger, - multiversx_sc_scenario::{api::StaticApi, ContractInfo}, - tokio, -}; +use multiversx_sc_snippets::imports::*; #[tokio::main] async fn main() { diff --git a/contracts/feature-tests/composability/tests/promises_feature_blackbox_test.rs b/contracts/feature-tests/composability/tests/promises_feature_blackbox_test.rs index a2ee00c631..e29ff1c7ca 100644 --- a/contracts/feature-tests/composability/tests/promises_feature_blackbox_test.rs +++ b/contracts/feature-tests/composability/tests/promises_feature_blackbox_test.rs @@ -1,9 +1,5 @@ use multiversx_sc::types::BigUint; -use multiversx_sc_scenario::{ - api::StaticApi, - scenario_model::{Account, CheckAccount, CheckStateStep, ScCallStep, SetStateStep}, - ContractInfo, ScenarioWorld, -}; +use multiversx_sc_scenario::imports::*; use promises_features::call_sync_bt::ProxyTrait; 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 acaefbfb1d..2428a9a6bc 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,12 +1,4 @@ -use multiversx_sc::{codec::multi_types::MultiValueVec, types::Address}; -use multiversx_sc_scenario::{ - api::StaticApi, - scenario_model::{ - Account, AddressValue, CheckAccount, CheckStateStep, ScCallStep, ScDeployStep, - SetStateStep, TxExpect, - }, - ContractInfo, ScenarioWorld, -}; +use multiversx_sc_scenario::imports::*; use transfer_role_features::ProxyTrait as _; const ACCEPT_FUNDS_FUNC_NAME: &[u8] = b"accept_funds"; 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 f50b2f88ba..dc733dede9 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 @@ -1,14 +1,5 @@ -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, - scenario_model::{ - Account, AddressValue, CheckAccount, CheckStateStep, ScCallStep, ScDeployStep, SetStateStep, - }, - ScenarioWorld, WhiteboxContract, -}; +use multiversx_sc_scenario::imports::*; use transfer_role_features::TransferRoleFeatures; const OWNER_ADDRESS_EXPR: &str = "address:owner"; diff --git a/contracts/feature-tests/exchange-features/tests/exchange_features_blackbox_test.rs b/contracts/feature-tests/exchange-features/tests/exchange_features_blackbox_test.rs index 6ea73fb3a6..88c87e3931 100644 --- a/contracts/feature-tests/exchange-features/tests/exchange_features_blackbox_test.rs +++ b/contracts/feature-tests/exchange-features/tests/exchange_features_blackbox_test.rs @@ -1,4 +1,4 @@ -use multiversx_sc_scenario::{scenario_model::*, *}; +use multiversx_sc_scenario::imports::*; const EXCHANGE_FEATURES_PATH_EXPR: &str = "mxsc:output/exchange-features.mxsc.json"; diff --git a/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs b/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs index ff14571fd9..66b2d9527e 100644 --- a/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs +++ b/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs @@ -1,6 +1,6 @@ mod pmf_proxy; -use multiversx_sc::types::{AddressExpr, ScExpr}; -use multiversx_sc_scenario::{scenario_model::*, *}; + +use multiversx_sc_scenario::imports::*; const OWNER: AddressExpr = AddressExpr("owner"); const SC_PMF: ScExpr = ScExpr("pmf"); diff --git a/contracts/feature-tests/payable-features/tests/payable_blackbox_test.rs b/contracts/feature-tests/payable-features/tests/payable_blackbox_test.rs index 6d86ebe77f..82581c8170 100644 --- a/contracts/feature-tests/payable-features/tests/payable_blackbox_test.rs +++ b/contracts/feature-tests/payable-features/tests/payable_blackbox_test.rs @@ -1,4 +1,4 @@ -use multiversx_sc_scenario::{scenario_model::*, *}; +use multiversx_sc_scenario::imports::*; const PF_PATH_EXPR: &str = "mxsc:output/payable-features.mxsc.json"; diff --git a/contracts/feature-tests/rust-snippets-generator-test/interact-rs/src/interactor_main.rs b/contracts/feature-tests/rust-snippets-generator-test/interact-rs/src/interactor_main.rs index e0999b7644..92d00a227d 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/interact-rs/src/interactor_main.rs +++ b/contracts/feature-tests/rust-snippets-generator-test/interact-rs/src/interactor_main.rs @@ -2,19 +2,7 @@ use rust_snippets_generator_test::{ProxyTrait as _, *}; -use multiversx_sc_snippets::{ - env_logger, - erdrs::wallet::Wallet, - multiversx_sc::{codec::multi_types::*, types::*}, - multiversx_sc_scenario::{ - api::StaticApi, - bech32, - scenario_format::interpret_trait::{InterpretableFrom, InterpreterContext}, - scenario_model::*, - ContractInfo, - }, - sdk, tokio, Interactor, -}; +use multiversx_sc_snippets::imports::*; const GATEWAY: &str = sdk::blockchain::DEVNET_GATEWAY; const PEM: &str = "alice.pem"; diff --git a/contracts/feature-tests/rust-testing-framework-tester/tests/tester_blackbox_test.rs b/contracts/feature-tests/rust-testing-framework-tester/tests/tester_blackbox_test.rs index d544af3a04..d927b1ba4a 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/tests/tester_blackbox_test.rs +++ b/contracts/feature-tests/rust-testing-framework-tester/tests/tester_blackbox_test.rs @@ -1,5 +1,5 @@ -use multiversx_sc_scenario::{api::StaticApi, scenario_model::*, *}; -use rust_testing_framework_tester::*; // TODO: clean up imports +use multiversx_sc_scenario::imports::*; +use rust_testing_framework_tester::*; const WASM_PATH_EXPR: &str = "mxsc:output/rust-testing-framework-tester.mxsc.json"; diff --git a/contracts/feature-tests/rust-testing-framework-tester/tests/tester_whitebox_legacy_test.rs b/contracts/feature-tests/rust-testing-framework-tester/tests/tester_whitebox_legacy_test.rs index 1f56f5bb21..1fad8f653a 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/tests/tester_whitebox_legacy_test.rs +++ b/contracts/feature-tests/rust-testing-framework-tester/tests/tester_whitebox_legacy_test.rs @@ -1,20 +1,11 @@ #![allow(deprecated)] // TODO: migrate tests -use adder::*; -use forwarder::call_sync::*; +use multiversx_sc_scenario::imports::*; use num_traits::ToPrimitive; +use adder::*; use basic_features::BasicFeatures; -use multiversx_sc::{ - codec::Empty, - contract_base::ContractBase, - err_msg, - types::{Address, BigUint, EsdtLocalRole, EsdtTokenPayment, ManagedVec, TokenIdentifier}, -}; -use multiversx_sc_scenario::{ - api::DebugApi, assert_values_eq, managed_address, managed_biguint, managed_buffer, - managed_token_id, rust_biguint, testing_framework::*, -}; +use forwarder::call_sync::*; use rust_testing_framework_tester::{dummy_module::DummyModule, *}; const TEST_OUTPUT_PATH: &str = "test.scen.json"; diff --git a/contracts/feature-tests/use-module/tests/gov_module_whitebox_test.rs b/contracts/feature-tests/use-module/tests/gov_module_whitebox_test.rs index fe90f658e4..267639fd6f 100644 --- a/contracts/feature-tests/use-module/tests/gov_module_whitebox_test.rs +++ b/contracts/feature-tests/use-module/tests/gov_module_whitebox_test.rs @@ -1,15 +1,8 @@ -use multiversx_sc::types::{Address, ManagedVec, MultiValueEncoded}; use multiversx_sc_modules::governance::{ governance_configurable::GovernanceConfigurablePropertiesModule, governance_proposal::VoteType, GovernanceModule, }; -use multiversx_sc_scenario::{ - managed_address, managed_biguint, managed_buffer, managed_token_id, - scenario_model::{ - Account, AddressValue, CheckAccount, CheckStateStep, ScCallStep, ScDeployStep, SetStateStep, - }, - ScenarioWorld, WhiteboxContract, -}; +use multiversx_sc_scenario::imports::*; const GOV_TOKEN_ID_EXPR: &str = "str:GOV-123456"; const GOV_TOKEN_ID: &[u8] = b"GOV-123456"; diff --git a/contracts/feature-tests/use-module/tests/staking_module_whitebox_test.rs b/contracts/feature-tests/use-module/tests/staking_module_whitebox_test.rs index 91a96db16a..049936bb44 100644 --- a/contracts/feature-tests/use-module/tests/staking_module_whitebox_test.rs +++ b/contracts/feature-tests/use-module/tests/staking_module_whitebox_test.rs @@ -1,12 +1,5 @@ -use multiversx_sc::types::{Address, EgldOrEsdtTokenIdentifier, ManagedVec}; use multiversx_sc_modules::staking::StakingModule; -use multiversx_sc_scenario::{ - managed_address, managed_biguint, managed_token_id, - scenario_model::{ - Account, AddressValue, CheckAccount, CheckStateStep, ScCallStep, ScDeployStep, SetStateStep, - }, - ScenarioWorld, WhiteboxContract, -}; +use multiversx_sc_scenario::imports::*; const STAKING_TOKEN_ID_EXPR: &str = "str:STAKE-123456"; const STAKING_TOKEN_ID: &[u8] = b"STAKE-123456"; diff --git a/contracts/feature-tests/use-module/tests/token_merge_module_whitebox_test.rs b/contracts/feature-tests/use-module/tests/token_merge_module_whitebox_test.rs index a970685918..eb93ff155a 100644 --- a/contracts/feature-tests/use-module/tests/token_merge_module_whitebox_test.rs +++ b/contracts/feature-tests/use-module/tests/token_merge_module_whitebox_test.rs @@ -1,20 +1,8 @@ -use multiversx_sc::{ - arrayvec::ArrayVec, - codec::{test_util::top_encode_to_vec_u8_or_panic, Empty}, - contract_base::ContractBase, - storage::mappers::StorageTokenWrapper, - types::{Address, EsdtTokenPayment, ManagedVec}, -}; +use multiversx_sc_scenario::imports::*; + use multiversx_sc_modules::token_merge::{ merged_token_instances::MergedTokenInstances, merged_token_setup::MergedTokenSetupModule, }; -use multiversx_sc_scenario::{ - managed_address, managed_biguint, managed_token_id, - scenario_model::{ - Account, AddressValue, CheckAccount, CheckStateStep, ScCallStep, SetStateStep, TxESDT, - }, - ScenarioWorld, WhiteboxContract, -}; use use_module::token_merge_mod_impl::{CustomAttributes, TokenMergeModImpl}; const OWNER_ADDRESS_EXPR: &str = "address:owner"; diff --git a/framework/base/src/imports_reexport.rs b/framework/base/src/imports_reexport.rs index 710bd8bbf3..e023525e9d 100644 --- a/framework/base/src/imports_reexport.rs +++ b/framework/base/src/imports_reexport.rs @@ -5,8 +5,8 @@ pub mod imports { api::{ErrorApiImpl, ManagedTypeApi, VMApi}, arrayvec::ArrayVec, codec::{ - multi_types::*, CodecFrom, CodecFromSelf, CodecInto, DecodeError, IntoMultiValue, - NestedDecode, NestedEncode, TopDecode, TopEncode, + multi_types::*, CodecFrom, CodecFromSelf, CodecInto, DecodeError, Empty, + IntoMultiValue, NestedDecode, NestedEncode, TopDecode, TopEncode, }, contract_base::{ContractBase, ProxyObjBase, ProxyObjNew}, err_msg, diff --git a/framework/meta/src/cmd/contract/generate_snippets/snippet_template_gen.rs b/framework/meta/src/cmd/contract/generate_snippets/snippet_template_gen.rs index 0feb12e562..093afa908c 100644 --- a/framework/meta/src/cmd/contract/generate_snippets/snippet_template_gen.rs +++ b/framework/meta/src/cmd/contract/generate_snippets/snippet_template_gen.rs @@ -12,19 +12,7 @@ pub(crate) fn write_snippet_imports(file: &mut File, contract_crate_name: &str) use {contract_crate_name}::ProxyTrait as _; use {contract_crate_name}::*; -use multiversx_sc_snippets::{{ - env_logger, - erdrs::wallet::Wallet, - multiversx_sc::{{codec::multi_types::*, types::*}}, - multiversx_sc_scenario::{{ - api::StaticApi, - bech32, - scenario_format::interpret_trait::{{InterpretableFrom, InterpreterContext}}, - scenario_model::*, - ContractInfo, - }}, - sdk, tokio, Interactor, -}}; +use multiversx_sc_snippets::imports::*; " ) .unwrap(); diff --git a/framework/scenario/src/facade.rs b/framework/scenario/src/facade.rs index a37265e0b4..77a00e4792 100644 --- a/framework/scenario/src/facade.rs +++ b/framework/scenario/src/facade.rs @@ -1,13 +1,14 @@ mod contract_info; mod debugger_backend; -pub(crate) mod result_handlers; +pub mod expr; +pub mod result_handlers; mod scenario_world; mod scenario_world_runner; mod scenario_world_steps; mod scenario_world_steps_deprecated; mod scenario_world_whitebox; mod whitebox_contract; -pub(crate) mod world_tx; +pub mod world_tx; pub use contract_info::ContractInfo; pub use scenario_world::ScenarioWorld; diff --git a/framework/scenario/src/facade/world_tx/expr.rs b/framework/scenario/src/facade/expr.rs similarity index 100% rename from framework/scenario/src/facade/world_tx/expr.rs rename to framework/scenario/src/facade/expr.rs diff --git a/framework/scenario/src/facade/world_tx/expr/file_expr.rs b/framework/scenario/src/facade/expr/file_expr.rs similarity index 83% rename from framework/scenario/src/facade/world_tx/expr/file_expr.rs rename to framework/scenario/src/facade/expr/file_expr.rs index d9d3c77756..f197ce4e16 100644 --- a/framework/scenario/src/facade/world_tx/expr/file_expr.rs +++ b/framework/scenario/src/facade/expr/file_expr.rs @@ -1,13 +1,7 @@ -use core::ptr; -use std::path::PathBuf; - use multiversx_chain_scenario_format::{ interpret_trait::InterpreterContext, value_interpreter::interpret_string, }; -use multiversx_sc::types::{ - AnnotatedValue, ManagedAddress, ManagedBuffer, TxEnv, TxFrom, TxFromSpecified, TxTo, - TxToSpecified, -}; +use multiversx_sc::types::{AnnotatedValue, ManagedBuffer}; use crate::{api::StaticApi, ScenarioTxEnvData}; diff --git a/framework/scenario/src/facade/world_tx/expr/mxsc_expr.rs b/framework/scenario/src/facade/expr/mxsc_expr.rs similarity index 78% rename from framework/scenario/src/facade/world_tx/expr/mxsc_expr.rs rename to framework/scenario/src/facade/expr/mxsc_expr.rs index c0f574e8cd..0946b93327 100644 --- a/framework/scenario/src/facade/world_tx/expr/mxsc_expr.rs +++ b/framework/scenario/src/facade/expr/mxsc_expr.rs @@ -1,15 +1,9 @@ -use core::ptr; -use std::path::PathBuf; - use multiversx_chain_scenario_format::{ interpret_trait::InterpreterContext, value_interpreter::interpret_string, }; -use multiversx_sc::types::{ - AnnotatedValue, ManagedAddress, ManagedBuffer, TxCodeValue, TxEnv, TxFrom, TxFromSpecified, - TxTo, TxToSpecified, -}; +use multiversx_sc::types::{AnnotatedValue, ManagedBuffer, TxCodeValue}; -use crate::{api::StaticApi, ScenarioEnvExec, ScenarioTxEnv, ScenarioTxEnvData}; +use crate::ScenarioTxEnv; const MXSC_PREFIX: &str = "mxsc:"; diff --git a/framework/scenario/src/facade/world_tx/expr/num_expr.rs b/framework/scenario/src/facade/expr/num_expr.rs similarity index 73% rename from framework/scenario/src/facade/world_tx/expr/num_expr.rs rename to framework/scenario/src/facade/expr/num_expr.rs index de9137b8fc..704f52496b 100644 --- a/framework/scenario/src/facade/world_tx/expr/num_expr.rs +++ b/framework/scenario/src/facade/expr/num_expr.rs @@ -1,16 +1,12 @@ -use crate::{api::StaticApi, ScenarioEnvExec, ScenarioTxEnv, ScenarioTxEnvData}; -use core::ptr; +use crate::ScenarioTxEnv; + use multiversx_chain_scenario_format::{ interpret_trait::InterpreterContext, value_interpreter::interpret_string, }; use multiversx_sc::{ api::ManagedTypeApi, - types::{ - AnnotatedValue, BigUint, ManagedAddress, ManagedBuffer, TxCodeValue, TxEgldValue, TxEnv, - TxFrom, TxFromSpecified, TxGasValue, TxTo, TxToSpecified, - }, + types::{AnnotatedValue, BigUint, ManagedBuffer, TxEgldValue, TxGasValue}, }; -use std::path::PathBuf; #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub struct NumExpr<'a>(pub &'a str); @@ -31,7 +27,7 @@ where self.0.into() } - fn to_value(&self, env: &Env) -> BigUint { + fn to_value(&self, _env: &Env) -> BigUint { interpret_big_uint(self.0) } } @@ -44,7 +40,7 @@ where self.0.into() } - fn to_value(&self, env: &Env) -> u64 { + fn to_value(&self, _env: &Env) -> u64 { interpret_big_uint::(self.0).to_u64().unwrap() } } diff --git a/framework/scenario/src/facade/world_tx.rs b/framework/scenario/src/facade/world_tx.rs index b72fe5b88c..2fa69c744e 100644 --- a/framework/scenario/src/facade/world_tx.rs +++ b/framework/scenario/src/facade/world_tx.rs @@ -1,13 +1,11 @@ #![allow(unused)] // TEMP -mod expr; mod scenario_env; mod scenario_env_deploy; mod scenario_env_exec; mod scenario_env_query; mod scenario_rh_impl; -pub use expr::*; -pub use scenario_env::*; +pub use scenario_env::{ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun}; pub use scenario_env_exec::ScenarioEnvExec; pub use scenario_env_query::ScenarioEnvQuery; diff --git a/framework/scenario/src/imports.rs b/framework/scenario/src/imports.rs new file mode 100644 index 0000000000..aa30283dc3 --- /dev/null +++ b/framework/scenario/src/imports.rs @@ -0,0 +1,27 @@ +pub use crate::multiversx_sc::imports::*; + +pub use crate::multiversx_sc::codec::test_util::*; + +pub use crate::{ + api::{DebugApi, StaticApi}, + assert_values_eq, bech32, + facade::{ + expr::*, result_handlers::*, world_tx::*, ContractInfo, ScenarioWorld, WhiteboxContract, + }, + managed_address, managed_biguint, managed_buffer, managed_token_id, num_bigint, + num_bigint::BigUint as RustBigUint, + rust_biguint, + scenario::{ + model::{ + Account, AddressValue, BytesValue, CheckAccount, CheckStateStep, ScCallStep, + ScDeployStep, ScQueryStep, Scenario, SetStateStep, TransferStep, TxESDT, TxExpect, + TypedResponse, TypedScCall, TypedScDeploy, + }, + ScenarioRunner, + }, + scenario_format::interpret_trait::{InterpretableFrom, InterpreterContext}, + standalone::retrieve_account_as_scenario_set_state, + test_wallets, + whitebox_legacy::*, + ScenarioTxRun, +}; diff --git a/framework/scenario/src/lib.rs b/framework/scenario/src/lib.rs index 64229851af..4d3fb3b1dc 100644 --- a/framework/scenario/src/lib.rs +++ b/framework/scenario/src/lib.rs @@ -8,7 +8,7 @@ pub mod display_util; mod facade; pub mod managed_test_util; pub mod scenario; -mod scenario_macros; +pub mod scenario_macros; pub mod standalone; pub mod test_wallets; mod vm_go_tool; @@ -43,6 +43,9 @@ pub use facade::{result_handlers::*, world_tx::*, ContractInfo, ScenarioWorld, W use std::path::Path; +/// Imports normally needed in integration tests, grouped together. +pub mod imports; + /// Legacy function for running a scenario test using the Go VM tool. /// /// Use `sc-meta test-gen` to replace all calls to it automatically. diff --git a/framework/snippets/src/imports.rs b/framework/snippets/src/imports.rs new file mode 100644 index 0000000000..b031e0769c --- /dev/null +++ b/framework/snippets/src/imports.rs @@ -0,0 +1,6 @@ +pub use crate::multiversx_sc_scenario::imports::*; + +pub use crate::{dns_address_for_name, Interactor, InteractorPrepareAsync, StepBuffer}; + +pub use env_logger; +pub use tokio; diff --git a/framework/snippets/src/lib.rs b/framework/snippets/src/lib.rs index 70f3f8e792..b94a6517d9 100644 --- a/framework/snippets/src/lib.rs +++ b/framework/snippets/src/lib.rs @@ -18,3 +18,6 @@ pub use multiversx_sc_scenario::{self, multiversx_sc}; pub use multiversx_sdk as erdrs; // TODO: remove pub use multiversx_sdk as sdk; pub use tokio; + +/// Imports normally needed in interactors, grouped together. +pub mod imports; From 0c7440141e222295def164d05a816b6a03231eea Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 9 Apr 2024 16:45:58 +0300 Subject: [PATCH 310/461] cleanup --- .../tests/tester_whitebox_legacy_test.rs | 2 -- framework/scenario/src/whitebox_legacy.rs | 2 -- 2 files changed, 4 deletions(-) diff --git a/contracts/feature-tests/rust-testing-framework-tester/tests/tester_whitebox_legacy_test.rs b/contracts/feature-tests/rust-testing-framework-tester/tests/tester_whitebox_legacy_test.rs index 1fad8f653a..0acd222cc9 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/tests/tester_whitebox_legacy_test.rs +++ b/contracts/feature-tests/rust-testing-framework-tester/tests/tester_whitebox_legacy_test.rs @@ -1,5 +1,3 @@ -#![allow(deprecated)] // TODO: migrate tests - use multiversx_sc_scenario::imports::*; use num_traits::ToPrimitive; diff --git a/framework/scenario/src/whitebox_legacy.rs b/framework/scenario/src/whitebox_legacy.rs index aec0d8c980..9d90a4cb7e 100644 --- a/framework/scenario/src/whitebox_legacy.rs +++ b/framework/scenario/src/whitebox_legacy.rs @@ -1,5 +1,3 @@ -#![allow(deprecated)] - mod address_factory; mod contract_obj_wrapper; mod mandos_generator; From 3df1695fe4b510b06fa425cb08bf2b9db7bd1df6 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 9 Apr 2024 16:55:30 +0300 Subject: [PATCH 311/461] imports - base framework refactor --- framework/base/src/derive_imports.rs | 7 +++++ framework/base/src/imports.rs | 22 ++++++++++++++ framework/base/src/imports_reexport.rs | 41 -------------------------- framework/base/src/lib.rs | 13 ++++++-- 4 files changed, 39 insertions(+), 44 deletions(-) create mode 100644 framework/base/src/derive_imports.rs create mode 100644 framework/base/src/imports.rs delete mode 100644 framework/base/src/imports_reexport.rs diff --git a/framework/base/src/derive_imports.rs b/framework/base/src/derive_imports.rs new file mode 100644 index 0000000000..64f45ead1d --- /dev/null +++ b/framework/base/src/derive_imports.rs @@ -0,0 +1,7 @@ +pub use crate::{ + codec, + codec::derive::{ + NestedDecode, NestedEncode, TopDecode, TopDecodeOrDefault, TopEncode, TopEncodeOrDefault, + }, + derive::{type_abi, ManagedVecItem, TypeAbi}, +}; diff --git a/framework/base/src/imports.rs b/framework/base/src/imports.rs new file mode 100644 index 0000000000..016aa7bb4e --- /dev/null +++ b/framework/base/src/imports.rs @@ -0,0 +1,22 @@ +pub use crate::{ + abi::TypeAbi, + api::{ErrorApiImpl, ManagedTypeApi, VMApi}, + arrayvec::ArrayVec, + codec::{ + multi_types::*, CodecFrom, CodecFromSelf, CodecInto, DecodeError, Empty, IntoMultiValue, + NestedDecode, NestedEncode, TopDecode, TopEncode, + }, + contract_base::{ContractBase, ProxyObjBase, ProxyObjNew}, + err_msg, + io::*, + non_zero_usize, + non_zero_util::*, + require, sc_format, sc_panic, sc_print, + storage::mappers::*, + types::{system_proxy::*, *}, +}; + +pub use core::ops::{ + Add, AddAssign, BitAnd, BitAndAssign, BitOr, BitOrAssign, BitXor, BitXorAssign, Div, DivAssign, + Mul, MulAssign, Rem, RemAssign, Shl, ShlAssign, Shr, ShrAssign, Sub, SubAssign, +}; diff --git a/framework/base/src/imports_reexport.rs b/framework/base/src/imports_reexport.rs deleted file mode 100644 index e023525e9d..0000000000 --- a/framework/base/src/imports_reexport.rs +++ /dev/null @@ -1,41 +0,0 @@ -/// Conveniently groups all framework imports required by a smart contract form the framework. -pub mod imports { - pub use crate::{ - abi::TypeAbi, - api::{ErrorApiImpl, ManagedTypeApi, VMApi}, - arrayvec::ArrayVec, - codec::{ - multi_types::*, CodecFrom, CodecFromSelf, CodecInto, DecodeError, Empty, - IntoMultiValue, NestedDecode, NestedEncode, TopDecode, TopEncode, - }, - contract_base::{ContractBase, ProxyObjBase, ProxyObjNew}, - err_msg, - io::*, - non_zero_usize, - non_zero_util::*, - require, sc_format, sc_panic, sc_print, - storage::mappers::*, - types::{system_proxy::*, *}, - }; - pub use core::ops::{ - Add, AddAssign, BitAnd, BitAndAssign, BitOr, BitOrAssign, BitXor, BitXorAssign, Div, - DivAssign, Mul, MulAssign, Rem, RemAssign, Shl, ShlAssign, Shr, ShrAssign, Sub, SubAssign, - }; -} - -/// Conveniently groups all imports required for deriving framework-related traits for types. -pub mod derive_imports { - pub use crate::{ - codec, - codec::derive::{ - NestedDecode, NestedEncode, TopDecode, TopDecodeOrDefault, TopEncode, - TopEncodeOrDefault, - }, - derive::{type_abi, ManagedVecItem, TypeAbi}, - }; -} - -/// Conveniently groups all imports required for generated proxies. -pub mod proxy_imports { - pub use super::{derive_imports::*, imports::*}; -} diff --git a/framework/base/src/lib.rs b/framework/base/src/lib.rs index b5aaecd378..043ba4bebb 100644 --- a/framework/base/src/lib.rs +++ b/framework/base/src/lib.rs @@ -38,6 +38,13 @@ pub use hex_call_data::*; pub use hex_literal; pub use storage::{storage_clear, storage_get, storage_get_len, storage_set}; -// not to be used internally -mod imports_reexport; -pub use imports_reexport::{derive_imports, imports, proxy_imports}; +/// Conveniently groups all framework imports required by a smart contract form the framework. +pub mod imports; + +/// Conveniently groups all imports required for deriving framework-related traits for types. +pub mod derive_imports; + +/// Conveniently groups all imports required for generated proxies. +pub mod proxy_imports { + pub use super::{derive_imports::*, imports::*}; +} From f9c19fd08dd3cba2d83ed6aaf6541e8c256dbf48 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 9 Apr 2024 17:59:15 +0300 Subject: [PATCH 312/461] sc 0.49.0-alpha.2 --- CHANGELOG.md | 6 +++++- Cargo.lock | 18 +++++++++--------- 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 ++-- .../mappers/linked-list-repeat/meta/Cargo.toml | 2 +- .../mappers/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 +- .../benchmarks/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 +- contracts/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 +- .../Cargo.toml | 2 +- .../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 +- .../examples/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 +++--- contracts/examples/check-pause/meta/Cargo.toml | 2 +- contracts/examples/check-pause/wasm/Cargo.toml | 2 +- .../examples/crowdfunding-esdt/Cargo.toml | 4 ++-- .../examples/crowdfunding-esdt/meta/Cargo.toml | 2 +- .../examples/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 +- .../examples/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 +- contracts/examples/nft-subscription/Cargo.toml | 6 +++--- .../examples/nft-subscription/meta/Cargo.toml | 2 +- .../examples/nft-subscription/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 ++-- contracts/examples/proxy-pause/meta/Cargo.toml | 2 +- contracts/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 +- .../wasm-alloc-mem-fail/Cargo.toml | 2 +- .../wasm-alloc-mem-leaking/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 | 4 ++-- .../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 +- .../composability/promises-features/Cargo.toml | 2 +- .../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 +- .../composability/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 +- .../vault/wasm-vault-upgrade/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 ++-- .../erc-style-contracts/erc721/meta/Cargo.toml | 2 +- .../erc-style-contracts/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 +- .../feature-tests/exchange-features/Cargo.toml | 4 ++-- .../exchange-features/meta/Cargo.toml | 2 +- .../exchange-features/wasm/Cargo.toml | 2 +- .../formatted-message-features/Cargo.toml | 4 ++-- .../formatted-message-features/meta/Cargo.toml | 2 +- .../formatted-message-features/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 +- .../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 +- .../use-module/wasm-use-module-view/Cargo.toml | 2 +- .../feature-tests/use-module/wasm/Cargo.toml | 2 +- contracts/modules/Cargo.toml | 4 ++-- framework/base/Cargo.toml | 4 ++-- .../system_proxy/legacy_system_sc_proxy.rs | 2 +- framework/derive/Cargo.toml | 2 +- framework/meta/Cargo.toml | 4 ++-- framework/scenario/Cargo.toml | 6 +++--- 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 | 4 ++-- 264 files changed, 388 insertions(+), 384 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f1117ce8b..fb3a19b767 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,12 +26,16 @@ They are: - `multiversx-chain-scenario-format`, in short `scenario-format`, scenario JSON serializer/deserializer, 1 crate. - `multiversx-sdk`, in short `sdk`, allows communication with the chain(s), 1 crate. +## [sc 0.49.0-alpha.2] - 2024-04-09 +Second pre-release of the unified syntax. Most features done, including fully featured interactors. +Still missing: set state/check state in tests. + ## [sc 0.48.0] - 2024-04-09 - When serializing to a managed buffer, static buffer caching is disabled by default. - `sc-meta:` - installers for wasm32 target and wasm-opt. - Integrated traits for token management: `FixedSupplyToken`, `Mergeable`. -## [sc 0.48.0-alpha.1] - 2024-03-27 +## [sc 0.48.0-alpha.1] - 2024-03-27 (actually alpha release of 0.49.0) First pre-release of the unified syntax. Syntax not yet stabilized, should only be used for experimenting with various smart contracts. ## [sc 0.47.8] - 2024-03-22 diff --git a/Cargo.lock b/Cargo.lock index 912c3647f2..a63206b567 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -1799,7 +1799,7 @@ checksum = "b59072fa0624b55ae5ae3fa6bfa91515bbeb4ac440214bc4a509e2c8806d6e9f" [[package]] name = "multiversx-price-aggregator-sc" -version = "0.48.0" +version = "0.49.0-alpha.2" dependencies = [ "arrayvec", "getrandom 0.2.12", @@ -1820,7 +1820,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.2" dependencies = [ "bitflags 2.4.2", "hex-literal", @@ -1850,7 +1850,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.2" dependencies = [ "hex", "proc-macro2", @@ -1861,7 +1861,7 @@ dependencies = [ [[package]] name = "multiversx-sc-meta" -version = "0.48.0" +version = "0.49.0-alpha.2" dependencies = [ "clap", "colored", @@ -1887,14 +1887,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.49.0-alpha.2" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-scenario" -version = "0.48.0" +version = "0.49.0-alpha.2" dependencies = [ "base64", "bech32", @@ -1920,7 +1920,7 @@ dependencies = [ [[package]] name = "multiversx-sc-snippets" -version = "0.48.0" +version = "0.49.0-alpha.2" dependencies = [ "base64", "env_logger", @@ -1934,7 +1934,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.2" dependencies = [ "multiversx-sc", ] @@ -1965,7 +1965,7 @@ dependencies = [ [[package]] name = "multiversx-wegld-swap-sc" -version = "0.48.0" +version = "0.49.0-alpha.2" dependencies = [ "multiversx-sc", "multiversx-sc-modules", diff --git a/contracts/benchmarks/large-storage/Cargo.toml b/contracts/benchmarks/large-storage/Cargo.toml index 9aae12836b..cab5a60bcf 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/large-storage/meta/Cargo.toml b/contracts/benchmarks/large-storage/meta/Cargo.toml index 0345a383dc..25bcd6a266 100644 --- a/contracts/benchmarks/large-storage/meta/Cargo.toml +++ b/contracts/benchmarks/large-storage/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/large-storage/wasm/Cargo.toml b/contracts/benchmarks/large-storage/wasm/Cargo.toml index 776e59a0ce..16614c89ce 100644 --- a/contracts/benchmarks/large-storage/wasm/Cargo.toml +++ b/contracts/benchmarks/large-storage/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/benchmark-common/Cargo.toml b/contracts/benchmarks/mappers/benchmark-common/Cargo.toml index 4c5fdb3fbc..9d20e7403b 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/linked-list-repeat/Cargo.toml b/contracts/benchmarks/mappers/linked-list-repeat/Cargo.toml index e2edd8010e..8b1eb2748a 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 d09a21b81b..12019a1f0a 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/linked-list-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml index 8289547693..74d5d41e13 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/map-repeat/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/Cargo.toml index 8090f309d1..f83947344d 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml index 3d4974e6c0..77201f9be8 100644 --- a/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml index 9653a54fc7..2d5c99b109 100644 --- a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/queue-repeat/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/Cargo.toml index 024846618c..eb45b07d3b 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml index edba3ec0f0..23d9d35f8e 100644 --- a/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml index 77c061d305..787fcab3a9 100644 --- a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/set-repeat/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/Cargo.toml index 84bcc8722d..64e7ef03b3 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml index e8f3967a3a..4dca3acc7c 100644 --- a/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml index 31ca740ad8..d58a2820e6 100644 --- a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 2975e1ae49..034f72b2c2 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 1633ab9cde..48286ca62c 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/single-value-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml index 19af5c7c51..74eb88203c 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/vec-repeat/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/Cargo.toml index 3cd913d909..96cb7ac06e 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml index 200297db20..d0b11469ea 100644 --- a/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml index 520aa883b1..c8066692c5 100644 --- a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/send-tx-repeat/Cargo.toml b/contracts/benchmarks/send-tx-repeat/Cargo.toml index d0bc9aa646..3951fb1a7b 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml b/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml index d8b911fd5e..899ad17ad8 100644 --- a/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml index 14a876b56e..ebc7e32f0f 100644 --- a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/str-repeat/Cargo.toml b/contracts/benchmarks/str-repeat/Cargo.toml index 7d0b90f1ba..9dd124e9ad 100644 --- a/contracts/benchmarks/str-repeat/Cargo.toml +++ b/contracts/benchmarks/str-repeat/Cargo.toml @@ -12,10 +12,10 @@ path = "src/str_repeat.rs" managed-buffer-builder-cached = ["multiversx-sc/managed-buffer-builder-cached"] [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/str-repeat/meta/Cargo.toml b/contracts/benchmarks/str-repeat/meta/Cargo.toml index d27ba4d2ff..7ae209e09b 100644 --- a/contracts/benchmarks/str-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/str-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml index 07a34e0d0c..18217e1786 100644 --- a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml +++ b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml index 69a11ff01e..cd29b1bc3c 100644 --- a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml +++ b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml @@ -26,7 +26,7 @@ path = ".." features = ["managed-buffer-builder-cached"] [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/str-repeat/wasm/Cargo.toml b/contracts/benchmarks/str-repeat/wasm/Cargo.toml index e6f3ddba95..cd02b379b2 100644 --- a/contracts/benchmarks/str-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/str-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/core/price-aggregator/Cargo.toml b/contracts/core/price-aggregator/Cargo.toml index 6ef93360eb..8f8f7bc975 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.48.0" +version = "0.49.0-alpha.2" authors = [ "Claudiu-Marcel Bruda ", "MultiversX ", @@ -19,15 +19,15 @@ edition = "2021" path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" [dependencies] diff --git a/contracts/core/price-aggregator/meta/Cargo.toml b/contracts/core/price-aggregator/meta/Cargo.toml index f8cbef8d57..0e8d6732bc 100644 --- a/contracts/core/price-aggregator/meta/Cargo.toml +++ b/contracts/core/price-aggregator/meta/Cargo.toml @@ -8,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/core/price-aggregator/wasm/Cargo.toml b/contracts/core/price-aggregator/wasm/Cargo.toml index dc2c54549f..934a5a6feb 100644 --- a/contracts/core/price-aggregator/wasm/Cargo.toml +++ b/contracts/core/price-aggregator/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/core/wegld-swap/Cargo.toml b/contracts/core/wegld-swap/Cargo.toml index f788d5c243..ec6d025440 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.48.0" +version = "0.49.0-alpha.2" authors = [ "Dorin Iancu ", @@ -20,13 +20,13 @@ edition = "2021" path = "src/wegld.rs" [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" diff --git a/contracts/core/wegld-swap/meta/Cargo.toml b/contracts/core/wegld-swap/meta/Cargo.toml index f9595aea8d..4503b24e93 100644 --- a/contracts/core/wegld-swap/meta/Cargo.toml +++ b/contracts/core/wegld-swap/meta/Cargo.toml @@ -11,10 +11,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/core/wegld-swap/wasm/Cargo.toml b/contracts/core/wegld-swap/wasm/Cargo.toml index 68037cc393..af55512e72 100644 --- a/contracts/core/wegld-swap/wasm/Cargo.toml +++ b/contracts/core/wegld-swap/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/adder/Cargo.toml b/contracts/examples/adder/Cargo.toml index af28bd0554..77e0e77979 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" diff --git a/contracts/examples/adder/interact/Cargo.toml b/contracts/examples/adder/interact/Cargo.toml index 3d4ad2fd1a..dc6a5533ea 100644 --- a/contracts/examples/adder/interact/Cargo.toml +++ b/contracts/examples/adder/interact/Cargo.toml @@ -18,5 +18,5 @@ toml = "0.8.6" path = ".." [dependencies.multiversx-sc-snippets] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/snippets" diff --git a/contracts/examples/adder/meta/Cargo.toml b/contracts/examples/adder/meta/Cargo.toml index 88f66d1c86..03da88815e 100644 --- a/contracts/examples/adder/meta/Cargo.toml +++ b/contracts/examples/adder/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/adder/wasm/Cargo.toml b/contracts/examples/adder/wasm/Cargo.toml index d7cff9ee02..716593e814 100644 --- a/contracts/examples/adder/wasm/Cargo.toml +++ b/contracts/examples/adder/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/bonding-curve-contract/Cargo.toml b/contracts/examples/bonding-curve-contract/Cargo.toml index 9379cb6240..16a18869ff 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" diff --git a/contracts/examples/bonding-curve-contract/meta/Cargo.toml b/contracts/examples/bonding-curve-contract/meta/Cargo.toml index 42aedeffb2..c1fc7e8517 100644 --- a/contracts/examples/bonding-curve-contract/meta/Cargo.toml +++ b/contracts/examples/bonding-curve-contract/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/bonding-curve-contract/wasm/Cargo.toml b/contracts/examples/bonding-curve-contract/wasm/Cargo.toml index 351e890820..d0666d9679 100644 --- a/contracts/examples/bonding-curve-contract/wasm/Cargo.toml +++ b/contracts/examples/bonding-curve-contract/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/check-pause/Cargo.toml b/contracts/examples/check-pause/Cargo.toml index 3de8796660..290ffbc562 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" [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" diff --git a/contracts/examples/check-pause/meta/Cargo.toml b/contracts/examples/check-pause/meta/Cargo.toml index 6fa4de8996..a526576983 100644 --- a/contracts/examples/check-pause/meta/Cargo.toml +++ b/contracts/examples/check-pause/meta/Cargo.toml @@ -9,6 +9,6 @@ authors = ["Alin Cruceat "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/check-pause/wasm/Cargo.toml b/contracts/examples/check-pause/wasm/Cargo.toml index 16f0ab1ba3..1471f77b76 100644 --- a/contracts/examples/check-pause/wasm/Cargo.toml +++ b/contracts/examples/check-pause/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crowdfunding-esdt/Cargo.toml b/contracts/examples/crowdfunding-esdt/Cargo.toml index b2cdf8c41e..c982172007 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" [dev-dependencies] diff --git a/contracts/examples/crowdfunding-esdt/meta/Cargo.toml b/contracts/examples/crowdfunding-esdt/meta/Cargo.toml index a32bd3567a..2877f2c877 100644 --- a/contracts/examples/crowdfunding-esdt/meta/Cargo.toml +++ b/contracts/examples/crowdfunding-esdt/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml b/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml index 51e3aa0862..b560b3fb61 100644 --- a/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml +++ b/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-bubbles/Cargo.toml b/contracts/examples/crypto-bubbles/Cargo.toml index 47b0cc1c12..05bbae4ea6 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" diff --git a/contracts/examples/crypto-bubbles/meta/Cargo.toml b/contracts/examples/crypto-bubbles/meta/Cargo.toml index cff3b28c2e..4c0bf972fe 100644 --- a/contracts/examples/crypto-bubbles/meta/Cargo.toml +++ b/contracts/examples/crypto-bubbles/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-bubbles/wasm/Cargo.toml b/contracts/examples/crypto-bubbles/wasm/Cargo.toml index 3d0f3d9cd6..0515a1046f 100644 --- a/contracts/examples/crypto-bubbles/wasm/Cargo.toml +++ b/contracts/examples/crypto-bubbles/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 97ff64e9ac..2cde4b803f 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.48.0" +version = "0.49.0-alpha.2" 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 9b63e6b416..8f04c8950d 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/base" diff --git a/contracts/examples/crypto-kitties/kitty-auction/Cargo.toml b/contracts/examples/crypto-kitties/kitty-auction/Cargo.toml index 6fdda40603..c350697701 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 2c57c9ac05..a112a3b69c 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-auction/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml index 1f19435dce..257e449243 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-kitties/kitty-genetic-alg/Cargo.toml b/contracts/examples/crypto-kitties/kitty-genetic-alg/Cargo.toml index 171ebb65f8..f2e197c104 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 a9f0a17cfa..a26801542e 100644 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false 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 deb7ae9c6f..7e4fd09b60 100644 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-kitties/kitty-ownership/Cargo.toml b/contracts/examples/crypto-kitties/kitty-ownership/Cargo.toml index da5800286f..d99ec3d2d7 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 ccf8cb2ea2..723a9f1ced 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-ownership/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml index b00ca52a2b..867b708bbc 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-zombies/Cargo.toml b/contracts/examples/crypto-zombies/Cargo.toml index 7460e9f2d2..eaf7930699 100644 --- a/contracts/examples/crypto-zombies/Cargo.toml +++ b/contracts/examples/crypto-zombies/Cargo.toml @@ -9,11 +9,11 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" [dependencies.kitty] diff --git a/contracts/examples/crypto-zombies/meta/Cargo.toml b/contracts/examples/crypto-zombies/meta/Cargo.toml index fc1eb0073f..b7d51e7216 100644 --- a/contracts/examples/crypto-zombies/meta/Cargo.toml +++ b/contracts/examples/crypto-zombies/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-zombies/wasm/Cargo.toml b/contracts/examples/crypto-zombies/wasm/Cargo.toml index 51f46ac505..29e2f90339 100644 --- a/contracts/examples/crypto-zombies/wasm/Cargo.toml +++ b/contracts/examples/crypto-zombies/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/digital-cash/Cargo.toml b/contracts/examples/digital-cash/Cargo.toml index 6d75b7b98e..f6c2eee8c7 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" diff --git a/contracts/examples/digital-cash/meta/Cargo.toml b/contracts/examples/digital-cash/meta/Cargo.toml index 7cdda9a523..5bea40a8b4 100644 --- a/contracts/examples/digital-cash/meta/Cargo.toml +++ b/contracts/examples/digital-cash/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/digital-cash/wasm/Cargo.toml b/contracts/examples/digital-cash/wasm/Cargo.toml index 14a1a7e95b..34e178511e 100644 --- a/contracts/examples/digital-cash/wasm/Cargo.toml +++ b/contracts/examples/digital-cash/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/empty/Cargo.toml b/contracts/examples/empty/Cargo.toml index d36449cf82..cbe9d305c9 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" [dev-dependencies] diff --git a/contracts/examples/empty/meta/Cargo.toml b/contracts/examples/empty/meta/Cargo.toml index 7b869c9cdf..931c9a1806 100644 --- a/contracts/examples/empty/meta/Cargo.toml +++ b/contracts/examples/empty/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/empty/wasm/Cargo.toml b/contracts/examples/empty/wasm/Cargo.toml index 50c6c7519c..cc030dad95 100644 --- a/contracts/examples/empty/wasm/Cargo.toml +++ b/contracts/examples/empty/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 62efe492c6..9f8e06c391 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 41be9842d9..a60f8c4877 100644 --- a/contracts/examples/esdt-transfer-with-fee/meta/Cargo.toml +++ b/contracts/examples/esdt-transfer-with-fee/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml index 8e57a857ec..5057d0f972 100644 --- a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml +++ b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/factorial/Cargo.toml b/contracts/examples/factorial/Cargo.toml index f49f2de799..50c79d55b7 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" diff --git a/contracts/examples/factorial/meta/Cargo.toml b/contracts/examples/factorial/meta/Cargo.toml index 561e5cc8bb..5c76e48e8e 100644 --- a/contracts/examples/factorial/meta/Cargo.toml +++ b/contracts/examples/factorial/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/factorial/wasm/Cargo.toml b/contracts/examples/factorial/wasm/Cargo.toml index 33ef155fb4..0fd3f40ad7 100644 --- a/contracts/examples/factorial/wasm/Cargo.toml +++ b/contracts/examples/factorial/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/fractional-nfts/Cargo.toml b/contracts/examples/fractional-nfts/Cargo.toml index fda3f92c61..120f1ca2a3 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" diff --git a/contracts/examples/fractional-nfts/meta/Cargo.toml b/contracts/examples/fractional-nfts/meta/Cargo.toml index 330433a42f..8c42e9c567 100644 --- a/contracts/examples/fractional-nfts/meta/Cargo.toml +++ b/contracts/examples/fractional-nfts/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/fractional-nfts/wasm/Cargo.toml b/contracts/examples/fractional-nfts/wasm/Cargo.toml index 036b0bfd69..2e36eae6fb 100644 --- a/contracts/examples/fractional-nfts/wasm/Cargo.toml +++ b/contracts/examples/fractional-nfts/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/lottery-esdt/Cargo.toml b/contracts/examples/lottery-esdt/Cargo.toml index 47ef0326fd..f218aa93ad 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" diff --git a/contracts/examples/lottery-esdt/meta/Cargo.toml b/contracts/examples/lottery-esdt/meta/Cargo.toml index 5b87c8ade8..1b05f3c86d 100644 --- a/contracts/examples/lottery-esdt/meta/Cargo.toml +++ b/contracts/examples/lottery-esdt/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/lottery-esdt/wasm/Cargo.toml b/contracts/examples/lottery-esdt/wasm/Cargo.toml index 6839c9dec0..478f2fc345 100644 --- a/contracts/examples/lottery-esdt/wasm/Cargo.toml +++ b/contracts/examples/lottery-esdt/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/multisig/Cargo.toml b/contracts/examples/multisig/Cargo.toml index f7bdb30ed5..05643e6af2 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" [dev-dependencies.adder] @@ -27,7 +27,7 @@ path = "../adder" path = "../factorial" [dev-dependencies.multiversx-wegld-swap-sc] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../core/wegld-swap" [dev-dependencies] diff --git a/contracts/examples/multisig/interact/Cargo.toml b/contracts/examples/multisig/interact/Cargo.toml index fef68a6a22..2cafd006f9 100644 --- a/contracts/examples/multisig/interact/Cargo.toml +++ b/contracts/examples/multisig/interact/Cargo.toml @@ -18,13 +18,13 @@ toml = "0.8.6" path = ".." [dependencies.multiversx-sc-modules] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../contracts/modules" [dependencies.multiversx-sc-snippets] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/snippets" [dependencies.multiversx-sc-scenario] -version = "=0.48.0" +version = "=0.49.0-alpha.2" path = "../../../../framework/scenario" diff --git a/contracts/examples/multisig/meta/Cargo.toml b/contracts/examples/multisig/meta/Cargo.toml index 02d4e80d81..e7544b2c11 100644 --- a/contracts/examples/multisig/meta/Cargo.toml +++ b/contracts/examples/multisig/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/multisig/wasm-multisig-full/Cargo.toml b/contracts/examples/multisig/wasm-multisig-full/Cargo.toml index 7660525b67..ed54fb3f09 100644 --- a/contracts/examples/multisig/wasm-multisig-full/Cargo.toml +++ b/contracts/examples/multisig/wasm-multisig-full/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 49be4aa565..0b0ffd57c2 100644 --- a/contracts/examples/multisig/wasm-multisig-view/Cargo.toml +++ b/contracts/examples/multisig/wasm-multisig-view/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/multisig/wasm/Cargo.toml b/contracts/examples/multisig/wasm/Cargo.toml index 708980188e..3c39f4e812 100644 --- a/contracts/examples/multisig/wasm/Cargo.toml +++ b/contracts/examples/multisig/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-minter/Cargo.toml b/contracts/examples/nft-minter/Cargo.toml index b845b98fc9..8b70aba861 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-minter/meta/Cargo.toml b/contracts/examples/nft-minter/meta/Cargo.toml index 16bc48dabd..7cf76194d1 100644 --- a/contracts/examples/nft-minter/meta/Cargo.toml +++ b/contracts/examples/nft-minter/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-minter/wasm/Cargo.toml b/contracts/examples/nft-minter/wasm/Cargo.toml index 800d0012f8..da6e4d3c21 100644 --- a/contracts/examples/nft-minter/wasm/Cargo.toml +++ b/contracts/examples/nft-minter/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-storage-prepay/Cargo.toml b/contracts/examples/nft-storage-prepay/Cargo.toml index b3fe4779eb..faffbc1a54 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-storage-prepay/meta/Cargo.toml b/contracts/examples/nft-storage-prepay/meta/Cargo.toml index 8bd9be5154..a47735c0d9 100644 --- a/contracts/examples/nft-storage-prepay/meta/Cargo.toml +++ b/contracts/examples/nft-storage-prepay/meta/Cargo.toml @@ -11,6 +11,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-storage-prepay/wasm/Cargo.toml b/contracts/examples/nft-storage-prepay/wasm/Cargo.toml index 4966016fe3..63ba85a7d0 100644 --- a/contracts/examples/nft-storage-prepay/wasm/Cargo.toml +++ b/contracts/examples/nft-storage-prepay/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-subscription/Cargo.toml b/contracts/examples/nft-subscription/Cargo.toml index fce4b0e4be..bf9b4f419f 100644 --- a/contracts/examples/nft-subscription/Cargo.toml +++ b/contracts/examples/nft-subscription/Cargo.toml @@ -9,13 +9,13 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-subscription/meta/Cargo.toml b/contracts/examples/nft-subscription/meta/Cargo.toml index 60363c9f03..3775f5cee5 100644 --- a/contracts/examples/nft-subscription/meta/Cargo.toml +++ b/contracts/examples/nft-subscription/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-subscription/wasm/Cargo.toml b/contracts/examples/nft-subscription/wasm/Cargo.toml index 20cfc13365..1ffeadbe56 100644 --- a/contracts/examples/nft-subscription/wasm/Cargo.toml +++ b/contracts/examples/nft-subscription/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/order-book/factory/Cargo.toml b/contracts/examples/order-book/factory/Cargo.toml index 1715338ef5..4e17fa774b 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/scenario" diff --git a/contracts/examples/order-book/factory/meta/Cargo.toml b/contracts/examples/order-book/factory/meta/Cargo.toml index 3b5a3f22e1..194a432f9c 100644 --- a/contracts/examples/order-book/factory/meta/Cargo.toml +++ b/contracts/examples/order-book/factory/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/order-book/factory/wasm/Cargo.toml b/contracts/examples/order-book/factory/wasm/Cargo.toml index e198620a70..ce10c37c7f 100644 --- a/contracts/examples/order-book/factory/wasm/Cargo.toml +++ b/contracts/examples/order-book/factory/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/order-book/pair/Cargo.toml b/contracts/examples/order-book/pair/Cargo.toml index e87e2df5fd..8f961c51be 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/scenario" diff --git a/contracts/examples/order-book/pair/meta/Cargo.toml b/contracts/examples/order-book/pair/meta/Cargo.toml index 944ad90283..45ef69dbd6 100644 --- a/contracts/examples/order-book/pair/meta/Cargo.toml +++ b/contracts/examples/order-book/pair/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/order-book/pair/wasm/Cargo.toml b/contracts/examples/order-book/pair/wasm/Cargo.toml index db63ea95cf..9ed18aeb20 100644 --- a/contracts/examples/order-book/pair/wasm/Cargo.toml +++ b/contracts/examples/order-book/pair/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/ping-pong-egld/Cargo.toml b/contracts/examples/ping-pong-egld/Cargo.toml index 7b835c30a9..e968442b7c 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" diff --git a/contracts/examples/ping-pong-egld/meta/Cargo.toml b/contracts/examples/ping-pong-egld/meta/Cargo.toml index 35e1eb7004..b6492950a1 100644 --- a/contracts/examples/ping-pong-egld/meta/Cargo.toml +++ b/contracts/examples/ping-pong-egld/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/ping-pong-egld/wasm/Cargo.toml b/contracts/examples/ping-pong-egld/wasm/Cargo.toml index 212fc83957..0d7ac94d72 100644 --- a/contracts/examples/ping-pong-egld/wasm/Cargo.toml +++ b/contracts/examples/ping-pong-egld/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/proxy-pause/Cargo.toml b/contracts/examples/proxy-pause/Cargo.toml index 1cb8060d0c..6903e9a658 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 654659ac3a..bbdce3a720 100644 --- a/contracts/examples/proxy-pause/meta/Cargo.toml +++ b/contracts/examples/proxy-pause/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = [ "you",] path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/proxy-pause/wasm/Cargo.toml b/contracts/examples/proxy-pause/wasm/Cargo.toml index 9071e6aad0..ade889dbf1 100644 --- a/contracts/examples/proxy-pause/wasm/Cargo.toml +++ b/contracts/examples/proxy-pause/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/rewards-distribution/Cargo.toml b/contracts/examples/rewards-distribution/Cargo.toml index d17e0cf877..46e3c7426c 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" diff --git a/contracts/examples/rewards-distribution/meta/Cargo.toml b/contracts/examples/rewards-distribution/meta/Cargo.toml index 6e3700a114..af8b1e3fdb 100644 --- a/contracts/examples/rewards-distribution/meta/Cargo.toml +++ b/contracts/examples/rewards-distribution/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = ["Claudiu-Marcel Bruda "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/rewards-distribution/wasm/Cargo.toml b/contracts/examples/rewards-distribution/wasm/Cargo.toml index 0240cad321..06205454f5 100644 --- a/contracts/examples/rewards-distribution/wasm/Cargo.toml +++ b/contracts/examples/rewards-distribution/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/seed-nft-minter/Cargo.toml b/contracts/examples/seed-nft-minter/Cargo.toml index 466ef0d0d0..d47f7a103b 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" diff --git a/contracts/examples/seed-nft-minter/meta/Cargo.toml b/contracts/examples/seed-nft-minter/meta/Cargo.toml index 2a9164c5d5..113bf6fcbb 100644 --- a/contracts/examples/seed-nft-minter/meta/Cargo.toml +++ b/contracts/examples/seed-nft-minter/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = ["Claudiu-Marcel Bruda "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/seed-nft-minter/wasm/Cargo.toml b/contracts/examples/seed-nft-minter/wasm/Cargo.toml index b16c0eb5be..844ec4ce9c 100644 --- a/contracts/examples/seed-nft-minter/wasm/Cargo.toml +++ b/contracts/examples/seed-nft-minter/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/token-release/Cargo.toml b/contracts/examples/token-release/Cargo.toml index 1ef042c083..9e84276585 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" diff --git a/contracts/examples/token-release/meta/Cargo.toml b/contracts/examples/token-release/meta/Cargo.toml index 9f5e40cb3f..245912467e 100644 --- a/contracts/examples/token-release/meta/Cargo.toml +++ b/contracts/examples/token-release/meta/Cargo.toml @@ -10,7 +10,7 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/token-release/wasm/Cargo.toml b/contracts/examples/token-release/wasm/Cargo.toml index a5e9ad9ebb..0863733c27 100644 --- a/contracts/examples/token-release/wasm/Cargo.toml +++ b/contracts/examples/token-release/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/abi-tester/Cargo.toml b/contracts/feature-tests/abi-tester/Cargo.toml index 388a559e3f..afaa799635 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" [dev-dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 881869d35c..457e86a074 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.48.0" + "version": "0.49.0-alpha.2" } }, "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 1219d4fe9b..20d4ee7906 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.48.0" + "version": "0.49.0-alpha.2" } }, "docs": [ diff --git a/contracts/feature-tests/abi-tester/meta/Cargo.toml b/contracts/feature-tests/abi-tester/meta/Cargo.toml index f494dd338d..b3d94a1fb1 100644 --- a/contracts/feature-tests/abi-tester/meta/Cargo.toml +++ b/contracts/feature-tests/abi-tester/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false 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 05200dcfbb..60b4c4d018 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 6bc368141a..cfbf6696e6 100644 --- a/contracts/feature-tests/abi-tester/wasm/Cargo.toml +++ b/contracts/feature-tests/abi-tester/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/Cargo.toml b/contracts/feature-tests/alloc-features/Cargo.toml index ed5f30b32f..519f3892f1 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 95d1615d64..e5d1f0e801 100644 --- a/contracts/feature-tests/alloc-features/meta/Cargo.toml +++ b/contracts/feature-tests/alloc-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml index e79f7e1f26..fe0fb46c53 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml index e8ca98b331..59a3b1e893 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/wasm/Cargo.toml b/contracts/feature-tests/alloc-features/wasm/Cargo.toml index b5565d0ed2..c5c9cf50ce 100644 --- a/contracts/feature-tests/alloc-features/wasm/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/basic-features/Cargo.toml b/contracts/feature-tests/basic-features/Cargo.toml index a9d29b944a..170e7947a3 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" [dependencies.multiversx-sc-modules] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 73201f5eaa..52f74fd411 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.8.6" path = ".." [dependencies.multiversx-sc-snippets] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/snippets" diff --git a/contracts/feature-tests/basic-features/meta/Cargo.toml b/contracts/feature-tests/basic-features/meta/Cargo.toml index 8afa191498..b11857dcff 100644 --- a/contracts/feature-tests/basic-features/meta/Cargo.toml +++ b/contracts/feature-tests/basic-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false 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 d138f0ea4b..8a3e03b97a 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 21bdef1ace..939489e8f0 100644 --- a/contracts/feature-tests/basic-features/wasm/Cargo.toml +++ b/contracts/feature-tests/basic-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = true path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 720bcbd08e..abb7d894ca 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 e30a20c1c5..9c685118f9 100644 --- a/contracts/feature-tests/big-float-features/meta/Cargo.toml +++ b/contracts/feature-tests/big-float-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/big-float-features/wasm/Cargo.toml b/contracts/feature-tests/big-float-features/wasm/Cargo.toml index 52dbbfc0b8..318d83673b 100644 --- a/contracts/feature-tests/big-float-features/wasm/Cargo.toml +++ b/contracts/feature-tests/big-float-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/Cargo.toml b/contracts/feature-tests/composability/Cargo.toml index abfaefa4b8..61bf52fe14 100644 --- a/contracts/feature-tests/composability/Cargo.toml +++ b/contracts/feature-tests/composability/Cargo.toml @@ -33,9 +33,9 @@ path = "recursive-caller" path = "vault" [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 be47382548..603387dcec 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.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 index 6bc3a0d913..57d609aa8c 100644 --- a/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false 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 07f233341c..b92baea5d0 100644 --- a/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 7a5ca344e2..775eec997d 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 46f86e301b..ebb8656515 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 08b8dc1856..cd02f10c2c 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../../framework/meta" default-features = false 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 209e8f2846..b3f7654bd7 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 862cbd2b83..3d5ec4343c 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 186a1e4e03..98115fbd0f 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../../framework/meta" default-features = false 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 0e23835bda..5b7f33d216 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 fd79fe48f9..136c7346f1 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 3059fd0285..e55b31e0c0 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 060df7dcde..81c849a074 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../../framework/meta" default-features = false 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 680b44e189..247bbec770 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 503d0fc258..c06c523eb9 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 046302572d..02b3fb2b9f 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../../framework/meta" default-features = false 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 a6be0ec3ff..5e25d80dee 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 7f9e36e869..b9e68812b1 100644 --- a/contracts/feature-tests/composability/forwarder-queue/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/Cargo.toml @@ -12,14 +12,14 @@ path = "src/forwarder_queue.rs" path = "../vault" [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" optional = true [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 83a6f94e22..f465a1a111 100644 --- a/contracts/feature-tests/composability/forwarder-queue/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false 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 3f8605b67d..cb1ae3c65c 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 522720c797..829e9f792d 100644 --- a/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 898735c43e..7cc1b41bdc 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 5cf1a567e8..92175b201b 100644 --- a/contracts/feature-tests/composability/forwarder-raw/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-raw/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false 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 44f7e3b5eb..538475d3b1 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 7f865a4e03..7365f87735 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 cbc950745d..cb9092dc7b 100644 --- a/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/forwarder/Cargo.toml b/contracts/feature-tests/composability/forwarder/Cargo.toml index d4cd960015..23c091082c 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/forwarder/meta/Cargo.toml b/contracts/feature-tests/composability/forwarder/meta/Cargo.toml index 677ae9b198..5bab38b0ed 100644 --- a/contracts/feature-tests/composability/forwarder/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml b/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml index 87d3ac47c6..5d65561d9f 100644 --- a/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/interact/Cargo.toml b/contracts/feature-tests/composability/interact/Cargo.toml index f06c1178a1..9b763b7bb0 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../contracts/modules" [dependencies.multiversx-sc-snippets] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 8ad9825389..2f2cfc6b07 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 fea51513bd..b43117afb7 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,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false 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 73dceaa520..7b0d418800 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 9efa7a4a11..aa14e0b1ac 100644 --- a/contracts/feature-tests/composability/promises-features/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/Cargo.toml @@ -12,6 +12,6 @@ path = "src/promises_main.rs" path = "../vault" [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" diff --git a/contracts/feature-tests/composability/promises-features/meta/Cargo.toml b/contracts/feature-tests/composability/promises-features/meta/Cargo.toml index ca156aaf23..612ac28984 100644 --- a/contracts/feature-tests/composability/promises-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml b/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml index 324dafa5d4..9f4fbe32c3 100644 --- a/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 fe652ba3d0..8cebc36d6f 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.4.1" [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 db20a499dd..e18657f249 100644 --- a/contracts/feature-tests/composability/proxy-test-first/meta/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-first/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false 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 c1eebcc5b9..2261045523 100644 --- a/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 1f84784bcc..615d809aa5 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 1838388c4a..12e84b7230 100644 --- a/contracts/feature-tests/composability/proxy-test-second/meta/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-second/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false 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 3dc55bf167..268ff3f2f5 100644 --- a/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 e68bc01059..a0a6278b38 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 631c940ac7..599841d5fb 100644 --- a/contracts/feature-tests/composability/recursive-caller/meta/Cargo.toml +++ b/contracts/feature-tests/composability/recursive-caller/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml index d040ee6a0e..9c75f7ec7f 100644 --- a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 ec4dd83adb..b5acba41f5 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 1e918a72cc..c1c4f4df1e 100644 --- a/contracts/feature-tests/composability/transfer-role-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/transfer-role-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false 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 dca2b5415f..773143455c 100644 --- a/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/vault/Cargo.toml b/contracts/feature-tests/composability/vault/Cargo.toml index a4a8ecc80c..b50ef91a46 100644 --- a/contracts/feature-tests/composability/vault/Cargo.toml +++ b/contracts/feature-tests/composability/vault/Cargo.toml @@ -10,9 +10,9 @@ path = "src/vault.rs" [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/vault/meta/Cargo.toml b/contracts/feature-tests/composability/vault/meta/Cargo.toml index e99529f668..5f23118119 100644 --- a/contracts/feature-tests/composability/vault/meta/Cargo.toml +++ b/contracts/feature-tests/composability/vault/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false 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 f598ee7a66..9039df2a4c 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml index cb8b2e5076..1d0df10024 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 7513310bff..9c5cb3ac00 100644 --- a/contracts/feature-tests/composability/vault/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 ff4595fa13..5cb374cf2f 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 0dc9b2ca7f..edbca52c79 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false 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 0aea0a7c62..bd96532634 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 747b44ed09..f40d3515e1 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 50152e90f4..521545335f 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false 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 516a43eb63..840f16343b 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 29330a315c..d43e1a740f 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 5094698b9a..76c3595d6c 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false 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 ceb1f2e24f..acfe93462e 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 ba949e755a..7b174d1c34 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 34f1067c10..62714e29b5 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false 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 32dc473808..4b97617741 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 b4cf18bfad..8c19ff102d 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 41e8801b40..2d02fbd210 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc20/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false 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 236319abc4..d5f6957015 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 4501c0b464..254a40cb7c 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 a9529971a8..2fee5bb8f9 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc721/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false 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 e5db8a5667..22edbf129b 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/wasm-adapter" [workspace] 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 3469c841a7..2d569594b0 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.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 02486b2086..d433dc152e 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/meta" default-features = false 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 42237353f2..773ab49014 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/esdt-system-sc-mock/Cargo.toml b/contracts/feature-tests/esdt-system-sc-mock/Cargo.toml index 8740d1fdcb..110a8e9bd9 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 88dc69e511..4003060c14 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/meta/Cargo.toml +++ b/contracts/feature-tests/esdt-system-sc-mock/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false 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 710f03a2f5..35572ee7f2 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.toml +++ b/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/exchange-features/Cargo.toml b/contracts/feature-tests/exchange-features/Cargo.toml index adf86f8ae9..c5f62b4c5a 100644 --- a/contracts/feature-tests/exchange-features/Cargo.toml +++ b/contracts/feature-tests/exchange-features/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/exchange_features.rs" [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/exchange-features/meta/Cargo.toml b/contracts/feature-tests/exchange-features/meta/Cargo.toml index 589d79efaa..f7a183430f 100644 --- a/contracts/feature-tests/exchange-features/meta/Cargo.toml +++ b/contracts/feature-tests/exchange-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/exchange-features/wasm/Cargo.toml b/contracts/feature-tests/exchange-features/wasm/Cargo.toml index ab4527595f..fa2c693992 100644 --- a/contracts/feature-tests/exchange-features/wasm/Cargo.toml +++ b/contracts/feature-tests/exchange-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 684fa23b9d..cc124713b7 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 3657415363..b0d9228ef7 100644 --- a/contracts/feature-tests/formatted-message-features/meta/Cargo.toml +++ b/contracts/feature-tests/formatted-message-features/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = [ "you",] path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml b/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml index 4f674abe4b..57f367e7b7 100644 --- a/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml +++ b/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/managed-map-features/Cargo.toml b/contracts/feature-tests/managed-map-features/Cargo.toml index cb63f04709..39a114ccee 100644 --- a/contracts/feature-tests/managed-map-features/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/Cargo.toml @@ -9,11 +9,11 @@ publish = false path = "src/mmap_features.rs" [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 61694618e8..70337ef43e 100644 --- a/contracts/feature-tests/managed-map-features/meta/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/managed-map-features/wasm/Cargo.toml b/contracts/feature-tests/managed-map-features/wasm/Cargo.toml index 17766d61c0..320c50a632 100644 --- a/contracts/feature-tests/managed-map-features/wasm/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 3dbd436d23..9715f9ed8f 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 47d91e055b..573b351f94 100644 --- a/contracts/feature-tests/multi-contract-features/meta/Cargo.toml +++ b/contracts/feature-tests/multi-contract-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false 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 d79a234dd7..e2208ba71b 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 e0860d7f9f..56e59eb3c5 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 @@ -26,7 +26,7 @@ path = ".." features = ["example_feature"] [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 a54dbf64d6..d285b18931 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 43733a6182..9d6e21c6ea 100644 --- a/contracts/feature-tests/multi-contract-features/wasm/Cargo.toml +++ b/contracts/feature-tests/multi-contract-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 91e73a3ee1..3698a878b9 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 c456c8c35c..99414c7e02 100644 --- a/contracts/feature-tests/panic-message-features/meta/Cargo.toml +++ b/contracts/feature-tests/panic-message-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/panic-message-features/wasm/Cargo.toml b/contracts/feature-tests/panic-message-features/wasm/Cargo.toml index 06895f2613..63bee8f3d1 100644 --- a/contracts/feature-tests/panic-message-features/wasm/Cargo.toml +++ b/contracts/feature-tests/panic-message-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/payable-features/Cargo.toml b/contracts/feature-tests/payable-features/Cargo.toml index 713b045b04..1955cc0d71 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/payable-features/meta/Cargo.toml b/contracts/feature-tests/payable-features/meta/Cargo.toml index 93e4981ee2..b138fb0932 100644 --- a/contracts/feature-tests/payable-features/meta/Cargo.toml +++ b/contracts/feature-tests/payable-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/payable-features/wasm/Cargo.toml b/contracts/feature-tests/payable-features/wasm/Cargo.toml index 790b323a3a..049b406aa5 100644 --- a/contracts/feature-tests/payable-features/wasm/Cargo.toml +++ b/contracts/feature-tests/payable-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 e90edbe6d6..3e8a6469a5 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 e0912a5305..40979f73f1 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.48.0" +version = "0.49.0-alpha.2" 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 7395919b55..fc87dc6b82 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/meta/Cargo.toml +++ b/contracts/feature-tests/rust-snippets-generator-test/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false 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 60ad1ebb93..08c7eb2512 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.toml +++ b/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 fcdf74843b..0ecc629875 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.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" features = [ "alloc" ] @@ -17,7 +17,7 @@ path = "../../examples/adder" path = "../../feature-tests/basic-features" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 cf03d27bcb..abfddefb59 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/meta/Cargo.toml +++ b/contracts/feature-tests/rust-testing-framework-tester/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false 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 2431c1c2b8..dc5966b935 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.toml +++ b/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/use-module/Cargo.toml b/contracts/feature-tests/use-module/Cargo.toml index 501ea6f461..905ede62be 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.48.0" +version = "0.49.0-alpha.2" path = "../../../contracts/modules" [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/scenario" [dev-dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../framework/meta" diff --git a/contracts/feature-tests/use-module/meta/Cargo.toml b/contracts/feature-tests/use-module/meta/Cargo.toml index c5f47f1892..557e9f5fad 100644 --- a/contracts/feature-tests/use-module/meta/Cargo.toml +++ b/contracts/feature-tests/use-module/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/use-module/meta/abi/Cargo.toml b/contracts/feature-tests/use-module/meta/abi/Cargo.toml index 6a6a8b029c..3184d932c3 100644 --- a/contracts/feature-tests/use-module/meta/abi/Cargo.toml +++ b/contracts/feature-tests/use-module/meta/abi/Cargo.toml @@ -9,10 +9,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/meta" default-features = false 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 cd34bba6d9..7bdd9cdc73 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.48.0" + "version": "0.49.0-alpha.2" } }, "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 e91480ad37..bb8b10e3dd 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.48.0" + "version": "0.49.0-alpha.2" } }, "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 455a51b925..9e0975de50 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" 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 2a4a269055..ee8e101689 100644 --- a/contracts/feature-tests/use-module/wasm/Cargo.toml +++ b/contracts/feature-tests/use-module/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/modules/Cargo.toml b/contracts/modules/Cargo.toml index 14775b4f4d..87cd42fe2d 100644 --- a/contracts/modules/Cargo.toml +++ b/contracts/modules/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.49.0-alpha.2" edition = "2021" authors = ["MultiversX "] @@ -17,5 +17,5 @@ categories = ["no-std", "wasm", "cryptography::cryptocurrencies"] alloc = ["multiversx-sc/alloc"] [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.49.0-alpha.2" path = "../../framework/base" diff --git a/framework/base/Cargo.toml b/framework/base/Cargo.toml index 646fc2fe56..226844c6b4 100644 --- a/framework/base/Cargo.toml +++ b/framework/base/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.2" edition = "2021" authors = ["Andrei Marinica ", "MultiversX "] @@ -28,7 +28,7 @@ bitflags = "=2.4.2" num-traits = { version = "=0.2.17", default-features = false } [dependencies.multiversx-sc-derive] -version = "=0.48.0" +version = "=0.49.0-alpha.2" path = "../derive" [dependencies.multiversx-sc-codec] diff --git a/framework/base/src/types/interaction/system_proxy/legacy_system_sc_proxy.rs b/framework/base/src/types/interaction/system_proxy/legacy_system_sc_proxy.rs index b784da1f8e..35486c6c04 100644 --- a/framework/base/src/types/interaction/system_proxy/legacy_system_sc_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy/legacy_system_sc_proxy.rs @@ -23,7 +23,7 @@ const ISSUE_AND_SET_ALL_ROLES_ENDPOINT_NAME: &str = "registerAndSetAllRoles"; /// Unlike other contract proxies, this one has a fixed address, /// so the proxy object doesn't really contain any data, it is more of a placeholder. #[deprecated( - since = "0.48.0", + since = "0.49.0", note = "There is a new `ESDTSystemSCProxy`, which uses the new proxy model." )] pub struct ESDTSystemSmartContractProxy diff --git a/framework/derive/Cargo.toml b/framework/derive/Cargo.toml index 2130f5c384..e3c39d67b6 100644 --- a/framework/derive/Cargo.toml +++ b/framework/derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.2" edition = "2021" authors = ["Andrei Marinica ", "MultiversX "] diff --git a/framework/meta/Cargo.toml b/framework/meta/Cargo.toml index 9080bf7e04..a63b1b7e61 100644 --- a/framework/meta/Cargo.toml +++ b/framework/meta/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-meta" -version = "0.48.0" +version = "0.49.0-alpha.2" edition = "2021" authors = [ @@ -52,7 +52,7 @@ pathdiff = { version = "0.2.1", optional = true } common-path = { version = "1.0.0", optional = true } [dependencies.multiversx-sc] -version = "=0.48.0" +version = "=0.49.0-alpha.2" path = "../base" features = ["alloc", "num-bigint"] diff --git a/framework/scenario/Cargo.toml b/framework/scenario/Cargo.toml index 0d487891c3..ac7b78cd25 100644 --- a/framework/scenario/Cargo.toml +++ b/framework/scenario/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-scenario" -version = "0.48.0" +version = "0.49.0-alpha.2" edition = "2021" authors = [ @@ -40,12 +40,12 @@ path = "src/main.rs" run-go-tests = [] [dependencies.multiversx-sc] -version = "=0.48.0" +version = "=0.49.0-alpha.2" features = ["alloc", "num-bigint"] path = "../base" [dependencies.multiversx-sc-meta] -version = "=0.48.0" +version = "=0.49.0-alpha.2" path = "../meta" [dependencies.multiversx-chain-scenario-format] diff --git a/framework/snippets/Cargo.toml b/framework/snippets/Cargo.toml index 8fd24f67cb..03a0d48c6c 100644 --- a/framework/snippets/Cargo.toml +++ b/framework/snippets/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-snippets" -version = "0.48.0" +version = "0.49.0-alpha.2" edition = "2021" authors = ["MultiversX "] @@ -22,7 +22,7 @@ env_logger = "0.11" futures = "0.3" [dependencies.multiversx-sc-scenario] -version = "=0.48.0" +version = "=0.49.0-alpha.2" path = "../scenario" [dependencies.multiversx-sdk] diff --git a/framework/wasm-adapter/Cargo.toml b/framework/wasm-adapter/Cargo.toml index a73659240a..9220813f9b 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.48.0" +version = "0.49.0-alpha.2" edition = "2021" authors = [ @@ -22,5 +22,5 @@ categories = [ ] [dependencies.multiversx-sc] -version = "=0.48.0" +version = "=0.49.0-alpha.2" path = "../base" diff --git a/tools/mxpy-snippet-generator/Cargo.toml b/tools/mxpy-snippet-generator/Cargo.toml index ca71edf2e8..1cda1d668a 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.48.0" +version = "0.49.0-alpha.2" path = "../../framework/base" [dependencies] diff --git a/tools/rust-debugger/format-tests/Cargo.toml b/tools/rust-debugger/format-tests/Cargo.toml index 0e22178945..1f8412b35d 100644 --- a/tools/rust-debugger/format-tests/Cargo.toml +++ b/tools/rust-debugger/format-tests/Cargo.toml @@ -9,11 +9,11 @@ name = "format-tests" path = "src/format_tests.rs" [dependencies.multiversx-sc] -version = "=0.48.0" +version = "=0.49.0-alpha.2" path = "../../../framework/base" [dependencies.multiversx-sc-scenario] -version = "=0.48.0" +version = "=0.49.0-alpha.2" path = "../../../framework/scenario" [dependencies.multiversx-chain-vm] From 251bff4c2dbac03454fe0ad3eff250dd56b12743 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 9 Apr 2024 23:14:36 +0300 Subject: [PATCH 313/461] result handler cleanup in examples --- .../examples/adder/interact/src/basic_interact.rs | 9 --------- contracts/examples/adder/tests/adder_blackbox_test.rs | 11 ++++------- .../panic-message-features/tests/pmf_blackbox_test.rs | 8 ++++---- 3 files changed, 8 insertions(+), 20 deletions(-) diff --git a/contracts/examples/adder/interact/src/basic_interact.rs b/contracts/examples/adder/interact/src/basic_interact.rs index 4fc748c95e..83d3e609ca 100644 --- a/contracts/examples/adder/interact/src/basic_interact.rs +++ b/contracts/examples/adder/interact/src/basic_interact.rs @@ -92,15 +92,6 @@ impl AdderInteract { .typed(adder_proxy::AdderProxy) .init(0u32) .code(&self.adder_code) - .with_result(WithRawTxResponse(|response| { - let err = &response.tx_error; - assert!( - err.is_success(), - "deploy failed: status: {}, message: {}", - err.status, - err.message - ); - })) .returns(ReturnsNewAddress) .prepare_async() .run() diff --git a/contracts/examples/adder/tests/adder_blackbox_test.rs b/contracts/examples/adder/tests/adder_blackbox_test.rs index 6a3142a207..e52c8c3ddb 100644 --- a/contracts/examples/adder/tests/adder_blackbox_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_test.rs @@ -31,17 +31,17 @@ fn adder_blackbox() { .new_address(owner_address, 1, "sc:adder"), ); - world + let new_address = world .tx() .from(OWNER) .typed(adder_proxy::AdderProxy) .init(5u32) .code(CODE_EXPR) - .with_result(WithNewAddress::new(|new_address| { - assert_eq!(new_address.to_address(), adder_contract.to_address()); - })) + .returns(ReturnsNewAddress) .run(); + assert_eq!(new_address, adder_contract.to_address()); + let value = world .query() .to(SC_ADDER) @@ -57,9 +57,6 @@ fn adder_blackbox() { .to(SC_ADDER) .typed(adder_proxy::AdderProxy) .add(1u32) - .with_result(WithRawTxResponse(|response| { - assert!(response.tx_error.is_success()); - })) .run(); world.check_state_step( diff --git a/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs b/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs index 66b2d9527e..3d13175c09 100644 --- a/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs +++ b/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs @@ -73,8 +73,8 @@ fn tx_expect_error_test() { .to(SC_PMF) .typed(pmf_proxy::PanicMessageFeaturesProxy) .sc_panic() - .returns(ExpectStatus(4)) - .returns(ExpectMessage("sc_panic! test")) + .with_result(ExpectStatus(4)) + .with_result(ExpectMessage("sc_panic! test")) .run(); } @@ -87,7 +87,7 @@ fn query_expect_error_test() { .to(SC_PMF) .typed(pmf_proxy::PanicMessageFeaturesProxy) .sc_panic() - .returns(ExpectStatus(4)) - .returns(ExpectMessage("sc_panic! test")) + .with_result(ExpectStatus(4)) + .with_result(ExpectMessage("sc_panic! test")) .run(); } From 9db6c7313c08a4cd0dd1fe7b8506db3e38cca9f0 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 10 Apr 2024 01:46:40 +0300 Subject: [PATCH 314/461] Bech32Address & interactor cleanup --- .../adder/interact/src/basic_interact.rs | 33 ++- .../interact/src/basic_interact_state.rs | 20 +- .../interact/src/multisig_interact.rs | 48 ++--- .../interact/src/multisig_interact_nfts.rs | 21 +- .../interact/src/multisig_interact_state.rs | 17 +- .../interact/src/multisig_interact_wegld.rs | 4 +- framework/scenario/src/bech32.rs | 3 +- framework/scenario/src/facade/expr.rs | 2 + .../src/facade/expr/bech32_address.rs | 190 ++++++++++++++++++ .../scenario/src/facade/result_handlers.rs | 2 + .../returns_new_bech32_address.rs | 27 +++ .../src/scenario/model/value/address_key.rs | 22 +- .../src/scenario/model/value/address_value.rs | 29 ++- .../interactor_sc_deploy.rs | 11 +- 14 files changed, 335 insertions(+), 94 deletions(-) create mode 100644 framework/scenario/src/facade/expr/bech32_address.rs create mode 100644 framework/scenario/src/facade/result_handlers/returns_new_bech32_address.rs diff --git a/contracts/examples/adder/interact/src/basic_interact.rs b/contracts/examples/adder/interact/src/basic_interact.rs index 83d3e609ca..8a8a6c22fd 100644 --- a/contracts/examples/adder/interact/src/basic_interact.rs +++ b/contracts/examples/adder/interact/src/basic_interact.rs @@ -41,7 +41,7 @@ async fn main() { #[allow(unused)] struct AdderInteract { interactor: Interactor, - wallet_address: Address, + wallet_address: Bech32Address, adder_code: BytesValue, state: State, } @@ -61,17 +61,17 @@ impl AdderInteract { Self { interactor, - wallet_address, + wallet_address: wallet_address.into(), adder_code, state: State::load_state(), } } async fn set_state(&mut self) { - println!("wallet address: {}", bech32::encode(&self.wallet_address)); + println!("wallet address: {}", &self.wallet_address); let scenario_raw = retrieve_account_as_scenario_set_state( Config::load_config().gateway().to_string(), - bech32::encode(&self.wallet_address), + self.wallet_address.to_bech32_string(), true, ) .await; @@ -92,16 +92,13 @@ impl AdderInteract { .typed(adder_proxy::AdderProxy) .init(0u32) .code(&self.adder_code) - .returns(ReturnsNewAddress) + .returns(ReturnsNewBech32Address) .prepare_async() .run() .await; - let new_address_bech32 = bech32::encode(&new_address); - println!("new address: {new_address_bech32}"); - - let new_address_expr = format!("bech32:{new_address_bech32}"); - self.state.set_adder_address(&new_address_expr); + println!("new address: {new_address}"); + self.state.set_adder_address(new_address); } async fn multi_deploy(&mut self, count: &u8) { @@ -121,17 +118,15 @@ impl AdderInteract { .init(0u32) .code(&self.adder_code) .gas(NumExpr("70,000,000")) - .returns(ReturnsNewAddress) + .returns(ReturnsNewBech32Address) }); } let results = buffer.run().await; - for result in results { - let new_address_bech32 = bech32::encode(&result); - println!("new address: {new_address_bech32}"); + for new_address in results { + println!("new address: {new_address}"); - let new_address_expr = format!("bech32:{new_address_bech32}"); - self.state.set_adder_address(&new_address_expr); + self.state.set_adder_address(new_address); } } @@ -139,7 +134,7 @@ impl AdderInteract { self.interactor .tx() .from(&self.wallet_address) - .to(self.state.adder().to_address()) + .to(self.state.current_adder_address()) .egld(NumExpr("0,050000000000000000")) .prepare_async() .run() @@ -150,7 +145,7 @@ impl AdderInteract { self.interactor .tx() .from(&self.wallet_address) - .to(self.state.adder().to_address()) + .to(self.state.current_adder_address()) .typed(adder_proxy::AdderProxy) .add(value) .prepare_async() @@ -164,7 +159,7 @@ impl AdderInteract { let sum = self .interactor .query() - .to(self.state.adder().to_address()) + .to(self.state.current_adder_address()) .typed(adder_proxy::AdderProxy) .sum() .returns(ReturnsResultConv::::new()) diff --git a/contracts/examples/adder/interact/src/basic_interact_state.rs b/contracts/examples/adder/interact/src/basic_interact_state.rs index 7fe09dc0ed..41453e36fd 100644 --- a/contracts/examples/adder/interact/src/basic_interact_state.rs +++ b/contracts/examples/adder/interact/src/basic_interact_state.rs @@ -1,4 +1,4 @@ -use crate::{ContractInfo, StaticApi}; +use multiversx_sc_snippets::imports::*; use serde::{Deserialize, Serialize}; use std::{ io::{Read, Write}, @@ -8,12 +8,10 @@ use std::{ /// State file const STATE_FILE: &str = "state.toml"; -pub type AdderContract = ContractInfo>; - /// Multisig Interact state #[derive(Debug, Default, Serialize, Deserialize)] pub struct State { - adder_address: Option, + adder_address: Option, } impl State { @@ -30,17 +28,15 @@ impl State { } /// Sets the adder address - pub fn set_adder_address(&mut self, address: &str) { - self.adder_address = Some(String::from(address)); + pub fn set_adder_address(&mut self, address: Bech32Address) { + self.adder_address = Some(address); } /// Returns the adder contract - pub fn adder(&self) -> AdderContract { - AdderContract::new( - self.adder_address - .clone() - .expect("no known adder contract, deploy first"), - ) + pub fn current_adder_address(&self) -> &Bech32Address { + self.adder_address + .as_ref() + .expect("no known adder contract, deploy first") } } diff --git a/contracts/examples/multisig/interact/src/multisig_interact.rs b/contracts/examples/multisig/interact/src/multisig_interact.rs index 9148af2e86..5975c7299c 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact.rs @@ -76,7 +76,7 @@ async fn main() { struct MultisigInteract { interactor: Interactor, - wallet_address: Address, + wallet_address: Bech32Address, system_sc_address: Address, collection_token_identifier: String, multisig_code: BytesValue, @@ -98,7 +98,7 @@ impl MultisigInteract { Self { interactor, - wallet_address, + wallet_address: wallet_address.into(), system_sc_address: bech32::decode(SYSTEM_SC_BECH32), collection_token_identifier: String::new(), multisig_code, @@ -152,16 +152,14 @@ impl MultisigInteract { .init(quorum, board) .code(&self.multisig_code) .gas(NumExpr("100,000,000")) - .returns(ReturnsNewAddress) + .returns(ReturnsNewBech32Address) .prepare_async() .run() .await; - let new_address_bech32 = bech32::encode(&new_address); - println!("new address: {new_address_bech32}"); + println!("new address: {new_address}"); - let new_address_expr = format!("bech32:{new_address_bech32}"); - self.state.set_multisig_address(&new_address_expr); + self.state.set_multisig_address(new_address); } async fn multi_deploy(&mut self, count: &u8) { @@ -182,17 +180,14 @@ impl MultisigInteract { .init(quorum, board.clone()) .code(&self.multisig_code) .gas(NumExpr("70,000,000")) - .returns(ReturnsNewAddress) + .returns(ReturnsNewBech32Address) }); } let results = buffer.run().await; - for result in results { - let new_address_bech32 = bech32::encode(&result); - println!("new address: {new_address_bech32}"); - - let new_address_expr = format!("bech32:{new_address_bech32}"); - self.state.set_multisig_address(&new_address_expr); + for new_address in results { + println!("new address: {new_address}"); + self.state.set_multisig_address(new_address); } } @@ -202,7 +197,7 @@ impl MultisigInteract { let eve = test_wallets::eve(); MultiValueVec::from([ - self.wallet_address.clone(), + self.wallet_address.to_address(), carol.address().to_bytes().into(), dan.address().to_bytes().into(), eve.address().to_bytes().into(), @@ -213,7 +208,7 @@ impl MultisigInteract { self.interactor .tx() .from(&self.wallet_address) - .to(self.state.multisig().to_address()) + .to(self.state.current_multisig_address()) .egld(BigUint::from(50_000_000_000_000_000u64)) // 0,05 or 5 * 10^16 .prepare_async() .run() @@ -229,7 +224,7 @@ impl MultisigInteract { self.interactor .tx() .from(&self.wallet_address) - .to(self.state.multisig().to_address()) + .to(self.state.current_multisig_address()) .gas(gas_expr) .typed(multisig_proxy::MultisigProxy) .perform_action_endpoint(action_id) @@ -241,8 +236,6 @@ impl MultisigInteract { } async fn perform_actions(&mut self, action_ids: Vec, gas_expr: u64) { - let multisig_address = self.state.multisig().to_address(); - let mut actions_no_quorum_reached = Vec::new(); for &action_id in &action_ids { if self.quorum_reached(action_id).await { @@ -256,10 +249,11 @@ impl MultisigInteract { let from = &self.wallet_address; let mut buffer = self.interactor.homogenous_call_buffer(); + let multisig_address = self.state.current_multisig_address(); for action_id in action_ids { buffer.push_tx(|tx| { tx.from(from) - .to(&multisig_address) + .to(multisig_address) .gas(gas_expr) .typed(multisig_proxy::MultisigProxy) .perform_action_endpoint(action_id) @@ -283,7 +277,7 @@ impl MultisigInteract { async fn quorum_reached(&mut self, action_id: usize) -> bool { self.interactor .query() - .to(self.state.multisig().to_address()) + .to(self.state.current_multisig_address()) .typed(multisig_proxy::MultisigProxy) .quorum_reached(action_id) .returns(ReturnsResult) @@ -295,7 +289,7 @@ impl MultisigInteract { async fn signed(&mut self, signer: &Address, action_id: usize) -> bool { self.interactor .query() - .to(self.state.multisig().to_address()) + .to(self.state.current_multisig_address()) .typed(multisig_proxy::MultisigProxy) .signed(signer, action_id) .returns(ReturnsResult) @@ -306,7 +300,6 @@ impl MultisigInteract { async fn sign(&mut self, action_ids: &[usize]) { println!("signing actions `{action_ids:?}`..."); - let multisig_address = self.state.multisig().to_address(); let mut pending_signers = Vec::<(Address, usize)>::new(); for &action_id in action_ids { @@ -323,10 +316,11 @@ impl MultisigInteract { } let mut buffer = self.interactor.homogenous_call_buffer(); + let multisig_address = self.state.current_multisig_address(); for (signer, action_id) in pending_signers { buffer.push_tx(|tx| { tx.from(signer) - .to(&multisig_address) + .to(multisig_address) .gas(15_000_000u64) .typed(multisig_proxy::MultisigProxy) .sign(action_id) @@ -350,7 +344,7 @@ impl MultisigInteract { self.interactor .tx() .from(&self.wallet_address) - .to(self.state.multisig().to_address()) + .to(self.state.current_multisig_address()) .gas(NumExpr("30,000,000")) .typed(multisig_proxy::MultisigProxy) .dns_register(dns_address, name) @@ -365,7 +359,7 @@ impl MultisigInteract { let quorum = self .interactor .query() - .to(self.state.multisig().to_address()) + .to(self.state.current_multisig_address()) .typed(multisig_proxy::MultisigProxy) .quorum() .returns(ReturnsResult) @@ -380,7 +374,7 @@ impl MultisigInteract { let board = self .interactor .query() - .to(self.state.multisig().to_address()) + .to(self.state.current_multisig_address()) .typed(multisig_proxy::MultisigProxy) .num_board_members() .returns(ReturnsResult) diff --git a/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs b/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs index e7fb0104af..ebc30300ef 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs @@ -38,7 +38,7 @@ impl MultisigInteract { .interactor .tx() .from(&self.wallet_address) - .to(self.state.multisig().to_address()) + .to(self.state.current_multisig_address()) .gas(NumExpr("10,000,000")) .typed(multisig_proxy::MultisigProxy) .propose_async_call( @@ -71,7 +71,7 @@ impl MultisigInteract { .interactor .tx() .from(&self.wallet_address) - .to(&self.state.multisig().to_address()) + .to(self.state.current_multisig_address()) .gas(NumExpr("80,000,000")) .typed(multisig_proxy::MultisigProxy) .perform_action_endpoint(action_id) @@ -93,7 +93,7 @@ impl MultisigInteract { .interactor .tx() .from(&self.wallet_address) - .to(&self.state.multisig().to_address()) + .to(self.state.current_multisig_address()) .gas(NumExpr("10,000,000")) .typed(multisig_proxy::MultisigProxy) .propose_async_call( @@ -124,7 +124,7 @@ impl MultisigInteract { .interactor .tx() .from(&self.wallet_address) - .to(&self.state.multisig().to_address()) + .to(self.state.current_multisig_address()) .gas(NumExpr("80,000,000")) .typed(multisig_proxy::MultisigProxy) .perform_action_endpoint(action_id) @@ -141,12 +141,12 @@ impl MultisigInteract { } pub async fn propose_set_special_role(&mut self) -> usize { - let multisig_address = self.state.multisig().to_address(); + let multisig_address = self.state.current_multisig_address(); let action_id = self .interactor .tx() .from(&self.wallet_address) - .to(&self.state.multisig().to_address()) + .to(self.state.current_multisig_address()) .gas(NumExpr("10,000,000")) .typed(multisig_proxy::MultisigProxy) .propose_async_call( @@ -154,7 +154,7 @@ impl MultisigInteract { 0u64, FunctionCall::new("setSpecialRole") .argument(&self.collection_token_identifier) - .argument(&multisig_address) + .argument(multisig_address) .argument(&"ESDTRoleNFTCreate"), ) .returns(ReturnsResult) @@ -177,9 +177,8 @@ impl MultisigInteract { pub async fn create_items(&mut self) { println!("creating items..."); - let multisig_address = self.state.multisig().to_address(); - let mut buffer = self.interactor.homogenous_call_buffer(); + let multisig_address = self.state.current_multisig_address(); for item_index in 0..NUM_ITEMS { let item_name = format!("Test collection item #{item_index}"); let image_cid = format!( @@ -188,11 +187,11 @@ impl MultisigInteract { buffer.push_tx(|tx| { tx.from(&self.wallet_address) - .to(&multisig_address) + .to(multisig_address) .gas(10_000_000u64) .typed(multisig_proxy::MultisigProxy) .propose_async_call( - &multisig_address, + multisig_address, 0u64, FunctionCall::new("ESDTNFTCreate") .argument(&self.collection_token_identifier) diff --git a/contracts/examples/multisig/interact/src/multisig_interact_state.rs b/contracts/examples/multisig/interact/src/multisig_interact_state.rs index f3c97482df..d5ff8bb7c1 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact_state.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact_state.rs @@ -1,4 +1,4 @@ -use crate::{ContractInfo, StaticApi}; +use multiversx_sc_scenario::imports::Bech32Address; use serde::{Deserialize, Serialize}; use std::{ io::{Read, Write}, @@ -8,12 +8,10 @@ use std::{ /// State file const STATE_FILE: &str = "state.toml"; -pub type MultisigContract = ContractInfo>; - /// Multisig Interact state #[derive(Debug, Default, Serialize, Deserialize)] pub struct State { - multisig_address: Option, + multisig_address: Option, } impl State { @@ -30,13 +28,14 @@ impl State { } /// Sets the multisig address - pub fn set_multisig_address(&mut self, address: &str) { - self.multisig_address = Some(String::from(address)); + pub fn set_multisig_address(&mut self, address: Bech32Address) { + self.multisig_address = Some(address); } - /// Returns the multisig contract - pub fn multisig(&self) -> MultisigContract { - MultisigContract::new(self.multisig_address.clone().unwrap()) + pub fn current_multisig_address(&self) -> &Bech32Address { + self.multisig_address + .as_ref() + .expect("no known multisig contract, deploy first") } } diff --git a/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs b/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs index fbfdd6f4a6..c9156e991d 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs @@ -53,7 +53,7 @@ impl MultisigInteract { .interactor .tx() .from(&self.wallet_address) - .to(&self.state.multisig().to_address()) + .to(self.state.current_multisig_address()) .gas(NumExpr("10,000,000")) .typed(multisig_proxy::MultisigProxy) .propose_async_call( @@ -83,7 +83,7 @@ impl MultisigInteract { .interactor .tx() .from(&self.wallet_address) - .to(&self.state.multisig().to_address()) + .to(self.state.current_multisig_address()) .gas(NumExpr("10,000,000")) .typed(multisig_proxy::MultisigProxy) .propose_async_call(to, 0u64, function_call) diff --git a/framework/scenario/src/bech32.rs b/framework/scenario/src/bech32.rs index 4b72107bb8..aa224cee95 100644 --- a/framework/scenario/src/bech32.rs +++ b/framework/scenario/src/bech32.rs @@ -2,7 +2,8 @@ use bech32::{FromBase32, ToBase32, Variant}; use multiversx_sc::types::heap::Address; pub fn decode(bech32_address: &str) -> Address { - let (_, dest_address_bytes_u5, _) = bech32::decode(bech32_address).unwrap(); + let (_, dest_address_bytes_u5, _) = bech32::decode(bech32_address) + .unwrap_or_else(|err| panic!("bech32 decode error for {bech32_address}: {err}")); let dest_address_bytes = Vec::::from_base32(&dest_address_bytes_u5).unwrap(); if dest_address_bytes.len() != 32 { panic!("Invalid address length after decoding") diff --git a/framework/scenario/src/facade/expr.rs b/framework/scenario/src/facade/expr.rs index 37750ee973..6ea8595740 100644 --- a/framework/scenario/src/facade/expr.rs +++ b/framework/scenario/src/facade/expr.rs @@ -1,7 +1,9 @@ +mod bech32_address; mod file_expr; mod mxsc_expr; mod num_expr; +pub use bech32_address::Bech32Address; pub use file_expr::FileExpr; pub use mxsc_expr::MxscExpr; pub use num_expr::NumExpr; diff --git a/framework/scenario/src/facade/expr/bech32_address.rs b/framework/scenario/src/facade/expr/bech32_address.rs new file mode 100644 index 0000000000..a327e44a6b --- /dev/null +++ b/framework/scenario/src/facade/expr/bech32_address.rs @@ -0,0 +1,190 @@ +use std::fmt::Display; + +use crate::bech32; +use multiversx_sc::{ + api::ManagedTypeApi, + codec::*, + types::{ + Address, AnnotatedValue, ManagedAddress, ManagedBuffer, TxEnv, TxFrom, TxFromSpecified, + TxTo, TxToSpecified, + }, +}; +use serde::{Deserialize, Serialize}; + +const BECH32_PREFIX: &str = "bech32:"; + +/// Wraps and address, and presents it as a bech32 expression wherever possible. +/// +/// In order to avoid repeated conversions, it redundantly keeps the bech32 representation inside. +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct Bech32Address { + address: Address, + bech32: String, +} + +impl From
for Bech32Address { + fn from(value: Address) -> Self { + let bech32 = bech32::encode(&value); + Bech32Address { + address: value, + bech32, + } + } +} + +impl Bech32Address { + pub fn from_bech32_string(bech32: String) -> Self { + let address = bech32::decode(&bech32); + Bech32Address { address, bech32 } + } + + pub fn to_bech32_str(&self) -> &str { + &self.bech32 + } + + pub fn to_bech32_string(&self) -> String { + self.bech32.to_owned() + } + + pub fn as_address(&self) -> &Address { + &self.address + } + + pub fn to_address(&self) -> Address { + self.address.clone() + } + + pub fn into_address(self) -> Address { + self.address + } + + pub fn to_bech32_expr(&self) -> String { + format!("{BECH32_PREFIX}{}", &self.bech32) + } +} + +impl AnnotatedValue> for Bech32Address +where + Env: TxEnv, +{ + fn annotation(&self, _env: &Env) -> ManagedBuffer { + self.to_bech32_expr().into() + } + + fn to_value(&self, env: &Env) -> ManagedAddress { + self.address.to_value(env) + } +} + +impl TxFrom for Bech32Address +where + Env: TxEnv, +{ + fn resolve_address(&self, env: &Env) -> ManagedAddress { + self.address.resolve_address(env) + } +} +impl TxFromSpecified for Bech32Address where Env: TxEnv {} +impl TxTo for Bech32Address where Env: TxEnv {} +impl TxToSpecified for Bech32Address where Env: TxEnv {} + +impl AnnotatedValue> for &Bech32Address +where + Env: TxEnv, +{ + fn annotation(&self, _env: &Env) -> ManagedBuffer { + self.to_bech32_expr().into() + } + + fn to_value(&self, env: &Env) -> ManagedAddress { + self.address.to_value(env) + } +} + +impl TxFrom for &Bech32Address +where + Env: TxEnv, +{ + fn resolve_address(&self, env: &Env) -> ManagedAddress { + self.address.resolve_address(env) + } +} +impl TxFromSpecified for &Bech32Address where Env: TxEnv {} +impl TxTo for &Bech32Address where Env: TxEnv {} +impl TxToSpecified for &Bech32Address where Env: TxEnv {} + +impl Display for Bech32Address { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(&self.bech32) + } +} + +impl NestedEncode for Bech32Address { + fn dep_encode_or_handle_err(&self, dest: &mut O, h: H) -> Result<(), H::HandledErr> + where + O: NestedEncodeOutput, + H: EncodeErrorHandler, + { + self.address.dep_encode_or_handle_err(dest, h) + } +} + +impl TopEncode for Bech32Address { + fn top_encode_or_handle_err(&self, output: O, h: H) -> Result<(), H::HandledErr> + where + O: TopEncodeOutput, + H: EncodeErrorHandler, + { + self.address.top_encode_or_handle_err(output, h) + } +} + +impl NestedDecode for Bech32Address { + fn dep_decode_or_handle_err(input: &mut I, h: H) -> Result + where + I: NestedDecodeInput, + H: DecodeErrorHandler, + { + Ok(Bech32Address::from(Address::dep_decode_or_handle_err( + input, h, + )?)) + } +} + +impl TopDecode for Bech32Address { + fn top_decode_or_handle_err(input: I, h: H) -> Result + where + I: TopDecodeInput, + H: DecodeErrorHandler, + { + Ok(Bech32Address::from(Address::top_decode_or_handle_err( + input, h, + )?)) + } +} + +impl CodecFrom for ManagedAddress where M: ManagedTypeApi {} +impl CodecFrom<&Bech32Address> for ManagedAddress where M: ManagedTypeApi {} + +impl Serialize for Bech32Address { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + self.bech32.serialize(serializer) + } +} + +impl<'de> Deserialize<'de> for Bech32Address { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + // some old interactors have it serialized like this + let mut bech32 = String::deserialize(deserializer)?; + if let Some(stripped) = bech32.strip_prefix("bech32:") { + bech32 = stripped.to_owned(); + } + Ok(Bech32Address::from_bech32_string(bech32)) + } +} diff --git a/framework/scenario/src/facade/result_handlers.rs b/framework/scenario/src/facade/result_handlers.rs index f8b43a5ebd..30823bf6f5 100644 --- a/framework/scenario/src/facade/result_handlers.rs +++ b/framework/scenario/src/facade/result_handlers.rs @@ -1,6 +1,7 @@ mod expect_message; mod expect_status; mod returns_message; +mod returns_new_bech32_address; mod returns_new_token_identifier; mod returns_status; mod with_tx_raw_response; @@ -8,6 +9,7 @@ mod with_tx_raw_response; pub use expect_message::ExpectMessage; pub use expect_status::ExpectStatus; pub use returns_message::ReturnsMessage; +pub use returns_new_bech32_address::ReturnsNewBech32Address; pub use returns_new_token_identifier::ReturnsNewTokenIdentifier; pub use returns_status::ReturnsStatus; pub use with_tx_raw_response::WithRawTxResponse; diff --git a/framework/scenario/src/facade/result_handlers/returns_new_bech32_address.rs b/framework/scenario/src/facade/result_handlers/returns_new_bech32_address.rs new file mode 100644 index 0000000000..6e898c6088 --- /dev/null +++ b/framework/scenario/src/facade/result_handlers/returns_new_bech32_address.rs @@ -0,0 +1,27 @@ +use multiversx_sc::types::{RHListItem, RHListItemExec, TxEnv}; + +use crate::{facade::expr::Bech32Address, scenario_model::TxResponse}; + +/// Indicates that the newly deployed address will be returned after a deploy. +pub struct ReturnsNewBech32Address; + +impl RHListItem for ReturnsNewBech32Address +where + Env: TxEnv, +{ + type Returns = Bech32Address; +} + +impl RHListItemExec for ReturnsNewBech32Address +where + Env: TxEnv, +{ + fn item_process_result(self, tx_response: &TxResponse) -> Self::Returns { + let new_address = tx_response + .new_deployed_address + .clone() + .expect("missing returned address"); + + new_address.into() + } +} diff --git a/framework/scenario/src/scenario/model/value/address_key.rs b/framework/scenario/src/scenario/model/value/address_key.rs index 889cca69ae..d705439b1d 100644 --- a/framework/scenario/src/scenario/model/value/address_key.rs +++ b/framework/scenario/src/scenario/model/value/address_key.rs @@ -1,8 +1,8 @@ -use multiversx_sc::types::{AddressExpr, ScExpr}; +use multiversx_sc::types::{Address, AddressExpr, ScExpr}; use super::{value_from_slice, AddressValue}; use crate::{ - multiversx_sc::types::Address, + facade::expr::Bech32Address, scenario_format::{ interpret_trait::{InterpretableFrom, InterpreterContext, IntoRaw}, value_interpreter::interpret_string, @@ -117,6 +117,24 @@ impl From<&Address> for AddressKey { } } +impl From<&Bech32Address> for AddressKey { + fn from(from: &Bech32Address) -> Self { + AddressKey { + value: from.to_address().clone(), + original: from.to_bech32_expr(), + } + } +} + +impl From for AddressKey { + fn from(from: Bech32Address) -> Self { + AddressKey { + original: from.to_bech32_expr(), + value: from.into_address(), + } + } +} + impl From for AddressKey { fn from(from: AddressExpr) -> Self { AddressKey { diff --git a/framework/scenario/src/scenario/model/value/address_value.rs b/framework/scenario/src/scenario/model/value/address_value.rs index 85886e4cf8..640451a63c 100644 --- a/framework/scenario/src/scenario/model/value/address_value.rs +++ b/framework/scenario/src/scenario/model/value/address_value.rs @@ -2,10 +2,13 @@ use std::fmt; use crate::multiversx_sc::types::Address; -use crate::scenario_format::{ - interpret_trait::{InterpretableFrom, InterpreterContext, IntoRaw}, - serde_raw::ValueSubTree, - value_interpreter::{interpret_string, interpret_subtree}, +use crate::{ + facade::expr::Bech32Address, + scenario_format::{ + interpret_trait::{InterpretableFrom, InterpreterContext, IntoRaw}, + serde_raw::ValueSubTree, + value_interpreter::{interpret_string, interpret_subtree}, + }, }; use super::AddressKey; @@ -107,6 +110,24 @@ impl From<&Address> for AddressValue { } } +impl From<&Bech32Address> for AddressValue { + fn from(from: &Bech32Address) -> Self { + AddressValue { + value: from.to_address().clone(), + original: ValueSubTree::Str(from.to_bech32_expr()), + } + } +} + +impl From for AddressValue { + fn from(from: Bech32Address) -> Self { + AddressValue { + original: ValueSubTree::Str(from.to_bech32_expr()), + value: from.into_address(), + } + } +} + impl From<&str> for AddressValue { fn from(from: &str) -> Self { AddressValue::interpret_from(from, &InterpreterContext::default()) diff --git a/framework/snippets/src/interactor_scenario/interactor_sc_deploy.rs b/framework/snippets/src/interactor_scenario/interactor_sc_deploy.rs index 63e8ae80db..87d17dff7f 100644 --- a/framework/snippets/src/interactor_scenario/interactor_sc_deploy.rs +++ b/framework/snippets/src/interactor_scenario/interactor_sc_deploy.rs @@ -1,7 +1,7 @@ use crate::{mandos_to_erdrs_address, Interactor}; use log::info; use multiversx_sc_scenario::{ - bech32, + imports::Bech32Address, mandos_system::ScenarioRunner, scenario_model::{ScDeployStep, SetStateStep, TxResponse}, }; @@ -64,14 +64,11 @@ impl Interactor { .new_deployed_address .clone() .unwrap(); + let deploy_address_bech32 = Bech32Address::from(deploy_address); - let set_state_step = SetStateStep::new().new_address( - addr, - nonce, - format!("0x{}", hex::encode(&deploy_address)).as_str(), - ); + let set_state_step = SetStateStep::new().new_address(addr, nonce, &deploy_address_bech32); - println!("deploy address: {}", bech32::encode(&deploy_address)); + println!("deploy address: {deploy_address_bech32}"); self.pre_runners.run_set_state_step(&set_state_step); self.post_runners.run_set_state_step(&set_state_step); From 46288c9ac9c8433cfbaa2ea7f10d3a053b8ee35e Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 10 Apr 2024 01:59:46 +0300 Subject: [PATCH 315/461] ESDTSystemSCAddress used in interactors directly --- .../interact/src/multisig_interact.rs | 3 --- .../interact/src/multisig_interact_nfts.rs | 8 +++---- .../interact-rs/src/interactor_main.rs | 1 - .../markers/esdt_system_sc_address.rs | 21 +++++++++++++++++++ .../scenario/model/transaction/tx_response.rs | 6 ++---- 5 files changed, 26 insertions(+), 13 deletions(-) diff --git a/contracts/examples/multisig/interact/src/multisig_interact.rs b/contracts/examples/multisig/interact/src/multisig_interact.rs index 5975c7299c..48cfb05a6d 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact.rs @@ -11,7 +11,6 @@ use multisig_interact_state::State; use multiversx_sc_snippets::imports::*; -const SYSTEM_SC_BECH32: &str = "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u"; const INTERACTOR_SCENARIO_TRACE_PATH: &str = "interactor_trace.scen.json"; #[tokio::main] @@ -77,7 +76,6 @@ async fn main() { struct MultisigInteract { interactor: Interactor, wallet_address: Bech32Address, - system_sc_address: Address, collection_token_identifier: String, multisig_code: BytesValue, state: State, @@ -99,7 +97,6 @@ impl MultisigInteract { Self { interactor, wallet_address: wallet_address.into(), - system_sc_address: bech32::decode(SYSTEM_SC_BECH32), collection_token_identifier: String::new(), multisig_code, state: State::load_state(), diff --git a/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs b/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs index ebc30300ef..2efda8e4d6 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact_nfts.rs @@ -33,7 +33,6 @@ impl MultisigInteract { } pub async fn propose_issue_collection_with_all_roles(&mut self) -> usize { - let system_sc_address = bech32::decode(SYSTEM_SC_BECH32); let action_id = self .interactor .tx() @@ -42,7 +41,7 @@ impl MultisigInteract { .gas(NumExpr("10,000,000")) .typed(multisig_proxy::MultisigProxy) .propose_async_call( - system_sc_address, + ESDTSystemSCAddress, ISSUE_COST, FunctionCall::new("registerAndSetAllRoles") .argument(&COLLECTION_NAME) @@ -88,7 +87,6 @@ impl MultisigInteract { } pub async fn propose_issue_collection(&mut self) -> usize { - let system_sc_address = bech32::decode(SYSTEM_SC_BECH32); let action_id = self .interactor .tx() @@ -97,7 +95,7 @@ impl MultisigInteract { .gas(NumExpr("10,000,000")) .typed(multisig_proxy::MultisigProxy) .propose_async_call( - system_sc_address, + ESDTSystemSCAddress, ISSUE_COST, FunctionCall::new("issueNonFungible") .argument(&COLLECTION_NAME) @@ -150,7 +148,7 @@ impl MultisigInteract { .gas(NumExpr("10,000,000")) .typed(multisig_proxy::MultisigProxy) .propose_async_call( - &self.system_sc_address, + ESDTSystemSCAddress, 0u64, FunctionCall::new("setSpecialRole") .argument(&self.collection_token_identifier) diff --git a/contracts/feature-tests/rust-snippets-generator-test/interact-rs/src/interactor_main.rs b/contracts/feature-tests/rust-snippets-generator-test/interact-rs/src/interactor_main.rs index 92d00a227d..389c717f2c 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/interact-rs/src/interactor_main.rs +++ b/contracts/feature-tests/rust-snippets-generator-test/interact-rs/src/interactor_main.rs @@ -8,7 +8,6 @@ const GATEWAY: &str = sdk::blockchain::DEVNET_GATEWAY; const PEM: &str = "alice.pem"; const SC_ADDRESS: &str = ""; -const SYSTEM_SC_BECH32: &str = "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u"; const DEFAULT_ADDRESS_EXPR: &str = "0x0000000000000000000000000000000000000000000000000000000000000000"; const TOKEN_ISSUE_COST: u64 = 50_000_000_000_000_000; diff --git a/framework/base/src/types/interaction/markers/esdt_system_sc_address.rs b/framework/base/src/types/interaction/markers/esdt_system_sc_address.rs index de8aadb1b6..e43ee5f2ce 100644 --- a/framework/base/src/types/interaction/markers/esdt_system_sc_address.rs +++ b/framework/base/src/types/interaction/markers/esdt_system_sc_address.rs @@ -1,4 +1,5 @@ use hex_literal::hex; +use multiversx_sc_codec::{CodecFrom, EncodeErrorHandler, TopEncode, TopEncodeOutput}; use crate::{ api::{ @@ -14,6 +15,8 @@ use crate::{ /// Address of the system smart contract that manages ESDT. const SYSTEM_SC_ADDRESS_BYTES: [u8; 32] = hex!("000000000000000000010000000000000000000000000000000000000002ffff"); +const SYSTEM_SC_ADDRESS_BECH32: &str = + "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u"; const SYSTEM_SC_ADDRESS_ANNOTATION: &str = "bech32:erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u"; @@ -44,3 +47,21 @@ where impl TxTo> for ESDTSystemSCAddress where Api: CallTypeApi {} impl TxToSpecified> for ESDTSystemSCAddress where Api: CallTypeApi {} + +impl TopEncode for ESDTSystemSCAddress { + fn top_encode_or_handle_err(&self, output: O, h: H) -> Result<(), H::HandledErr> + where + O: TopEncodeOutput, + H: EncodeErrorHandler, + { + SYSTEM_SC_ADDRESS_BYTES.top_encode_or_handle_err(output, h) + } +} + +impl CodecFrom for ManagedAddress where M: ManagedTypeApi {} + +impl core::fmt::Display for ESDTSystemSCAddress { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + f.write_str(SYSTEM_SC_ADDRESS_BECH32) + } +} diff --git a/framework/scenario/src/scenario/model/transaction/tx_response.rs b/framework/scenario/src/scenario/model/transaction/tx_response.rs index ee844865bc..a2dbed5f5a 100644 --- a/framework/scenario/src/scenario/model/transaction/tx_response.rs +++ b/framework/scenario/src/scenario/model/transaction/tx_response.rs @@ -1,5 +1,5 @@ use multiversx_chain_vm::{crypto_functions::keccak256, tx_mock::TxResult}; -use multiversx_sc::types::Address; +use multiversx_sc::types::{Address, ESDTSystemSCAddress}; use multiversx_sdk::{ data::transaction::{ApiLogs, ApiSmartContractResult, Events, TransactionOnNetwork}, utils::base64_decode, @@ -12,8 +12,6 @@ use super::{ const SC_DEPLOY_PROCESSING_TYPE: &str = "SCDeployment"; const LOG_IDENTIFIER_SIGNAL_ERROR: &str = "signalError"; -const SYSTEM_SC_BECH32: &str = "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u"; - #[derive(Debug, Default, Clone)] /// The response of a transaction. pub struct TxResponse { @@ -196,7 +194,7 @@ impl TxResponse { fn process_new_issued_token_identifier(mut self) -> Self { for scr in self.api_scrs.iter() { - if scr.sender.to_string() != SYSTEM_SC_BECH32 { + if scr.sender.to_string() != ESDTSystemSCAddress.to_string() { continue; } From 216ef102b33c4ef03c1a7b680a678eb5c572fe58 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 10 Apr 2024 10:15:31 +0300 Subject: [PATCH 316/461] cleanup --- .../interaction/markers/esdt_system_sc_address.rs | 12 ++++++++++-- .../system_proxy/legacy_system_sc_proxy.rs | 2 +- .../src/scenario/model/transaction/tx_response.rs | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/framework/base/src/types/interaction/markers/esdt_system_sc_address.rs b/framework/base/src/types/interaction/markers/esdt_system_sc_address.rs index e43ee5f2ce..f9d1f94ce2 100644 --- a/framework/base/src/types/interaction/markers/esdt_system_sc_address.rs +++ b/framework/base/src/types/interaction/markers/esdt_system_sc_address.rs @@ -24,12 +24,20 @@ const SYSTEM_SC_ADDRESS_ANNOTATION: &str = pub struct ESDTSystemSCAddress; impl ESDTSystemSCAddress { - pub fn managed_address(self) -> ManagedAddress + pub fn to_managed_address(self) -> ManagedAddress where Api: ManagedTypeApi, { ManagedAddress::from(SYSTEM_SC_ADDRESS_BYTES) } + + pub fn to_bech32_str(&self) -> &str { + SYSTEM_SC_ADDRESS_BECH32 + } + + pub fn to_bech32_string(&self) -> alloc::string::String { + SYSTEM_SC_ADDRESS_BECH32.into() + } } impl AnnotatedValue, ManagedAddress> for ESDTSystemSCAddress @@ -41,7 +49,7 @@ where } fn to_value(&self, _env: &TxScEnv) -> ManagedAddress { - ESDTSystemSCAddress.managed_address() + ESDTSystemSCAddress.to_managed_address() } } diff --git a/framework/base/src/types/interaction/system_proxy/legacy_system_sc_proxy.rs b/framework/base/src/types/interaction/system_proxy/legacy_system_sc_proxy.rs index 35486c6c04..c19fe2e4e6 100644 --- a/framework/base/src/types/interaction/system_proxy/legacy_system_sc_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy/legacy_system_sc_proxy.rs @@ -471,7 +471,7 @@ where } pub fn esdt_system_sc_address(&self) -> ManagedAddress { - ESDTSystemSCAddress.managed_address() + ESDTSystemSCAddress.to_managed_address() } fn esdt_system_sc_call_no_args( diff --git a/framework/scenario/src/scenario/model/transaction/tx_response.rs b/framework/scenario/src/scenario/model/transaction/tx_response.rs index a2dbed5f5a..d4171c6590 100644 --- a/framework/scenario/src/scenario/model/transaction/tx_response.rs +++ b/framework/scenario/src/scenario/model/transaction/tx_response.rs @@ -194,7 +194,7 @@ impl TxResponse { fn process_new_issued_token_identifier(mut self) -> Self { for scr in self.api_scrs.iter() { - if scr.sender.to_string() != ESDTSystemSCAddress.to_string() { + if scr.sender.to_bech32_string().unwrap() != ESDTSystemSCAddress.to_bech32_string() { continue; } From ec71f0acd823c4d46326fc78aa9dd424fb2cfcbc Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Wed, 10 Apr 2024 14:05:41 +0300 Subject: [PATCH 317/461] unified syntax - repl deploy --- .../tests/crowdfunding_esdt_blackbox_test.rs | 75 ++++++++++--------- 1 file changed, 41 insertions(+), 34 deletions(-) diff --git a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs index 5dceba3659..a23ecc3854 100644 --- a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs +++ b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs @@ -1,4 +1,4 @@ -use crowdfunding_esdt::{ProxyTrait as _, Status}; +use crowdfunding_esdt::{crowdfunding_esdt_proxy, ProxyTrait as _, Status}; use multiversx_sc_scenario::imports::*; use num_bigint::BigUint; @@ -9,8 +9,13 @@ const CF_TOKEN_ID_EXPR: &str = "str:CROWD-123456"; const CROWDFUNDING_ESDT_ADDRESS_EXPR: &str = "sc:crowdfunding-esdt"; const CROWDFUNDING_ESDT_PATH_EXPR: &str = "mxsc:output/crowdfunding-esdt.mxsc.json"; const FIRST_USER_ADDRESS_EXPR: &str = "address:first-user"; +const FIRST_USER_ADDRESS_EXPR_REPL: AddressExpr = AddressExpr("first-user"); const OWNER_ADDRESS_EXPR: &str = "address:owner"; +const OWNER_ADDRESS_EXPR_REPL: AddressExpr = AddressExpr("owner"); const SECOND_USER_ADDRESS_EXPR: &str = "address:second-user"; +const SECOND_USER_ADDRESS_EXPR_REPL: AddressExpr = AddressExpr("second-user"); +const CODE_EXPR: MxscExpr = MxscExpr("output/crowdfunding-esdt.mxsc.json"); +const SC_CROWDFUNDING_ESDT_EXPR: ScExpr = ScExpr("crowdfunding-esdt"); type CrowdfundingESDTContract = ContractInfo>; @@ -35,20 +40,21 @@ struct CrowdfundingESDTTestState { impl CrowdfundingESDTTestState { fn new() -> Self { let mut world = world(); + let owner_address = "address:owner"; world.set_state_step( SetStateStep::new() - .put_account(OWNER_ADDRESS_EXPR, Account::new().nonce(1)) - .new_address(OWNER_ADDRESS_EXPR, 1, CROWDFUNDING_ESDT_ADDRESS_EXPR) + .put_account(OWNER_ADDRESS_EXPR_REPL, Account::new().nonce(1)) + .new_address(owner_address, 1, CROWDFUNDING_ESDT_ADDRESS_EXPR) .put_account( - FIRST_USER_ADDRESS_EXPR, + FIRST_USER_ADDRESS_EXPR_REPL, Account::new() .nonce(1) .balance("1_000") .esdt_balance(CF_TOKEN_ID_EXPR, "1_000"), ) .put_account( - SECOND_USER_ADDRESS_EXPR, + SECOND_USER_ADDRESS_EXPR_REPL, Account::new() .nonce(1) .esdt_balance(CF_TOKEN_ID_EXPR, "1_000"), @@ -69,32 +75,33 @@ impl CrowdfundingESDTTestState { } } - fn deploy(&mut self) -> &mut Self { - let crowdfunding_esdt_code = self.world.code_expression(CROWDFUNDING_ESDT_PATH_EXPR); - - self.world.sc_deploy( - ScDeployStep::new() - .from(OWNER_ADDRESS_EXPR) - .code(crowdfunding_esdt_code) - .call(self.crowdfunding_esdt_contract.init( - 2_000u32, - CF_DEADLINE, - EgldOrEsdtTokenIdentifier::esdt(CF_TOKEN_ID), - )), - ); - - self + fn deploy(&mut self) { + self.world + .tx() + .from(OWNER_ADDRESS_EXPR_REPL) + .typed(crowdfunding_esdt_proxy::CrowdfundingProxy) + .init( + 2_000u32, + CF_DEADLINE, + EgldOrEsdtTokenIdentifier::esdt(CF_TOKEN_ID), + ) + .code(CODE_EXPR) + .run(); } - fn fund(&mut self, address: &str, amount: &str) -> &mut Self { - self.world.sc_call( - ScCallStep::new() - .from(address) - .esdt_transfer(CF_TOKEN_ID_EXPR, 0, amount) - .call(self.crowdfunding_esdt_contract.fund()), - ); - - self + fn fund(&mut self, address: AddressExpr, amount: u64) { + self.world + .tx() + .from(address) + .to(SC_CROWDFUNDING_ESDT_EXPR) + .typed(crowdfunding_esdt_proxy::CrowdfundingProxy) + .fund() + .single_esdt( + &TokenIdentifier::from(CF_TOKEN_ID_EXPR), + 0u64, + &multiversx_sc::proxy_imports::BigUint::from(amount), + ) + .run(); } fn check_deposit(&mut self, donor: Address, amount: u64) -> &mut Self { @@ -150,7 +157,7 @@ fn test_fund() { let mut state = CrowdfundingESDTTestState::new(); state.deploy(); - state.fund(FIRST_USER_ADDRESS_EXPR, "1000"); + state.fund(FIRST_USER_ADDRESS_EXPR_REPL, 1_000); state.check_deposit(state.first_user_address.clone(), 1_000); } @@ -191,11 +198,11 @@ fn test_successful_cf() { state.deploy(); // first user fund - state.fund(FIRST_USER_ADDRESS_EXPR, "1_000"); + state.fund(FIRST_USER_ADDRESS_EXPR_REPL, 1000); state.check_deposit(state.first_user_address.clone(), 1_000); // second user fund - state.fund(SECOND_USER_ADDRESS_EXPR, "1_000"); + state.fund(SECOND_USER_ADDRESS_EXPR_REPL, 1000); state.check_deposit(state.second_user_address.clone(), 1_000); // set block timestamp after deadline @@ -228,11 +235,11 @@ fn test_failed_cf() { state.deploy(); // first user fund - state.fund(FIRST_USER_ADDRESS_EXPR, "300"); + state.fund(FIRST_USER_ADDRESS_EXPR_REPL, 300); state.check_deposit(state.first_user_address.clone(), 300u64); // second user fund - state.fund(SECOND_USER_ADDRESS_EXPR, "600"); + state.fund(SECOND_USER_ADDRESS_EXPR_REPL, 600); state.check_deposit(state.second_user_address.clone(), 600u64); // set block timestamp after deadline From 86156a6ae28fc8456c83b9f2b0a9fb6124def1af Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 10 Apr 2024 15:28:00 +0300 Subject: [PATCH 318/461] test fix --- tools/rust-debugger/format-tests/src/format_tests.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/rust-debugger/format-tests/src/format_tests.rs b/tools/rust-debugger/format-tests/src/format_tests.rs index 913851dbfa..5df781b92b 100644 --- a/tools/rust-debugger/format-tests/src/format_tests.rs +++ b/tools/rust-debugger/format-tests/src/format_tests.rs @@ -65,7 +65,7 @@ fn main() { let token_identifier: TokenIdentifier = TokenIdentifier::from("MYTOK-123456"); push!(to_check, token_identifier, "\"MYTOK-123456\""); - let managed_address = ESDTSystemSCAddress.managed_address::(); + let managed_address = ESDTSystemSCAddress.to_managed_address::(); push!( to_check, managed_address, From 6302f14c09a601cf2b64dbb656f1de82d1721528 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Wed, 10 Apr 2024 15:11:46 +0200 Subject: [PATCH 319/461] blackbox tests migration for price aggregator --- .../core/price-aggregator/sc-config.toml | 2 + .../tests/price_aggregator_blackbox_test.rs | 129 +++--- .../tests/price_aggregator_proxy.rs | 366 ++++++++++++++++++ .../tests/price_aggregator_stress_blackbox.rs | 103 ++--- 4 files changed, 498 insertions(+), 102 deletions(-) create mode 100644 contracts/core/price-aggregator/sc-config.toml create mode 100644 contracts/core/price-aggregator/tests/price_aggregator_proxy.rs diff --git a/contracts/core/price-aggregator/sc-config.toml b/contracts/core/price-aggregator/sc-config.toml new file mode 100644 index 0000000000..56b3e816a6 --- /dev/null +++ b/contracts/core/price-aggregator/sc-config.toml @@ -0,0 +1,2 @@ +[[proxy]] +path = "tests/price_aggregator_proxy.rs" \ No newline at end of file diff --git a/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs b/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs index cc2dc7b994..db64b7749c 100644 --- a/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs +++ b/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs @@ -1,11 +1,13 @@ use multiversx_price_aggregator_sc::{ price_aggregator_data::{OracleStatus, TimestampedPrice, TokenPair}, - ContractObj, PriceAggregator, ProxyTrait as _, MAX_ROUND_DURATION_SECONDS, + ContractObj, PriceAggregator, MAX_ROUND_DURATION_SECONDS, }; -use multiversx_sc_modules::{pause::ProxyTrait, staking::ProxyTrait as _}; +use multiversx_sc_modules::staking::ProxyTrait as _; use multiversx_sc_scenario::imports::*; +mod price_aggregator_proxy; + const DECIMALS: u8 = 0; const EGLD_TICKER: &[u8] = b"EGLD"; const NR_ORACLES: usize = 4; @@ -18,6 +20,9 @@ const STAKE_AMOUNT: u64 = 20; const SUBMISSION_COUNT: usize = 3; const USD_TICKER: &[u8] = b"USDC"; +const PRICE_AGGREGATOR: ScExpr = ScExpr("price-aggregator"); +const OWNER: AddressExpr = AddressExpr("owner"); + type PriceAggregatorContract = ContractInfo>; fn world() -> ScenarioWorld { @@ -44,7 +49,7 @@ impl PriceAggregatorTestState { let mut world = world(); let mut set_state_step = SetStateStep::new() - .put_account(OWNER_ADDRESS_EXPR, Account::new().nonce(1)) + .put_account(OWNER, Account::new().nonce(1)) .new_address(OWNER_ADDRESS_EXPR, 1, PRICE_AGGREGATOR_ADDRESS_EXPR) .block_timestamp(100); @@ -86,59 +91,69 @@ impl PriceAggregatorTestState { .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, - )), - ); + self.world + .tx() + .from(OWNER) + .typed(price_aggregator_proxy::PriceAggregatorProxy) + .init( + EgldOrEsdtTokenIdentifier::egld(), + STAKE_AMOUNT, + SLASH_AMOUNT, + SLASH_QUORUM, + SUBMISSION_COUNT, + oracles, + ) + .code(price_aggregator_code) + .run(); 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.world + .tx() + .from(&address.to_address()) + .to(PRICE_AGGREGATOR) + .typed(price_aggregator_proxy::PriceAggregatorProxy) + .stake() + .egld(STAKE_AMOUNT) + .run(); } 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), - ), - ); + self.world + .tx() + .from(OWNER) + .to(PRICE_AGGREGATOR) + .typed(price_aggregator_proxy::PriceAggregatorProxy) + .set_pair_decimals(EGLD_TICKER, USD_TICKER, DECIMALS) + .run(); } fn unpause_endpoint(&mut self) { - self.world.sc_call( - ScCallStep::new() - .from(OWNER_ADDRESS_EXPR) - .call(self.price_aggregator_contract.unpause_endpoint()), - ); + self.world + .tx() + .from(OWNER) + .to(PRICE_AGGREGATOR) + .typed(price_aggregator_proxy::PriceAggregatorProxy) + .unpause_endpoint() + .run(); } 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( + self.world + .tx() + .from(&from.to_address()) + .to(PRICE_AGGREGATOR) + .typed(price_aggregator_proxy::PriceAggregatorProxy) + .submit( EGLD_TICKER, USD_TICKER, submission_timestamp, price, DECIMALS, - ), - )); + ) + .run(); } fn submit_and_expect_err( @@ -148,27 +163,31 @@ impl PriceAggregatorTestState { 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)), - ); + self.world + .tx() + .from(&from.to_address()) + .to(PRICE_AGGREGATOR) + .typed(price_aggregator_proxy::PriceAggregatorProxy) + .submit( + EGLD_TICKER, + USD_TICKER, + submission_timestamp, + price, + DECIMALS, + ) + .with_result(ExpectStatus(4)) + .with_result(ExpectMessage(err_message)) + .run(); } 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), - ), - ); + self.world + .tx() + .from(&from.to_address()) + .to(PRICE_AGGREGATOR) + .typed(price_aggregator_proxy::PriceAggregatorProxy) + .vote_slash_member(member_to_slash) + .run(); } } diff --git a/contracts/core/price-aggregator/tests/price_aggregator_proxy.rs b/contracts/core/price-aggregator/tests/price_aggregator_proxy.rs new file mode 100644 index 0000000000..c7b05acaf5 --- /dev/null +++ b/contracts/core/price-aggregator/tests/price_aggregator_proxy.rs @@ -0,0 +1,366 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(dead_code)] +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +pub struct PriceAggregatorProxy; + +impl TxProxyTrait for PriceAggregatorProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = PriceAggregatorProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + PriceAggregatorProxyMethods { wrapped_tx: tx } + } +} + +pub struct PriceAggregatorProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl PriceAggregatorProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>, + Arg3: CodecInto, + Arg4: CodecInto, + Arg5: CodecInto>>, + >( + self, + staking_token: Arg0, + staking_amount: Arg1, + slash_amount: Arg2, + slash_quorum: Arg3, + submission_count: Arg4, + oracles: Arg5, + ) -> TxProxyDeploy { + self.wrapped_tx + .raw_deploy() + .argument(&staking_token) + .argument(&staking_amount) + .argument(&slash_amount) + .argument(&slash_quorum) + .argument(&submission_count) + .argument(&oracles) + .original_result() + } +} + +#[rustfmt::skip] +impl PriceAggregatorProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn change_amounts< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + staking_amount: Arg0, + slash_amount: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("changeAmounts") + .argument(&staking_amount) + .argument(&slash_amount) + .original_result() + } + + pub fn add_oracles< + Arg0: CodecInto>>, + >( + self, + oracles: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("addOracles") + .argument(&oracles) + .original_result() + } + + /// Also receives submission count, + /// so the owner does not have to update it manually with setSubmissionCount before this call + pub fn remove_oracles< + Arg0: CodecInto, + Arg1: CodecInto>>, + >( + self, + submission_count: Arg0, + oracles: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("removeOracles") + .argument(&submission_count) + .argument(&oracles) + .original_result() + } + + pub fn submit< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto, + Arg3: CodecInto>, + Arg4: CodecInto, + >( + self, + from: Arg0, + to: Arg1, + submission_timestamp: Arg2, + price: Arg3, + decimals: Arg4, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("submit") + .argument(&from) + .argument(&to) + .argument(&submission_timestamp) + .argument(&price) + .argument(&decimals) + .original_result() + } + + pub fn submit_batch< + Arg0: CodecInto, ManagedBuffer, u64, BigUint, u8>>>, + >( + self, + submissions: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("submitBatch") + .argument(&submissions) + .original_result() + } + + pub fn latest_round_data( + self, + ) -> TxProxyCall>> { + self.wrapped_tx + .raw_call("latestRoundData") + .original_result() + } + + pub fn latest_price_feed< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + from: Arg0, + to: Arg1, + ) -> TxProxyCall, ManagedBuffer, u64, BigUint, u8>> { + self.wrapped_tx + .raw_call("latestPriceFeed") + .argument(&from) + .argument(&to) + .original_result() + } + + pub fn latest_price_feed_optional< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + from: Arg0, + to: Arg1, + ) -> TxProxyCall, ManagedBuffer, u64, BigUint, u8>>> { + self.wrapped_tx + .raw_call("latestPriceFeedOptional") + .argument(&from) + .argument(&to) + .original_result() + } + + pub fn set_submission_count< + Arg0: CodecInto, + >( + self, + submission_count: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("setSubmissionCount") + .argument(&submission_count) + .original_result() + } + + pub fn get_oracles( + self, + ) -> TxProxyCall>> { + self.wrapped_tx + .raw_call("getOracles") + .original_result() + } + + pub fn set_pair_decimals< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto, + >( + self, + from: Arg0, + to: Arg1, + decimals: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("setPairDecimals") + .argument(&from) + .argument(&to) + .argument(&decimals) + .original_result() + } + + pub fn get_pair_decimals< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + from: Arg0, + to: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("getPairDecimals") + .argument(&from) + .argument(&to) + .original_result() + } + + pub fn submission_count( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("submission_count") + .original_result() + } + + pub fn pause_endpoint( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("pause") + .original_result() + } + + pub fn unpause_endpoint( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("unpause") + .original_result() + } + + pub fn paused_status( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("isPaused") + .original_result() + } + + pub fn stake( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("stake") + .original_result() + } + + pub fn unstake< + Arg0: CodecInto>, + >( + self, + unstake_amount: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("unstake") + .argument(&unstake_amount) + .original_result() + } + + pub fn vote_slash_member< + Arg0: CodecInto>, + >( + self, + member_to_slash: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("voteSlashMember") + .argument(&member_to_slash) + .original_result() + } + + pub fn cancel_vote_slash_member< + Arg0: CodecInto>, + >( + self, + member_to_slash: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("cancelVoteSlashMember") + .argument(&member_to_slash) + .original_result() + } + + pub fn slash_member< + Arg0: CodecInto>, + >( + self, + member_to_slash: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("slashMember") + .argument(&member_to_slash) + .original_result() + } +} + +#[derive(TopEncode, TopDecode)] +pub struct PriceFeed +where + Api: ManagedTypeApi, +{ + pub round_id: u32, + pub from: ManagedBuffer, + pub to: ManagedBuffer, + pub timestamp: u64, + pub price: BigUint, + pub decimals: u8, +} + +#[derive(TopEncode, TopDecode)] +pub struct NewRoundEvent +where + Api: ManagedTypeApi, +{ + pub price: BigUint, + pub timestamp: u64, + pub decimals: u8, + pub block: u64, + pub epoch: u64, +} diff --git a/contracts/core/price-aggregator/tests/price_aggregator_stress_blackbox.rs b/contracts/core/price-aggregator/tests/price_aggregator_stress_blackbox.rs index 44650679d3..4c01ab175f 100644 --- a/contracts/core/price-aggregator/tests/price_aggregator_stress_blackbox.rs +++ b/contracts/core/price-aggregator/tests/price_aggregator_stress_blackbox.rs @@ -1,8 +1,7 @@ use multiversx_price_aggregator_sc::{ price_aggregator_data::{OracleStatus, TokenPair}, - ContractObj, PriceAggregator, ProxyTrait as _, + ContractObj, PriceAggregator, }; -use multiversx_sc_modules::{pause::ProxyTrait, staking::ProxyTrait as _}; use multiversx_sc_scenario::imports::*; @@ -18,6 +17,8 @@ const STAKE_AMOUNT: u64 = 20; const SUBMISSION_COUNT: usize = 50; const USD_TICKER: &[u8] = b"USDC"; +mod price_aggregator_proxy; + type PriceAggregatorContract = ContractInfo>; fn world() -> ScenarioWorld { @@ -86,65 +87,73 @@ impl PriceAggregatorTestState { .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, - )) - .gas_limit("120,000,000"), - ); + self.world + .tx() + .from(AddressExpr("owner")) + .gas(120_000_000u64) + .typed(price_aggregator_proxy::PriceAggregatorProxy) + .init( + EgldOrEsdtTokenIdentifier::egld(), + STAKE_AMOUNT, + SLASH_AMOUNT, + SLASH_QUORUM, + SUBMISSION_COUNT, + oracles, + ) + .code(price_aggregator_code) + .run(); for address in self.oracles.iter() { - self.world.sc_call( - ScCallStep::new() - .from(address) - .egld_value(STAKE_AMOUNT) - .call(self.price_aggregator_contract.stake()) - .gas_limit("5,000,000"), - ); + self.world + .tx() + .from(&address.to_address()) + .to(&self.price_aggregator_contract.to_address()) + .gas(5_000_000u64) + .typed(price_aggregator_proxy::PriceAggregatorProxy) + .stake() + .egld(STAKE_AMOUNT) + .run(); } 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), - ), - ); + self.world + .tx() + .from(AddressExpr("owner")) + .to(&self.price_aggregator_contract.to_address()) + .typed(price_aggregator_proxy::PriceAggregatorProxy) + .set_pair_decimals(EGLD_TICKER, USD_TICKER, DECIMALS) + .run(); } fn unpause_endpoint(&mut self) { - self.world.sc_call( - ScCallStep::new() - .from(OWNER_ADDRESS_EXPR) - .call(self.price_aggregator_contract.unpause_endpoint()) - .gas_limit("5,000,000"), - ); + self.world + .tx() + .from(AddressExpr("owner")) + .to(&self.price_aggregator_contract.to_address()) + .gas(5_000_000u64) + .typed(price_aggregator_proxy::PriceAggregatorProxy) + .unpause_endpoint() + .run(); } 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, - )) - .gas_limit("7,000,000"), - ); + self.world + .tx() + .from(&from.to_address()) + .to(&self.price_aggregator_contract.to_address()) + .gas(7_000_000u64) + .typed(price_aggregator_proxy::PriceAggregatorProxy) + .submit( + EGLD_TICKER, + USD_TICKER, + submission_timestamp, + price, + DECIMALS, + ) + .run(); } } From bd2bf9cc09f483caa46aca84a8087b0a9ef0e62a Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 11 Apr 2024 11:16:34 +0300 Subject: [PATCH 320/461] TxToStep refactor --- .../src/scenario/tx_to_step/tx_to_step_call.rs | 8 ++------ .../src/scenario/tx_to_step/tx_to_step_deploy.rs | 8 ++------ .../src/scenario/tx_to_step/tx_to_step_query.rs | 8 ++------ .../src/scenario/tx_to_step/tx_to_step_trait.rs | 12 ++++-------- .../src/scenario/tx_to_step/tx_to_step_transfer.rs | 8 ++------ framework/snippets/src/multi/homogenous_tx_buffer.rs | 2 +- 6 files changed, 13 insertions(+), 33 deletions(-) diff --git a/framework/scenario/src/scenario/tx_to_step/tx_to_step_call.rs b/framework/scenario/src/scenario/tx_to_step/tx_to_step_call.rs index dc4850b845..b155ac66df 100644 --- a/framework/scenario/src/scenario/tx_to_step/tx_to_step_call.rs +++ b/framework/scenario/src/scenario/tx_to_step/tx_to_step_call.rs @@ -6,7 +6,7 @@ use crate::scenario_model::{ScCallStep, TxExpect, TxResponse}; use super::{address_annotated, gas_annotated, StepWrapper, TxToStep}; -impl TxToStep +impl TxToStep for Tx, RH> where Env: TxEnv, @@ -16,13 +16,9 @@ where Gas: TxGas, RH: RHListExec, { - type Env = Env; - type Step = ScCallStep; - type RH = RH; - - fn tx_to_step(self) -> StepWrapper { + fn tx_to_step(self) -> StepWrapper { let mut step = tx_to_sc_call_step( &self.env, self.from, diff --git a/framework/scenario/src/scenario/tx_to_step/tx_to_step_deploy.rs b/framework/scenario/src/scenario/tx_to_step/tx_to_step_deploy.rs index 4378bbb682..3221de4b45 100644 --- a/framework/scenario/src/scenario/tx_to_step/tx_to_step_deploy.rs +++ b/framework/scenario/src/scenario/tx_to_step/tx_to_step_deploy.rs @@ -6,7 +6,7 @@ use crate::scenario_model::{ScDeployStep, TxExpect, TxResponse}; use super::{address_annotated, code_annotated, gas_annotated, StepWrapper, TxToStep}; -impl TxToStep +impl TxToStep for Tx>, RH> where Env: TxEnv, @@ -16,13 +16,9 @@ where CodeValue: TxCodeValue, RH: RHListExec, { - type Env = Env; - type Step = ScDeployStep; - type RH = RH; - - fn tx_to_step(self) -> StepWrapper { + fn tx_to_step(self) -> StepWrapper { let mut step = tx_to_sc_deploy_step(&self.env, self.from, self.payment, self.gas, self.data); step.expect = Some(self.result_handler.list_tx_expect()); diff --git a/framework/scenario/src/scenario/tx_to_step/tx_to_step_query.rs b/framework/scenario/src/scenario/tx_to_step/tx_to_step_query.rs index 427a8e62ce..9cfbb5d39e 100644 --- a/framework/scenario/src/scenario/tx_to_step/tx_to_step_query.rs +++ b/framework/scenario/src/scenario/tx_to_step/tx_to_step_query.rs @@ -4,19 +4,15 @@ use crate::scenario_model::{ScQueryStep, TxExpect, TxResponse}; use super::{address_annotated, StepWrapper, TxToQueryStep}; -impl TxToQueryStep for Tx, RH> +impl TxToQueryStep for Tx, RH> where Env: TxEnv, To: TxToSpecified, RH: RHListExec, { - type Env = Env; - type Step = ScQueryStep; - type RH = RH; - - fn tx_to_query_step(self) -> StepWrapper { + fn tx_to_query_step(self) -> StepWrapper { let mut step = tx_to_sc_query_step(&self.env, self.to, self.data); step.expect = Some(self.result_handler.list_tx_expect()); diff --git a/framework/scenario/src/scenario/tx_to_step/tx_to_step_trait.rs b/framework/scenario/src/scenario/tx_to_step/tx_to_step_trait.rs index 708e7c8eea..60615e6bb5 100644 --- a/framework/scenario/src/scenario/tx_to_step/tx_to_step_trait.rs +++ b/framework/scenario/src/scenario/tx_to_step/tx_to_step_trait.rs @@ -1,17 +1,13 @@ use super::StepWrapper; -pub trait TxToStep { - type Env; +pub trait TxToStep { type Step; - type RH; - fn tx_to_step(self) -> StepWrapper; + fn tx_to_step(self) -> StepWrapper; } -pub trait TxToQueryStep { - type Env; +pub trait TxToQueryStep { type Step; - type RH; - fn tx_to_query_step(self) -> StepWrapper; + fn tx_to_query_step(self) -> StepWrapper; } diff --git a/framework/scenario/src/scenario/tx_to_step/tx_to_step_transfer.rs b/framework/scenario/src/scenario/tx_to_step/tx_to_step_transfer.rs index c2f31e6ff4..637d840e4e 100644 --- a/framework/scenario/src/scenario/tx_to_step/tx_to_step_transfer.rs +++ b/framework/scenario/src/scenario/tx_to_step/tx_to_step_transfer.rs @@ -4,7 +4,7 @@ use crate::scenario_model::TransferStep; use super::{address_annotated, gas_annotated, StepWrapper, TxToStep}; -impl TxToStep for Tx +impl TxToStep for Tx where Env: TxEnv, From: TxFromSpecified, @@ -12,13 +12,9 @@ where Payment: TxPayment, Gas: TxGas, { - type Env = Env; - type Step = TransferStep; - type RH = (); - - fn tx_to_step(self) -> StepWrapper { + fn tx_to_step(self) -> StepWrapper { let step = tx_to_transfer_step(&self.env, self.from, self.to, self.payment, self.gas); StepWrapper { diff --git a/framework/snippets/src/multi/homogenous_tx_buffer.rs b/framework/snippets/src/multi/homogenous_tx_buffer.rs index 7d40474d59..da177d1658 100644 --- a/framework/snippets/src/multi/homogenous_tx_buffer.rs +++ b/framework/snippets/src/multi/homogenous_tx_buffer.rs @@ -38,7 +38,7 @@ where { pub fn push_tx(&mut self, f: F) -> &mut Self where - Tx: TxToStep, + Tx: TxToStep, F: FnOnce(TxBaseWithEnv) -> Tx, { let env = self.env.world.new_env_data(); From c04bf6a7d6ebb969cb909c457e6b5d7ffdb6ec4d Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 11 Apr 2024 16:44:05 +0300 Subject: [PATCH 321/461] refactor - removed parameters retrieve_account_as_scenario_set_state --- .../adder/interact/src/basic_interact.rs | 14 +------ contracts/examples/adder/wasm/Cargo.lock | 6 +-- .../interact/src/multisig_interact.rs | 14 ++----- .../interact/src/multisig_interact_wegld.rs | 16 +++----- .../interact/src/bf_interact.rs | 12 +----- .../src/facade/expr/bech32_address.rs | 10 +++++ .../scenario/src/standalone/account_tool.rs | 40 ++++++++----------- .../scenario/src/standalone/scenario_cli.rs | 11 ++++- framework/snippets/src/interactor.rs | 11 +++++ 9 files changed, 60 insertions(+), 74 deletions(-) diff --git a/contracts/examples/adder/interact/src/basic_interact.rs b/contracts/examples/adder/interact/src/basic_interact.rs index 8a8a6c22fd..a0fa99f17a 100644 --- a/contracts/examples/adder/interact/src/basic_interact.rs +++ b/contracts/examples/adder/interact/src/basic_interact.rs @@ -68,18 +68,8 @@ impl AdderInteract { } async fn set_state(&mut self) { - println!("wallet address: {}", &self.wallet_address); - let scenario_raw = retrieve_account_as_scenario_set_state( - Config::load_config().gateway().to_string(), - self.wallet_address.to_bech32_string(), - true, - ) - .await; - - let scenario = Scenario::interpret_from(scenario_raw, &InterpreterContext::default()); - - self.interactor.pre_runners.run_scenario(&scenario); - self.interactor.post_runners.run_scenario(&scenario); + println!("wallet address: {}", self.wallet_address); + self.interactor.retrieve_account(&self.wallet_address).await; } async fn deploy(&mut self) { diff --git a/contracts/examples/adder/wasm/Cargo.lock b/contracts/examples/adder/wasm/Cargo.lock index c7b8a8f917..1aea528c2d 100755 --- a/contracts/examples/adder/wasm/Cargo.lock +++ b/contracts/examples/adder/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.2" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.2" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.2" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/multisig/interact/src/multisig_interact.rs b/contracts/examples/multisig/interact/src/multisig_interact.rs index 48cfb05a6d..b8f1ec2be4 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact.rs @@ -119,17 +119,9 @@ impl MultisigInteract { "board member address: {}", bech32::encode(board_member_address) ); - let scenario_raw = retrieve_account_as_scenario_set_state( - Config::load_config().gateway().to_string(), - bech32::encode(board_member_address), - true, - ) - .await; - - let scenario = Scenario::interpret_from(scenario_raw, &InterpreterContext::default()); - - self.interactor.pre_runners.run_scenario(&scenario); - self.interactor.post_runners.run_scenario(&scenario); + self.interactor + .retrieve_account(&Bech32Address::from(board_member_address)) + .await; } self.wegld_swap_set_state().await; diff --git a/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs b/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs index c9156e991d..a59e686e2a 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact_wegld.rs @@ -35,17 +35,11 @@ impl MultisigInteract { } pub async fn wegld_swap_set_state(&mut self) { - let scenario_raw = retrieve_account_as_scenario_set_state( - Config::load_config().gateway().to_string(), - WEGLD_SWAP_SC_BECH32.to_string(), - true, - ) - .await; - - let scenario = Scenario::interpret_from(scenario_raw, &InterpreterContext::default()); - - self.interactor.pre_runners.run_scenario(&scenario); - self.interactor.post_runners.run_scenario(&scenario); + self.interactor + .retrieve_account(&Bech32Address::from_bech32_string( + WEGLD_SWAP_SC_BECH32.to_owned(), + )) + .await; } async fn propose_wrap_egld(&mut self) -> usize { diff --git a/contracts/feature-tests/basic-features/interact/src/bf_interact.rs b/contracts/feature-tests/basic-features/interact/src/bf_interact.rs index b93f0baac3..8a36a12749 100644 --- a/contracts/feature-tests/basic-features/interact/src/bf_interact.rs +++ b/contracts/feature-tests/basic-features/interact/src/bf_interact.rs @@ -73,17 +73,7 @@ impl BasicFeaturesInteract { async fn set_state(&mut self) { println!("wallet address: {}", bech32::encode(&self.wallet_address)); - let scenario_raw = retrieve_account_as_scenario_set_state( - Config::load_config().gateway().to_string(), - bech32::encode(&self.wallet_address), - true, - ) - .await; - - let scenario = Scenario::interpret_from(scenario_raw, &InterpreterContext::default()); - - self.interactor.pre_runners.run_scenario(&scenario); - self.interactor.post_runners.run_scenario(&scenario); + self.interactor.retrieve_account(&Bech32Address::from(&self.wallet_address)).await; } async fn deploy(&mut self) { diff --git a/framework/scenario/src/facade/expr/bech32_address.rs b/framework/scenario/src/facade/expr/bech32_address.rs index a327e44a6b..9b7291ad16 100644 --- a/framework/scenario/src/facade/expr/bech32_address.rs +++ b/framework/scenario/src/facade/expr/bech32_address.rs @@ -32,6 +32,16 @@ impl From
for Bech32Address { } } +impl From<&Address> for Bech32Address { + fn from(value: &Address) -> Self { + let bech32 = bech32::encode(value); + Bech32Address { + address: value.clone(), + bech32, + } + } +} + impl Bech32Address { pub fn from_bech32_string(bech32: String) -> Self { let address = bech32::decode(&bech32); diff --git a/framework/scenario/src/standalone/account_tool.rs b/framework/scenario/src/standalone/account_tool.rs index c1f4c5f605..90fdb61857 100644 --- a/framework/scenario/src/standalone/account_tool.rs +++ b/framework/scenario/src/standalone/account_tool.rs @@ -1,54 +1,46 @@ -use super::scenario_cli::AccountArgs; +use crate::imports::Bech32Address; + use multiversx_chain_scenario_format::serde_raw::{ AccountRaw, EsdtFullRaw, EsdtInstanceRaw, EsdtRaw, ScenarioRaw, StepRaw, ValueSubTree, }; +use multiversx_chain_vm::display_util::key_hex; use multiversx_sdk::{ blockchain::CommunicationProxy, data::{address::Address, esdt::EsdtBalance}, }; use std::collections::{BTreeMap, HashMap}; -pub async fn print_account_as_scenario_set_state(api: String, args: &AccountArgs) { - let scenario_raw = - retrieve_account_as_scenario_set_state(api, args.address.clone(), false).await; +pub async fn print_account_as_scenario_set_state( + api: &CommunicationProxy, + address: &Bech32Address, +) { + let scenario_raw = retrieve_account_as_scenario_set_state(api, address).await; println!("{}", scenario_raw.to_json_string()); } pub async fn retrieve_account_as_scenario_set_state( - api: String, - addr: String, - hex_encoded: bool, + api: &CommunicationProxy, + addr: &Bech32Address, ) -> ScenarioRaw { - let address = Address::from_bech32_string(&addr).unwrap(); - let blockchain = CommunicationProxy::new(api); - let account = blockchain.get_account(&address).await.unwrap(); + let address = Address::from_bech32_string(addr.to_bech32_str()).unwrap(); + let account = api.get_account(&address).await.unwrap(); - let account_esdt = blockchain + let account_esdt = api .get_account_esdt_tokens(&address) .await .unwrap_or_else(|err| panic!("failed to retrieve ESDT tokens for address {addr}: {err}")); - let account_esdt_roles = blockchain + let account_esdt_roles = api .get_account_esdt_roles(&address) .await .unwrap_or_else(|err| panic!("failed to retrieve ESDT roles for address {addr}: {err}")); - let account_storage = blockchain + let account_storage = api .get_account_storage_keys(&address) .await .unwrap_or_else(|err| panic!("failed to retrieve storage for address {addr}: {err}")); - let addr_pretty = if !hex_encoded { - if account.code.is_empty() { - format!("address:{addr}") - } else { - format!("sc:{addr}") - } - } else { - format!("0x{}", hex::encode(address.to_bytes())) - }; - let mut accounts = BTreeMap::new(); accounts.insert( - addr_pretty, + key_hex(&address.to_bytes()), AccountRaw { nonce: Some(ValueSubTree::Str(account.nonce.to_string())), balance: Some(ValueSubTree::Str(account.balance.to_string())), diff --git a/framework/scenario/src/standalone/scenario_cli.rs b/framework/scenario/src/standalone/scenario_cli.rs index c7049728f4..624b316ef0 100644 --- a/framework/scenario/src/standalone/scenario_cli.rs +++ b/framework/scenario/src/standalone/scenario_cli.rs @@ -1,4 +1,7 @@ use clap::{Args, Parser, Subcommand}; +use multiversx_sdk::blockchain::CommunicationProxy; + +use crate::imports::Bech32Address; use super::account_tool; @@ -34,10 +37,14 @@ pub struct AccountArgs { /// Entry point in the program when calling it as a standalone tool. pub async fn cli_main() { let cli_args = ScenarioCliArgs::parse(); - let api = cli_args.api.expect("API needs tp be specified"); + let api = CommunicationProxy::new(cli_args.api.expect("API needs tp be specified")); match &cli_args.command { Some(ScenarioCliAction::Account(args)) => { - account_tool::print_account_as_scenario_set_state(api, args).await; + account_tool::print_account_as_scenario_set_state( + &api, + &Bech32Address::from_bech32_string(args.address.to_string()), + ) + .await; }, None => {}, } diff --git a/framework/snippets/src/interactor.rs b/framework/snippets/src/interactor.rs index 346d117f80..d1f49d2653 100644 --- a/framework/snippets/src/interactor.rs +++ b/framework/snippets/src/interactor.rs @@ -1,4 +1,5 @@ use multiversx_sc_scenario::{ + imports::{retrieve_account_as_scenario_set_state, Bech32Address, InterpretableFrom, InterpreterContext, Scenario, ScenarioRunner}, mandos_system::{run_list::ScenarioRunnerList, run_trace::ScenarioTraceFile}, multiversx_sc::types::Address, scenario_model::AddressValue, @@ -67,6 +68,16 @@ impl Interactor { self.post_runners.push(ScenarioTraceFile::new(path)); self } + + pub async fn retrieve_account(&mut self, wallet_address: &Bech32Address) { + let scenario_raw = + retrieve_account_as_scenario_set_state(&self.proxy, wallet_address).await; + + let scenario = Scenario::interpret_from(scenario_raw, &InterpreterContext::default()); + + self.pre_runners.run_scenario(&scenario); + self.post_runners.run_scenario(&scenario); + } } pub(crate) fn mandos_to_erdrs_address(mandos_address: &AddressValue) -> ErdrsAddress { From 13e283f67684aea27ec98be067854eae947094c0 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Thu, 11 Apr 2024 17:53:09 +0200 Subject: [PATCH 322/461] scenario test contract added in feature tests --- Cargo.lock | 16 ++ Cargo.toml | 3 + .../feature-tests/scenario-tester/.gitignore | 10 + .../feature-tests/scenario-tester/Cargo.toml | 17 ++ .../feature-tests/scenario-tester/README.md | 3 + .../scenario-tester/interact/.gitignore | 8 + .../scenario-tester/interact/Cargo.toml | 22 +++ .../scenario-tester/interact/config.toml | 1 + .../interact/src/basic_interact.rs | 172 ++++++++++++++++++ .../interact/src/basic_interact_cli.rs | 39 ++++ .../interact/src/basic_interact_config.rs | 26 +++ .../interact/src/basic_interact_state.rs | 50 +++++ .../interaction/devnet.snippets.sh | 25 +++ .../interaction/testnet.snippets.sh | 26 +++ .../scenario-tester/meta/Cargo.toml | 13 ++ .../scenario-tester/meta/src/main.rs | 3 + .../scenario-tester/multiversx.json | 3 + .../scenario-tester/mxsc-template.toml | 24 +++ .../scenario-tester/sc-config.toml | 4 + .../scenario-tester/scenarios/adder.scen.json | 99 ++++++++++ .../scenarios/interactor_trace.scen.json | 76 ++++++++ .../feature-tests/scenario-tester/src/lib.rs | 30 +++ .../src/scenario_tester_proxy.rs | 110 +++++++++++ .../tests/adder_blackbox_chained_test.rs | 64 +++++++ .../tests/adder_blackbox_legacy_proxy_test.rs | 77 ++++++++ .../tests/adder_blackbox_raw_steps_test.rs | 53 ++++++ .../tests/adder_blackbox_test.rs | 72 ++++++++ .../tests/adder_blackbox_upgrade_test.rs | 50 +++++ .../tests/adder_scenario_go_test.rs | 15 ++ .../tests/adder_scenario_rs_test.rs | 19 ++ .../scenario-tester/tests/adder_unit_test.rs | 17 ++ .../tests/adder_whitebox_test.rs | 50 +++++ .../scenario-tester/wasm/Cargo.lock | 170 +++++++++++++++++ .../scenario-tester/wasm/Cargo.toml | 32 ++++ .../scenario-tester/wasm/src/lib.rs | 30 +++ 35 files changed, 1429 insertions(+) create mode 100644 contracts/feature-tests/scenario-tester/.gitignore create mode 100644 contracts/feature-tests/scenario-tester/Cargo.toml create mode 100644 contracts/feature-tests/scenario-tester/README.md create mode 100644 contracts/feature-tests/scenario-tester/interact/.gitignore create mode 100644 contracts/feature-tests/scenario-tester/interact/Cargo.toml create mode 100644 contracts/feature-tests/scenario-tester/interact/config.toml create mode 100644 contracts/feature-tests/scenario-tester/interact/src/basic_interact.rs create mode 100644 contracts/feature-tests/scenario-tester/interact/src/basic_interact_cli.rs create mode 100644 contracts/feature-tests/scenario-tester/interact/src/basic_interact_config.rs create mode 100644 contracts/feature-tests/scenario-tester/interact/src/basic_interact_state.rs create mode 100644 contracts/feature-tests/scenario-tester/interaction/devnet.snippets.sh create mode 100644 contracts/feature-tests/scenario-tester/interaction/testnet.snippets.sh create mode 100644 contracts/feature-tests/scenario-tester/meta/Cargo.toml create mode 100644 contracts/feature-tests/scenario-tester/meta/src/main.rs create mode 100644 contracts/feature-tests/scenario-tester/multiversx.json create mode 100644 contracts/feature-tests/scenario-tester/mxsc-template.toml create mode 100644 contracts/feature-tests/scenario-tester/sc-config.toml create mode 100644 contracts/feature-tests/scenario-tester/scenarios/adder.scen.json create mode 100644 contracts/feature-tests/scenario-tester/scenarios/interactor_trace.scen.json create mode 100644 contracts/feature-tests/scenario-tester/src/lib.rs create mode 100644 contracts/feature-tests/scenario-tester/src/scenario_tester_proxy.rs create mode 100644 contracts/feature-tests/scenario-tester/tests/adder_blackbox_chained_test.rs create mode 100644 contracts/feature-tests/scenario-tester/tests/adder_blackbox_legacy_proxy_test.rs create mode 100644 contracts/feature-tests/scenario-tester/tests/adder_blackbox_raw_steps_test.rs create mode 100644 contracts/feature-tests/scenario-tester/tests/adder_blackbox_test.rs create mode 100644 contracts/feature-tests/scenario-tester/tests/adder_blackbox_upgrade_test.rs create mode 100644 contracts/feature-tests/scenario-tester/tests/adder_scenario_go_test.rs create mode 100644 contracts/feature-tests/scenario-tester/tests/adder_scenario_rs_test.rs create mode 100644 contracts/feature-tests/scenario-tester/tests/adder_unit_test.rs create mode 100644 contracts/feature-tests/scenario-tester/tests/adder_whitebox_test.rs create mode 100755 contracts/feature-tests/scenario-tester/wasm/Cargo.lock create mode 100644 contracts/feature-tests/scenario-tester/wasm/Cargo.toml create mode 100644 contracts/feature-tests/scenario-tester/wasm/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index a63206b567..9ad27741d0 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -2755,6 +2755,22 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "scenario-tester-meta" +version = "0.0.0" +dependencies = [ + "multiversx-sc-meta", + "scenario_tester", +] + +[[package]] +name = "scenario_tester" +version = "0.0.0" +dependencies = [ + "multiversx-sc", + "multiversx-sc-scenario", +] + [[package]] name = "schannel" version = "0.1.23" diff --git a/Cargo.toml b/Cargo.toml index d97f1292e0..459624af85 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -178,4 +178,7 @@ members = [ "contracts/feature-tests/exchange-features", "contracts/feature-tests/exchange-features/meta", + "contracts/feature-tests/scenario-tester", + "contracts/feature-tests/scenario-tester/meta" + ] diff --git a/contracts/feature-tests/scenario-tester/.gitignore b/contracts/feature-tests/scenario-tester/.gitignore new file mode 100644 index 0000000000..dd49a95243 --- /dev/null +++ b/contracts/feature-tests/scenario-tester/.gitignore @@ -0,0 +1,10 @@ +# Generated by Cargo +# will have compiled files and executables +/target/ +*/target/ + +# The mxpy output +/output*/ + +# Mandos test trace +trace*.scen.json diff --git a/contracts/feature-tests/scenario-tester/Cargo.toml b/contracts/feature-tests/scenario-tester/Cargo.toml new file mode 100644 index 0000000000..a8faf14f1c --- /dev/null +++ b/contracts/feature-tests/scenario-tester/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "scenario_tester" +version = "0.0.0" +authors = ["Andrei Marinica "] +edition = "2021" +publish = false + +[lib] +path = "src/lib.rs" + +[dependencies.multiversx-sc] +version = "0.49.0-alpha.2" +path = "../../../framework/base" + +[dev-dependencies.multiversx-sc-scenario] +version = "0.49.0-alpha.2" +path = "../../../framework/scenario" diff --git a/contracts/feature-tests/scenario-tester/README.md b/contracts/feature-tests/scenario-tester/README.md new file mode 100644 index 0000000000..4538caeca9 --- /dev/null +++ b/contracts/feature-tests/scenario-tester/README.md @@ -0,0 +1,3 @@ +# Adder + +`Adder` is a simple Smart Contract. diff --git a/contracts/feature-tests/scenario-tester/interact/.gitignore b/contracts/feature-tests/scenario-tester/interact/.gitignore new file mode 100644 index 0000000000..ea1b920080 --- /dev/null +++ b/contracts/feature-tests/scenario-tester/interact/.gitignore @@ -0,0 +1,8 @@ +# Pem files are used for interactions, but shouldn't be committed +*.pem + +# Temporary storage of deployed contract address, so we can preserve the context between executions. +state.toml + +# Trace file of interactor tooling +interactor_trace.scen.json diff --git a/contracts/feature-tests/scenario-tester/interact/Cargo.toml b/contracts/feature-tests/scenario-tester/interact/Cargo.toml new file mode 100644 index 0000000000..dc6a5533ea --- /dev/null +++ b/contracts/feature-tests/scenario-tester/interact/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "basic-interact" +version = "0.0.0" +authors = ["Ovidiu Stinga "] +edition = "2021" +publish = false + +[[bin]] +name = "basic-interact" +path = "src/basic_interact.rs" + +[dependencies] +clap = { version = "4.4.7", features = ["derive"] } +serde = { version = "1.0", features = ["derive"] } +toml = "0.8.6" + +[dependencies.adder] +path = ".." + +[dependencies.multiversx-sc-snippets] +version = "0.49.0-alpha.2" +path = "../../../../framework/snippets" diff --git a/contracts/feature-tests/scenario-tester/interact/config.toml b/contracts/feature-tests/scenario-tester/interact/config.toml new file mode 100644 index 0000000000..61ac8dbf87 --- /dev/null +++ b/contracts/feature-tests/scenario-tester/interact/config.toml @@ -0,0 +1 @@ +gateway = 'https://devnet-gateway.multiversx.com' diff --git a/contracts/feature-tests/scenario-tester/interact/src/basic_interact.rs b/contracts/feature-tests/scenario-tester/interact/src/basic_interact.rs new file mode 100644 index 0000000000..8a8a6c22fd --- /dev/null +++ b/contracts/feature-tests/scenario-tester/interact/src/basic_interact.rs @@ -0,0 +1,172 @@ +mod basic_interact_cli; +mod basic_interact_config; +mod basic_interact_state; + +use adder::adder_proxy; +use basic_interact_config::Config; +use basic_interact_state::State; +use clap::Parser; + +use multiversx_sc_snippets::imports::*; + +const INTERACTOR_SCENARIO_TRACE_PATH: &str = "interactor_trace.scen.json"; + +#[tokio::main] +async fn main() { + env_logger::init(); + + let mut basic_interact = AdderInteract::init().await; + + let cli = basic_interact_cli::InteractCli::parse(); + match &cli.command { + Some(basic_interact_cli::InteractCliCommand::Add(args)) => { + basic_interact.add(args.value).await; + }, + Some(basic_interact_cli::InteractCliCommand::Deploy) => { + basic_interact.deploy().await; + }, + Some(basic_interact_cli::InteractCliCommand::Feed) => { + basic_interact.feed_contract_egld().await; + }, + Some(basic_interact_cli::InteractCliCommand::MultiDeploy(args)) => { + basic_interact.multi_deploy(&args.count).await; + }, + Some(basic_interact_cli::InteractCliCommand::Sum) => { + basic_interact.print_sum().await; + }, + None => {}, + } +} + +#[allow(unused)] +struct AdderInteract { + interactor: Interactor, + wallet_address: Bech32Address, + adder_code: BytesValue, + state: State, +} + +impl AdderInteract { + async fn init() -> Self { + let config = Config::load_config(); + let mut interactor = Interactor::new(config.gateway()) + .await + .with_tracer(INTERACTOR_SCENARIO_TRACE_PATH) + .await; + let wallet_address = interactor.register_wallet(test_wallets::mike()); + let adder_code = BytesValue::interpret_from( + "mxsc:../output/adder.mxsc.json", + &InterpreterContext::default(), + ); + + Self { + interactor, + wallet_address: wallet_address.into(), + adder_code, + state: State::load_state(), + } + } + + async fn set_state(&mut self) { + println!("wallet address: {}", &self.wallet_address); + let scenario_raw = retrieve_account_as_scenario_set_state( + Config::load_config().gateway().to_string(), + self.wallet_address.to_bech32_string(), + true, + ) + .await; + + let scenario = Scenario::interpret_from(scenario_raw, &InterpreterContext::default()); + + self.interactor.pre_runners.run_scenario(&scenario); + self.interactor.post_runners.run_scenario(&scenario); + } + + async fn deploy(&mut self) { + self.set_state().await; + + let new_address = self + .interactor + .tx() + .from(&self.wallet_address) + .typed(adder_proxy::AdderProxy) + .init(0u32) + .code(&self.adder_code) + .returns(ReturnsNewBech32Address) + .prepare_async() + .run() + .await; + + println!("new address: {new_address}"); + self.state.set_adder_address(new_address); + } + + async fn multi_deploy(&mut self, count: &u8) { + if *count == 0 { + println!("count must be greater than 0"); + return; + } + + self.set_state().await; + println!("deploying {count} contracts..."); + + let mut buffer = self.interactor.homogenous_call_buffer(); + for _ in 0..*count { + buffer.push_tx(|tx| { + tx.from(&self.wallet_address) + .typed(adder_proxy::AdderProxy) + .init(0u32) + .code(&self.adder_code) + .gas(NumExpr("70,000,000")) + .returns(ReturnsNewBech32Address) + }); + } + + let results = buffer.run().await; + for new_address in results { + println!("new address: {new_address}"); + + self.state.set_adder_address(new_address); + } + } + + async fn feed_contract_egld(&mut self) { + self.interactor + .tx() + .from(&self.wallet_address) + .to(self.state.current_adder_address()) + .egld(NumExpr("0,050000000000000000")) + .prepare_async() + .run() + .await; + } + + async fn add(&mut self, value: u64) { + self.interactor + .tx() + .from(&self.wallet_address) + .to(self.state.current_adder_address()) + .typed(adder_proxy::AdderProxy) + .add(value) + .prepare_async() + .run() + .await; + + println!("successfully performed add"); + } + + async fn print_sum(&mut self) { + let sum = self + .interactor + .query() + .to(self.state.current_adder_address()) + .typed(adder_proxy::AdderProxy) + .sum() + .returns(ReturnsResultConv::::new()) + .prepare_async() + .run() + .await; + + println!("sum: {sum}"); + } +} diff --git a/contracts/feature-tests/scenario-tester/interact/src/basic_interact_cli.rs b/contracts/feature-tests/scenario-tester/interact/src/basic_interact_cli.rs new file mode 100644 index 0000000000..8818c1bb60 --- /dev/null +++ b/contracts/feature-tests/scenario-tester/interact/src/basic_interact_cli.rs @@ -0,0 +1,39 @@ +use clap::{Args, Parser, Subcommand}; + +/// Adder Interact CLI +#[derive(Default, PartialEq, Eq, Debug, Parser)] +#[command(version, about)] +#[command(propagate_version = true)] +pub struct InteractCli { + #[command(subcommand)] + pub command: Option, +} + +/// Adder Interact CLI Commands +#[derive(Clone, PartialEq, Eq, Debug, Subcommand)] +pub enum InteractCliCommand { + #[command(name = "add", about = "Add value")] + Add(AddArgs), + #[command(name = "deploy", about = "Deploy contract")] + Deploy, + #[command(name = "feed", about = "Feed contract EGLD")] + Feed, + #[command(name = "multi-deploy", about = "Multiple deploy contracts")] + MultiDeploy(MultiDeployArgs), + #[command(name = "sum", about = "Print sum")] + Sum, +} + +#[derive(Default, Clone, PartialEq, Eq, Debug, Args)] +pub struct AddArgs { + /// The value to add + #[arg(short = 'v', long = "value", verbatim_doc_comment)] + pub value: u64, +} + +#[derive(Default, Clone, PartialEq, Eq, Debug, Args)] +pub struct MultiDeployArgs { + /// The number of contracts to deploy + #[arg(short = 'c', long = "count", verbatim_doc_comment)] + pub count: u8, +} diff --git a/contracts/feature-tests/scenario-tester/interact/src/basic_interact_config.rs b/contracts/feature-tests/scenario-tester/interact/src/basic_interact_config.rs new file mode 100644 index 0000000000..e17d0cbe65 --- /dev/null +++ b/contracts/feature-tests/scenario-tester/interact/src/basic_interact_config.rs @@ -0,0 +1,26 @@ +use serde::Deserialize; +use std::io::Read; + +/// Config file +const CONFIG_FILE: &str = "config.toml"; + +/// Adder Interact configuration +#[derive(Debug, Deserialize)] +pub struct Config { + gateway: String, +} + +impl Config { + // Deserializes config from file + pub fn load_config() -> Self { + let mut file = std::fs::File::open(CONFIG_FILE).unwrap(); + let mut content = String::new(); + file.read_to_string(&mut content).unwrap(); + toml::from_str(&content).unwrap() + } + + // Returns the gateway + pub fn gateway(&self) -> &str { + &self.gateway + } +} diff --git a/contracts/feature-tests/scenario-tester/interact/src/basic_interact_state.rs b/contracts/feature-tests/scenario-tester/interact/src/basic_interact_state.rs new file mode 100644 index 0000000000..41453e36fd --- /dev/null +++ b/contracts/feature-tests/scenario-tester/interact/src/basic_interact_state.rs @@ -0,0 +1,50 @@ +use multiversx_sc_snippets::imports::*; +use serde::{Deserialize, Serialize}; +use std::{ + io::{Read, Write}, + path::Path, +}; + +/// State file +const STATE_FILE: &str = "state.toml"; + +/// Multisig Interact state +#[derive(Debug, Default, Serialize, Deserialize)] +pub struct State { + adder_address: Option, +} + +impl State { + // Deserializes state from file + pub fn load_state() -> Self { + if Path::new(STATE_FILE).exists() { + let mut file = std::fs::File::open(STATE_FILE).unwrap(); + let mut content = String::new(); + file.read_to_string(&mut content).unwrap(); + toml::from_str(&content).unwrap() + } else { + Self::default() + } + } + + /// Sets the adder address + pub fn set_adder_address(&mut self, address: Bech32Address) { + self.adder_address = Some(address); + } + + /// Returns the adder contract + pub fn current_adder_address(&self) -> &Bech32Address { + self.adder_address + .as_ref() + .expect("no known adder contract, deploy first") + } +} + +impl Drop for State { + // Serializes state to file + fn drop(&mut self) { + let mut file = std::fs::File::create(STATE_FILE).unwrap(); + file.write_all(toml::to_string(self).unwrap().as_bytes()) + .unwrap(); + } +} diff --git a/contracts/feature-tests/scenario-tester/interaction/devnet.snippets.sh b/contracts/feature-tests/scenario-tester/interaction/devnet.snippets.sh new file mode 100644 index 0000000000..1966381cde --- /dev/null +++ b/contracts/feature-tests/scenario-tester/interaction/devnet.snippets.sh @@ -0,0 +1,25 @@ +ALICE="${USERS}/alice.pem" +ADDRESS=$(mxpy data load --key=address-devnet) +DEPLOY_TRANSACTION=$(mxpy data load --key=deployTransaction-devnet) + +deploy() { + mxpy --verbose contract deploy --project=${PROJECT} --recall-nonce --pem=${ALICE} --gas-limit=50000000 --arguments 0 --send --outfile="deploy-devnet.interaction.json" || return + + TRANSACTION=$(mxpy data parse --file="deploy-devnet.interaction.json" --expression="data['emittedTransactionHash']") + ADDRESS=$(mxpy data parse --file="deploy-devnet.interaction.json" --expression="data['contractAddress']") + + mxpy data store --key=address-devnet --value=${ADDRESS} + mxpy data store --key=deployTransaction-devnet --value=${TRANSACTION} + + echo "" + echo "Smart contract address: ${ADDRESS}" +} + +add() { + read -p "Enter number: " NUMBER + mxpy --verbose contract call ${ADDRESS} --recall-nonce --pem=${ALICE} --gas-limit=50000000 --function="add" --arguments ${NUMBER} --send +} + +getSum() { + mxpy --verbose contract query ${ADDRESS} --function="getSum" +} diff --git a/contracts/feature-tests/scenario-tester/interaction/testnet.snippets.sh b/contracts/feature-tests/scenario-tester/interaction/testnet.snippets.sh new file mode 100644 index 0000000000..06bb13e3ba --- /dev/null +++ b/contracts/feature-tests/scenario-tester/interaction/testnet.snippets.sh @@ -0,0 +1,26 @@ +ALICE="${USERS}/alice.pem" +ADDRESS=$(mxpy data load --key=address-testnet) +DEPLOY_TRANSACTION=$(mxpy data load --key=deployTransaction-testnet) +PROXY=https://testnet-api.multiversx.com + +deploy() { + mxpy --verbose contract deploy --project=${PROJECT} --recall-nonce --pem=${ALICE} --gas-limit=50000000 --arguments 0 --send --outfile="deploy-testnet.interaction.json" --proxy=${PROXY} --chain=T || return + + TRANSACTION=$(mxpy data parse --file="deploy-testnet.interaction.json" --expression="data['emittedTransactionHash']") + ADDRESS=$(mxpy data parse --file="deploy-testnet.interaction.json" --expression="data['contractAddress']") + + mxpy data store --key=address-testnet --value=${ADDRESS} + mxpy data store --key=deployTransaction-testnet --value=${TRANSACTION} + + echo "" + echo "Smart contract address: ${ADDRESS}" +} + +add() { + read -p "Enter number: " NUMBER + mxpy --verbose contract call ${ADDRESS} --recall-nonce --pem=${ALICE} --gas-limit=5000000 --function="add" --arguments ${NUMBER} --send --proxy=${PROXY} --chain=T +} + +getSum() { + mxpy --verbose contract query ${ADDRESS} --function="getSum" --proxy=${PROXY} +} diff --git a/contracts/feature-tests/scenario-tester/meta/Cargo.toml b/contracts/feature-tests/scenario-tester/meta/Cargo.toml new file mode 100644 index 0000000000..5962cb3d93 --- /dev/null +++ b/contracts/feature-tests/scenario-tester/meta/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "scenario-tester-meta" +version = "0.0.0" +edition = "2021" +publish = false + +[dependencies.scenario_tester] +path = ".." + +[dependencies.multiversx-sc-meta] +version = "0.49.0-alpha.2" +path = "../../../../framework/meta" +default-features = false diff --git a/contracts/feature-tests/scenario-tester/meta/src/main.rs b/contracts/feature-tests/scenario-tester/meta/src/main.rs new file mode 100644 index 0000000000..d88f5e7545 --- /dev/null +++ b/contracts/feature-tests/scenario-tester/meta/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + multiversx_sc_meta::cli_main::(); +} diff --git a/contracts/feature-tests/scenario-tester/multiversx.json b/contracts/feature-tests/scenario-tester/multiversx.json new file mode 100644 index 0000000000..7365539625 --- /dev/null +++ b/contracts/feature-tests/scenario-tester/multiversx.json @@ -0,0 +1,3 @@ +{ + "language": "rust" +} \ No newline at end of file diff --git a/contracts/feature-tests/scenario-tester/mxsc-template.toml b/contracts/feature-tests/scenario-tester/mxsc-template.toml new file mode 100644 index 0000000000..f7a17bd7a8 --- /dev/null +++ b/contracts/feature-tests/scenario-tester/mxsc-template.toml @@ -0,0 +1,24 @@ +name = "scenario_tester" +contract_trait = "Adder" +src_file = "adder.rs" +rename_pairs = [ + [ + "blockchain.set_current_dir_from_workspace(\"contracts/examples/adder\");", + "// blockchain.set_current_dir_from_workspace(\"relative path to your workspace, if applicable\");", + ], +] +files_include = [ + "meta", + "scenarios", + "src", + "tests", + "Cargo.toml", + "README.md", + "sc-config.toml", + "multiversx.json", + "interact/Cargo.toml", + "interact/config.toml", + "interact/.gitignore", + "interact/src", +] +has_interactor = true diff --git a/contracts/feature-tests/scenario-tester/sc-config.toml b/contracts/feature-tests/scenario-tester/sc-config.toml new file mode 100644 index 0000000000..b56f82b429 --- /dev/null +++ b/contracts/feature-tests/scenario-tester/sc-config.toml @@ -0,0 +1,4 @@ +[settings] + +[[proxy]] +path = "src/adder_proxy.rs" diff --git a/contracts/feature-tests/scenario-tester/scenarios/adder.scen.json b/contracts/feature-tests/scenario-tester/scenarios/adder.scen.json new file mode 100644 index 0000000000..08ecb79e3f --- /dev/null +++ b/contracts/feature-tests/scenario-tester/scenarios/adder.scen.json @@ -0,0 +1,99 @@ +{ + "name": "adder", + "comment": "add then check", + "gasSchedule": "v3", + "steps": [ + { + "step": "setState", + "accounts": { + "address:owner": { + "nonce": "1", + "balance": "0" + } + }, + "newAddresses": [ + { + "creatorAddress": "address:owner", + "creatorNonce": "1", + "newAddress": "sc:adder" + } + ] + }, + { + "step": "scDeploy", + "id": "1", + "tx": { + "from": "address:owner", + "contractCode": "mxsc:../output/adder.mxsc.json", + "arguments": [ + "5" + ], + "gasLimit": "5,000,000", + "gasPrice": "0" + }, + "expect": { + "out": [], + "status": "", + "logs": "*", + "gas": "*", + "refund": "*" + } + }, + { + "step": "scQuery", + "id": "2", + "tx": { + "to": "sc:adder", + "function": "getSum", + "arguments": [] + }, + "expect": { + "out": [ + "5" + ], + "status": "", + "logs": [] + } + }, + { + "step": "scCall", + "id": "3", + "tx": { + "from": "address:owner", + "to": "sc:adder", + "function": "add", + "arguments": [ + "3" + ], + "gasLimit": "5,000,000", + "gasPrice": "0" + }, + "expect": { + "out": [], + "status": "", + "logs": "*", + "gas": "*", + "refund": "*" + } + }, + { + "step": "checkState", + "accounts": { + "address:owner": { + "nonce": "*", + "balance": "0", + "storage": {}, + "code": "" + }, + "sc:adder": { + "nonce": "0", + "balance": "0", + "storage": { + "str:sum": "8" + }, + "code": "mxsc:../output/adder.mxsc.json" + } + } + } + ] +} diff --git a/contracts/feature-tests/scenario-tester/scenarios/interactor_trace.scen.json b/contracts/feature-tests/scenario-tester/scenarios/interactor_trace.scen.json new file mode 100644 index 0000000000..e0824697fe --- /dev/null +++ b/contracts/feature-tests/scenario-tester/scenarios/interactor_trace.scen.json @@ -0,0 +1,76 @@ +{ + "steps": [ + { + "step": "setState", + "accounts": { + "0xe32afedc904fe1939746ad973beb383563cf63642ba669b3040f9b9428a5ed60": { + "nonce": "481", + "balance": "106274669842530000003", + "esdt": { + "str:CAN-14dc0a": "1000", + "str:CAN-2abf4b": "1000", + "str:CAN-6d39e6": "1000", + "str:CAN-ac1592": "1000" + } + } + } + }, + { + "step": "setState", + "newAddresses": [ + { + "creatorAddress": "0xe32afedc904fe1939746ad973beb383563cf63642ba669b3040f9b9428a5ed60", + "creatorNonce": "481", + "newAddress": "0x0000000000000000050028600ceb73ac22ec0b6f257aff7bed74dffa3ebfed60" + } + ] + }, + { + "step": "scDeploy", + "tx": { + "from": "0xe32afedc904fe1939746ad973beb383563cf63642ba669b3040f9b9428a5ed60", + "contractCode": "mxsc:../output/adder.mxsc.json", + "arguments": [ + "0x00" + ], + "gasLimit": "70,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "tx": { + "from": "0xe32afedc904fe1939746ad973beb383563cf63642ba669b3040f9b9428a5ed60", + "to": "0x0000000000000000050028600ceb73ac22ec0b6f257aff7bed74dffa3ebfed60", + "function": "add", + "arguments": [ + "0x07" + ], + "gasLimit": "70,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + }, + { + "step": "scCall", + "tx": { + "from": "0xe32afedc904fe1939746ad973beb383563cf63642ba669b3040f9b9428a5ed60", + "to": "0x0000000000000000050028600ceb73ac22ec0b6f257aff7bed74dffa3ebfed60", + "function": "add", + "arguments": [ + "0x05" + ], + "gasLimit": "70,000,000" + }, + "expect": { + "out": [], + "status": "0" + } + } + ] +} diff --git a/contracts/feature-tests/scenario-tester/src/lib.rs b/contracts/feature-tests/scenario-tester/src/lib.rs new file mode 100644 index 0000000000..015b3e82c2 --- /dev/null +++ b/contracts/feature-tests/scenario-tester/src/lib.rs @@ -0,0 +1,30 @@ +#![no_std] + +use multiversx_sc::imports::*; + +pub mod scenario_tester_proxy; + +/// One of the simplest smart contracts possible, +/// it holds a single variable in storage, which anyone can increment. +#[multiversx_sc::contract] +pub trait ScenarioTester { + #[view(getSum)] + #[storage_mapper("sum")] + fn sum(&self) -> SingleValueMapper; + + #[init] + fn init(&self, initial_value: BigUint) { + self.sum().set(initial_value); + } + + #[upgrade] + fn upgrade(&self, initial_value: BigUint) { + self.init(initial_value); + } + + /// Add desired amount to the storage variable. + #[endpoint] + fn add(&self, value: BigUint) { + self.sum().update(|sum| *sum += value); + } +} diff --git a/contracts/feature-tests/scenario-tester/src/scenario_tester_proxy.rs b/contracts/feature-tests/scenario-tester/src/scenario_tester_proxy.rs new file mode 100644 index 0000000000..d3abf4b9b7 --- /dev/null +++ b/contracts/feature-tests/scenario-tester/src/scenario_tester_proxy.rs @@ -0,0 +1,110 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(dead_code)] +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +pub struct ScenarioTesterProxy; + +impl TxProxyTrait for ScenarioTesterProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = ScenarioTesterProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + ScenarioTesterProxyMethods { wrapped_tx: tx } + } +} + +pub struct ScenarioTesterProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl ScenarioTesterProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init< + Arg0: CodecInto>, + >( + self, + initial_value: Arg0, + ) -> TxProxyDeploy { + self.wrapped_tx + .raw_deploy() + .argument(&initial_value) + .original_result() + } +} + +#[rustfmt::skip] +impl ScenarioTesterProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn upgrade< + Arg0: CodecInto>, + >( + self, + initial_value: Arg0, + ) -> TxProxyUpgrade { + self.wrapped_tx + .raw_upgrade() + .argument(&initial_value) + .original_result() + } +} + +#[rustfmt::skip] +impl ScenarioTesterProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn sum( + self, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call("getSum") + .original_result() + } + + /// Add desired amount to the storage variable. + pub fn add< + Arg0: CodecInto>, + >( + self, + value: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("add") + .argument(&value) + .original_result() + } +} diff --git a/contracts/feature-tests/scenario-tester/tests/adder_blackbox_chained_test.rs b/contracts/feature-tests/scenario-tester/tests/adder_blackbox_chained_test.rs new file mode 100644 index 0000000000..b10b3e3a54 --- /dev/null +++ b/contracts/feature-tests/scenario-tester/tests/adder_blackbox_chained_test.rs @@ -0,0 +1,64 @@ +use multiversx_sc_scenario::imports::*; +use num_bigint::BigUint; + +use adder::*; + +const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; + +fn world() -> ScenarioWorld { + let mut blockchain = ScenarioWorld::new(); + blockchain.set_current_dir_from_workspace("contracts/examples/adder"); + + blockchain.register_contract(ADDER_PATH_EXPR, adder::ContractBuilder); + blockchain +} + +#[test] +fn adder_blackbox_chained() { + let mut world = world(); + let owner_address = "address:owner"; + let adder_contract = ContractInfo::>::new("sc:adder"); + + world + .start_trace() + .set_state_step( + SetStateStep::new() + .put_account(owner_address, Account::new().nonce(1)) + .new_address(owner_address, 1, "sc:adder"), + ) + .chain_deploy(|tx| { + tx.from(AddressExpr("owner")) + .typed(adder_proxy::AdderProxy) + .init(5u32) + .code(MxscExpr("output/adder.mxsc.json")) + .with_result(WithNewAddress::new(|new_address| { + assert_eq!(new_address.to_address(), adder_contract.to_address()); + })) + }) + .chain_query(|tx| { + tx.to(ScExpr("adder")) + .typed(adder_proxy::AdderProxy) + .sum() + .with_result(WithResultConv::new(|value: BigUint| { + assert_eq!(value, BigUint::from(5u32)); + })) + }) + .chain_call(|tx| { + tx.from(AddressExpr("owner")) + .to(ScExpr("adder")) + .typed(adder_proxy::AdderProxy) + .add(3u32) + .with_result(WithRawTxResponse(|response| { + assert!(response.tx_error.is_success()); + })) + }) + .check_state_step( + CheckStateStep::new() + .put_account(owner_address, CheckAccount::new()) + .put_account( + &adder_contract, + CheckAccount::new().check_storage("str:sum", "8"), + ), + ) + .write_scenario_trace("trace2.scen.json"); +} diff --git a/contracts/feature-tests/scenario-tester/tests/adder_blackbox_legacy_proxy_test.rs b/contracts/feature-tests/scenario-tester/tests/adder_blackbox_legacy_proxy_test.rs new file mode 100644 index 0000000000..e3a2540386 --- /dev/null +++ b/contracts/feature-tests/scenario-tester/tests/adder_blackbox_legacy_proxy_test.rs @@ -0,0 +1,77 @@ +use multiversx_sc_scenario::imports::*; +use num_bigint::BigUint; + +use adder::*; + +const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; + +const OWNER: AddressExpr = AddressExpr("owner"); +const CODE_EXPR: MxscExpr = MxscExpr("output/adder.mxsc.json"); + +fn world() -> ScenarioWorld { + let mut blockchain = ScenarioWorld::new(); + blockchain.set_current_dir_from_workspace("contracts/examples/adder"); + + blockchain.register_contract(ADDER_PATH_EXPR, adder::ContractBuilder); + blockchain +} + +#[test] +fn adder_blackbox_legacy_proxy() { + let mut world = world(); + let owner_address = "address:owner"; + let mut adder_contract = ContractInfo::>::new("sc:adder"); + + world.start_trace(); + + world.set_state_step( + SetStateStep::new() + .put_account(owner_address, Account::new().nonce(1)) + .new_address(owner_address, 1, "sc:adder"), + ); + + world + .tx() + .from(OWNER) + .typed(adder_proxy::AdderProxy) + .init(5u32) + .code(CODE_EXPR) + .with_result(WithNewAddress::new(|new_address| { + assert_eq!(new_address.to_address(), adder_contract.to_address()); + })) + .run(); + + world.sc_query( + ScQueryStep::new() + .to(&adder_contract) + .call(adder_contract.sum()) + .expect_value(SingleValue::from(BigUint::from(5u32))), + ); + + let value = world + .query() + .call(adder_contract.sum()) + .returns(ReturnsResultConv::>::new()) + .run(); + assert_eq!(value.into(), BigUint::from(5u32)); + + world + .tx() + .from(OWNER) + .call(adder_contract.add(3u32)) + .with_result(WithRawTxResponse(|response| { + assert!(response.tx_error.is_success()); + })) + .run(); + + world.check_state_step( + CheckStateStep::new() + .put_account(owner_address, CheckAccount::new()) + .put_account( + &adder_contract, + CheckAccount::new().check_storage("str:sum", "8"), + ), + ); + + world.write_scenario_trace("trace1.scen.json"); +} diff --git a/contracts/feature-tests/scenario-tester/tests/adder_blackbox_raw_steps_test.rs b/contracts/feature-tests/scenario-tester/tests/adder_blackbox_raw_steps_test.rs new file mode 100644 index 0000000000..fc6b5d02a0 --- /dev/null +++ b/contracts/feature-tests/scenario-tester/tests/adder_blackbox_raw_steps_test.rs @@ -0,0 +1,53 @@ +use multiversx_sc_scenario::imports::*; + +const SCENARIO_TESTER_PATH_EXPR: &str = "mxsc:output/scenario-tester.mxsc.json"; + +fn world() -> ScenarioWorld { + let mut blockchain = ScenarioWorld::new(); + blockchain.set_current_dir_from_workspace("contracts/feature-tests/scenario-tester"); + + blockchain.register_contract(SCENARIO_TESTER_PATH_EXPR, scenario_tester::ContractBuilder); + blockchain +} + +#[test] +fn scenario_tester_blackbox_raw() { + let mut world = world(); + let scenario_tester_code = world.code_expression(SCENARIO_TESTER_PATH_EXPR); + + world + .set_state_step( + SetStateStep::new() + .put_account("address:owner", Account::new().nonce(1)) + .new_address("address:owner", 1, "sc:scenario-tester"), + ) + .sc_deploy( + ScDeployStep::new() + .from("address:owner") + .code(scenario_tester_code) + .argument("5") + .expect(TxExpect::ok().no_result()), + ) + .sc_query( + ScQueryStep::new() + .to("sc:scenario-tester") + .function("getSum") + .expect(TxExpect::ok().result("5")), + ) + .sc_call( + ScCallStep::new() + .from("address:owner") + .to("sc:scenario-tester") + .function("add") + .argument("3") + .expect(TxExpect::ok().no_result()), + ) + .check_state_step( + CheckStateStep::new() + .put_account("address:owner", CheckAccount::new()) + .put_account( + "sc:scenario-tester", + CheckAccount::new().check_storage("str:sum", "8"), + ), + ); +} diff --git a/contracts/feature-tests/scenario-tester/tests/adder_blackbox_test.rs b/contracts/feature-tests/scenario-tester/tests/adder_blackbox_test.rs new file mode 100644 index 0000000000..9149a25e3b --- /dev/null +++ b/contracts/feature-tests/scenario-tester/tests/adder_blackbox_test.rs @@ -0,0 +1,72 @@ +use multiversx_sc_scenario::imports::*; +use num_bigint::BigUint; + +use scenario_tester::*; + +const ADDER_PATH_EXPR: &str = "mxsc:output/scenario-tester.mxsc.json"; + +const OWNER: AddressExpr = AddressExpr("owner"); +const SC_ADDER: ScExpr = ScExpr("scenario-tester"); +const CODE_EXPR: MxscExpr = MxscExpr("output/scenario-tester.mxsc.json"); + +fn world() -> ScenarioWorld { + let mut blockchain = ScenarioWorld::new(); + blockchain.set_current_dir_from_workspace("contracts/examples/scenario-tester"); + + blockchain.register_contract(ADDER_PATH_EXPR, scenario_tester::ContractBuilder); + blockchain +} + +#[test] +fn adder_blackbox() { + let mut world = world(); + let owner_address = "address:owner"; + let adder_contract = ContractInfo::>::new("sc:scenario-tester"); + + world.start_trace(); + + world.set_state_step( + SetStateStep::new() + .put_account(owner_address, Account::new().nonce(1)) + .new_address(owner_address, 1, "sc:scenario-tester"), + ); + + let new_address = world + .tx() + .from(OWNER) + .typed(scenario_tester_proxy::ScenarioTesterProxy) + .init(5u32) + .code(CODE_EXPR) + .returns(ReturnsNewAddress) + .run(); + + assert_eq!(new_address, adder_contract.to_address()); + + let value = world + .query() + .to(SC_ADDER) + .typed(scenario_tester_proxy::ScenarioTesterProxy) + .sum() + .returns(ReturnsResultConv::::new()) + .run(); + assert_eq!(value, BigUint::from(5u32)); + + world + .tx() + .from(OWNER) + .to(SC_ADDER) + .typed(scenario_tester_proxy::ScenarioTesterProxy) + .add(1u32) + .run(); + + world.check_state_step( + CheckStateStep::new() + .put_account(owner_address, CheckAccount::new()) + .put_account( + &adder_contract, + CheckAccount::new().check_storage("str:sum", "6"), + ), + ); + + world.write_scenario_trace("trace1.scen.json"); +} diff --git a/contracts/feature-tests/scenario-tester/tests/adder_blackbox_upgrade_test.rs b/contracts/feature-tests/scenario-tester/tests/adder_blackbox_upgrade_test.rs new file mode 100644 index 0000000000..5a38f7c5df --- /dev/null +++ b/contracts/feature-tests/scenario-tester/tests/adder_blackbox_upgrade_test.rs @@ -0,0 +1,50 @@ +use multiversx_sc_scenario::imports::*; + +const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; + +fn world() -> ScenarioWorld { + let mut blockchain = ScenarioWorld::new(); + blockchain.set_current_dir_from_workspace("contracts/examples/adder"); + + blockchain.register_contract("mxsc:output/adder.mxsc.json", adder::ContractBuilder); + blockchain +} + +#[test] +fn adder_blackbox_upgrade() { + let mut world = world(); + let adder_code = world.code_expression(ADDER_PATH_EXPR); + + world + .set_state_step( + SetStateStep::new() + .put_account("address:owner", Account::new().nonce(1)) + .new_address("address:owner", 1, "sc:adder"), + ) + .sc_deploy( + ScDeployStep::new() + .from("address:owner") + .code(&adder_code) + .argument("5") + .gas_limit("5,000,000") + .expect(TxExpect::ok().no_result()), + ) + .sc_call( + ScCallStep::new() + .from("address:owner") + .to("sc:adder") + .function("upgradeContract") + .argument(&adder_code) + .argument("0x0502") // codeMetadata + .argument("8") // contract argument + .expect(TxExpect::ok().no_result()), + ) + .check_state_step( + CheckStateStep::new() + .put_account("address:owner", CheckAccount::new()) + .put_account( + "sc:adder", + CheckAccount::new().check_storage("str:sum", "8"), + ), + ); +} diff --git a/contracts/feature-tests/scenario-tester/tests/adder_scenario_go_test.rs b/contracts/feature-tests/scenario-tester/tests/adder_scenario_go_test.rs new file mode 100644 index 0000000000..bed4ae016d --- /dev/null +++ b/contracts/feature-tests/scenario-tester/tests/adder_scenario_go_test.rs @@ -0,0 +1,15 @@ +use multiversx_sc_scenario::*; + +fn world() -> ScenarioWorld { + ScenarioWorld::vm_go() +} + +#[test] +fn adder_go() { + world().run("scenarios/adder.scen.json"); +} + +#[test] +fn interactor_trace_go() { + world().run("scenarios/interactor_trace.scen.json"); +} diff --git a/contracts/feature-tests/scenario-tester/tests/adder_scenario_rs_test.rs b/contracts/feature-tests/scenario-tester/tests/adder_scenario_rs_test.rs new file mode 100644 index 0000000000..c467100633 --- /dev/null +++ b/contracts/feature-tests/scenario-tester/tests/adder_scenario_rs_test.rs @@ -0,0 +1,19 @@ +use multiversx_sc_scenario::*; + +fn world() -> ScenarioWorld { + let mut blockchain = ScenarioWorld::new(); + blockchain.set_current_dir_from_workspace("contracts/examples/adder"); + + blockchain.register_contract("mxsc:output/adder.mxsc.json", adder::ContractBuilder); + blockchain +} + +#[test] +fn adder_rs() { + world().run("scenarios/adder.scen.json"); +} + +#[test] +fn interactor_trace_rs() { + world().run("scenarios/interactor_trace.scen.json"); +} diff --git a/contracts/feature-tests/scenario-tester/tests/adder_unit_test.rs b/contracts/feature-tests/scenario-tester/tests/adder_unit_test.rs new file mode 100644 index 0000000000..3839382866 --- /dev/null +++ b/contracts/feature-tests/scenario-tester/tests/adder_unit_test.rs @@ -0,0 +1,17 @@ +use adder::*; +use multiversx_sc::types::BigUint; +use multiversx_sc_scenario::api::SingleTxApi; + +#[test] +fn adder_unit_test() { + let adder = adder::contract_obj::(); + + adder.init(BigUint::from(5u32)); + assert_eq!(BigUint::from(5u32), adder.sum().get()); + + adder.add(BigUint::from(7u32)); + assert_eq!(BigUint::from(12u32), adder.sum().get()); + + adder.add(BigUint::from(1u32)); + assert_eq!(BigUint::from(13u32), adder.sum().get()); +} diff --git a/contracts/feature-tests/scenario-tester/tests/adder_whitebox_test.rs b/contracts/feature-tests/scenario-tester/tests/adder_whitebox_test.rs new file mode 100644 index 0000000000..50ad95faa6 --- /dev/null +++ b/contracts/feature-tests/scenario-tester/tests/adder_whitebox_test.rs @@ -0,0 +1,50 @@ +use adder::*; +use multiversx_sc_scenario::imports::*; + +const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; + +fn world() -> ScenarioWorld { + let mut blockchain = ScenarioWorld::new(); + blockchain.set_current_dir_from_workspace("contracts/examples/adder"); + + blockchain.register_contract("mxsc:output/adder.mxsc.json", adder::ContractBuilder); + blockchain +} + +#[test] +fn adder_whitebox() { + let mut world = world(); + let adder_whitebox = WhiteboxContract::new("sc:adder", adder::contract_obj); + let adder_code = world.code_expression(ADDER_PATH_EXPR); + + world + .set_state_step( + SetStateStep::new() + .put_account("address:owner", Account::new().nonce(1)) + .new_address("address:owner", 1, "sc:adder"), + ) + .whitebox_deploy( + &adder_whitebox, + ScDeployStep::new().from("address:owner").code(adder_code), + |sc| { + sc.init(5u32.into()); + }, + ) + .whitebox_query(&adder_whitebox, |sc| { + let sum_value = sc.sum(); + assert_eq!(sum_value.get(), 5u32); + }) + .whitebox_call( + &adder_whitebox, + ScCallStep::new().from("address:owner"), + |sc| sc.add(3u32.into()), + ) + .check_state_step( + CheckStateStep::new() + .put_account("address:owner", CheckAccount::new()) + .put_account( + "sc:adder", + CheckAccount::new().check_storage("str:sum", "8"), + ), + ); +} diff --git a/contracts/feature-tests/scenario-tester/wasm/Cargo.lock b/contracts/feature-tests/scenario-tester/wasm/Cargo.lock new file mode 100755 index 0000000000..9bc1e41879 --- /dev/null +++ b/contracts/feature-tests/scenario-tester/wasm/Cargo.lock @@ -0,0 +1,170 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "autocfg" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" + +[[package]] +name = "bitflags" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" + +[[package]] +name = "endian-type" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" + +[[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.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "multiversx-sc" +version = "0.49.0-alpha.2" +dependencies = [ + "bitflags", + "hex-literal", + "multiversx-sc-codec", + "multiversx-sc-derive", + "num-traits", +] + +[[package]] +name = "multiversx-sc-codec" +version = "0.18.6" +dependencies = [ + "arrayvec", + "multiversx-sc-codec-derive", +] + +[[package]] +name = "multiversx-sc-codec-derive" +version = "0.18.6" +dependencies = [ + "hex", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "multiversx-sc-derive" +version = "0.49.0-alpha.2" +dependencies = [ + "hex", + "proc-macro2", + "quote", + "radix_trie", + "syn", +] + +[[package]] +name = "multiversx-sc-wasm-adapter" +version = "0.49.0-alpha.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.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "proc-macro2" +version = "1.0.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +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 = "scenario_tester" +version = "0.0.0" +dependencies = [ + "multiversx-sc", +] + +[[package]] +name = "scenario_tester-wasm" +version = "0.0.0" +dependencies = [ + "multiversx-sc-wasm-adapter", + "scenario_tester", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "syn" +version = "2.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" diff --git a/contracts/feature-tests/scenario-tester/wasm/Cargo.toml b/contracts/feature-tests/scenario-tester/wasm/Cargo.toml new file mode 100644 index 0000000000..6de4181a2b --- /dev/null +++ b/contracts/feature-tests/scenario-tester/wasm/Cargo.toml @@ -0,0 +1,32 @@ +# Code generated by the multiversx-sc build system. DO NOT EDIT. + +# ########################################## +# ############## AUTO-GENERATED ############# +# ########################################## + +[package] +name = "scenario_tester-wasm" +version = "0.0.0" +edition = "2021" +publish = false + +[lib] +crate-type = ["cdylib"] + +[profile.release] +codegen-units = 1 +opt-level = "z" +lto = true +debug = false +panic = "abort" +overflow-checks = false + +[dependencies.scenario_tester] +path = ".." + +[dependencies.multiversx-sc-wasm-adapter] +version = "0.49.0-alpha.2" +path = "../../../../framework/wasm-adapter" + +[workspace] +members = ["."] diff --git a/contracts/feature-tests/scenario-tester/wasm/src/lib.rs b/contracts/feature-tests/scenario-tester/wasm/src/lib.rs new file mode 100644 index 0000000000..e4a29325bf --- /dev/null +++ b/contracts/feature-tests/scenario-tester/wasm/src/lib.rs @@ -0,0 +1,30 @@ +// Code generated by the multiversx-sc build system. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +// Init: 1 +// Upgrade: 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! { + scenario_tester + ( + init => init + upgrade => upgrade + getSum => sum + add => add + ) +} + +multiversx_sc_wasm_adapter::async_callback_empty! {} From e4a04611c5523fce65d16cb05c6f1fba393a0cc1 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 11 Apr 2024 19:00:57 +0300 Subject: [PATCH 323/461] refactor - replace return response from ScenarioRaw to SetStateStep --- .../scenario/src/standalone/account_tool.rs | 131 ++++++------------ framework/scenario/src/standalone/mod.rs | 2 +- framework/snippets/src/interactor.rs | 9 +- 3 files changed, 49 insertions(+), 93 deletions(-) diff --git a/framework/scenario/src/standalone/account_tool.rs b/framework/scenario/src/standalone/account_tool.rs index 90fdb61857..2e31b01b35 100644 --- a/framework/scenario/src/standalone/account_tool.rs +++ b/framework/scenario/src/standalone/account_tool.rs @@ -1,8 +1,9 @@ -use crate::imports::Bech32Address; - -use multiversx_chain_scenario_format::serde_raw::{ - AccountRaw, EsdtFullRaw, EsdtInstanceRaw, EsdtRaw, ScenarioRaw, StepRaw, ValueSubTree, +use crate::{ + imports::Bech32Address, + scenario_model::{Account, BytesKey, BytesValue, Scenario, SetStateStep}, }; + +use multiversx_chain_scenario_format::interpret_trait::IntoRaw; use multiversx_chain_vm::display_util::key_hex; use multiversx_sdk::{ blockchain::CommunicationProxy, @@ -14,14 +15,15 @@ pub async fn print_account_as_scenario_set_state( api: &CommunicationProxy, address: &Bech32Address, ) { - let scenario_raw = retrieve_account_as_scenario_set_state(api, address).await; - println!("{}", scenario_raw.to_json_string()); + let set_state = retrieve_account_as_scenario_set_state(api, address).await; + let scenario = build_scenario(set_state); + println!("{}", scenario.into_raw().to_json_string()); } pub async fn retrieve_account_as_scenario_set_state( api: &CommunicationProxy, addr: &Bech32Address, -) -> ScenarioRaw { +) -> SetStateStep { let address = Address::from_bech32_string(addr.to_bech32_str()).unwrap(); let account = api.get_account(&address).await.unwrap(); @@ -38,97 +40,52 @@ pub async fn retrieve_account_as_scenario_set_state( .await .unwrap_or_else(|err| panic!("failed to retrieve storage for address {addr}: {err}")); - let mut accounts = BTreeMap::new(); - accounts.insert( - key_hex(&address.to_bytes()), - AccountRaw { - nonce: Some(ValueSubTree::Str(account.nonce.to_string())), - balance: Some(ValueSubTree::Str(account.balance.to_string())), - esdt: convert_esdt(account_esdt, account_esdt_roles), - username: Some(ValueSubTree::Str(account.username.to_string())), - storage: convert_storage(account_storage), - comment: None, - code: retrieve_code(account.code), - code_metadata: None, // TODO: retrieve code metadata - owner: None, - developer_rewards: None, - }, - ); + let account_state = set_account(account, account_storage, account_esdt, account_esdt_roles); - ScenarioRaw { - check_gas: None, - comment: None, - gas_schedule: None, - name: None, - steps: vec![StepRaw::SetState { - accounts, - block_hashes: Vec::new(), - new_addresses: Vec::new(), - new_token_identifiers: Vec::new(), - comment: None, - current_block_info: None, - previous_block_info: None, - }], - } + let set_state_step = SetStateStep::new(); + set_state_step.put_account(key_hex(&address.to_bytes()), account_state) } -fn retrieve_code(code: String) -> Option { - if code.is_empty() { - None - } else { - Some(ValueSubTree::Str(format!("0x{code}"))) +pub fn build_scenario(set_state: SetStateStep) -> Scenario { + Scenario { + name: None, + comment: None, + check_gas: None, + steps: vec![crate::scenario_model::Step::SetState(set_state)], } } -fn convert_storage(account_storage: HashMap) -> BTreeMap { - account_storage - .into_iter() - .filter(|(k, _)| !k.starts_with("454c524f4e44")) - .map(|(k, v)| (format!("0x{k}"), ValueSubTree::Str(format!("0x{v}")))) - .collect() -} +pub fn set_account( + account: multiversx_sdk::data::account::Account, + account_storage: HashMap, + account_esdt: HashMap, + account_esdt_roles: HashMap>, +) -> Account { + let mut account_state = Account::new() + .nonce(account.nonce) + .balance(account.balance.as_str()) + .code(account.code); + account_state.username = Some(account.username.as_str().into()); + account_state.storage = convert_storage(account_storage); -fn convert_esdt( - sdk_esdt: HashMap, - sdk_esdt_roles: HashMap>, -) -> BTreeMap { - let mut result = BTreeMap::new(); - for (key, value) in sdk_esdt.into_iter() { - let (token_identifier, nonce) = split_token_identifer_nonce(key); - let esdt_raw = result - .entry(format!("str:{}", token_identifier.clone())) - .or_insert(EsdtRaw::Full(EsdtFullRaw::default())); - if let EsdtRaw::Full(esdt_full_raw) = esdt_raw { - esdt_full_raw.instances.push(EsdtInstanceRaw { - nonce: Some(ValueSubTree::Str(nonce.to_string())), - balance: Some(ValueSubTree::Str(value.balance)), - // TODO: add creator, royalties, etc ... - ..Default::default() - }); - } + for (_, esdt_balance) in account_esdt.iter() { + account_state = account_state.esdt_balance( + esdt_balance.token_identifier.as_str(), + esdt_balance.balance.as_str(), + ); } - for (key, roles) in sdk_esdt_roles.into_iter() { - let (token_identifier, _) = split_token_identifer_nonce(key); - let esdt_raw = result - .entry(format!("str:{}", token_identifier.clone())) - .or_insert(EsdtRaw::Full(EsdtFullRaw::default())); - if let EsdtRaw::Full(esdt_full_raw) = esdt_raw { - esdt_full_raw.roles = roles; - } + for (token_id, esdt_roles) in account_esdt_roles { + account_state = account_state.esdt_roles(token_id.as_str(), esdt_roles); } - result + account_state } -fn split_token_identifer_nonce(full_identifier: String) -> (String, u64) { - let tokens = full_identifier.split('-').collect::>(); - match tokens.len() { - 2 => (full_identifier, 0), - 3 => ( - format!("{}-{}", tokens[0], tokens[1]), - u64::from_str_radix(tokens[2], 16).unwrap(), - ), - _ => panic!("could not process token identifier: {full_identifier}"), - } +fn convert_storage(account_storage: HashMap) -> BTreeMap { + account_storage + .into_iter() + .filter(|(k, _)| !k.starts_with("454c524f4e44")) + .map(|(k, v)| (BytesKey::from(k.as_str()), BytesValue::from(v))) + .collect() } diff --git a/framework/scenario/src/standalone/mod.rs b/framework/scenario/src/standalone/mod.rs index 84ecea3916..ce7559a948 100644 --- a/framework/scenario/src/standalone/mod.rs +++ b/framework/scenario/src/standalone/mod.rs @@ -1,5 +1,5 @@ mod account_tool; mod scenario_cli; -pub use account_tool::retrieve_account_as_scenario_set_state; +pub use account_tool::{build_scenario, retrieve_account_as_scenario_set_state}; pub use scenario_cli::cli_main; diff --git a/framework/snippets/src/interactor.rs b/framework/snippets/src/interactor.rs index d1f49d2653..85d6a4503c 100644 --- a/framework/snippets/src/interactor.rs +++ b/framework/snippets/src/interactor.rs @@ -1,8 +1,9 @@ use multiversx_sc_scenario::{ - imports::{retrieve_account_as_scenario_set_state, Bech32Address, InterpretableFrom, InterpreterContext, Scenario, ScenarioRunner}, + imports::{retrieve_account_as_scenario_set_state, Bech32Address, ScenarioRunner}, mandos_system::{run_list::ScenarioRunnerList, run_trace::ScenarioTraceFile}, multiversx_sc::types::Address, scenario_model::AddressValue, + standalone::build_scenario, }; use multiversx_sdk::{ blockchain::CommunicationProxy, @@ -70,10 +71,8 @@ impl Interactor { } pub async fn retrieve_account(&mut self, wallet_address: &Bech32Address) { - let scenario_raw = - retrieve_account_as_scenario_set_state(&self.proxy, wallet_address).await; - - let scenario = Scenario::interpret_from(scenario_raw, &InterpreterContext::default()); + let set_state = retrieve_account_as_scenario_set_state(&self.proxy, wallet_address).await; + let scenario = build_scenario(set_state); self.pre_runners.run_scenario(&scenario); self.post_runners.run_scenario(&scenario); From 74a477160f3dc1e7b8bca88de3401968fbeb1c6a Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 11 Apr 2024 19:25:51 +0300 Subject: [PATCH 324/461] scenario test contract & adder cleanup --- Cargo.lock | 12 +- .../tests/adder_blackbox_raw_steps_test.rs | 53 ------ .../tests/adder_blackbox_upgrade_test.rs | 50 ----- .../feature-tests/scenario-tester/Cargo.toml | 2 +- .../scenario-tester/interact/.gitignore | 8 - .../scenario-tester/interact/Cargo.toml | 22 --- .../scenario-tester/interact/config.toml | 1 - .../interact/src/basic_interact.rs | 172 ------------------ .../interact/src/basic_interact_cli.rs | 39 ---- .../interact/src/basic_interact_config.rs | 26 --- .../interact/src/basic_interact_state.rs | 50 ----- .../interaction/devnet.snippets.sh | 25 --- .../interaction/testnet.snippets.sh | 26 --- .../scenario-tester/meta/Cargo.toml | 2 +- .../scenario-tester/mxsc-template.toml | 24 --- .../scenario-tester/sc-config.toml | 2 +- .../scenarios/interactor_trace.scen.json | 2 +- .../{adder.scen.json => st-adder.scen.json} | 4 +- .../tests/adder_blackbox_chained_test.rs | 64 ------- .../tests/adder_blackbox_legacy_proxy_test.rs | 77 -------- .../tests/adder_scenario_rs_test.rs | 19 -- .../scenario-tester/tests/adder_unit_test.rs | 17 -- .../tests/st_blackbox_chained_test.rs} | 24 +-- .../tests/st_blackbox_legacy_proxy_test.rs} | 22 +-- ..._test.rs => st_blackbox_raw_steps_test.rs} | 0 ...r_blackbox_test.rs => st_blackbox_test.rs} | 8 +- ...de_test.rs => st_blackbox_upgrade_test.rs} | 14 +- ...ario_go_test.rs => st_scenario_go_test.rs} | 8 +- .../tests/st_scenario_rs_test.rs | 19 ++ .../scenario-tester/tests/st_unit_test.rs | 17 ++ ...r_whitebox_test.rs => st_whitebox_test.rs} | 22 +-- .../scenario-tester/wasm/Cargo.lock | 6 +- .../scenario-tester/wasm/Cargo.toml | 4 +- 33 files changed, 102 insertions(+), 739 deletions(-) delete mode 100644 contracts/examples/adder/tests/adder_blackbox_raw_steps_test.rs delete mode 100644 contracts/examples/adder/tests/adder_blackbox_upgrade_test.rs delete mode 100644 contracts/feature-tests/scenario-tester/interact/.gitignore delete mode 100644 contracts/feature-tests/scenario-tester/interact/Cargo.toml delete mode 100644 contracts/feature-tests/scenario-tester/interact/config.toml delete mode 100644 contracts/feature-tests/scenario-tester/interact/src/basic_interact.rs delete mode 100644 contracts/feature-tests/scenario-tester/interact/src/basic_interact_cli.rs delete mode 100644 contracts/feature-tests/scenario-tester/interact/src/basic_interact_config.rs delete mode 100644 contracts/feature-tests/scenario-tester/interact/src/basic_interact_state.rs delete mode 100644 contracts/feature-tests/scenario-tester/interaction/devnet.snippets.sh delete mode 100644 contracts/feature-tests/scenario-tester/interaction/testnet.snippets.sh delete mode 100644 contracts/feature-tests/scenario-tester/mxsc-template.toml rename contracts/feature-tests/scenario-tester/scenarios/{adder.scen.json => st-adder.scen.json} (94%) delete mode 100644 contracts/feature-tests/scenario-tester/tests/adder_blackbox_chained_test.rs delete mode 100644 contracts/feature-tests/scenario-tester/tests/adder_blackbox_legacy_proxy_test.rs delete mode 100644 contracts/feature-tests/scenario-tester/tests/adder_scenario_rs_test.rs delete mode 100644 contracts/feature-tests/scenario-tester/tests/adder_unit_test.rs rename contracts/{examples/adder/tests/adder_blackbox_chained_test.rs => feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs} (66%) rename contracts/{examples/adder/tests/adder_blackbox_legacy_proxy_test.rs => feature-tests/scenario-tester/tests/st_blackbox_legacy_proxy_test.rs} (75%) rename contracts/feature-tests/scenario-tester/tests/{adder_blackbox_raw_steps_test.rs => st_blackbox_raw_steps_test.rs} (100%) rename contracts/feature-tests/scenario-tester/tests/{adder_blackbox_test.rs => st_blackbox_test.rs} (89%) rename contracts/feature-tests/scenario-tester/tests/{adder_blackbox_upgrade_test.rs => st_blackbox_upgrade_test.rs} (74%) rename contracts/feature-tests/scenario-tester/tests/{adder_scenario_go_test.rs => st_scenario_go_test.rs} (74%) create mode 100644 contracts/feature-tests/scenario-tester/tests/st_scenario_rs_test.rs create mode 100644 contracts/feature-tests/scenario-tester/tests/st_unit_test.rs rename contracts/feature-tests/scenario-tester/tests/{adder_whitebox_test.rs => st_whitebox_test.rs} (61%) diff --git a/Cargo.lock b/Cargo.lock index 9ad27741d0..b111db8536 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -2756,19 +2756,19 @@ dependencies = [ ] [[package]] -name = "scenario-tester-meta" +name = "scenario-tester" version = "0.0.0" dependencies = [ - "multiversx-sc-meta", - "scenario_tester", + "multiversx-sc", + "multiversx-sc-scenario", ] [[package]] -name = "scenario_tester" +name = "scenario-tester-meta" version = "0.0.0" dependencies = [ - "multiversx-sc", - "multiversx-sc-scenario", + "multiversx-sc-meta", + "scenario-tester", ] [[package]] diff --git a/contracts/examples/adder/tests/adder_blackbox_raw_steps_test.rs b/contracts/examples/adder/tests/adder_blackbox_raw_steps_test.rs deleted file mode 100644 index a88e4eb9b6..0000000000 --- a/contracts/examples/adder/tests/adder_blackbox_raw_steps_test.rs +++ /dev/null @@ -1,53 +0,0 @@ -use multiversx_sc_scenario::imports::*; - -const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; - -fn world() -> ScenarioWorld { - let mut blockchain = ScenarioWorld::new(); - blockchain.set_current_dir_from_workspace("contracts/examples/adder"); - - blockchain.register_contract(ADDER_PATH_EXPR, adder::ContractBuilder); - blockchain -} - -#[test] -fn adder_blackbox_raw() { - let mut world = world(); - let adder_code = world.code_expression(ADDER_PATH_EXPR); - - world - .set_state_step( - SetStateStep::new() - .put_account("address:owner", Account::new().nonce(1)) - .new_address("address:owner", 1, "sc:adder"), - ) - .sc_deploy( - ScDeployStep::new() - .from("address:owner") - .code(adder_code) - .argument("5") - .expect(TxExpect::ok().no_result()), - ) - .sc_query( - ScQueryStep::new() - .to("sc:adder") - .function("getSum") - .expect(TxExpect::ok().result("5")), - ) - .sc_call( - ScCallStep::new() - .from("address:owner") - .to("sc:adder") - .function("add") - .argument("3") - .expect(TxExpect::ok().no_result()), - ) - .check_state_step( - CheckStateStep::new() - .put_account("address:owner", CheckAccount::new()) - .put_account( - "sc:adder", - CheckAccount::new().check_storage("str:sum", "8"), - ), - ); -} diff --git a/contracts/examples/adder/tests/adder_blackbox_upgrade_test.rs b/contracts/examples/adder/tests/adder_blackbox_upgrade_test.rs deleted file mode 100644 index 5a38f7c5df..0000000000 --- a/contracts/examples/adder/tests/adder_blackbox_upgrade_test.rs +++ /dev/null @@ -1,50 +0,0 @@ -use multiversx_sc_scenario::imports::*; - -const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; - -fn world() -> ScenarioWorld { - let mut blockchain = ScenarioWorld::new(); - blockchain.set_current_dir_from_workspace("contracts/examples/adder"); - - blockchain.register_contract("mxsc:output/adder.mxsc.json", adder::ContractBuilder); - blockchain -} - -#[test] -fn adder_blackbox_upgrade() { - let mut world = world(); - let adder_code = world.code_expression(ADDER_PATH_EXPR); - - world - .set_state_step( - SetStateStep::new() - .put_account("address:owner", Account::new().nonce(1)) - .new_address("address:owner", 1, "sc:adder"), - ) - .sc_deploy( - ScDeployStep::new() - .from("address:owner") - .code(&adder_code) - .argument("5") - .gas_limit("5,000,000") - .expect(TxExpect::ok().no_result()), - ) - .sc_call( - ScCallStep::new() - .from("address:owner") - .to("sc:adder") - .function("upgradeContract") - .argument(&adder_code) - .argument("0x0502") // codeMetadata - .argument("8") // contract argument - .expect(TxExpect::ok().no_result()), - ) - .check_state_step( - CheckStateStep::new() - .put_account("address:owner", CheckAccount::new()) - .put_account( - "sc:adder", - CheckAccount::new().check_storage("str:sum", "8"), - ), - ); -} diff --git a/contracts/feature-tests/scenario-tester/Cargo.toml b/contracts/feature-tests/scenario-tester/Cargo.toml index a8faf14f1c..192916d27e 100644 --- a/contracts/feature-tests/scenario-tester/Cargo.toml +++ b/contracts/feature-tests/scenario-tester/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "scenario_tester" +name = "scenario-tester" version = "0.0.0" authors = ["Andrei Marinica "] edition = "2021" diff --git a/contracts/feature-tests/scenario-tester/interact/.gitignore b/contracts/feature-tests/scenario-tester/interact/.gitignore deleted file mode 100644 index ea1b920080..0000000000 --- a/contracts/feature-tests/scenario-tester/interact/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Pem files are used for interactions, but shouldn't be committed -*.pem - -# Temporary storage of deployed contract address, so we can preserve the context between executions. -state.toml - -# Trace file of interactor tooling -interactor_trace.scen.json diff --git a/contracts/feature-tests/scenario-tester/interact/Cargo.toml b/contracts/feature-tests/scenario-tester/interact/Cargo.toml deleted file mode 100644 index dc6a5533ea..0000000000 --- a/contracts/feature-tests/scenario-tester/interact/Cargo.toml +++ /dev/null @@ -1,22 +0,0 @@ -[package] -name = "basic-interact" -version = "0.0.0" -authors = ["Ovidiu Stinga "] -edition = "2021" -publish = false - -[[bin]] -name = "basic-interact" -path = "src/basic_interact.rs" - -[dependencies] -clap = { version = "4.4.7", features = ["derive"] } -serde = { version = "1.0", features = ["derive"] } -toml = "0.8.6" - -[dependencies.adder] -path = ".." - -[dependencies.multiversx-sc-snippets] -version = "0.49.0-alpha.2" -path = "../../../../framework/snippets" diff --git a/contracts/feature-tests/scenario-tester/interact/config.toml b/contracts/feature-tests/scenario-tester/interact/config.toml deleted file mode 100644 index 61ac8dbf87..0000000000 --- a/contracts/feature-tests/scenario-tester/interact/config.toml +++ /dev/null @@ -1 +0,0 @@ -gateway = 'https://devnet-gateway.multiversx.com' diff --git a/contracts/feature-tests/scenario-tester/interact/src/basic_interact.rs b/contracts/feature-tests/scenario-tester/interact/src/basic_interact.rs deleted file mode 100644 index 8a8a6c22fd..0000000000 --- a/contracts/feature-tests/scenario-tester/interact/src/basic_interact.rs +++ /dev/null @@ -1,172 +0,0 @@ -mod basic_interact_cli; -mod basic_interact_config; -mod basic_interact_state; - -use adder::adder_proxy; -use basic_interact_config::Config; -use basic_interact_state::State; -use clap::Parser; - -use multiversx_sc_snippets::imports::*; - -const INTERACTOR_SCENARIO_TRACE_PATH: &str = "interactor_trace.scen.json"; - -#[tokio::main] -async fn main() { - env_logger::init(); - - let mut basic_interact = AdderInteract::init().await; - - let cli = basic_interact_cli::InteractCli::parse(); - match &cli.command { - Some(basic_interact_cli::InteractCliCommand::Add(args)) => { - basic_interact.add(args.value).await; - }, - Some(basic_interact_cli::InteractCliCommand::Deploy) => { - basic_interact.deploy().await; - }, - Some(basic_interact_cli::InteractCliCommand::Feed) => { - basic_interact.feed_contract_egld().await; - }, - Some(basic_interact_cli::InteractCliCommand::MultiDeploy(args)) => { - basic_interact.multi_deploy(&args.count).await; - }, - Some(basic_interact_cli::InteractCliCommand::Sum) => { - basic_interact.print_sum().await; - }, - None => {}, - } -} - -#[allow(unused)] -struct AdderInteract { - interactor: Interactor, - wallet_address: Bech32Address, - adder_code: BytesValue, - state: State, -} - -impl AdderInteract { - async fn init() -> Self { - let config = Config::load_config(); - let mut interactor = Interactor::new(config.gateway()) - .await - .with_tracer(INTERACTOR_SCENARIO_TRACE_PATH) - .await; - let wallet_address = interactor.register_wallet(test_wallets::mike()); - let adder_code = BytesValue::interpret_from( - "mxsc:../output/adder.mxsc.json", - &InterpreterContext::default(), - ); - - Self { - interactor, - wallet_address: wallet_address.into(), - adder_code, - state: State::load_state(), - } - } - - async fn set_state(&mut self) { - println!("wallet address: {}", &self.wallet_address); - let scenario_raw = retrieve_account_as_scenario_set_state( - Config::load_config().gateway().to_string(), - self.wallet_address.to_bech32_string(), - true, - ) - .await; - - let scenario = Scenario::interpret_from(scenario_raw, &InterpreterContext::default()); - - self.interactor.pre_runners.run_scenario(&scenario); - self.interactor.post_runners.run_scenario(&scenario); - } - - async fn deploy(&mut self) { - self.set_state().await; - - let new_address = self - .interactor - .tx() - .from(&self.wallet_address) - .typed(adder_proxy::AdderProxy) - .init(0u32) - .code(&self.adder_code) - .returns(ReturnsNewBech32Address) - .prepare_async() - .run() - .await; - - println!("new address: {new_address}"); - self.state.set_adder_address(new_address); - } - - async fn multi_deploy(&mut self, count: &u8) { - if *count == 0 { - println!("count must be greater than 0"); - return; - } - - self.set_state().await; - println!("deploying {count} contracts..."); - - let mut buffer = self.interactor.homogenous_call_buffer(); - for _ in 0..*count { - buffer.push_tx(|tx| { - tx.from(&self.wallet_address) - .typed(adder_proxy::AdderProxy) - .init(0u32) - .code(&self.adder_code) - .gas(NumExpr("70,000,000")) - .returns(ReturnsNewBech32Address) - }); - } - - let results = buffer.run().await; - for new_address in results { - println!("new address: {new_address}"); - - self.state.set_adder_address(new_address); - } - } - - async fn feed_contract_egld(&mut self) { - self.interactor - .tx() - .from(&self.wallet_address) - .to(self.state.current_adder_address()) - .egld(NumExpr("0,050000000000000000")) - .prepare_async() - .run() - .await; - } - - async fn add(&mut self, value: u64) { - self.interactor - .tx() - .from(&self.wallet_address) - .to(self.state.current_adder_address()) - .typed(adder_proxy::AdderProxy) - .add(value) - .prepare_async() - .run() - .await; - - println!("successfully performed add"); - } - - async fn print_sum(&mut self) { - let sum = self - .interactor - .query() - .to(self.state.current_adder_address()) - .typed(adder_proxy::AdderProxy) - .sum() - .returns(ReturnsResultConv::::new()) - .prepare_async() - .run() - .await; - - println!("sum: {sum}"); - } -} diff --git a/contracts/feature-tests/scenario-tester/interact/src/basic_interact_cli.rs b/contracts/feature-tests/scenario-tester/interact/src/basic_interact_cli.rs deleted file mode 100644 index 8818c1bb60..0000000000 --- a/contracts/feature-tests/scenario-tester/interact/src/basic_interact_cli.rs +++ /dev/null @@ -1,39 +0,0 @@ -use clap::{Args, Parser, Subcommand}; - -/// Adder Interact CLI -#[derive(Default, PartialEq, Eq, Debug, Parser)] -#[command(version, about)] -#[command(propagate_version = true)] -pub struct InteractCli { - #[command(subcommand)] - pub command: Option, -} - -/// Adder Interact CLI Commands -#[derive(Clone, PartialEq, Eq, Debug, Subcommand)] -pub enum InteractCliCommand { - #[command(name = "add", about = "Add value")] - Add(AddArgs), - #[command(name = "deploy", about = "Deploy contract")] - Deploy, - #[command(name = "feed", about = "Feed contract EGLD")] - Feed, - #[command(name = "multi-deploy", about = "Multiple deploy contracts")] - MultiDeploy(MultiDeployArgs), - #[command(name = "sum", about = "Print sum")] - Sum, -} - -#[derive(Default, Clone, PartialEq, Eq, Debug, Args)] -pub struct AddArgs { - /// The value to add - #[arg(short = 'v', long = "value", verbatim_doc_comment)] - pub value: u64, -} - -#[derive(Default, Clone, PartialEq, Eq, Debug, Args)] -pub struct MultiDeployArgs { - /// The number of contracts to deploy - #[arg(short = 'c', long = "count", verbatim_doc_comment)] - pub count: u8, -} diff --git a/contracts/feature-tests/scenario-tester/interact/src/basic_interact_config.rs b/contracts/feature-tests/scenario-tester/interact/src/basic_interact_config.rs deleted file mode 100644 index e17d0cbe65..0000000000 --- a/contracts/feature-tests/scenario-tester/interact/src/basic_interact_config.rs +++ /dev/null @@ -1,26 +0,0 @@ -use serde::Deserialize; -use std::io::Read; - -/// Config file -const CONFIG_FILE: &str = "config.toml"; - -/// Adder Interact configuration -#[derive(Debug, Deserialize)] -pub struct Config { - gateway: String, -} - -impl Config { - // Deserializes config from file - pub fn load_config() -> Self { - let mut file = std::fs::File::open(CONFIG_FILE).unwrap(); - let mut content = String::new(); - file.read_to_string(&mut content).unwrap(); - toml::from_str(&content).unwrap() - } - - // Returns the gateway - pub fn gateway(&self) -> &str { - &self.gateway - } -} diff --git a/contracts/feature-tests/scenario-tester/interact/src/basic_interact_state.rs b/contracts/feature-tests/scenario-tester/interact/src/basic_interact_state.rs deleted file mode 100644 index 41453e36fd..0000000000 --- a/contracts/feature-tests/scenario-tester/interact/src/basic_interact_state.rs +++ /dev/null @@ -1,50 +0,0 @@ -use multiversx_sc_snippets::imports::*; -use serde::{Deserialize, Serialize}; -use std::{ - io::{Read, Write}, - path::Path, -}; - -/// State file -const STATE_FILE: &str = "state.toml"; - -/// Multisig Interact state -#[derive(Debug, Default, Serialize, Deserialize)] -pub struct State { - adder_address: Option, -} - -impl State { - // Deserializes state from file - pub fn load_state() -> Self { - if Path::new(STATE_FILE).exists() { - let mut file = std::fs::File::open(STATE_FILE).unwrap(); - let mut content = String::new(); - file.read_to_string(&mut content).unwrap(); - toml::from_str(&content).unwrap() - } else { - Self::default() - } - } - - /// Sets the adder address - pub fn set_adder_address(&mut self, address: Bech32Address) { - self.adder_address = Some(address); - } - - /// Returns the adder contract - pub fn current_adder_address(&self) -> &Bech32Address { - self.adder_address - .as_ref() - .expect("no known adder contract, deploy first") - } -} - -impl Drop for State { - // Serializes state to file - fn drop(&mut self) { - let mut file = std::fs::File::create(STATE_FILE).unwrap(); - file.write_all(toml::to_string(self).unwrap().as_bytes()) - .unwrap(); - } -} diff --git a/contracts/feature-tests/scenario-tester/interaction/devnet.snippets.sh b/contracts/feature-tests/scenario-tester/interaction/devnet.snippets.sh deleted file mode 100644 index 1966381cde..0000000000 --- a/contracts/feature-tests/scenario-tester/interaction/devnet.snippets.sh +++ /dev/null @@ -1,25 +0,0 @@ -ALICE="${USERS}/alice.pem" -ADDRESS=$(mxpy data load --key=address-devnet) -DEPLOY_TRANSACTION=$(mxpy data load --key=deployTransaction-devnet) - -deploy() { - mxpy --verbose contract deploy --project=${PROJECT} --recall-nonce --pem=${ALICE} --gas-limit=50000000 --arguments 0 --send --outfile="deploy-devnet.interaction.json" || return - - TRANSACTION=$(mxpy data parse --file="deploy-devnet.interaction.json" --expression="data['emittedTransactionHash']") - ADDRESS=$(mxpy data parse --file="deploy-devnet.interaction.json" --expression="data['contractAddress']") - - mxpy data store --key=address-devnet --value=${ADDRESS} - mxpy data store --key=deployTransaction-devnet --value=${TRANSACTION} - - echo "" - echo "Smart contract address: ${ADDRESS}" -} - -add() { - read -p "Enter number: " NUMBER - mxpy --verbose contract call ${ADDRESS} --recall-nonce --pem=${ALICE} --gas-limit=50000000 --function="add" --arguments ${NUMBER} --send -} - -getSum() { - mxpy --verbose contract query ${ADDRESS} --function="getSum" -} diff --git a/contracts/feature-tests/scenario-tester/interaction/testnet.snippets.sh b/contracts/feature-tests/scenario-tester/interaction/testnet.snippets.sh deleted file mode 100644 index 06bb13e3ba..0000000000 --- a/contracts/feature-tests/scenario-tester/interaction/testnet.snippets.sh +++ /dev/null @@ -1,26 +0,0 @@ -ALICE="${USERS}/alice.pem" -ADDRESS=$(mxpy data load --key=address-testnet) -DEPLOY_TRANSACTION=$(mxpy data load --key=deployTransaction-testnet) -PROXY=https://testnet-api.multiversx.com - -deploy() { - mxpy --verbose contract deploy --project=${PROJECT} --recall-nonce --pem=${ALICE} --gas-limit=50000000 --arguments 0 --send --outfile="deploy-testnet.interaction.json" --proxy=${PROXY} --chain=T || return - - TRANSACTION=$(mxpy data parse --file="deploy-testnet.interaction.json" --expression="data['emittedTransactionHash']") - ADDRESS=$(mxpy data parse --file="deploy-testnet.interaction.json" --expression="data['contractAddress']") - - mxpy data store --key=address-testnet --value=${ADDRESS} - mxpy data store --key=deployTransaction-testnet --value=${TRANSACTION} - - echo "" - echo "Smart contract address: ${ADDRESS}" -} - -add() { - read -p "Enter number: " NUMBER - mxpy --verbose contract call ${ADDRESS} --recall-nonce --pem=${ALICE} --gas-limit=5000000 --function="add" --arguments ${NUMBER} --send --proxy=${PROXY} --chain=T -} - -getSum() { - mxpy --verbose contract query ${ADDRESS} --function="getSum" --proxy=${PROXY} -} diff --git a/contracts/feature-tests/scenario-tester/meta/Cargo.toml b/contracts/feature-tests/scenario-tester/meta/Cargo.toml index 5962cb3d93..a4c669e5f1 100644 --- a/contracts/feature-tests/scenario-tester/meta/Cargo.toml +++ b/contracts/feature-tests/scenario-tester/meta/Cargo.toml @@ -4,7 +4,7 @@ version = "0.0.0" edition = "2021" publish = false -[dependencies.scenario_tester] +[dependencies.scenario-tester] path = ".." [dependencies.multiversx-sc-meta] diff --git a/contracts/feature-tests/scenario-tester/mxsc-template.toml b/contracts/feature-tests/scenario-tester/mxsc-template.toml deleted file mode 100644 index f7a17bd7a8..0000000000 --- a/contracts/feature-tests/scenario-tester/mxsc-template.toml +++ /dev/null @@ -1,24 +0,0 @@ -name = "scenario_tester" -contract_trait = "Adder" -src_file = "adder.rs" -rename_pairs = [ - [ - "blockchain.set_current_dir_from_workspace(\"contracts/examples/adder\");", - "// blockchain.set_current_dir_from_workspace(\"relative path to your workspace, if applicable\");", - ], -] -files_include = [ - "meta", - "scenarios", - "src", - "tests", - "Cargo.toml", - "README.md", - "sc-config.toml", - "multiversx.json", - "interact/Cargo.toml", - "interact/config.toml", - "interact/.gitignore", - "interact/src", -] -has_interactor = true diff --git a/contracts/feature-tests/scenario-tester/sc-config.toml b/contracts/feature-tests/scenario-tester/sc-config.toml index b56f82b429..0a83428cbd 100644 --- a/contracts/feature-tests/scenario-tester/sc-config.toml +++ b/contracts/feature-tests/scenario-tester/sc-config.toml @@ -1,4 +1,4 @@ [settings] [[proxy]] -path = "src/adder_proxy.rs" +path = "src/st_proxy.rs" diff --git a/contracts/feature-tests/scenario-tester/scenarios/interactor_trace.scen.json b/contracts/feature-tests/scenario-tester/scenarios/interactor_trace.scen.json index e0824697fe..07fd7f68ca 100644 --- a/contracts/feature-tests/scenario-tester/scenarios/interactor_trace.scen.json +++ b/contracts/feature-tests/scenario-tester/scenarios/interactor_trace.scen.json @@ -29,7 +29,7 @@ "step": "scDeploy", "tx": { "from": "0xe32afedc904fe1939746ad973beb383563cf63642ba669b3040f9b9428a5ed60", - "contractCode": "mxsc:../output/adder.mxsc.json", + "contractCode": "mxsc:../output/scenario-tester.mxsc.json", "arguments": [ "0x00" ], diff --git a/contracts/feature-tests/scenario-tester/scenarios/adder.scen.json b/contracts/feature-tests/scenario-tester/scenarios/st-adder.scen.json similarity index 94% rename from contracts/feature-tests/scenario-tester/scenarios/adder.scen.json rename to contracts/feature-tests/scenario-tester/scenarios/st-adder.scen.json index 08ecb79e3f..94ba305ed2 100644 --- a/contracts/feature-tests/scenario-tester/scenarios/adder.scen.json +++ b/contracts/feature-tests/scenario-tester/scenarios/st-adder.scen.json @@ -24,7 +24,7 @@ "id": "1", "tx": { "from": "address:owner", - "contractCode": "mxsc:../output/adder.mxsc.json", + "contractCode": "mxsc:../output/scenario-tester.mxsc.json", "arguments": [ "5" ], @@ -91,7 +91,7 @@ "storage": { "str:sum": "8" }, - "code": "mxsc:../output/adder.mxsc.json" + "code": "mxsc:../output/scenario-tester.mxsc.json" } } } diff --git a/contracts/feature-tests/scenario-tester/tests/adder_blackbox_chained_test.rs b/contracts/feature-tests/scenario-tester/tests/adder_blackbox_chained_test.rs deleted file mode 100644 index b10b3e3a54..0000000000 --- a/contracts/feature-tests/scenario-tester/tests/adder_blackbox_chained_test.rs +++ /dev/null @@ -1,64 +0,0 @@ -use multiversx_sc_scenario::imports::*; -use num_bigint::BigUint; - -use adder::*; - -const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; - -fn world() -> ScenarioWorld { - let mut blockchain = ScenarioWorld::new(); - blockchain.set_current_dir_from_workspace("contracts/examples/adder"); - - blockchain.register_contract(ADDER_PATH_EXPR, adder::ContractBuilder); - blockchain -} - -#[test] -fn adder_blackbox_chained() { - let mut world = world(); - let owner_address = "address:owner"; - let adder_contract = ContractInfo::>::new("sc:adder"); - - world - .start_trace() - .set_state_step( - SetStateStep::new() - .put_account(owner_address, Account::new().nonce(1)) - .new_address(owner_address, 1, "sc:adder"), - ) - .chain_deploy(|tx| { - tx.from(AddressExpr("owner")) - .typed(adder_proxy::AdderProxy) - .init(5u32) - .code(MxscExpr("output/adder.mxsc.json")) - .with_result(WithNewAddress::new(|new_address| { - assert_eq!(new_address.to_address(), adder_contract.to_address()); - })) - }) - .chain_query(|tx| { - tx.to(ScExpr("adder")) - .typed(adder_proxy::AdderProxy) - .sum() - .with_result(WithResultConv::new(|value: BigUint| { - assert_eq!(value, BigUint::from(5u32)); - })) - }) - .chain_call(|tx| { - tx.from(AddressExpr("owner")) - .to(ScExpr("adder")) - .typed(adder_proxy::AdderProxy) - .add(3u32) - .with_result(WithRawTxResponse(|response| { - assert!(response.tx_error.is_success()); - })) - }) - .check_state_step( - CheckStateStep::new() - .put_account(owner_address, CheckAccount::new()) - .put_account( - &adder_contract, - CheckAccount::new().check_storage("str:sum", "8"), - ), - ) - .write_scenario_trace("trace2.scen.json"); -} diff --git a/contracts/feature-tests/scenario-tester/tests/adder_blackbox_legacy_proxy_test.rs b/contracts/feature-tests/scenario-tester/tests/adder_blackbox_legacy_proxy_test.rs deleted file mode 100644 index e3a2540386..0000000000 --- a/contracts/feature-tests/scenario-tester/tests/adder_blackbox_legacy_proxy_test.rs +++ /dev/null @@ -1,77 +0,0 @@ -use multiversx_sc_scenario::imports::*; -use num_bigint::BigUint; - -use adder::*; - -const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; - -const OWNER: AddressExpr = AddressExpr("owner"); -const CODE_EXPR: MxscExpr = MxscExpr("output/adder.mxsc.json"); - -fn world() -> ScenarioWorld { - let mut blockchain = ScenarioWorld::new(); - blockchain.set_current_dir_from_workspace("contracts/examples/adder"); - - blockchain.register_contract(ADDER_PATH_EXPR, adder::ContractBuilder); - blockchain -} - -#[test] -fn adder_blackbox_legacy_proxy() { - let mut world = world(); - let owner_address = "address:owner"; - let mut adder_contract = ContractInfo::>::new("sc:adder"); - - world.start_trace(); - - world.set_state_step( - SetStateStep::new() - .put_account(owner_address, Account::new().nonce(1)) - .new_address(owner_address, 1, "sc:adder"), - ); - - world - .tx() - .from(OWNER) - .typed(adder_proxy::AdderProxy) - .init(5u32) - .code(CODE_EXPR) - .with_result(WithNewAddress::new(|new_address| { - assert_eq!(new_address.to_address(), adder_contract.to_address()); - })) - .run(); - - world.sc_query( - ScQueryStep::new() - .to(&adder_contract) - .call(adder_contract.sum()) - .expect_value(SingleValue::from(BigUint::from(5u32))), - ); - - let value = world - .query() - .call(adder_contract.sum()) - .returns(ReturnsResultConv::>::new()) - .run(); - assert_eq!(value.into(), BigUint::from(5u32)); - - world - .tx() - .from(OWNER) - .call(adder_contract.add(3u32)) - .with_result(WithRawTxResponse(|response| { - assert!(response.tx_error.is_success()); - })) - .run(); - - world.check_state_step( - CheckStateStep::new() - .put_account(owner_address, CheckAccount::new()) - .put_account( - &adder_contract, - CheckAccount::new().check_storage("str:sum", "8"), - ), - ); - - world.write_scenario_trace("trace1.scen.json"); -} diff --git a/contracts/feature-tests/scenario-tester/tests/adder_scenario_rs_test.rs b/contracts/feature-tests/scenario-tester/tests/adder_scenario_rs_test.rs deleted file mode 100644 index c467100633..0000000000 --- a/contracts/feature-tests/scenario-tester/tests/adder_scenario_rs_test.rs +++ /dev/null @@ -1,19 +0,0 @@ -use multiversx_sc_scenario::*; - -fn world() -> ScenarioWorld { - let mut blockchain = ScenarioWorld::new(); - blockchain.set_current_dir_from_workspace("contracts/examples/adder"); - - blockchain.register_contract("mxsc:output/adder.mxsc.json", adder::ContractBuilder); - blockchain -} - -#[test] -fn adder_rs() { - world().run("scenarios/adder.scen.json"); -} - -#[test] -fn interactor_trace_rs() { - world().run("scenarios/interactor_trace.scen.json"); -} diff --git a/contracts/feature-tests/scenario-tester/tests/adder_unit_test.rs b/contracts/feature-tests/scenario-tester/tests/adder_unit_test.rs deleted file mode 100644 index 3839382866..0000000000 --- a/contracts/feature-tests/scenario-tester/tests/adder_unit_test.rs +++ /dev/null @@ -1,17 +0,0 @@ -use adder::*; -use multiversx_sc::types::BigUint; -use multiversx_sc_scenario::api::SingleTxApi; - -#[test] -fn adder_unit_test() { - let adder = adder::contract_obj::(); - - adder.init(BigUint::from(5u32)); - assert_eq!(BigUint::from(5u32), adder.sum().get()); - - adder.add(BigUint::from(7u32)); - assert_eq!(BigUint::from(12u32), adder.sum().get()); - - adder.add(BigUint::from(1u32)); - assert_eq!(BigUint::from(13u32), adder.sum().get()); -} diff --git a/contracts/examples/adder/tests/adder_blackbox_chained_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs similarity index 66% rename from contracts/examples/adder/tests/adder_blackbox_chained_test.rs rename to contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs index b10b3e3a54..165e4c62f3 100644 --- a/contracts/examples/adder/tests/adder_blackbox_chained_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs @@ -1,23 +1,23 @@ use multiversx_sc_scenario::imports::*; use num_bigint::BigUint; -use adder::*; +use scenario_tester::*; -const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; +const ADDER_PATH_EXPR: &str = "mxsc:output/scenario-tester.mxsc.json"; fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); - blockchain.set_current_dir_from_workspace("contracts/examples/adder"); + blockchain.set_current_dir_from_workspace("contracts/feature-tests/scenario-tester"); - blockchain.register_contract(ADDER_PATH_EXPR, adder::ContractBuilder); + blockchain.register_contract(ADDER_PATH_EXPR, scenario_tester::ContractBuilder); blockchain } #[test] -fn adder_blackbox_chained() { +fn st_blackbox_chained() { let mut world = world(); let owner_address = "address:owner"; - let adder_contract = ContractInfo::>::new("sc:adder"); + let st_contract = ContractInfo::>::new("sc:adder"); world .start_trace() @@ -28,16 +28,16 @@ fn adder_blackbox_chained() { ) .chain_deploy(|tx| { tx.from(AddressExpr("owner")) - .typed(adder_proxy::AdderProxy) + .typed(scenario_tester_proxy::ScenarioTesterProxy) .init(5u32) - .code(MxscExpr("output/adder.mxsc.json")) + .code(MxscExpr("output/scenario-tester.mxsc.json")) .with_result(WithNewAddress::new(|new_address| { - assert_eq!(new_address.to_address(), adder_contract.to_address()); + assert_eq!(new_address.to_address(), st_contract.to_address()); })) }) .chain_query(|tx| { tx.to(ScExpr("adder")) - .typed(adder_proxy::AdderProxy) + .typed(scenario_tester_proxy::ScenarioTesterProxy) .sum() .with_result(WithResultConv::new(|value: BigUint| { assert_eq!(value, BigUint::from(5u32)); @@ -46,7 +46,7 @@ fn adder_blackbox_chained() { .chain_call(|tx| { tx.from(AddressExpr("owner")) .to(ScExpr("adder")) - .typed(adder_proxy::AdderProxy) + .typed(scenario_tester_proxy::ScenarioTesterProxy) .add(3u32) .with_result(WithRawTxResponse(|response| { assert!(response.tx_error.is_success()); @@ -56,7 +56,7 @@ fn adder_blackbox_chained() { CheckStateStep::new() .put_account(owner_address, CheckAccount::new()) .put_account( - &adder_contract, + &st_contract, CheckAccount::new().check_storage("str:sum", "8"), ), ) diff --git a/contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_legacy_proxy_test.rs similarity index 75% rename from contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs rename to contracts/feature-tests/scenario-tester/tests/st_blackbox_legacy_proxy_test.rs index e3a2540386..09e8e87c17 100644 --- a/contracts/examples/adder/tests/adder_blackbox_legacy_proxy_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_legacy_proxy_test.rs @@ -1,7 +1,7 @@ use multiversx_sc_scenario::imports::*; use num_bigint::BigUint; -use adder::*; +use scenario_tester::*; const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; @@ -12,15 +12,15 @@ fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); blockchain.set_current_dir_from_workspace("contracts/examples/adder"); - blockchain.register_contract(ADDER_PATH_EXPR, adder::ContractBuilder); + blockchain.register_contract(ADDER_PATH_EXPR, scenario_tester::ContractBuilder); blockchain } #[test] -fn adder_blackbox_legacy_proxy() { +fn st_blackbox_legacy_proxy() { let mut world = world(); let owner_address = "address:owner"; - let mut adder_contract = ContractInfo::>::new("sc:adder"); + let mut st_contract = ContractInfo::>::new("sc:adder"); world.start_trace(); @@ -33,24 +33,24 @@ fn adder_blackbox_legacy_proxy() { world .tx() .from(OWNER) - .typed(adder_proxy::AdderProxy) + .typed(scenario_tester_proxy::ScenarioTesterProxy) .init(5u32) .code(CODE_EXPR) .with_result(WithNewAddress::new(|new_address| { - assert_eq!(new_address.to_address(), adder_contract.to_address()); + assert_eq!(new_address.to_address(), st_contract.to_address()); })) .run(); world.sc_query( ScQueryStep::new() - .to(&adder_contract) - .call(adder_contract.sum()) + .to(&st_contract) + .call(st_contract.sum()) .expect_value(SingleValue::from(BigUint::from(5u32))), ); let value = world .query() - .call(adder_contract.sum()) + .call(st_contract.sum()) .returns(ReturnsResultConv::>::new()) .run(); assert_eq!(value.into(), BigUint::from(5u32)); @@ -58,7 +58,7 @@ fn adder_blackbox_legacy_proxy() { world .tx() .from(OWNER) - .call(adder_contract.add(3u32)) + .call(st_contract.add(3u32)) .with_result(WithRawTxResponse(|response| { assert!(response.tx_error.is_success()); })) @@ -68,7 +68,7 @@ fn adder_blackbox_legacy_proxy() { CheckStateStep::new() .put_account(owner_address, CheckAccount::new()) .put_account( - &adder_contract, + &st_contract, CheckAccount::new().check_storage("str:sum", "8"), ), ); diff --git a/contracts/feature-tests/scenario-tester/tests/adder_blackbox_raw_steps_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_raw_steps_test.rs similarity index 100% rename from contracts/feature-tests/scenario-tester/tests/adder_blackbox_raw_steps_test.rs rename to contracts/feature-tests/scenario-tester/tests/st_blackbox_raw_steps_test.rs diff --git a/contracts/feature-tests/scenario-tester/tests/adder_blackbox_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs similarity index 89% rename from contracts/feature-tests/scenario-tester/tests/adder_blackbox_test.rs rename to contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs index 9149a25e3b..b3eafe218b 100644 --- a/contracts/feature-tests/scenario-tester/tests/adder_blackbox_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs @@ -18,10 +18,10 @@ fn world() -> ScenarioWorld { } #[test] -fn adder_blackbox() { +fn st_blackbox() { let mut world = world(); let owner_address = "address:owner"; - let adder_contract = ContractInfo::>::new("sc:scenario-tester"); + let st_contract = ContractInfo::>::new("sc:scenario-tester"); world.start_trace(); @@ -40,7 +40,7 @@ fn adder_blackbox() { .returns(ReturnsNewAddress) .run(); - assert_eq!(new_address, adder_contract.to_address()); + assert_eq!(new_address, st_contract.to_address()); let value = world .query() @@ -63,7 +63,7 @@ fn adder_blackbox() { CheckStateStep::new() .put_account(owner_address, CheckAccount::new()) .put_account( - &adder_contract, + &st_contract, CheckAccount::new().check_storage("str:sum", "6"), ), ); diff --git a/contracts/feature-tests/scenario-tester/tests/adder_blackbox_upgrade_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_upgrade_test.rs similarity index 74% rename from contracts/feature-tests/scenario-tester/tests/adder_blackbox_upgrade_test.rs rename to contracts/feature-tests/scenario-tester/tests/st_blackbox_upgrade_test.rs index 5a38f7c5df..081f6037ba 100644 --- a/contracts/feature-tests/scenario-tester/tests/adder_blackbox_upgrade_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_upgrade_test.rs @@ -1,19 +1,19 @@ use multiversx_sc_scenario::imports::*; -const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; +const ADDER_PATH_EXPR: &str = "mxsc:output/scenario-tester.mxsc.json"; fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); - blockchain.set_current_dir_from_workspace("contracts/examples/adder"); + blockchain.set_current_dir_from_workspace("contracts/feature-tests/scenario-tester"); - blockchain.register_contract("mxsc:output/adder.mxsc.json", adder::ContractBuilder); + blockchain.register_contract("mxsc:output/scenario-tester.mxsc.json", scenario_tester::ContractBuilder); blockchain } #[test] -fn adder_blackbox_upgrade() { +fn st_blackbox_upgrade() { let mut world = world(); - let adder_code = world.code_expression(ADDER_PATH_EXPR); + let st_code = world.code_expression(ADDER_PATH_EXPR); world .set_state_step( @@ -24,7 +24,7 @@ fn adder_blackbox_upgrade() { .sc_deploy( ScDeployStep::new() .from("address:owner") - .code(&adder_code) + .code(&st_code) .argument("5") .gas_limit("5,000,000") .expect(TxExpect::ok().no_result()), @@ -34,7 +34,7 @@ fn adder_blackbox_upgrade() { .from("address:owner") .to("sc:adder") .function("upgradeContract") - .argument(&adder_code) + .argument(&st_code) .argument("0x0502") // codeMetadata .argument("8") // contract argument .expect(TxExpect::ok().no_result()), diff --git a/contracts/feature-tests/scenario-tester/tests/adder_scenario_go_test.rs b/contracts/feature-tests/scenario-tester/tests/st_scenario_go_test.rs similarity index 74% rename from contracts/feature-tests/scenario-tester/tests/adder_scenario_go_test.rs rename to contracts/feature-tests/scenario-tester/tests/st_scenario_go_test.rs index bed4ae016d..a62c9ea10f 100644 --- a/contracts/feature-tests/scenario-tester/tests/adder_scenario_go_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_scenario_go_test.rs @@ -5,11 +5,11 @@ fn world() -> ScenarioWorld { } #[test] -fn adder_go() { - world().run("scenarios/adder.scen.json"); +fn interactor_trace_go() { + world().run("scenarios/interactor_trace.scen.json"); } #[test] -fn interactor_trace_go() { - world().run("scenarios/interactor_trace.scen.json"); +fn st_adder_go() { + world().run("scenarios/st-adder.scen.json"); } diff --git a/contracts/feature-tests/scenario-tester/tests/st_scenario_rs_test.rs b/contracts/feature-tests/scenario-tester/tests/st_scenario_rs_test.rs new file mode 100644 index 0000000000..c92fdaa1e0 --- /dev/null +++ b/contracts/feature-tests/scenario-tester/tests/st_scenario_rs_test.rs @@ -0,0 +1,19 @@ +use multiversx_sc_scenario::*; + +fn world() -> ScenarioWorld { + let mut blockchain = ScenarioWorld::new(); + blockchain.set_current_dir_from_workspace("contracts/feature-tests/scenario-tester"); + + blockchain.register_contract("mxsc:output/scenario-tester.mxsc.json", scenario_tester::ContractBuilder); + blockchain +} + +#[test] +fn interactor_trace_rs() { + world().run("scenarios/interactor_trace.scen.json"); +} + +#[test] +fn st_adder_rs() { + world().run("scenarios/st-adder.scen.json"); +} diff --git a/contracts/feature-tests/scenario-tester/tests/st_unit_test.rs b/contracts/feature-tests/scenario-tester/tests/st_unit_test.rs new file mode 100644 index 0000000000..2c099f53e9 --- /dev/null +++ b/contracts/feature-tests/scenario-tester/tests/st_unit_test.rs @@ -0,0 +1,17 @@ +use scenario_tester::*; +use multiversx_sc::types::BigUint; +use multiversx_sc_scenario::api::SingleTxApi; + +#[test] +fn st_unit_test() { + let contract = scenario_tester::contract_obj::(); + + contract.init(BigUint::from(5u32)); + assert_eq!(BigUint::from(5u32), contract.sum().get()); + + contract.add(BigUint::from(7u32)); + assert_eq!(BigUint::from(12u32), contract.sum().get()); + + contract.add(BigUint::from(1u32)); + assert_eq!(BigUint::from(13u32), contract.sum().get()); +} diff --git a/contracts/feature-tests/scenario-tester/tests/adder_whitebox_test.rs b/contracts/feature-tests/scenario-tester/tests/st_whitebox_test.rs similarity index 61% rename from contracts/feature-tests/scenario-tester/tests/adder_whitebox_test.rs rename to contracts/feature-tests/scenario-tester/tests/st_whitebox_test.rs index 50ad95faa6..c7fddee6cc 100644 --- a/contracts/feature-tests/scenario-tester/tests/adder_whitebox_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_whitebox_test.rs @@ -1,21 +1,21 @@ -use adder::*; +use scenario_tester::*; use multiversx_sc_scenario::imports::*; -const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; +const ADDER_PATH_EXPR: &str = "mxsc:output/scenario-tester.mxsc.json"; fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); - blockchain.set_current_dir_from_workspace("contracts/examples/adder"); + blockchain.set_current_dir_from_workspace("contracts/feature-tests/scenario-tester"); - blockchain.register_contract("mxsc:output/adder.mxsc.json", adder::ContractBuilder); + blockchain.register_contract("mxsc:output/scenario-tester.mxsc.json", scenario_tester::ContractBuilder); blockchain } #[test] -fn adder_whitebox() { +fn st_whitebox() { let mut world = world(); - let adder_whitebox = WhiteboxContract::new("sc:adder", adder::contract_obj); - let adder_code = world.code_expression(ADDER_PATH_EXPR); + let st_whitebox = WhiteboxContract::new("sc:adder", scenario_tester::contract_obj); + let st_code = world.code_expression(ADDER_PATH_EXPR); world .set_state_step( @@ -24,18 +24,18 @@ fn adder_whitebox() { .new_address("address:owner", 1, "sc:adder"), ) .whitebox_deploy( - &adder_whitebox, - ScDeployStep::new().from("address:owner").code(adder_code), + &st_whitebox, + ScDeployStep::new().from("address:owner").code(st_code), |sc| { sc.init(5u32.into()); }, ) - .whitebox_query(&adder_whitebox, |sc| { + .whitebox_query(&st_whitebox, |sc| { let sum_value = sc.sum(); assert_eq!(sum_value.get(), 5u32); }) .whitebox_call( - &adder_whitebox, + &st_whitebox, ScCallStep::new().from("address:owner"), |sc| sc.add(3u32.into()), ) diff --git a/contracts/feature-tests/scenario-tester/wasm/Cargo.lock b/contracts/feature-tests/scenario-tester/wasm/Cargo.lock index 9bc1e41879..dd7e298064 100755 --- a/contracts/feature-tests/scenario-tester/wasm/Cargo.lock +++ b/contracts/feature-tests/scenario-tester/wasm/Cargo.lock @@ -132,18 +132,18 @@ dependencies = [ ] [[package]] -name = "scenario_tester" +name = "scenario-tester" version = "0.0.0" dependencies = [ "multiversx-sc", ] [[package]] -name = "scenario_tester-wasm" +name = "scenario-tester-wasm" version = "0.0.0" dependencies = [ "multiversx-sc-wasm-adapter", - "scenario_tester", + "scenario-tester", ] [[package]] diff --git a/contracts/feature-tests/scenario-tester/wasm/Cargo.toml b/contracts/feature-tests/scenario-tester/wasm/Cargo.toml index 6de4181a2b..1baaa13b44 100644 --- a/contracts/feature-tests/scenario-tester/wasm/Cargo.toml +++ b/contracts/feature-tests/scenario-tester/wasm/Cargo.toml @@ -5,7 +5,7 @@ # ########################################## [package] -name = "scenario_tester-wasm" +name = "scenario-tester-wasm" version = "0.0.0" edition = "2021" publish = false @@ -21,7 +21,7 @@ debug = false panic = "abort" overflow-checks = false -[dependencies.scenario_tester] +[dependencies.scenario-tester] path = ".." [dependencies.multiversx-sc-wasm-adapter] From 5b0a7009c97b47975386be0886a06157c569eb40 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 11 Apr 2024 20:29:10 +0300 Subject: [PATCH 325/461] more refactor in retrieve_account_as_scenario_set_state --- .../scenario/src/standalone/account_tool.rs | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/framework/scenario/src/standalone/account_tool.rs b/framework/scenario/src/standalone/account_tool.rs index 2e31b01b35..fde5adf87f 100644 --- a/framework/scenario/src/standalone/account_tool.rs +++ b/framework/scenario/src/standalone/account_tool.rs @@ -22,28 +22,35 @@ pub async fn print_account_as_scenario_set_state( pub async fn retrieve_account_as_scenario_set_state( api: &CommunicationProxy, - addr: &Bech32Address, + address: &Bech32Address, ) -> SetStateStep { - let address = Address::from_bech32_string(addr.to_bech32_str()).unwrap(); - let account = api.get_account(&address).await.unwrap(); + let sdk_address = Address::from_bech32_string(address.to_bech32_str()).unwrap(); + let sdk_account = api.get_account(&sdk_address).await.unwrap(); let account_esdt = api - .get_account_esdt_tokens(&address) + .get_account_esdt_tokens(&sdk_address) .await - .unwrap_or_else(|err| panic!("failed to retrieve ESDT tokens for address {addr}: {err}")); + .unwrap_or_else(|err| { + panic!("failed to retrieve ESDT tokens for address {address}: {err}") + }); let account_esdt_roles = api - .get_account_esdt_roles(&address) + .get_account_esdt_roles(&sdk_address) .await - .unwrap_or_else(|err| panic!("failed to retrieve ESDT roles for address {addr}: {err}")); + .unwrap_or_else(|err| panic!("failed to retrieve ESDT roles for address {address}: {err}")); let account_storage = api - .get_account_storage_keys(&address) + .get_account_storage_keys(&sdk_address) .await - .unwrap_or_else(|err| panic!("failed to retrieve storage for address {addr}: {err}")); + .unwrap_or_else(|err| panic!("failed to retrieve storage for address {address}: {err}")); - let account_state = set_account(account, account_storage, account_esdt, account_esdt_roles); + let account_state = set_account( + sdk_account, + account_storage, + account_esdt, + account_esdt_roles, + ); let set_state_step = SetStateStep::new(); - set_state_step.put_account(key_hex(&address.to_bytes()), account_state) + set_state_step.put_account(address, account_state) } pub fn build_scenario(set_state: SetStateStep) -> Scenario { From af63bee485b9e86bbdc1ed001ec3f0c06373ae3b Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 11 Apr 2024 20:48:29 +0300 Subject: [PATCH 326/461] retrieve accounts - more minor refactoring --- .../interact/src/multisig_interact.rs | 2 +- .../interact/src/bf_interact.rs | 4 +++- .../scenario/src/standalone/account_tool.rs | 19 +++++++++---------- framework/scenario/src/standalone/mod.rs | 2 +- framework/snippets/src/interactor.rs | 7 ++----- 5 files changed, 16 insertions(+), 18 deletions(-) diff --git a/contracts/examples/multisig/interact/src/multisig_interact.rs b/contracts/examples/multisig/interact/src/multisig_interact.rs index b8f1ec2be4..eaef5d8448 100644 --- a/contracts/examples/multisig/interact/src/multisig_interact.rs +++ b/contracts/examples/multisig/interact/src/multisig_interact.rs @@ -120,7 +120,7 @@ impl MultisigInteract { bech32::encode(board_member_address) ); self.interactor - .retrieve_account(&Bech32Address::from(board_member_address)) + .retrieve_account(&board_member_address.into()) .await; } diff --git a/contracts/feature-tests/basic-features/interact/src/bf_interact.rs b/contracts/feature-tests/basic-features/interact/src/bf_interact.rs index 8a36a12749..acc8b90715 100644 --- a/contracts/feature-tests/basic-features/interact/src/bf_interact.rs +++ b/contracts/feature-tests/basic-features/interact/src/bf_interact.rs @@ -73,7 +73,9 @@ impl BasicFeaturesInteract { async fn set_state(&mut self) { println!("wallet address: {}", bech32::encode(&self.wallet_address)); - self.interactor.retrieve_account(&Bech32Address::from(&self.wallet_address)).await; + self.interactor + .retrieve_account(&Bech32Address::from(&self.wallet_address)) + .await; } async fn deploy(&mut self) { diff --git a/framework/scenario/src/standalone/account_tool.rs b/framework/scenario/src/standalone/account_tool.rs index fde5adf87f..76ecd693a5 100644 --- a/framework/scenario/src/standalone/account_tool.rs +++ b/framework/scenario/src/standalone/account_tool.rs @@ -4,7 +4,6 @@ use crate::{ }; use multiversx_chain_scenario_format::interpret_trait::IntoRaw; -use multiversx_chain_vm::display_util::key_hex; use multiversx_sdk::{ blockchain::CommunicationProxy, data::{address::Address, esdt::EsdtBalance}, @@ -20,6 +19,15 @@ pub async fn print_account_as_scenario_set_state( println!("{}", scenario.into_raw().to_json_string()); } +fn build_scenario(set_state: SetStateStep) -> Scenario { + Scenario { + name: None, + comment: None, + check_gas: None, + steps: vec![crate::scenario_model::Step::SetState(set_state)], + } +} + pub async fn retrieve_account_as_scenario_set_state( api: &CommunicationProxy, address: &Bech32Address, @@ -53,15 +61,6 @@ pub async fn retrieve_account_as_scenario_set_state( set_state_step.put_account(address, account_state) } -pub fn build_scenario(set_state: SetStateStep) -> Scenario { - Scenario { - name: None, - comment: None, - check_gas: None, - steps: vec![crate::scenario_model::Step::SetState(set_state)], - } -} - pub fn set_account( account: multiversx_sdk::data::account::Account, account_storage: HashMap, diff --git a/framework/scenario/src/standalone/mod.rs b/framework/scenario/src/standalone/mod.rs index ce7559a948..84ecea3916 100644 --- a/framework/scenario/src/standalone/mod.rs +++ b/framework/scenario/src/standalone/mod.rs @@ -1,5 +1,5 @@ mod account_tool; mod scenario_cli; -pub use account_tool::{build_scenario, retrieve_account_as_scenario_set_state}; +pub use account_tool::retrieve_account_as_scenario_set_state; pub use scenario_cli::cli_main; diff --git a/framework/snippets/src/interactor.rs b/framework/snippets/src/interactor.rs index 85d6a4503c..35d53a4a86 100644 --- a/framework/snippets/src/interactor.rs +++ b/framework/snippets/src/interactor.rs @@ -3,7 +3,6 @@ use multiversx_sc_scenario::{ mandos_system::{run_list::ScenarioRunnerList, run_trace::ScenarioTraceFile}, multiversx_sc::types::Address, scenario_model::AddressValue, - standalone::build_scenario, }; use multiversx_sdk::{ blockchain::CommunicationProxy, @@ -72,10 +71,8 @@ impl Interactor { pub async fn retrieve_account(&mut self, wallet_address: &Bech32Address) { let set_state = retrieve_account_as_scenario_set_state(&self.proxy, wallet_address).await; - let scenario = build_scenario(set_state); - - self.pre_runners.run_scenario(&scenario); - self.post_runners.run_scenario(&scenario); + self.pre_runners.run_set_state_step(&set_state); + self.post_runners.run_set_state_step(&set_state); } } From b9d05bd6b7a8c4b48734a9594da234b70f70e84f Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Fri, 12 Apr 2024 11:12:03 +0200 Subject: [PATCH 327/461] impl for check state builder, tests and fmt --- .../scenario-tester/tests/st_blackbox_test.rs | 17 +- .../tests/st_blackbox_upgrade_test.rs | 5 +- .../tests/st_scenario_rs_test.rs | 5 +- .../scenario-tester/tests/st_unit_test.rs | 2 +- .../scenario-tester/tests/st_whitebox_test.rs | 7 +- .../src/facade/world_tx/scenario_env_query.rs | 227 +++++++++++++++++- 6 files changed, 246 insertions(+), 17 deletions(-) diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs index b3eafe218b..bac228f0be 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs @@ -27,7 +27,7 @@ fn st_blackbox() { world.set_state_step( SetStateStep::new() - .put_account(owner_address, Account::new().nonce(1)) + .put_account(owner_address, Account::new().nonce(1).balance("100")) .new_address(owner_address, 1, "sc:scenario-tester"), ); @@ -59,14 +59,13 @@ fn st_blackbox() { .add(1u32) .run(); - world.check_state_step( - CheckStateStep::new() - .put_account(owner_address, CheckAccount::new()) - .put_account( - &st_contract, - CheckAccount::new().check_storage("str:sum", "6"), - ), - ); + world + .check_state_account(owner_address) + .nonce("3") + .balance("100") + .check_state_account(st_contract) + .check_storage("str:sum", "6") + .commit(); world.write_scenario_trace("trace1.scen.json"); } diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_upgrade_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_upgrade_test.rs index 081f6037ba..786fea9725 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_upgrade_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_upgrade_test.rs @@ -6,7 +6,10 @@ fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); blockchain.set_current_dir_from_workspace("contracts/feature-tests/scenario-tester"); - blockchain.register_contract("mxsc:output/scenario-tester.mxsc.json", scenario_tester::ContractBuilder); + blockchain.register_contract( + "mxsc:output/scenario-tester.mxsc.json", + scenario_tester::ContractBuilder, + ); blockchain } diff --git a/contracts/feature-tests/scenario-tester/tests/st_scenario_rs_test.rs b/contracts/feature-tests/scenario-tester/tests/st_scenario_rs_test.rs index c92fdaa1e0..32f289733d 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_scenario_rs_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_scenario_rs_test.rs @@ -4,7 +4,10 @@ fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); blockchain.set_current_dir_from_workspace("contracts/feature-tests/scenario-tester"); - blockchain.register_contract("mxsc:output/scenario-tester.mxsc.json", scenario_tester::ContractBuilder); + blockchain.register_contract( + "mxsc:output/scenario-tester.mxsc.json", + scenario_tester::ContractBuilder, + ); blockchain } diff --git a/contracts/feature-tests/scenario-tester/tests/st_unit_test.rs b/contracts/feature-tests/scenario-tester/tests/st_unit_test.rs index 2c099f53e9..e9b418dfad 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_unit_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_unit_test.rs @@ -1,6 +1,6 @@ -use scenario_tester::*; use multiversx_sc::types::BigUint; use multiversx_sc_scenario::api::SingleTxApi; +use scenario_tester::*; #[test] fn st_unit_test() { diff --git a/contracts/feature-tests/scenario-tester/tests/st_whitebox_test.rs b/contracts/feature-tests/scenario-tester/tests/st_whitebox_test.rs index c7fddee6cc..072292ed91 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_whitebox_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_whitebox_test.rs @@ -1,5 +1,5 @@ -use scenario_tester::*; use multiversx_sc_scenario::imports::*; +use scenario_tester::*; const ADDER_PATH_EXPR: &str = "mxsc:output/scenario-tester.mxsc.json"; @@ -7,7 +7,10 @@ fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); blockchain.set_current_dir_from_workspace("contracts/feature-tests/scenario-tester"); - blockchain.register_contract("mxsc:output/scenario-tester.mxsc.json", scenario_tester::ContractBuilder); + blockchain.register_contract( + "mxsc:output/scenario-tester.mxsc.json", + scenario_tester::ContractBuilder, + ); blockchain } diff --git a/framework/scenario/src/facade/world_tx/scenario_env_query.rs b/framework/scenario/src/facade/world_tx/scenario_env_query.rs index 08246b0f81..387ad0f444 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_query.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_query.rs @@ -1,6 +1,12 @@ -use std::path::PathBuf; +use std::{ + collections::{btree_map::Entry, BTreeMap}, + path::PathBuf, +}; +use multiversx_chain_scenario_format::interpret_trait::{InterpretableFrom, InterpreterContext}; use multiversx_sc::{ + codec::test_util::top_encode_to_vec_u8_or_panic, + proxy_imports::TopEncode, tuple_util::NestedTupleFlatten, types::{ AnnotatedValue, FunctionCall, ManagedAddress, ManagedBuffer, RHListExec, Tx, TxBaseWithEnv, @@ -10,8 +16,12 @@ use multiversx_sc::{ use crate::{ api::StaticApi, - scenario::tx_to_step::TxToQueryStep, - scenario_model::{TxExpect, TxResponse}, + scenario::{tx_to_step::TxToQueryStep, ScenarioRunner}, + scenario_model::{ + AddressKey, BigUintValue, BytesKey, BytesValue, CheckAccount, CheckEsdt, CheckEsdtData, + CheckEsdtInstances, CheckEsdtMap, CheckEsdtMapContents, CheckStateStep, CheckStorage, + CheckStorageDetails, CheckValue, TxExpect, TxResponse, U64Value, + }, ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, ScenarioWorld, }; @@ -83,4 +93,215 @@ impl ScenarioWorld { step_wrapper.process_result(); self } + + pub fn check_state_account(&mut self, address: A) -> CheckStateBuilder<'_> + where + AddressKey: From, + { + CheckStateBuilder::new(self, address.into()) + } +} + +pub struct CheckStateBuilder<'w> { + world: &'w mut ScenarioWorld, + check_state_step: CheckStateStep, + current_account: CheckAccount, + current_address: AddressKey, +} + +impl<'w> CheckStateBuilder<'w> { + pub(crate) fn new(world: &'w mut ScenarioWorld, address: AddressKey) -> CheckStateBuilder<'w> { + let mut builder = CheckStateBuilder { + world, + check_state_step: CheckStateStep::new(), + current_account: CheckAccount::new(), + current_address: AddressKey::default(), + }; + builder.reset_account(address); + builder + } + + /// Starts building of a new account. + pub fn check_state_account(mut self, address_expr: A) -> Self + where + AddressKey: From, + { + self.add_current_acount(); + self.reset_account(address_expr.into()); + self + } + + fn add_current_acount(&mut self) { + if let Entry::Vacant(entry) = self + .check_state_step + .accounts + .accounts + .entry(core::mem::take(&mut self.current_address)) + { + entry.insert(core::mem::take(&mut self.current_account)); + }; + } + + fn reset_account(&mut self, address: AddressKey) { + self.current_address = address; + self.current_account = CheckAccount::default(); + } + + /// Finished and sets all account in the blockchain mock. + fn commit_accounts(&mut self) { + self.add_current_acount(); + self.world.run_check_state_step(&self.check_state_step); + } + + /// Forces value drop and commit accounts. + pub fn commit(self) {} + + pub fn nonce(mut self, nonce: V) -> Self + where + U64Value: InterpretableFrom, + { + self.current_account.nonce = CheckValue::Equal(U64Value::interpret_from( + nonce, + &InterpreterContext::default(), + )); + self + } + + pub fn balance(mut self, balance_expr: V) -> Self + where + BigUintValue: InterpretableFrom, + { + self.current_account.balance = CheckValue::Equal(BigUintValue::interpret_from( + balance_expr, + &InterpreterContext::default(), + )); + self + } + + pub fn code(mut self, code_expr: V) -> Self + where + BytesValue: InterpretableFrom, + { + self.current_account.code = CheckValue::Equal(BytesValue::interpret_from( + code_expr, + &InterpreterContext::default(), + )); + self + } + + pub fn code_metadata(mut self, code_metadata_expr: V) -> Self + where + BytesValue: InterpretableFrom, + { + self.current_account.code_metadata = CheckValue::Equal(BytesValue::interpret_from( + code_metadata_expr, + &InterpreterContext::default(), + )); + self + } + + pub fn esdt_balance(mut self, token_id_expr: K, balance_expr: V) -> Self + where + BytesKey: From, + BigUintValue: From, + { + let token_id = BytesKey::from(token_id_expr); + let balance = BigUintValue::from(balance_expr); + + match &mut self.current_account.esdt { + CheckEsdtMap::Unspecified | CheckEsdtMap::Star => { + let mut new_esdt_map = BTreeMap::new(); + let _ = new_esdt_map.insert(token_id, CheckEsdt::Short(balance)); + + let new_check_esdt_map = CheckEsdtMapContents { + contents: new_esdt_map, + other_esdts_allowed: true, + }; + + self.current_account.esdt = CheckEsdtMap::Equal(new_check_esdt_map); + }, + CheckEsdtMap::Equal(check_esdt_map) => { + if check_esdt_map.contents.contains_key(&token_id) { + let prev_entry = check_esdt_map.contents.get_mut(&token_id).unwrap(); + match prev_entry { + CheckEsdt::Short(prev_balance_check) => *prev_balance_check = balance, + CheckEsdt::Full(prev_esdt_check) => match prev_esdt_check.instances { + CheckEsdtInstances::Star => todo!(), + CheckEsdtInstances::Equal(_) => todo!(), + }, + } + } + }, + } + + self + } + + pub fn esdt_nft_balance_and_attributes( + mut self, + token_id_expr: K, + nonce_expr: N, + balance_expr: V, + attributes_expr: Option, + ) -> Self + where + BytesKey: From, + U64Value: From, + BigUintValue: From, + T: TopEncode, + { + let token_id = BytesKey::from(token_id_expr); + + if let CheckEsdtMap::Unspecified = &self.current_account.esdt { + let mut check_esdt = CheckEsdt::Full(CheckEsdtData::default()); + + if let Some(attributes_expr) = attributes_expr { + check_esdt.add_balance_and_attributes_check( + nonce_expr, + balance_expr, + top_encode_to_vec_u8_or_panic(&attributes_expr), + ); + } else { + check_esdt.add_balance_and_attributes_check( + nonce_expr, + balance_expr, + Vec::::new(), + ); + } + + let mut new_esdt_map = BTreeMap::new(); + let _ = new_esdt_map.insert(token_id, check_esdt); + + let new_check_esdt_map = CheckEsdtMapContents { + contents: new_esdt_map, + other_esdts_allowed: true, + }; + + self.current_account.esdt = CheckEsdtMap::Equal(new_check_esdt_map); + } + + self + } + + pub fn check_storage(mut self, key: &str, value: &str) -> Self { + let mut details = match &self.current_account.storage { + CheckStorage::Star => CheckStorageDetails::default(), + CheckStorage::Equal(details) => details.clone(), + }; + details.storages.insert( + BytesKey::interpret_from(key, &InterpreterContext::default()), + CheckValue::Equal(BytesValue::interpret_from( + value, + &InterpreterContext::default(), + )), + ); + self.current_account.storage = CheckStorage::Equal(details); + self + } +} + +impl<'w> Drop for CheckStateBuilder<'w> { + fn drop(&mut self) { + self.commit_accounts(); + } } From 5bfaca8cfca1c901a80d124506e716e263e8ecd2 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Fri, 12 Apr 2024 12:23:10 +0300 Subject: [PATCH 328/461] create expect error --- .../tests/pmf_blackbox_test.rs | 6 ++--- .../scenario/src/facade/result_handlers.rs | 6 ++--- .../{expect_message.rs => expect_error.rs} | 9 ++++--- .../facade/result_handlers/expect_status.rs | 27 ------------------- 4 files changed, 9 insertions(+), 39 deletions(-) rename framework/scenario/src/facade/result_handlers/{expect_message.rs => expect_error.rs} (76%) delete mode 100644 framework/scenario/src/facade/result_handlers/expect_status.rs diff --git a/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs b/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs index 3d13175c09..52671b8de3 100644 --- a/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs +++ b/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs @@ -73,8 +73,7 @@ fn tx_expect_error_test() { .to(SC_PMF) .typed(pmf_proxy::PanicMessageFeaturesProxy) .sc_panic() - .with_result(ExpectStatus(4)) - .with_result(ExpectMessage("sc_panic! test")) + .with_result(ExpectError("sc_panic! test", 4)) .run(); } @@ -87,7 +86,6 @@ fn query_expect_error_test() { .to(SC_PMF) .typed(pmf_proxy::PanicMessageFeaturesProxy) .sc_panic() - .with_result(ExpectStatus(4)) - .with_result(ExpectMessage("sc_panic! test")) + .with_result(ExpectError("sc_panic! test", 4)) .run(); } diff --git a/framework/scenario/src/facade/result_handlers.rs b/framework/scenario/src/facade/result_handlers.rs index 30823bf6f5..258c47ae62 100644 --- a/framework/scenario/src/facade/result_handlers.rs +++ b/framework/scenario/src/facade/result_handlers.rs @@ -1,13 +1,11 @@ -mod expect_message; -mod expect_status; +mod expect_error; mod returns_message; mod returns_new_bech32_address; mod returns_new_token_identifier; mod returns_status; mod with_tx_raw_response; -pub use expect_message::ExpectMessage; -pub use expect_status::ExpectStatus; +pub use expect_error::ExpectError; pub use returns_message::ReturnsMessage; pub use returns_new_bech32_address::ReturnsNewBech32Address; pub use returns_new_token_identifier::ReturnsNewTokenIdentifier; diff --git a/framework/scenario/src/facade/result_handlers/expect_message.rs b/framework/scenario/src/facade/result_handlers/expect_error.rs similarity index 76% rename from framework/scenario/src/facade/result_handlers/expect_message.rs rename to framework/scenario/src/facade/result_handlers/expect_error.rs index 4f46d05b59..39cb02342c 100644 --- a/framework/scenario/src/facade/result_handlers/expect_message.rs +++ b/framework/scenario/src/facade/result_handlers/expect_error.rs @@ -3,19 +3,19 @@ use multiversx_sc::types::{RHListItem, RHListItemExec, TxEnv}; use crate::scenario_model::{BytesValue, CheckValue, TxExpect, TxResponse}; -/// Verifies that transaction result message matches the given one. +/// Verifies that transaction result error matches the given one. /// /// Can only be used in tests and interactors, not available in contracts. -pub struct ExpectMessage<'a>(pub &'a str); +pub struct ExpectError<'a>(pub &'a str, pub u64); -impl<'a, Env, Original> RHListItem for ExpectMessage<'a> +impl<'a, Env, Original> RHListItem for ExpectError<'a> where Env: TxEnv, { type Returns = (); } -impl<'a, Env, Original> RHListItemExec for ExpectMessage<'a> +impl<'a, Env, Original> RHListItemExec for ExpectError<'a> where Env: TxEnv, { @@ -25,6 +25,7 @@ where original: ValueSubTree::Str(format!("str:{}", self.0)), }; prev.message = CheckValue::Equal(expect_message_expr); + prev.status = CheckValue::Equal(self.1.into()); prev } diff --git a/framework/scenario/src/facade/result_handlers/expect_status.rs b/framework/scenario/src/facade/result_handlers/expect_status.rs deleted file mode 100644 index 127982739b..0000000000 --- a/framework/scenario/src/facade/result_handlers/expect_status.rs +++ /dev/null @@ -1,27 +0,0 @@ -use multiversx_sc::types::{RHListItem, RHListItemExec, TxEnv}; - -use crate::scenario_model::{CheckValue, TxExpect, TxResponse}; - -/// Verifies that transaction result status matches the given one. -/// -/// Can only be used in tests and interactors, not available in contracts. -pub struct ExpectStatus(pub u64); - -impl RHListItem for ExpectStatus -where - Env: TxEnv, -{ - type Returns = (); -} - -impl RHListItemExec for ExpectStatus -where - Env: TxEnv, -{ - fn item_tx_expect(&self, mut prev: TxExpect) -> TxExpect { - prev.status = CheckValue::Equal(self.0.into()); - prev - } - - fn item_process_result(self, _: &TxResponse) -> Self::Returns {} -} From 1d476eb24771b5a4f8e9106ce91d311c664366a6 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Fri, 12 Apr 2024 11:39:50 +0200 Subject: [PATCH 329/461] set state builder impl, tests and fmt --- .../scenario-tester/tests/st_blackbox_test.rs | 57 ++++- .../tests/st_blackbox_upgrade_test.rs | 5 +- .../tests/st_scenario_rs_test.rs | 5 +- .../scenario-tester/tests/st_unit_test.rs | 2 +- .../scenario-tester/tests/st_whitebox_test.rs | 7 +- .../src/facade/world_tx/scenario_env_exec.rs | 242 +++++++++++++++++- 6 files changed, 297 insertions(+), 21 deletions(-) diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs index b3eafe218b..fafc3c9090 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs @@ -1,19 +1,23 @@ -use multiversx_sc_scenario::imports::*; +use multiversx_sc_scenario::{imports::*, scenario_model::U64Value}; use num_bigint::BigUint; use scenario_tester::*; -const ADDER_PATH_EXPR: &str = "mxsc:output/scenario-tester.mxsc.json"; +const SC_SCENARIO_TESTER_PATH_EXPR: &str = "mxsc:output/scenario-tester.mxsc.json"; const OWNER: AddressExpr = AddressExpr("owner"); -const SC_ADDER: ScExpr = ScExpr("scenario-tester"); +const OTHER: AddressExpr = AddressExpr("other"); +const SC_SCENARIO_TESTER: ScExpr = ScExpr("scenario-tester"); const CODE_EXPR: MxscExpr = MxscExpr("output/scenario-tester.mxsc.json"); fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); blockchain.set_current_dir_from_workspace("contracts/examples/scenario-tester"); - blockchain.register_contract(ADDER_PATH_EXPR, scenario_tester::ContractBuilder); + blockchain.register_contract( + SC_SCENARIO_TESTER_PATH_EXPR, + scenario_tester::ContractBuilder, + ); blockchain } @@ -21,16 +25,41 @@ fn world() -> ScenarioWorld { fn st_blackbox() { let mut world = world(); let owner_address = "address:owner"; + let other_address = "address:other"; + let st_contract = ContractInfo::>::new("sc:scenario-tester"); world.start_trace(); - world.set_state_step( - SetStateStep::new() - .put_account(owner_address, Account::new().nonce(1)) - .new_address(owner_address, 1, "sc:scenario-tester"), + world + .account(owner_address) + .nonce(1) + .balance("100") + .account(other_address) + .nonce(2) + .balance("300") + .esdt_balance("str:TOKEN-123456", "500") + .commit(); + + world.check_state_step( + CheckStateStep::new() + .put_account( + owner_address, + CheckAccount::new() + .nonce(U64Value::from(1u64)) + .balance("100"), + ) + .put_account( + other_address, + CheckAccount::new() + .nonce(U64Value::from(2u64)) + .balance("300") + .esdt_balance("str:TOKEN-123456", "500"), + ), ); + world.set_state_step(SetStateStep::new().new_address(owner_address, 1, "sc:scenario-tester")); + let new_address = world .tx() .from(OWNER) @@ -44,7 +73,7 @@ fn st_blackbox() { let value = world .query() - .to(SC_ADDER) + .to(SC_SCENARIO_TESTER) .typed(scenario_tester_proxy::ScenarioTesterProxy) .sum() .returns(ReturnsResultConv::::new()) @@ -54,7 +83,7 @@ fn st_blackbox() { world .tx() .from(OWNER) - .to(SC_ADDER) + .to(SC_SCENARIO_TESTER) .typed(scenario_tester_proxy::ScenarioTesterProxy) .add(1u32) .run(); @@ -68,5 +97,13 @@ fn st_blackbox() { ), ); + world + .tx() + .from(OTHER) + .to(SC_SCENARIO_TESTER) + .typed(scenario_tester_proxy::ScenarioTesterProxy) + .add(1u32) + .run(); + world.write_scenario_trace("trace1.scen.json"); } diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_upgrade_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_upgrade_test.rs index 081f6037ba..786fea9725 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_upgrade_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_upgrade_test.rs @@ -6,7 +6,10 @@ fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); blockchain.set_current_dir_from_workspace("contracts/feature-tests/scenario-tester"); - blockchain.register_contract("mxsc:output/scenario-tester.mxsc.json", scenario_tester::ContractBuilder); + blockchain.register_contract( + "mxsc:output/scenario-tester.mxsc.json", + scenario_tester::ContractBuilder, + ); blockchain } diff --git a/contracts/feature-tests/scenario-tester/tests/st_scenario_rs_test.rs b/contracts/feature-tests/scenario-tester/tests/st_scenario_rs_test.rs index c92fdaa1e0..32f289733d 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_scenario_rs_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_scenario_rs_test.rs @@ -4,7 +4,10 @@ fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); blockchain.set_current_dir_from_workspace("contracts/feature-tests/scenario-tester"); - blockchain.register_contract("mxsc:output/scenario-tester.mxsc.json", scenario_tester::ContractBuilder); + blockchain.register_contract( + "mxsc:output/scenario-tester.mxsc.json", + scenario_tester::ContractBuilder, + ); blockchain } diff --git a/contracts/feature-tests/scenario-tester/tests/st_unit_test.rs b/contracts/feature-tests/scenario-tester/tests/st_unit_test.rs index 2c099f53e9..e9b418dfad 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_unit_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_unit_test.rs @@ -1,6 +1,6 @@ -use scenario_tester::*; use multiversx_sc::types::BigUint; use multiversx_sc_scenario::api::SingleTxApi; +use scenario_tester::*; #[test] fn st_unit_test() { diff --git a/contracts/feature-tests/scenario-tester/tests/st_whitebox_test.rs b/contracts/feature-tests/scenario-tester/tests/st_whitebox_test.rs index c7fddee6cc..072292ed91 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_whitebox_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_whitebox_test.rs @@ -1,5 +1,5 @@ -use scenario_tester::*; use multiversx_sc_scenario::imports::*; +use scenario_tester::*; const ADDER_PATH_EXPR: &str = "mxsc:output/scenario-tester.mxsc.json"; @@ -7,7 +7,10 @@ fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); blockchain.set_current_dir_from_workspace("contracts/feature-tests/scenario-tester"); - blockchain.register_contract("mxsc:output/scenario-tester.mxsc.json", scenario_tester::ContractBuilder); + blockchain.register_contract( + "mxsc:output/scenario-tester.mxsc.json", + scenario_tester::ContractBuilder, + ); blockchain } diff --git a/framework/scenario/src/facade/world_tx/scenario_env_exec.rs b/framework/scenario/src/facade/world_tx/scenario_env_exec.rs index 3c292bd650..29d4b390c6 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_exec.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_exec.rs @@ -1,19 +1,23 @@ -use std::path::PathBuf; +use std::{collections::btree_map::Entry, ops::Add, path::PathBuf}; use multiversx_chain_scenario_format::serde_raw::ValueSubTree; use multiversx_sc::{ tuple_util::NestedTupleFlatten, types::{ - AnnotatedValue, Code, DeployCall, FunctionCall, ManagedAddress, ManagedBuffer, RHListExec, - Tx, TxBaseWithEnv, TxCodeSource, TxCodeSourceSpecified, TxCodeValue, TxEnv, - TxFromSpecified, TxGas, TxPayment, TxToSpecified, + Address, AddressExpr, AnnotatedValue, Code, DeployCall, FunctionCall, ManagedAddress, + ManagedBuffer, RHListExec, Tx, TxBaseWithEnv, TxCodeSource, TxCodeSourceSpecified, + TxCodeValue, TxEnv, TxFromSpecified, TxGas, TxPayment, TxTo, TxToSpecified, }, }; +use serde_json::map::OccupiedEntry; use crate::{ api::StaticApi, - scenario::tx_to_step::TxToStep, - scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep, TxExpect, TxResponse}, + scenario::{tx_to_step::TxToStep, ScenarioRunner}, + scenario_model::{ + Account, AddressKey, AddressValue, BigUintValue, BytesKey, BytesValue, Esdt, EsdtObject, + NewAddress, ScCallStep, ScDeployStep, SetStateStep, TxExpect, TxResponse, U64Value, + }, ScenarioTxEnv, ScenarioTxRun, ScenarioWorld, }; @@ -95,4 +99,230 @@ impl ScenarioWorld { step_wrapper.process_result(); self } + + pub fn account(&mut self, address_expr: A) -> SetStateBuilder<'_> + where + AddressKey: From, + { + SetStateBuilder::new(self, address_expr.into()) + } +} + +pub struct SetStateBuilder<'w> { + world: &'w mut ScenarioWorld, + set_state_step: SetStateStep, + current_account: Account, + current_address: AddressKey, +} + +impl<'w> SetStateBuilder<'w> { + pub(crate) fn new(world: &'w mut ScenarioWorld, address: AddressKey) -> SetStateBuilder<'w> { + let mut builder = SetStateBuilder { + world, + set_state_step: SetStateStep::new(), + current_address: AddressKey::default(), + current_account: Account::new(), + }; + builder.reset_account(address); + builder + } + + fn add_current_acount(&mut self) { + if let Entry::Vacant(entry) = self + .set_state_step + .accounts + .entry(core::mem::take(&mut self.current_address)) + { + entry.insert(core::mem::take(&mut self.current_account)); + }; + } + + fn reset_account(&mut self, address: AddressKey) { + // assert!( + // self.world + // .get_debugger_backend() + // .vm_runner + // .blockchain_mock + // .state + // .account_exists(&address.to_vm_address()), + // "updating existing accounts currently not supported" + // ); + + self.current_address = address; + self.current_account = Account::default(); + } + + /// Starts building of a new account. + pub fn account(mut self, address_expr: A) -> Self + where + AddressKey: From, + { + self.add_current_acount(); + self.reset_account(address_expr.into()); + self + } + + /// Finished and sets all account in the blockchain mock. + fn commit_accounts(&mut self) { + self.add_current_acount(); + self.world.run_set_state_step(&self.set_state_step); + } + + /// Forces value drop and commit accounts. + pub fn commit(self) {} + + pub fn nonce(mut self, nonce: V) -> Self + where + U64Value: From, + { + self.current_account.nonce = Some(U64Value::from(nonce)); + self + } + + pub fn balance(mut self, balance_expr: V) -> Self + where + BigUintValue: From, + { + self.current_account.balance = Some(BigUintValue::from(balance_expr)); + self + } + + pub fn esdt_balance(mut self, token_id_expr: K, balance_expr: V) -> Self + where + BytesKey: From, + BigUintValue: From, + { + let token_id = BytesKey::from(token_id_expr); + let esdt_data_ref = self.get_esdt_data_or_create(&token_id); + esdt_data_ref.set_balance(0u64, balance_expr); + + self + } + + pub fn esdt_nft_balance( + mut self, + token_id_expr: K, + nonce_expr: N, + balance_expr: V, + opt_attributes_expr: Option, + ) -> Self + where + N: Clone, + BytesKey: From, + U64Value: From, + BigUintValue: From, + BytesValue: From, + { + let token_id = BytesKey::from(token_id_expr); + + let esdt_obj_ref = self + .get_esdt_data_or_create(&token_id) + .get_mut_esdt_object(); + esdt_obj_ref.set_balance(nonce_expr.clone(), balance_expr); + + if let Some(attributes_expr) = opt_attributes_expr { + esdt_obj_ref.set_token_attributes(nonce_expr, attributes_expr); + } + + self + } + + #[allow(clippy::too_many_arguments)] + pub fn esdt_nft_all_properties( + mut self, + token_id_expr: K, + nonce_expr: N, + balance_expr: V, + opt_attributes_expr: Option, + royalties_expr: N, + creator_expr: Option, + hash_expr: Option, + uris_expr: Vec, + ) -> Self + where + BytesKey: From, + U64Value: From, + BigUintValue: From, + BytesValue: From, + { + let token_id = BytesKey::from(token_id_expr); + + let esdt_obj_ref = self + .get_esdt_data_or_create(&token_id) + .get_mut_esdt_object(); + + esdt_obj_ref.set_token_all_properties( + nonce_expr, + balance_expr, + opt_attributes_expr, + royalties_expr, + creator_expr, + hash_expr, + uris_expr, + ); + + self + } + + pub fn esdt_nft_last_nonce(mut self, token_id_expr: K, last_nonce_expr: N) -> Self + where + BytesKey: From, + U64Value: From, + { + let token_id = BytesKey::from(token_id_expr); + + let esdt_obj_ref = self + .get_esdt_data_or_create(&token_id) + .get_mut_esdt_object(); + esdt_obj_ref.set_last_nonce(last_nonce_expr); + + self + } + + // TODO: Find a better way to pass roles + pub fn esdt_roles(mut self, token_id_expr: K, roles: Vec) -> Self + where + BytesKey: From, + { + let token_id = BytesKey::from(token_id_expr); + + let esdt_obj_ref = self + .get_esdt_data_or_create(&token_id) + .get_mut_esdt_object(); + esdt_obj_ref.set_roles(roles); + + self + } + + fn get_esdt_data_or_create(&mut self, token_id: &BytesKey) -> &mut Esdt { + if !self.current_account.esdt.contains_key(token_id) { + self.current_account + .esdt + .insert(token_id.clone(), Esdt::Full(EsdtObject::default())); + } + + self.current_account.esdt.get_mut(token_id).unwrap() + } + + pub fn code(mut self, code_expr: V) -> Self + where + BytesValue: From, + { + self.current_account.code = Some(BytesValue::from(code_expr)); + self + } + + pub fn owner(mut self, owner_expr: V) -> Self + where + AddressValue: From, + { + self.current_account.owner = Some(AddressValue::from(owner_expr)); + self + } +} + +impl<'w> Drop for SetStateBuilder<'w> { + fn drop(&mut self) { + self.commit_accounts(); + } } From 8f9614c406f7d212a4702845547e350ea324c7c8 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Fri, 12 Apr 2024 12:46:05 +0200 Subject: [PATCH 330/461] decomment condition searching for existing account --- .../src/facade/world_tx/scenario_env_exec.rs | 19 ++++++++++--------- vm/src/world_mock/blockchain_state.rs | 3 +-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/framework/scenario/src/facade/world_tx/scenario_env_exec.rs b/framework/scenario/src/facade/world_tx/scenario_env_exec.rs index 29d4b390c6..5eef522784 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_exec.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_exec.rs @@ -138,15 +138,16 @@ impl<'w> SetStateBuilder<'w> { } fn reset_account(&mut self, address: AddressKey) { - // assert!( - // self.world - // .get_debugger_backend() - // .vm_runner - // .blockchain_mock - // .state - // .account_exists(&address.to_vm_address()), - // "updating existing accounts currently not supported" - // ); + assert!( + !self + .world + .get_debugger_backend() + .vm_runner + .blockchain_mock + .state + .account_exists(&address.to_vm_address()), + "updating existing accounts currently not supported" + ); self.current_address = address; self.current_account = Account::default(); diff --git a/vm/src/world_mock/blockchain_state.rs b/vm/src/world_mock/blockchain_state.rs index 28a339f54b..6890517215 100644 --- a/vm/src/world_mock/blockchain_state.rs +++ b/vm/src/world_mock/blockchain_state.rs @@ -1,7 +1,6 @@ -use std::{collections::HashMap, fmt::Debug}; - use num_bigint::BigUint; use num_traits::Zero; +use std::{collections::HashMap, fmt::Debug}; use crate::{tx_mock::BlockchainUpdate, types::VMAddress}; From 1077bbe7cc10220aa2a55883c7e61b49e863e2e9 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Fri, 12 Apr 2024 14:45:34 +0300 Subject: [PATCH 331/461] fix review --- .../tests/pmf_blackbox_test.rs | 8 +++-- .../scenario/src/facade/result_handlers.rs | 4 +++ .../facade/result_handlers/expect_error.rs | 8 ++--- .../facade/result_handlers/expect_message.rs | 32 +++++++++++++++++++ .../facade/result_handlers/expect_status.rs | 27 ++++++++++++++++ 5 files changed, 73 insertions(+), 6 deletions(-) create mode 100644 framework/scenario/src/facade/result_handlers/expect_message.rs create mode 100644 framework/scenario/src/facade/result_handlers/expect_status.rs diff --git a/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs b/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs index 52671b8de3..28499c0e84 100644 --- a/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs +++ b/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs @@ -73,7 +73,9 @@ fn tx_expect_error_test() { .to(SC_PMF) .typed(pmf_proxy::PanicMessageFeaturesProxy) .sc_panic() - .with_result(ExpectError("sc_panic! test", 4)) + .with_result(ExpectStatus(4)) + .with_result(ExpectMessage("sc_panic! test")) + .with_result(ExpectError(4, "sc_panic! test")) .run(); } @@ -86,6 +88,8 @@ fn query_expect_error_test() { .to(SC_PMF) .typed(pmf_proxy::PanicMessageFeaturesProxy) .sc_panic() - .with_result(ExpectError("sc_panic! test", 4)) + .with_result(ExpectStatus(4)) + .with_result(ExpectMessage("sc_panic! test")) + .with_result(ExpectError(4, "sc_panic! test")) .run(); } diff --git a/framework/scenario/src/facade/result_handlers.rs b/framework/scenario/src/facade/result_handlers.rs index 258c47ae62..24709626ea 100644 --- a/framework/scenario/src/facade/result_handlers.rs +++ b/framework/scenario/src/facade/result_handlers.rs @@ -1,4 +1,6 @@ mod expect_error; +mod expect_message; +mod expect_status; mod returns_message; mod returns_new_bech32_address; mod returns_new_token_identifier; @@ -6,6 +8,8 @@ mod returns_status; mod with_tx_raw_response; pub use expect_error::ExpectError; +pub use expect_message::ExpectMessage; +pub use expect_status::ExpectStatus; pub use returns_message::ReturnsMessage; pub use returns_new_bech32_address::ReturnsNewBech32Address; pub use returns_new_token_identifier::ReturnsNewTokenIdentifier; diff --git a/framework/scenario/src/facade/result_handlers/expect_error.rs b/framework/scenario/src/facade/result_handlers/expect_error.rs index 39cb02342c..a06a227424 100644 --- a/framework/scenario/src/facade/result_handlers/expect_error.rs +++ b/framework/scenario/src/facade/result_handlers/expect_error.rs @@ -6,7 +6,7 @@ use crate::scenario_model::{BytesValue, CheckValue, TxExpect, TxResponse}; /// Verifies that transaction result error matches the given one. /// /// Can only be used in tests and interactors, not available in contracts. -pub struct ExpectError<'a>(pub &'a str, pub u64); +pub struct ExpectError<'a>(pub u64, pub &'a str); impl<'a, Env, Original> RHListItem for ExpectError<'a> where @@ -20,12 +20,12 @@ where Env: TxEnv, { fn item_tx_expect(&self, mut prev: TxExpect) -> TxExpect { + prev.status = CheckValue::Equal(self.0.into()); let expect_message_expr = BytesValue { - value: self.0.to_string().into_bytes(), - original: ValueSubTree::Str(format!("str:{}", self.0)), + value: self.1.to_string().into_bytes(), + original: ValueSubTree::Str(format!("str:{}", self.1)), }; prev.message = CheckValue::Equal(expect_message_expr); - prev.status = CheckValue::Equal(self.1.into()); prev } diff --git a/framework/scenario/src/facade/result_handlers/expect_message.rs b/framework/scenario/src/facade/result_handlers/expect_message.rs new file mode 100644 index 0000000000..4f46d05b59 --- /dev/null +++ b/framework/scenario/src/facade/result_handlers/expect_message.rs @@ -0,0 +1,32 @@ +use multiversx_chain_scenario_format::serde_raw::ValueSubTree; +use multiversx_sc::types::{RHListItem, RHListItemExec, TxEnv}; + +use crate::scenario_model::{BytesValue, CheckValue, TxExpect, TxResponse}; + +/// Verifies that transaction result message matches the given one. +/// +/// Can only be used in tests and interactors, not available in contracts. +pub struct ExpectMessage<'a>(pub &'a str); + +impl<'a, Env, Original> RHListItem for ExpectMessage<'a> +where + Env: TxEnv, +{ + type Returns = (); +} + +impl<'a, Env, Original> RHListItemExec for ExpectMessage<'a> +where + Env: TxEnv, +{ + fn item_tx_expect(&self, mut prev: TxExpect) -> TxExpect { + let expect_message_expr = BytesValue { + value: self.0.to_string().into_bytes(), + original: ValueSubTree::Str(format!("str:{}", self.0)), + }; + prev.message = CheckValue::Equal(expect_message_expr); + prev + } + + fn item_process_result(self, _: &TxResponse) -> Self::Returns {} +} diff --git a/framework/scenario/src/facade/result_handlers/expect_status.rs b/framework/scenario/src/facade/result_handlers/expect_status.rs new file mode 100644 index 0000000000..127982739b --- /dev/null +++ b/framework/scenario/src/facade/result_handlers/expect_status.rs @@ -0,0 +1,27 @@ +use multiversx_sc::types::{RHListItem, RHListItemExec, TxEnv}; + +use crate::scenario_model::{CheckValue, TxExpect, TxResponse}; + +/// Verifies that transaction result status matches the given one. +/// +/// Can only be used in tests and interactors, not available in contracts. +pub struct ExpectStatus(pub u64); + +impl RHListItem for ExpectStatus +where + Env: TxEnv, +{ + type Returns = (); +} + +impl RHListItemExec for ExpectStatus +where + Env: TxEnv, +{ + fn item_tx_expect(&self, mut prev: TxExpect) -> TxExpect { + prev.status = CheckValue::Equal(self.0.into()); + prev + } + + fn item_process_result(self, _: &TxResponse) -> Self::Returns {} +} From 011cbc26bc467f72f96e4745b362e460cafa5457 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Fri, 12 Apr 2024 14:01:04 +0200 Subject: [PATCH 332/461] added separate set state test --- .../scenario-tester/tests/st_blackbox_test.rs | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs index fafc3c9090..a14184d47c 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs @@ -107,3 +107,108 @@ fn st_blackbox() { world.write_scenario_trace("trace1.scen.json"); } + +#[test] +fn set_state_test() { + let mut world = world(); + let first = "address:first"; + let second = "address:second"; + let third = "address:third"; + let fourth = "address:fourth"; + let fifth = "address:fifth"; + let sixth = "address:sixth"; + + world.start_trace(); + + world + .account(first) + .nonce(1) + .balance("100") + .account(second) + .nonce(2) + .balance("300") + .esdt_balance("str:TOKEN-123456", "500") + .commit(); + + world.check_state_step( + CheckStateStep::new() + .put_account( + first, + CheckAccount::new() + .nonce(U64Value::from(1u64)) + .balance("100"), + ) + .put_account( + second, + CheckAccount::new() + .nonce(U64Value::from(2u64)) + .balance("300") + .esdt_balance("str:TOKEN-123456", "500"), + ), + ); + + world + .account(third) + .nonce(3) + .balance("50") + .esdt_nft_balance("str:NFT-123456", "2", "1", Some(Vec::::new())) + .commit(); + + world.check_state_step( + CheckStateStep::new().put_account( + third, + CheckAccount::new() + .nonce(U64Value::from(3u64)) + .balance("50") + .esdt_nft_balance_and_attributes( + "str:NFT-123456", + "2", + "1", + Some(Vec::::new()), + ), + ), + ); + + // using no commit should drop the value naturally + world + .account(fourth) + .nonce(4) + .balance("400") + .account(fifth) + .nonce(5) + .balance("250") + .esdt_balance("str:TOKEN-123456", "2"); + + world.check_state_step( + CheckStateStep::new() + .put_account( + fourth, + CheckAccount::new() + .nonce(U64Value::from(4u64)) + .balance("400"), + ) + .put_account( + fifth, + CheckAccount::new() + .nonce(U64Value::from(5u64)) + .balance("250") + .esdt_balance("str:TOKEN-123456", "2"), + ), + ); + + world + .account(sixth) + .nonce(6) + .balance("600") + .esdt_balance("str:TOKEN-123456", "60"); + + world.check_state_step( + CheckStateStep::new().put_account( + sixth, + CheckAccount::new() + .nonce(U64Value::from(6u64)) + .balance("600") + .esdt_balance("str:TOKEN-123456", "60"), + ), + ); +} From 974c23e12bd95b8d8134e045607254196e7cbc91 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 12 Apr 2024 13:49:39 +0300 Subject: [PATCH 333/461] legacy ESDTSystemSmartContractProxy made public --- framework/base/src/types/interaction/system_proxy.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/framework/base/src/types/interaction/system_proxy.rs b/framework/base/src/types/interaction/system_proxy.rs index d9ca05198d..3b1fb836d6 100644 --- a/framework/base/src/types/interaction/system_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy.rs @@ -5,5 +5,6 @@ mod legacy_system_sc_proxy; pub(crate) mod token_properties; pub use builtin_func_proxy::*; -pub use esdt_system_sc_proxy::*; +pub use esdt_system_sc_proxy::{ESDTSystemSCProxy, ESDTSystemSCProxyMethods, IssueCall}; +pub use legacy_system_sc_proxy::ESDTSystemSmartContractProxy; pub use token_properties::*; From 0429cefb8eed04fbf7ac0b0607e9f3a09fef6779 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 12 Apr 2024 15:21:15 +0300 Subject: [PATCH 334/461] forwarder-legacy (adapted from master) --- Cargo.lock | 18 ++ Cargo.toml | 12 +- .../feature-tests/composability/Cargo.toml | 3 + .../composability/forwarder-legacy/Cargo.toml | 21 ++ .../forwarder-legacy/meta/Cargo.toml | 13 + .../forwarder-legacy/meta/src/main.rs | 3 + .../forwarder-legacy/multiversx.json | 3 + .../forwarder-legacy/src/call_async_legacy.rs | 229 ++++++++++++++ .../forwarder-legacy/src/call_sync_legacy.rs | 173 ++++++++++ .../src/call_transf_exec_legacy.rs | 155 +++++++++ .../src/contract_change_owner_legacy.rs | 28 ++ .../src/contract_deploy_legacy.rs | 55 ++++ .../src/contract_upgrade_legacy.rs | 31 ++ .../forwarder-legacy/src/esdt_legacy.rs | 215 +++++++++++++ .../src/forwarder_legacy_main.rs | 41 +++ .../forwarder-legacy/src/nft_legacy.rs | 296 ++++++++++++++++++ .../forwarder-legacy/src/roles_legacy.rs | 48 +++ .../forwarder-legacy/src/sft_legacy.rs | 57 ++++ .../forwarder-legacy/src/storage_legacy.rs | 12 + .../tests/forwarder_blackbox_legacy_test.rs | 140 +++++++++ .../tests/forwarder_blackbox_test.rs | 0 .../tests/forwarder_whitebox_legacy_test.rs | 118 +++++++ .../tests/forwarder_whitebox_test.rs | 0 23 files changed, 1665 insertions(+), 6 deletions(-) create mode 100644 contracts/feature-tests/composability/forwarder-legacy/Cargo.toml create mode 100644 contracts/feature-tests/composability/forwarder-legacy/meta/Cargo.toml create mode 100644 contracts/feature-tests/composability/forwarder-legacy/meta/src/main.rs create mode 100644 contracts/feature-tests/composability/forwarder-legacy/multiversx.json create mode 100644 contracts/feature-tests/composability/forwarder-legacy/src/call_async_legacy.rs create mode 100644 contracts/feature-tests/composability/forwarder-legacy/src/call_sync_legacy.rs create mode 100644 contracts/feature-tests/composability/forwarder-legacy/src/call_transf_exec_legacy.rs create mode 100644 contracts/feature-tests/composability/forwarder-legacy/src/contract_change_owner_legacy.rs create mode 100644 contracts/feature-tests/composability/forwarder-legacy/src/contract_deploy_legacy.rs create mode 100644 contracts/feature-tests/composability/forwarder-legacy/src/contract_upgrade_legacy.rs create mode 100644 contracts/feature-tests/composability/forwarder-legacy/src/esdt_legacy.rs create mode 100644 contracts/feature-tests/composability/forwarder-legacy/src/forwarder_legacy_main.rs create mode 100644 contracts/feature-tests/composability/forwarder-legacy/src/nft_legacy.rs create mode 100644 contracts/feature-tests/composability/forwarder-legacy/src/roles_legacy.rs create mode 100644 contracts/feature-tests/composability/forwarder-legacy/src/sft_legacy.rs create mode 100644 contracts/feature-tests/composability/forwarder-legacy/src/storage_legacy.rs create mode 100644 contracts/feature-tests/composability/tests/forwarder_blackbox_legacy_test.rs rename contracts/feature-tests/composability/{forwarder => }/tests/forwarder_blackbox_test.rs (100%) create mode 100644 contracts/feature-tests/composability/tests/forwarder_whitebox_legacy_test.rs rename contracts/feature-tests/composability/{forwarder => }/tests/forwarder_whitebox_test.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index b111db8536..a0fb9cfca9 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -469,6 +469,7 @@ version = "0.0.0" dependencies = [ "builtin-func-features", "forwarder", + "forwarder-legacy", "forwarder-queue", "forwarder-raw", "multiversx-sc", @@ -1037,6 +1038,23 @@ dependencies = [ "vault", ] +[[package]] +name = "forwarder-legacy" +version = "0.0.0" +dependencies = [ + "multiversx-sc", + "multiversx-sc-scenario", + "vault", +] + +[[package]] +name = "forwarder-legacy-meta" +version = "0.0.0" +dependencies = [ + "forwarder-legacy", + "multiversx-sc-meta", +] + [[package]] name = "forwarder-meta" version = "0.0.0" diff --git a/Cargo.toml b/Cargo.toml index 459624af85..8554af9b00 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -125,6 +125,8 @@ members = [ "contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/child/meta", "contracts/feature-tests/composability/forwarder", "contracts/feature-tests/composability/forwarder/meta", + "contracts/feature-tests/composability/forwarder-legacy", + "contracts/feature-tests/composability/forwarder-legacy/meta", "contracts/feature-tests/composability/forwarder-queue", "contracts/feature-tests/composability/forwarder-queue/meta", "contracts/feature-tests/composability/forwarder-raw", @@ -159,6 +161,8 @@ members = [ "contracts/feature-tests/erc-style-contracts/lottery-erc20/meta", "contracts/feature-tests/esdt-system-sc-mock", "contracts/feature-tests/esdt-system-sc-mock/meta", + "contracts/feature-tests/exchange-features", + "contracts/feature-tests/exchange-features/meta", "contracts/feature-tests/formatted-message-features", "contracts/feature-tests/formatted-message-features/meta", "contracts/feature-tests/managed-map-features", @@ -173,12 +177,8 @@ members = [ "contracts/feature-tests/rust-snippets-generator-test/meta", "contracts/feature-tests/rust-testing-framework-tester", "contracts/feature-tests/rust-testing-framework-tester/meta", + "contracts/feature-tests/scenario-tester", + "contracts/feature-tests/scenario-tester/meta", "contracts/feature-tests/use-module", "contracts/feature-tests/use-module/meta", - "contracts/feature-tests/exchange-features", - "contracts/feature-tests/exchange-features/meta", - - "contracts/feature-tests/scenario-tester", - "contracts/feature-tests/scenario-tester/meta" - ] diff --git a/contracts/feature-tests/composability/Cargo.toml b/contracts/feature-tests/composability/Cargo.toml index 61bf52fe14..938768f769 100644 --- a/contracts/feature-tests/composability/Cargo.toml +++ b/contracts/feature-tests/composability/Cargo.toml @@ -11,6 +11,9 @@ path = "builtin-func-features" [dev-dependencies.forwarder] path = "forwarder" +[dev-dependencies.forwarder-legacy] +path = "forwarder-legacy" + [dev-dependencies.forwarder-queue] path = "forwarder-queue" diff --git a/contracts/feature-tests/composability/forwarder-legacy/Cargo.toml b/contracts/feature-tests/composability/forwarder-legacy/Cargo.toml new file mode 100644 index 0000000000..b751258cfa --- /dev/null +++ b/contracts/feature-tests/composability/forwarder-legacy/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "forwarder-legacy" +version = "0.0.0" +authors = ["Andrei Marinica "] +edition = "2021" +publish = false + +[lib] +path = "src/forwarder_legacy_main.rs" + +[dependencies.vault] +path = "../vault" + +[dependencies.multiversx-sc] +version = "0.49.0-alpha.2" +path = "../../../../framework/base" + +[dev-dependencies.multiversx-sc-scenario] +version = "0.49.0-alpha.2" +path = "../../../../framework/scenario" + diff --git a/contracts/feature-tests/composability/forwarder-legacy/meta/Cargo.toml b/contracts/feature-tests/composability/forwarder-legacy/meta/Cargo.toml new file mode 100644 index 0000000000..559f4b20e2 --- /dev/null +++ b/contracts/feature-tests/composability/forwarder-legacy/meta/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "forwarder-legacy-meta" +version = "0.0.0" +edition = "2021" +publish = false + +[dependencies.forwarder-legacy] +path = ".." + +[dependencies.multiversx-sc-meta] +version = "0.49.0-alpha.2" +path = "../../../../../framework/meta" +default-features = false diff --git a/contracts/feature-tests/composability/forwarder-legacy/meta/src/main.rs b/contracts/feature-tests/composability/forwarder-legacy/meta/src/main.rs new file mode 100644 index 0000000000..a6e424dff6 --- /dev/null +++ b/contracts/feature-tests/composability/forwarder-legacy/meta/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + multiversx_sc_meta::cli_main::(); +} diff --git a/contracts/feature-tests/composability/forwarder-legacy/multiversx.json b/contracts/feature-tests/composability/forwarder-legacy/multiversx.json new file mode 100644 index 0000000000..8d77ca316c --- /dev/null +++ b/contracts/feature-tests/composability/forwarder-legacy/multiversx.json @@ -0,0 +1,3 @@ +{ + "language": "rust" +} diff --git a/contracts/feature-tests/composability/forwarder-legacy/src/call_async_legacy.rs b/contracts/feature-tests/composability/forwarder-legacy/src/call_async_legacy.rs new file mode 100644 index 0000000000..8826c2db48 --- /dev/null +++ b/contracts/feature-tests/composability/forwarder-legacy/src/call_async_legacy.rs @@ -0,0 +1,229 @@ +multiversx_sc::imports!(); +multiversx_sc::derive_imports!(); + +#[derive(TopEncode, TopDecode, TypeAbi)] +pub struct CallbackData { + callback_name: ManagedBuffer, + token_identifier: EgldOrEsdtTokenIdentifier, + token_nonce: u64, + token_amount: BigUint, + args: ManagedVec>, +} + +const PERCENTAGE_TOTAL: u64 = 10_000; // 100% + +#[multiversx_sc::module] +pub trait ForwarderAsyncCallModule { + #[proxy] + fn vault_proxy(&self) -> vault::Proxy; + + #[endpoint] + fn echo_args_async(&self, to: ManagedAddress, args: MultiValueEncoded) { + self.vault_proxy() + .contract(to) + .echo_arguments(args) + .async_call() + .with_callback(self.callbacks().echo_args_callback()) + .call_and_exit(); + } + + #[callback] + fn echo_args_callback( + &self, + #[call_result] result: ManagedAsyncCallResult>, + ) -> MultiValueEncoded { + match result { + ManagedAsyncCallResult::Ok(results) => { + let mut cb_result = + ManagedVec::from_single_item(ManagedBuffer::new_from_bytes(b"success")); + cb_result.append_vec(results.into_vec_of_buffers()); + + cb_result.into() + }, + ManagedAsyncCallResult::Err(err) => { + let mut cb_result = + ManagedVec::from_single_item(ManagedBuffer::new_from_bytes(b"error")); + cb_result.push(ManagedBuffer::new_from_bytes( + &err.err_code.to_be_bytes()[..], + )); + cb_result.push(err.err_msg); + + cb_result.into() + }, + } + } + + #[endpoint] + #[payable("*")] + fn forward_async_accept_funds(&self, to: ManagedAddress) { + let payment = self.call_value().egld_or_single_esdt(); + self.vault_proxy() + .contract(to) + .accept_funds() + .with_egld_or_single_esdt_transfer(payment) + .async_call() + .call_and_exit() + } + + #[endpoint] + #[payable("*")] + fn forward_async_accept_funds_half_payment(&self, to: ManagedAddress) { + let payment = self.call_value().egld_or_single_esdt(); + let half_payment = payment.amount / 2u32; + self.vault_proxy() + .contract(to) + .accept_funds() + .with_egld_or_single_esdt_transfer(( + payment.token_identifier, + payment.token_nonce, + half_payment, + )) + .async_call() + .call_and_exit() + } + + #[payable("*")] + #[endpoint] + fn forward_async_accept_funds_with_fees(&self, to: ManagedAddress, percentage_fees: BigUint) { + let payment = self.call_value().egld_or_single_esdt(); + let fees = &payment.amount * &percentage_fees / PERCENTAGE_TOTAL; + let amount_to_send = &payment.amount - &fees; + + self.vault_proxy() + .contract(to) + .accept_funds() + .with_egld_or_single_esdt_transfer(( + payment.token_identifier, + payment.token_nonce, + amount_to_send, + )) + .async_call() + .call_and_exit() + } + + #[endpoint] + fn forward_async_retrieve_funds( + &self, + to: ManagedAddress, + token: EgldOrEsdtTokenIdentifier, + token_nonce: u64, + amount: BigUint, + ) { + self.vault_proxy() + .contract(to) + .retrieve_funds(token, token_nonce, amount) + .async_call() + .with_callback(self.callbacks().retrieve_funds_callback()) + .call_and_exit() + } + + #[callback] + fn retrieve_funds_callback(&self) { + let (token, nonce, payment) = self.call_value().egld_or_single_esdt().into_tuple(); + self.retrieve_funds_callback_event(&token, nonce, &payment); + + let _ = self.callback_data().push(&CallbackData { + callback_name: ManagedBuffer::from(b"retrieve_funds_callback"), + token_identifier: token, + token_nonce: nonce, + token_amount: payment, + args: ManagedVec::new(), + }); + } + + #[event("retrieve_funds_callback")] + fn retrieve_funds_callback_event( + &self, + #[indexed] token: &EgldOrEsdtTokenIdentifier, + #[indexed] nonce: u64, + #[indexed] payment: &BigUint, + ); + + #[endpoint] + fn send_funds_twice( + &self, + to: &ManagedAddress, + token_identifier: &EgldOrEsdtTokenIdentifier, + amount: &BigUint, + ) { + self.vault_proxy() + .contract(to.clone()) + .accept_funds() + .with_egld_or_single_esdt_transfer((token_identifier.clone(), 0, amount.clone())) + .async_call() + .with_callback( + self.callbacks() + .send_funds_twice_callback(to, token_identifier, amount), + ) + .call_and_exit() + } + + #[callback] + fn send_funds_twice_callback( + &self, + to: &ManagedAddress, + token_identifier: &EgldOrEsdtTokenIdentifier, + cb_amount: &BigUint, + ) { + self.vault_proxy() + .contract(to.clone()) + .accept_funds() + .with_egld_or_single_esdt_transfer((token_identifier.clone(), 0, cb_amount.clone())) + .async_call() + .call_and_exit() + } + + #[endpoint] + fn send_async_accept_multi_transfer( + &self, + to: ManagedAddress, + token_payments: MultiValueEncoded>, + ) { + let mut all_token_payments = ManagedVec::new(); + + for multi_arg in token_payments.into_iter() { + let (token_identifier, token_nonce, amount) = multi_arg.into_tuple(); + let payment = EsdtTokenPayment::new(token_identifier, token_nonce, amount); + + all_token_payments.push(payment); + } + + self.vault_proxy() + .contract(to) + .accept_funds() + .with_multi_token_transfer(all_token_payments) + .async_call() + .call_and_exit() + } + + #[view] + #[storage_mapper("callback_data")] + fn callback_data(&self) -> VecMapper>; + + #[view] + fn callback_data_at_index( + &self, + index: usize, + ) -> MultiValue5< + ManagedBuffer, + EgldOrEsdtTokenIdentifier, + u64, + BigUint, + MultiValueManagedVec, + > { + let cb_data = self.callback_data().get(index); + ( + cb_data.callback_name, + cb_data.token_identifier, + cb_data.token_nonce, + cb_data.token_amount, + cb_data.args.into(), + ) + .into() + } + + #[endpoint] + fn clear_callback_data(&self) { + self.callback_data().clear(); + } +} diff --git a/contracts/feature-tests/composability/forwarder-legacy/src/call_sync_legacy.rs b/contracts/feature-tests/composability/forwarder-legacy/src/call_sync_legacy.rs new file mode 100644 index 0000000000..67d923936e --- /dev/null +++ b/contracts/feature-tests/composability/forwarder-legacy/src/call_sync_legacy.rs @@ -0,0 +1,173 @@ +multiversx_sc::imports!(); + +const PERCENTAGE_TOTAL: u64 = 10_000; // 100% + +#[multiversx_sc::module] +pub trait ForwarderSyncCallModule { + #[proxy] + fn vault_proxy(&self) -> vault::Proxy; + + #[endpoint] + #[payable("*")] + fn echo_arguments_sync(&self, to: ManagedAddress, args: MultiValueEncoded) { + let half_gas = self.blockchain().get_gas_left() / 2; + + let result: MultiValueEncoded = self + .vault_proxy() + .contract(to) + .echo_arguments(args) + .with_gas_limit(half_gas) + .execute_on_dest_context(); + + self.execute_on_dest_context_result_event(&result.into_vec_of_buffers()); + } + + #[endpoint] + #[payable("*")] + fn echo_arguments_sync_twice( + &self, + to: ManagedAddress, + args: MultiValueEncoded, + ) { + let one_third_gas = self.blockchain().get_gas_left() / 3; + + let result: MultiValueEncoded = self + .vault_proxy() + .contract(to.clone()) + .echo_arguments(&args) + .with_gas_limit(one_third_gas) + .execute_on_dest_context(); + + self.execute_on_dest_context_result_event(&result.into_vec_of_buffers()); + + let result: MultiValueEncoded = self + .vault_proxy() + .contract(to) + .echo_arguments(&args) + .with_gas_limit(one_third_gas) + .execute_on_dest_context(); + + self.execute_on_dest_context_result_event(&result.into_vec_of_buffers()); + } + + #[event("echo_arguments_sync_result")] + fn execute_on_dest_context_result_event(&self, result: &ManagedVec); + + #[endpoint] + #[payable("*")] + fn forward_sync_accept_funds(&self, to: ManagedAddress) { + let payment = self.call_value().egld_or_single_esdt(); + let half_gas = self.blockchain().get_gas_left() / 2; + + let result: MultiValue2> = self + .vault_proxy() + .contract(to) + .accept_funds_echo_payment() + .with_egld_or_single_esdt_transfer(payment) + .with_gas_limit(half_gas) + .execute_on_dest_context(); + let (egld_value, esdt_transfers_multi) = result.into_tuple(); + + self.accept_funds_sync_result_event(&egld_value, &esdt_transfers_multi); + } + + #[payable("*")] + #[endpoint] + fn forward_sync_accept_funds_with_fees(&self, to: ManagedAddress, percentage_fees: BigUint) { + let (token_id, payment) = self.call_value().egld_or_single_fungible_esdt(); + let fees = &payment * &percentage_fees / PERCENTAGE_TOTAL; + let amount_to_send = payment - fees; + + let () = self + .vault_proxy() + .contract(to) + .accept_funds() + .with_egld_or_single_esdt_transfer((token_id, 0, amount_to_send)) + .execute_on_dest_context(); + } + + #[event("accept_funds_sync_result")] + fn accept_funds_sync_result_event( + &self, + #[indexed] egld_value: &BigUint, + #[indexed] multi_esdt: &MultiValueEncoded, + ); + + #[endpoint] + #[payable("*")] + fn forward_sync_accept_funds_then_read(&self, to: ManagedAddress) -> usize { + let payment = self.call_value().egld_or_single_esdt(); + self.vault_proxy() + .contract(to.clone()) + .accept_funds() + .with_egld_or_single_esdt_transfer(payment) + .execute_on_dest_context::<()>(); + + self.vault_proxy() + .contract(to) + .call_counts(b"accept_funds") + .execute_on_dest_context::>() + .into() + } + + #[endpoint] + fn forward_sync_retrieve_funds( + &self, + to: ManagedAddress, + token: EgldOrEsdtTokenIdentifier, + token_nonce: u64, + amount: BigUint, + ) { + self.vault_proxy() + .contract(to) + .retrieve_funds(token, token_nonce, amount) + .execute_on_dest_context::<()>(); + } + + #[payable("*")] + #[endpoint] + fn forward_sync_retrieve_funds_with_accept_func( + &self, + to: ManagedAddress, + token: TokenIdentifier, + amount: BigUint, + ) { + let payments = self.call_value().all_esdt_transfers(); + + self.vault_proxy() + .contract(to) + .retrieve_funds_with_transfer_exec( + token, + amount, + OptionalValue::::Some(b"accept_funds_func".into()), + ) + .with_multi_token_transfer(payments.clone_value()) + .execute_on_dest_context::<()>(); + } + + #[payable("*")] + #[endpoint] + fn accept_funds_func(&self) {} + + #[endpoint] + fn forward_sync_accept_funds_multi_transfer( + &self, + to: ManagedAddress, + token_payments: MultiValueEncoded>, + ) { + let mut all_token_payments = ManagedVec::new(); + + for multi_arg in token_payments.into_iter() { + let (token_identifier, token_nonce, amount) = multi_arg.into_tuple(); + let payment = EsdtTokenPayment::new(token_identifier, token_nonce, amount); + all_token_payments.push(payment); + } + + let () = self + .vault_proxy() + .contract(to) + .accept_funds() + .with_multi_token_transfer(all_token_payments) + .execute_on_dest_context(); + } +} diff --git a/contracts/feature-tests/composability/forwarder-legacy/src/call_transf_exec_legacy.rs b/contracts/feature-tests/composability/forwarder-legacy/src/call_transf_exec_legacy.rs new file mode 100644 index 0000000000..e402ea5316 --- /dev/null +++ b/contracts/feature-tests/composability/forwarder-legacy/src/call_transf_exec_legacy.rs @@ -0,0 +1,155 @@ +multiversx_sc::imports!(); + +const PERCENTAGE_TOTAL: u64 = 10_000; // 100% + +#[multiversx_sc::module] +pub trait ForwarderTransferExecuteModule { + #[proxy] + fn vault_proxy(&self) -> vault::Proxy; + + #[endpoint] + #[payable("*")] + fn forward_transf_exec_accept_funds(&self, to: ManagedAddress) { + let payment = self.call_value().egld_or_single_esdt(); + self.vault_proxy() + .contract(to) + .accept_funds() + .with_egld_or_single_esdt_transfer(payment) + .transfer_execute(); + } + + #[endpoint] + #[payable("*")] + fn forward_transf_execu_accept_funds_with_fees( + &self, + to: ManagedAddress, + percentage_fees: BigUint, + ) { + let (token_id, payment) = self.call_value().egld_or_single_fungible_esdt(); + let fees = &payment * &percentage_fees / PERCENTAGE_TOTAL; + let amount_to_send = payment - fees; + + self.vault_proxy() + .contract(to) + .accept_funds() + .with_egld_or_single_esdt_transfer((token_id, 0, amount_to_send)) + .transfer_execute(); + } + + #[endpoint] + #[payable("*")] + fn forward_transf_exec_accept_funds_twice(&self, to: ManagedAddress) { + let (token, token_nonce, payment) = self.call_value().egld_or_single_esdt().into_tuple(); + let half_payment = payment / 2u32; + let half_gas = self.blockchain().get_gas_left() / 2; + + self.vault_proxy() + .contract(to.clone()) + .accept_funds() + .with_egld_or_single_esdt_transfer((token.clone(), token_nonce, half_payment.clone())) + .with_gas_limit(half_gas) + .transfer_execute(); + + self.vault_proxy() + .contract(to) + .accept_funds() + .with_egld_or_single_esdt_transfer((token, token_nonce, half_payment)) + .with_gas_limit(half_gas) + .transfer_execute(); + } + + /// Test that the default gas provided to the transfer_execute call + /// leaves enough in the transaction for finish to happen. + #[endpoint] + #[payable("*")] + fn forward_transf_exec_accept_funds_return_values( + &self, + to: ManagedAddress, + ) -> MultiValue4 { + let payment = self.call_value().egld_or_single_esdt(); + let payment_token = payment.token_identifier.clone(); + let gas_left_before = self.blockchain().get_gas_left(); + + self.vault_proxy() + .contract(to) + .accept_funds() + .with_egld_or_single_esdt_transfer(payment) + .transfer_execute(); + + let gas_left_after = self.blockchain().get_gas_left(); + + ( + gas_left_before, + gas_left_after, + BigUint::zero(), + payment_token, + ) + .into() + } + + #[endpoint] + fn transf_exec_multi_accept_funds( + &self, + to: ManagedAddress, + token_payments: MultiValueEncoded>, + ) { + let mut all_token_payments = ManagedVec::new(); + + for multi_arg in token_payments.into_iter() { + let (token_identifier, token_nonce, amount) = multi_arg.into_tuple(); + let payment = EsdtTokenPayment::new(token_identifier, token_nonce, amount); + + all_token_payments.push(payment); + } + + self.vault_proxy() + .contract(to) + .accept_funds() + .with_multi_token_transfer(all_token_payments) + .transfer_execute() + } + + #[endpoint] + fn forward_transf_exec_reject_funds_multi_transfer( + &self, + to: ManagedAddress, + token_payments: MultiValueEncoded>, + ) { + let mut all_token_payments = ManagedVec::new(); + + for multi_arg in token_payments.into_iter() { + let (token_identifier, token_nonce, amount) = multi_arg.into_tuple(); + let payment = EsdtTokenPayment::new(token_identifier, token_nonce, amount); + + all_token_payments.push(payment); + } + + self.vault_proxy() + .contract(to) + .accept_funds() + .with_multi_token_transfer(all_token_payments) + .transfer_execute() + } + + #[endpoint] + fn transf_exec_multi_reject_funds( + &self, + to: ManagedAddress, + token_payments: MultiValueEncoded>, + ) { + let mut all_token_payments = ManagedVec::new(); + + for multi_arg in token_payments.into_iter() { + let (token_identifier, token_nonce, amount) = multi_arg.into_tuple(); + let payment = EsdtTokenPayment::new(token_identifier, token_nonce, amount); + + all_token_payments.push(payment); + } + + self.vault_proxy() + .contract(to) + .reject_funds() + .with_multi_token_transfer(all_token_payments) + .transfer_execute() + } +} diff --git a/contracts/feature-tests/composability/forwarder-legacy/src/contract_change_owner_legacy.rs b/contracts/feature-tests/composability/forwarder-legacy/src/contract_change_owner_legacy.rs new file mode 100644 index 0000000000..8c5a140e8d --- /dev/null +++ b/contracts/feature-tests/composability/forwarder-legacy/src/contract_change_owner_legacy.rs @@ -0,0 +1,28 @@ +multiversx_sc::imports!(); + +#[multiversx_sc::module] +pub trait ChangeOwnerModule { + #[proxy] + fn vault_proxy(&self) -> vault::Proxy; + + #[endpoint(changeOwnerAddress)] + fn change_owner( + &self, + child_sc_address: ManagedAddress, + new_owner: ManagedAddress, + ) -> ManagedAddress { + let () = self + .send() + .change_owner_address(child_sc_address.clone(), &new_owner) + .execute_on_dest_context(); + + self.get_owner_of_vault_contract(child_sc_address) + } + + fn get_owner_of_vault_contract(&self, address: ManagedAddress) -> ManagedAddress { + self.vault_proxy() + .contract(address) + .get_owner_address() + .execute_on_dest_context() + } +} diff --git a/contracts/feature-tests/composability/forwarder-legacy/src/contract_deploy_legacy.rs b/contracts/feature-tests/composability/forwarder-legacy/src/contract_deploy_legacy.rs new file mode 100644 index 0000000000..d573b45ec0 --- /dev/null +++ b/contracts/feature-tests/composability/forwarder-legacy/src/contract_deploy_legacy.rs @@ -0,0 +1,55 @@ +multiversx_sc::imports!(); + +#[multiversx_sc::module] +pub trait DeployContractModule { + #[proxy] + fn vault_proxy(&self) -> vault::Proxy; + + #[endpoint] + fn deploy_contract( + &self, + code: ManagedBuffer, + opt_arg: OptionalValue, + ) -> MultiValue2> { + self.perform_deploy_vault(&code, opt_arg).into() + } + + #[endpoint] + fn deploy_two_contracts( + &self, + code: ManagedBuffer, + ) -> MultiValue2 { + let (first_deployed_contract_address, _) = + self.perform_deploy_vault(&code, OptionalValue::None); + let (second_deployed_contract_address, _) = + self.perform_deploy_vault(&code, OptionalValue::None); + + ( + first_deployed_contract_address, + second_deployed_contract_address, + ) + .into() + } + + fn perform_deploy_vault( + &self, + code: &ManagedBuffer, + opt_arg: OptionalValue, + ) -> (ManagedAddress, OptionalValue) { + self.vault_proxy() + .init(opt_arg) + .deploy_contract(code, CodeMetadata::DEFAULT) + } + + #[endpoint] + fn deploy_vault_from_source( + &self, + source_address: ManagedAddress, + opt_arg: OptionalValue, + ) -> MultiValue2> { + self.vault_proxy() + .init(opt_arg) + .deploy_from_source(&source_address, CodeMetadata::DEFAULT) + .into() + } +} diff --git a/contracts/feature-tests/composability/forwarder-legacy/src/contract_upgrade_legacy.rs b/contracts/feature-tests/composability/forwarder-legacy/src/contract_upgrade_legacy.rs new file mode 100644 index 0000000000..b1629eeaa1 --- /dev/null +++ b/contracts/feature-tests/composability/forwarder-legacy/src/contract_upgrade_legacy.rs @@ -0,0 +1,31 @@ +multiversx_sc::imports!(); + +#[multiversx_sc::module] +pub trait UpgradeContractModule { + #[proxy] + fn vault_proxy(&self, sc_address: ManagedAddress) -> vault::Proxy; + + #[endpoint(upgradeVault)] + fn upgrade_vault( + &self, + child_sc_address: ManagedAddress, + new_code: ManagedBuffer, + opt_arg: OptionalValue, + ) { + self.vault_proxy(child_sc_address) + .init(opt_arg) + .upgrade_contract(&new_code, CodeMetadata::UPGRADEABLE); + } + + #[endpoint] + fn upgrade_vault_from_source( + &self, + child_sc_address: ManagedAddress, + source_address: ManagedAddress, + opt_arg: OptionalValue, + ) { + self.vault_proxy(child_sc_address) + .init(opt_arg) + .upgrade_from_source(&source_address, CodeMetadata::UPGRADEABLE) + } +} diff --git a/contracts/feature-tests/composability/forwarder-legacy/src/esdt_legacy.rs b/contracts/feature-tests/composability/forwarder-legacy/src/esdt_legacy.rs new file mode 100644 index 0000000000..900620c0c1 --- /dev/null +++ b/contracts/feature-tests/composability/forwarder-legacy/src/esdt_legacy.rs @@ -0,0 +1,215 @@ +multiversx_sc::imports!(); + +use super::storage_legacy; + +const PERCENTAGE_TOTAL: u64 = 10_000; // 100% + +pub type EsdtTokenDataMultiValue = MultiValue9< + EsdtTokenType, + BigUint, + bool, + ManagedBuffer, + ManagedBuffer, + ManagedBuffer, + ManagedAddress, + BigUint, + ManagedVec>, +>; + +#[multiversx_sc::module] +pub trait ForwarderEsdtModule: storage_legacy::ForwarderStorageModule { + #[view(getFungibleEsdtBalance)] + fn get_fungible_esdt_balance(&self, token_identifier: &TokenIdentifier) -> BigUint { + self.blockchain() + .get_esdt_balance(&self.blockchain().get_sc_address(), token_identifier, 0) + } + + #[view(getCurrentNftNonce)] + fn get_current_nft_nonce(&self, token_identifier: &TokenIdentifier) -> u64 { + self.blockchain() + .get_current_esdt_nft_nonce(&self.blockchain().get_sc_address(), token_identifier) + } + + #[endpoint] + fn send_esdt(&self, to: &ManagedAddress, token_id: TokenIdentifier, amount: &BigUint) { + self.send().direct_esdt(to, &token_id, 0, amount); + } + + #[payable("*")] + #[endpoint] + fn send_esdt_with_fees(&self, to: ManagedAddress, percentage_fees: BigUint) { + let (token_id, payment) = self.call_value().single_fungible_esdt(); + let fees = &payment * &percentage_fees / PERCENTAGE_TOTAL; + let amount_to_send = payment - fees; + + self.send().direct_esdt(&to, &token_id, 0, &amount_to_send); + } + + #[endpoint] + fn send_esdt_twice( + &self, + to: &ManagedAddress, + token_id: TokenIdentifier, + amount_first_time: &BigUint, + amount_second_time: &BigUint, + ) { + self.send().direct_esdt(to, &token_id, 0, amount_first_time); + self.send() + .direct_esdt(to, &token_id, 0, amount_second_time); + } + + #[endpoint] + fn send_esdt_direct_multi_transfer( + &self, + to: ManagedAddress, + token_payments: MultiValueEncoded>, + ) { + let mut all_token_payments = ManagedVec::new(); + + for multi_arg in token_payments.into_iter() { + let (token_identifier, token_nonce, amount) = multi_arg.into_tuple(); + let payment = EsdtTokenPayment::new(token_identifier, token_nonce, amount); + + all_token_payments.push(payment); + } + + let _ = self.send_raw().multi_esdt_transfer_execute( + &to, + &all_token_payments, + self.blockchain().get_gas_left(), + &ManagedBuffer::new(), + &ManagedArgBuffer::new(), + ); + } + + #[payable("EGLD")] + #[endpoint] + fn issue_fungible_token( + &self, + token_display_name: ManagedBuffer, + token_ticker: ManagedBuffer, + initial_supply: BigUint, + ) { + let issue_cost = self.call_value().egld_value(); + let caller = self.blockchain().get_caller(); + + self.send() + .esdt_system_sc_proxy() + .issue_fungible( + issue_cost.clone_value(), + &token_display_name, + &token_ticker, + &initial_supply, + FungibleTokenProperties { + num_decimals: 0, + can_freeze: true, + can_wipe: true, + can_pause: true, + can_mint: true, + can_burn: true, + can_change_owner: true, + can_upgrade: true, + can_add_special_roles: true, + }, + ) + .async_call() + .with_callback(self.callbacks().esdt_issue_callback(&caller)) + .call_and_exit() + } + + #[callback] + fn esdt_issue_callback( + &self, + caller: &ManagedAddress, + #[call_result] result: ManagedAsyncCallResult<()>, + ) { + let (token_identifier, returned_tokens) = self.call_value().egld_or_single_fungible_esdt(); + // callback is called with ESDTTransfer of the newly issued token, with the amount requested, + // so we can get the token identifier and amount from the call data + match result { + ManagedAsyncCallResult::Ok(()) => { + self.last_issued_token() + .set(&token_identifier.unwrap_esdt()); + self.last_error_message().clear(); + }, + ManagedAsyncCallResult::Err(message) => { + // return issue cost to the caller + if token_identifier.is_egld() && returned_tokens > 0 { + self.send().direct_egld(caller, &returned_tokens); + } + + self.last_error_message().set(&message.err_msg); + }, + } + } + + #[endpoint] + fn local_mint(&self, token_identifier: TokenIdentifier, amount: BigUint) { + self.send().esdt_local_mint(&token_identifier, 0, &amount); + } + + #[endpoint] + fn local_burn(&self, token_identifier: TokenIdentifier, amount: BigUint) { + self.send().esdt_local_burn(&token_identifier, 0, &amount); + } + + #[view] + fn get_esdt_local_roles(&self, token_id: TokenIdentifier) -> MultiValueEncoded { + let roles = self.blockchain().get_esdt_local_roles(&token_id); + let mut result = MultiValueEncoded::new(); + for role in roles.iter_roles() { + result.push(role.as_role_name().into()); + } + result + } + + #[view] + fn get_esdt_token_data( + &self, + address: ManagedAddress, + token_id: TokenIdentifier, + nonce: u64, + ) -> EsdtTokenDataMultiValue { + let token_data = self + .blockchain() + .get_esdt_token_data(&address, &token_id, nonce); + + ( + token_data.token_type, + token_data.amount, + token_data.frozen, + token_data.hash, + token_data.name, + token_data.attributes, + token_data.creator, + token_data.royalties, + token_data.uris, + ) + .into() + } + + #[view] + fn is_esdt_frozen( + &self, + address: &ManagedAddress, + token_id: &TokenIdentifier, + nonce: u64, + ) -> bool { + self.blockchain().is_esdt_frozen(address, token_id, nonce) + } + + #[view] + fn is_esdt_paused(&self, token_id: &TokenIdentifier) -> bool { + self.blockchain().is_esdt_paused(token_id) + } + + #[view] + fn is_esdt_limited_transfer(&self, token_id: &TokenIdentifier) -> bool { + self.blockchain().is_esdt_limited_transfer(token_id) + } + + #[view] + fn validate_token_identifier(&self, token_id: TokenIdentifier) -> bool { + token_id.is_valid_esdt_identifier() + } +} diff --git a/contracts/feature-tests/composability/forwarder-legacy/src/forwarder_legacy_main.rs b/contracts/feature-tests/composability/forwarder-legacy/src/forwarder_legacy_main.rs new file mode 100644 index 0000000000..a4c71bce23 --- /dev/null +++ b/contracts/feature-tests/composability/forwarder-legacy/src/forwarder_legacy_main.rs @@ -0,0 +1,41 @@ +#![no_std] +#![allow(clippy::type_complexity)] +#![allow(clippy::let_unit_value)] + +pub mod call_async_legacy; +pub mod call_sync_legacy; +pub mod call_transf_exec_legacy; +pub mod contract_change_owner_legacy; +pub mod contract_deploy_legacy; +// pub mod contract_upgrade_legacy; +pub mod esdt_legacy; +pub mod nft_legacy; +pub mod roles_legacy; +pub mod sft_legacy; +pub mod storage_legacy; + +multiversx_sc::imports!(); + +/// Test contract for investigating backwards compatibility in smart contract calls. +#[multiversx_sc::contract] +pub trait ForwarderLegacy: + call_sync_legacy::ForwarderSyncCallModule + + call_async_legacy::ForwarderAsyncCallModule + + call_transf_exec_legacy::ForwarderTransferExecuteModule + + contract_change_owner_legacy::ChangeOwnerModule + + contract_deploy_legacy::DeployContractModule + // + contract_upgrade_legacy::UpgradeContractModule + + esdt_legacy::ForwarderEsdtModule + + sft_legacy::ForwarderSftModule + + nft_legacy::ForwarderNftModule + + roles_legacy::ForwarderRolesModule + + storage_legacy::ForwarderStorageModule +{ + #[init] + fn init(&self) {} + + #[endpoint] + fn send_egld(&self, to: &ManagedAddress, amount: &BigUint) { + self.send().direct_egld(to, amount); + } +} diff --git a/contracts/feature-tests/composability/forwarder-legacy/src/nft_legacy.rs b/contracts/feature-tests/composability/forwarder-legacy/src/nft_legacy.rs new file mode 100644 index 0000000000..91fc37d85f --- /dev/null +++ b/contracts/feature-tests/composability/forwarder-legacy/src/nft_legacy.rs @@ -0,0 +1,296 @@ +multiversx_sc::imports!(); +multiversx_sc::derive_imports!(); + +use super::storage_legacy; + +// used as mock attributes for NFTs +#[derive(TopEncode, TopDecode, TypeAbi, Clone, Copy, PartialEq, Debug)] +pub struct Color { + pub r: u8, + pub g: u8, + pub b: u8, +} + +#[derive(TopEncode, TopDecode, TypeAbi, PartialEq, Eq, Clone)] +pub struct ComplexAttributes { + pub biguint: BigUint, + pub vec_u8: ManagedBuffer, + pub token_id: TokenIdentifier, + pub boolean: bool, + pub boxed_bytes: ManagedBuffer, +} + +#[multiversx_sc::module] +pub trait ForwarderNftModule: storage_legacy::ForwarderStorageModule { + #[view] + fn get_nft_balance(&self, token_identifier: &TokenIdentifier, nonce: u64) -> BigUint { + self.blockchain().get_esdt_balance( + &self.blockchain().get_sc_address(), + token_identifier, + nonce, + ) + } + + #[payable("*")] + #[endpoint] + fn buy_nft(&self, nft_id: TokenIdentifier, nft_nonce: u64, nft_amount: BigUint) -> BigUint { + let payment = self.call_value().egld_or_single_esdt(); + + self.send().sell_nft( + &nft_id, + nft_nonce, + &nft_amount, + &self.blockchain().get_caller(), + &payment.token_identifier, + payment.token_nonce, + &payment.amount, + ) + } + + #[payable("EGLD")] + #[endpoint] + fn nft_issue(&self, token_display_name: ManagedBuffer, token_ticker: ManagedBuffer) { + let issue_cost = self.call_value().egld_value(); + let caller = self.blockchain().get_caller(); + + self.send() + .esdt_system_sc_proxy() + .issue_non_fungible( + issue_cost.clone_value(), + &token_display_name, + &token_ticker, + NonFungibleTokenProperties { + can_freeze: true, + can_wipe: true, + can_pause: true, + can_transfer_create_role: true, + can_change_owner: true, + can_upgrade: true, + can_add_special_roles: true, + }, + ) + .async_call() + .with_callback(self.callbacks().nft_issue_callback(&caller)) + .call_and_exit() + } + + #[callback] + fn nft_issue_callback( + &self, + caller: &ManagedAddress, + #[call_result] result: ManagedAsyncCallResult, + ) { + match result { + ManagedAsyncCallResult::Ok(token_identifier) => { + self.last_issued_token().set(&token_identifier); + self.last_error_message().clear(); + }, + ManagedAsyncCallResult::Err(message) => { + // return issue cost to the caller + let (token_identifier, returned_tokens) = + self.call_value().egld_or_single_fungible_esdt(); + if token_identifier.is_egld() && returned_tokens > 0 { + self.send().direct_egld(caller, &returned_tokens); + } + + self.last_error_message().set(&message.err_msg); + }, + } + } + + #[endpoint] + fn nft_create( + &self, + token_identifier: TokenIdentifier, + amount: BigUint, + name: ManagedBuffer, + royalties: BigUint, + hash: ManagedBuffer, + color: Color, + uri: ManagedBuffer, + ) -> u64 { + let mut uris = ManagedVec::new(); + uris.push(uri); + let token_nonce = self.send().esdt_nft_create::( + &token_identifier, + &amount, + &name, + &royalties, + &hash, + &color, + &uris, + ); + + self.create_event(&token_identifier, token_nonce, &amount); + + token_nonce + } + + #[endpoint] + fn nft_create_compact(&self, token_identifier: TokenIdentifier, amount: BigUint, color: Color) { + self.send() + .esdt_nft_create_compact(&token_identifier, &amount, &color); + } + + #[endpoint] + fn nft_add_uris( + &self, + token_identifier: TokenIdentifier, + nonce: u64, + uris: MultiValueEncoded, + ) { + self.send() + .nft_add_multiple_uri(&token_identifier, nonce, &uris.to_vec()); + } + + #[endpoint] + fn nft_update_attributes( + &self, + token_identifier: TokenIdentifier, + nonce: u64, + new_attributes: Color, + ) { + self.send() + .nft_update_attributes(&token_identifier, nonce, &new_attributes); + } + + #[endpoint] + fn nft_decode_complex_attributes( + &self, + token_identifier: TokenIdentifier, + amount: BigUint, + name: ManagedBuffer, + royalties: BigUint, + hash: ManagedBuffer, + uri: ManagedBuffer, + attrs_arg: MultiValue5, + ) { + let attrs_pieces = attrs_arg.into_tuple(); + let orig_attr = ComplexAttributes { + biguint: attrs_pieces.0, + vec_u8: attrs_pieces.1, + token_id: attrs_pieces.2, + boolean: attrs_pieces.3, + boxed_bytes: attrs_pieces.4, + }; + + let mut uris = ManagedVec::new(); + uris.push(uri); + let token_nonce = self.send().esdt_nft_create::>( + &token_identifier, + &amount, + &name, + &royalties, + &hash, + &orig_attr, + &uris, + ); + + let token_info = self.blockchain().get_esdt_token_data( + &self.blockchain().get_sc_address(), + &token_identifier, + token_nonce, + ); + + let decoded_attr = token_info.decode_attributes::>(); + + require!( + orig_attr.biguint == decoded_attr.biguint + && orig_attr.vec_u8 == decoded_attr.vec_u8 + && orig_attr.token_id == decoded_attr.token_id + && orig_attr.boolean == decoded_attr.boolean + && orig_attr.boxed_bytes == decoded_attr.boxed_bytes, + "orig_attr != decoded_attr" + ); + } + + #[endpoint] + fn nft_add_quantity(&self, token_identifier: TokenIdentifier, nonce: u64, amount: BigUint) { + self.send() + .esdt_local_mint(&token_identifier, nonce, &amount); + } + + #[endpoint] + fn nft_burn(&self, token_identifier: TokenIdentifier, nonce: u64, amount: BigUint) { + self.send() + .esdt_local_burn(&token_identifier, nonce, &amount); + } + + #[endpoint] + fn transfer_nft_via_async_call( + &self, + to: ManagedAddress, + token_identifier: TokenIdentifier, + nonce: u64, + amount: BigUint, + ) { + self.send() + .transfer_esdt_via_async_call(to, token_identifier, nonce, amount); + } + + #[endpoint] + fn transfer_nft_and_execute( + &self, + to: ManagedAddress, + token_identifier: TokenIdentifier, + nonce: u64, + amount: BigUint, + function: ManagedBuffer, + arguments: MultiValueEncoded, + ) { + let _ = self.send_raw().transfer_esdt_nft_execute( + &to, + &token_identifier, + nonce, + &amount, + self.blockchain().get_gas_left(), + &function, + &arguments.to_arg_buffer(), + ); + } + + #[endpoint] + fn create_and_send( + &self, + to: ManagedAddress, + token_identifier: TokenIdentifier, + amount: BigUint, + name: ManagedBuffer, + royalties: BigUint, + hash: ManagedBuffer, + color: Color, + uri: ManagedBuffer, + ) { + let token_nonce = self.nft_create( + token_identifier.clone(), + amount.clone(), + name, + royalties, + hash, + color, + uri, + ); + + self.send() + .direct_esdt(&to, &token_identifier, token_nonce, &amount); + + self.send_event(&to, &token_identifier, token_nonce, &amount); + } + + #[event("create")] + fn create_event( + &self, + #[indexed] token_id: &TokenIdentifier, + #[indexed] token_nonce: u64, + #[indexed] amount: &BigUint, + ); + + #[event("send")] + fn send_event( + &self, + #[indexed] to: &ManagedAddress, + #[indexed] token_id: &TokenIdentifier, + #[indexed] token_nonce: u64, + #[indexed] amount: &BigUint, + ); +} diff --git a/contracts/feature-tests/composability/forwarder-legacy/src/roles_legacy.rs b/contracts/feature-tests/composability/forwarder-legacy/src/roles_legacy.rs new file mode 100644 index 0000000000..9c795bfa7b --- /dev/null +++ b/contracts/feature-tests/composability/forwarder-legacy/src/roles_legacy.rs @@ -0,0 +1,48 @@ +multiversx_sc::imports!(); + +use super::storage_legacy; + +#[multiversx_sc::module] +pub trait ForwarderRolesModule: storage_legacy::ForwarderStorageModule { + #[endpoint(setLocalRoles)] + fn set_local_roles( + &self, + address: ManagedAddress, + token_identifier: TokenIdentifier, + roles: MultiValueEncoded, + ) { + self.send() + .esdt_system_sc_proxy() + .set_special_roles(&address, &token_identifier, roles.into_iter()) + .async_call() + .with_callback(self.callbacks().change_roles_callback()) + .call_and_exit() + } + + #[endpoint(unsetLocalRoles)] + fn unset_local_roles( + &self, + address: ManagedAddress, + token_identifier: TokenIdentifier, + roles: MultiValueEncoded, + ) { + self.send() + .esdt_system_sc_proxy() + .unset_special_roles(&address, &token_identifier, roles.into_iter()) + .async_call() + .with_callback(self.callbacks().change_roles_callback()) + .call_and_exit() + } + + #[callback] + fn change_roles_callback(&self, #[call_result] result: ManagedAsyncCallResult<()>) { + match result { + ManagedAsyncCallResult::Ok(()) => { + self.last_error_message().clear(); + }, + ManagedAsyncCallResult::Err(message) => { + self.last_error_message().set(&message.err_msg); + }, + } + } +} diff --git a/contracts/feature-tests/composability/forwarder-legacy/src/sft_legacy.rs b/contracts/feature-tests/composability/forwarder-legacy/src/sft_legacy.rs new file mode 100644 index 0000000000..4b0a5c2f3c --- /dev/null +++ b/contracts/feature-tests/composability/forwarder-legacy/src/sft_legacy.rs @@ -0,0 +1,57 @@ +multiversx_sc::imports!(); + +use super::storage_legacy; + +#[multiversx_sc::module] +pub trait ForwarderSftModule: storage_legacy::ForwarderStorageModule { + #[payable("EGLD")] + #[endpoint] + fn sft_issue(&self, token_display_name: ManagedBuffer, token_ticker: ManagedBuffer) { + let issue_cost = self.call_value().egld_value(); + let caller = self.blockchain().get_caller(); + + self.send() + .esdt_system_sc_proxy() + .issue_semi_fungible( + issue_cost.clone_value(), + &token_display_name, + &token_ticker, + SemiFungibleTokenProperties { + can_freeze: true, + can_wipe: true, + can_pause: true, + can_transfer_create_role: true, + can_change_owner: true, + can_upgrade: true, + can_add_special_roles: true, + }, + ) + .async_call() + .with_callback(self.callbacks().sft_issue_callback(&caller)) + .call_and_exit() + } + + #[callback] + fn sft_issue_callback( + &self, + caller: &ManagedAddress, + #[call_result] result: ManagedAsyncCallResult, + ) { + match result { + ManagedAsyncCallResult::Ok(token_identifier) => { + self.last_issued_token().set(&token_identifier); + self.last_error_message().clear(); + }, + ManagedAsyncCallResult::Err(message) => { + // return issue cost to the caller + let (token_identifier, returned_tokens) = + self.call_value().egld_or_single_fungible_esdt(); + if token_identifier.is_egld() && returned_tokens > 0 { + self.send().direct_egld(caller, &returned_tokens); + } + + self.last_error_message().set(&message.err_msg); + }, + } + } +} diff --git a/contracts/feature-tests/composability/forwarder-legacy/src/storage_legacy.rs b/contracts/feature-tests/composability/forwarder-legacy/src/storage_legacy.rs new file mode 100644 index 0000000000..f27887b63f --- /dev/null +++ b/contracts/feature-tests/composability/forwarder-legacy/src/storage_legacy.rs @@ -0,0 +1,12 @@ +multiversx_sc::imports!(); + +#[multiversx_sc::module] +pub trait ForwarderStorageModule { + #[view(lastIssuedToken)] + #[storage_mapper("lastIssuedToken")] + fn last_issued_token(&self) -> SingleValueMapper; + + #[view(lastErrorMessage)] + #[storage_mapper("lastErrorMessage")] + fn last_error_message(&self) -> SingleValueMapper; +} diff --git a/contracts/feature-tests/composability/tests/forwarder_blackbox_legacy_test.rs b/contracts/feature-tests/composability/tests/forwarder_blackbox_legacy_test.rs new file mode 100644 index 0000000000..9620e12277 --- /dev/null +++ b/contracts/feature-tests/composability/tests/forwarder_blackbox_legacy_test.rs @@ -0,0 +1,140 @@ +use forwarder_legacy::nft_legacy::{Color, ProxyTrait as _}; + +use multiversx_sc_scenario::{ + api::StaticApi, + scenario_model::{ + Account, CheckAccount, CheckStateStep, ScCallStep, SetStateStep, TransferStep, + }, + ContractInfo, ScenarioWorld, +}; + +const USER_ADDRESS_EXPR: &str = "address:user"; +const FORWARDER_ADDRESS_EXPR: &str = "sc:forwarder_legacy"; +const FORWARDER_PATH_EXPR: &str = "mxsc:output/forwarder_legacy.mxsc.json"; + +const NFT_TOKEN_ID_EXPR: &str = "str:COOL-123456"; +const NFT_TOKEN_ID: &[u8] = b"COOL-123456"; + +type ForwarderContract = ContractInfo>; + +fn world() -> ScenarioWorld { + let mut blockchain = ScenarioWorld::new(); + blockchain.set_current_dir_from_workspace("contracts/composability/"); + + blockchain.register_contract(FORWARDER_PATH_EXPR, forwarder_legacy::ContractBuilder); + blockchain +} + +struct ForwarderTestState { + world: ScenarioWorld, + forwarder_legacy_contract: ForwarderContract, +} + +impl ForwarderTestState { + fn new() -> Self { + let mut world = world(); + + let forwarder_legacy_code = world.code_expression(FORWARDER_PATH_EXPR); + let roles = vec![ + "ESDTRoleNFTCreate".to_string(), + "ESDTRoleNFTUpdateAttributes".to_string(), + ]; + + world.set_state_step( + SetStateStep::new() + .put_account(USER_ADDRESS_EXPR, Account::new().nonce(1)) + .put_account( + FORWARDER_ADDRESS_EXPR, + Account::new() + .nonce(1) + .code(forwarder_legacy_code) + .esdt_roles(NFT_TOKEN_ID_EXPR, roles), + ), + ); + + let forwarder_legacy_contract = ForwarderContract::new(FORWARDER_ADDRESS_EXPR); + + Self { + world, + forwarder_legacy_contract, + } + } +} + +#[test] +fn test_nft_update_attributes_and_send() { + let mut state = ForwarderTestState::new(); + + let original_attributes = Color { r: 0, g: 0, b: 0 }; + + state.world.sc_call( + ScCallStep::new().from(USER_ADDRESS_EXPR).call( + state.forwarder_legacy_contract.nft_create_compact( + NFT_TOKEN_ID, + 1u64, + original_attributes, + ), + ), + ); + + state.world.transfer_step( + TransferStep::new() + .from(FORWARDER_ADDRESS_EXPR) + .to(USER_ADDRESS_EXPR) + .esdt_transfer(NFT_TOKEN_ID, 1, "1"), + ); + + state + .world + .check_state_step(CheckStateStep::new().put_account( + USER_ADDRESS_EXPR, + CheckAccount::new().esdt_nft_balance_and_attributes( + NFT_TOKEN_ID_EXPR, + 1, + "1", + Some(original_attributes), + ), + )); + + let new_attributes = Color { + r: 255, + g: 255, + b: 255, + }; + + state.world.transfer_step( + TransferStep::new() + .from(USER_ADDRESS_EXPR) + .to(FORWARDER_ADDRESS_EXPR) + .esdt_transfer(NFT_TOKEN_ID, 1, "1"), + ); + + state.world.sc_call( + ScCallStep::new().from(USER_ADDRESS_EXPR).call( + state.forwarder_legacy_contract.nft_update_attributes( + NFT_TOKEN_ID, + 1u64, + new_attributes, + ), + ), + ); + + state.world.transfer_step( + TransferStep::new() + .from(FORWARDER_ADDRESS_EXPR) + .to(USER_ADDRESS_EXPR) + .esdt_transfer(NFT_TOKEN_ID, 1, "1"), + ); + + state + .world + .check_state_step(CheckStateStep::new().put_account( + USER_ADDRESS_EXPR, + CheckAccount::new().esdt_nft_balance_and_attributes( + NFT_TOKEN_ID_EXPR, + 1, + "1", + Some(new_attributes), + ), + )); +} diff --git a/contracts/feature-tests/composability/forwarder/tests/forwarder_blackbox_test.rs b/contracts/feature-tests/composability/tests/forwarder_blackbox_test.rs similarity index 100% rename from contracts/feature-tests/composability/forwarder/tests/forwarder_blackbox_test.rs rename to contracts/feature-tests/composability/tests/forwarder_blackbox_test.rs diff --git a/contracts/feature-tests/composability/tests/forwarder_whitebox_legacy_test.rs b/contracts/feature-tests/composability/tests/forwarder_whitebox_legacy_test.rs new file mode 100644 index 0000000000..d829016176 --- /dev/null +++ b/contracts/feature-tests/composability/tests/forwarder_whitebox_legacy_test.rs @@ -0,0 +1,118 @@ +use forwarder_legacy::nft_legacy::{Color, ForwarderNftModule}; +use multiversx_sc::{contract_base::ContractBase, types::Address}; +use multiversx_sc_scenario::{ + managed_address, managed_biguint, managed_token_id, + scenario_model::{ + Account, AddressValue, CheckAccount, CheckStateStep, ScCallStep, SetStateStep, + }, + ScenarioWorld, WhiteboxContract, +}; + +const USER_ADDRESS_EXPR: &str = "address:user"; +const FORWARDER_ADDRESS_EXPR: &str = "sc:forwarder_legacy"; +const FORWARDER_PATH_EXPR: &str = "mxsc:output/forwarder_legacy.mxsc.json"; + +const NFT_TOKEN_ID_EXPR: &str = "str:COOL-123456"; +const NFT_TOKEN_ID: &[u8] = b"COOL-123456"; + +fn world() -> ScenarioWorld { + let mut blockchain = ScenarioWorld::new(); + blockchain.set_current_dir_from_workspace("contracts/composability/forwarder_legacy"); + + blockchain.register_contract(FORWARDER_PATH_EXPR, forwarder_legacy::ContractBuilder); + blockchain +} + +#[test] +fn test_nft_update_attributes_and_send() { + let mut world = world(); + + let forwarder_legacy_code = world.code_expression(FORWARDER_PATH_EXPR); + let roles = vec![ + "ESDTRoleNFTCreate".to_string(), + "ESDTRoleNFTUpdateAttributes".to_string(), + ]; + + world.set_state_step( + SetStateStep::new() + .put_account(USER_ADDRESS_EXPR, Account::new().nonce(1)) + .put_account( + FORWARDER_ADDRESS_EXPR, + Account::new() + .nonce(1) + .code(forwarder_legacy_code) + .esdt_roles(NFT_TOKEN_ID_EXPR, roles), + ), + ); + + let forwarder_legacy_whitebox = + WhiteboxContract::new(FORWARDER_ADDRESS_EXPR, forwarder_legacy::contract_obj); + + let original_attributes = Color { r: 0, g: 0, b: 0 }; + + world.whitebox_call( + &forwarder_legacy_whitebox, + ScCallStep::new().from(USER_ADDRESS_EXPR), + |sc| { + sc.nft_create_compact( + managed_token_id!(NFT_TOKEN_ID), + managed_biguint!(1), + original_attributes, + ); + + sc.send().direct_esdt( + &managed_address!(&address_expr_to_address(USER_ADDRESS_EXPR)), + &managed_token_id!(NFT_TOKEN_ID), + 1, + &managed_biguint!(1), + ); + }, + ); + + world.check_state_step(CheckStateStep::new().put_account( + USER_ADDRESS_EXPR, + CheckAccount::new().esdt_nft_balance_and_attributes( + NFT_TOKEN_ID_EXPR, + 1, + "1", + Some(original_attributes), + ), + )); + + let new_attributes = Color { + r: 255, + g: 255, + b: 255, + }; + + world.whitebox_call( + &forwarder_legacy_whitebox, + ScCallStep::new() + .from(USER_ADDRESS_EXPR) + .esdt_transfer(NFT_TOKEN_ID, 1, "1"), + |sc| { + sc.nft_update_attributes(managed_token_id!(NFT_TOKEN_ID), 1, new_attributes); + + sc.send().direct_esdt( + &managed_address!(&address_expr_to_address(USER_ADDRESS_EXPR)), + &managed_token_id!(NFT_TOKEN_ID), + 1, + &managed_biguint!(1), + ); + }, + ); + + world.check_state_step(CheckStateStep::new().put_account( + USER_ADDRESS_EXPR, + CheckAccount::new().esdt_nft_balance_and_attributes( + NFT_TOKEN_ID_EXPR, + 1, + "1", + Some(new_attributes), + ), + )); +} + +fn address_expr_to_address(address_expr: &str) -> Address { + AddressValue::from(address_expr).to_address() +} diff --git a/contracts/feature-tests/composability/forwarder/tests/forwarder_whitebox_test.rs b/contracts/feature-tests/composability/tests/forwarder_whitebox_test.rs similarity index 100% rename from contracts/feature-tests/composability/forwarder/tests/forwarder_whitebox_test.rs rename to contracts/feature-tests/composability/tests/forwarder_whitebox_test.rs From 635c5f50c4130e77cf8aefb844e101cbea43a671 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 12 Apr 2024 16:12:11 +0300 Subject: [PATCH 335/461] fixed backwards compatibility for upgrade_contract and upgrade_from_source --- .../src/contract_upgrade_legacy.rs | 2 + .../src/forwarder_legacy_main.rs | 4 +- .../proxy-test-first/src/proxy-test-first.rs | 7 +- .../interaction/tx_exec/tx_exec_deploy.rs | 79 +++++++++++++++++++ .../interaction/tx_exec/tx_exec_upgrade.rs | 12 ++- 5 files changed, 98 insertions(+), 6 deletions(-) diff --git a/contracts/feature-tests/composability/forwarder-legacy/src/contract_upgrade_legacy.rs b/contracts/feature-tests/composability/forwarder-legacy/src/contract_upgrade_legacy.rs index b1629eeaa1..32e92844c7 100644 --- a/contracts/feature-tests/composability/forwarder-legacy/src/contract_upgrade_legacy.rs +++ b/contracts/feature-tests/composability/forwarder-legacy/src/contract_upgrade_legacy.rs @@ -1,3 +1,5 @@ +#![allow(deprecated)] + multiversx_sc::imports!(); #[multiversx_sc::module] diff --git a/contracts/feature-tests/composability/forwarder-legacy/src/forwarder_legacy_main.rs b/contracts/feature-tests/composability/forwarder-legacy/src/forwarder_legacy_main.rs index a4c71bce23..feae6a9965 100644 --- a/contracts/feature-tests/composability/forwarder-legacy/src/forwarder_legacy_main.rs +++ b/contracts/feature-tests/composability/forwarder-legacy/src/forwarder_legacy_main.rs @@ -7,7 +7,7 @@ pub mod call_sync_legacy; pub mod call_transf_exec_legacy; pub mod contract_change_owner_legacy; pub mod contract_deploy_legacy; -// pub mod contract_upgrade_legacy; +pub mod contract_upgrade_legacy; pub mod esdt_legacy; pub mod nft_legacy; pub mod roles_legacy; @@ -24,7 +24,7 @@ pub trait ForwarderLegacy: + call_transf_exec_legacy::ForwarderTransferExecuteModule + contract_change_owner_legacy::ChangeOwnerModule + contract_deploy_legacy::DeployContractModule - // + contract_upgrade_legacy::UpgradeContractModule + + contract_upgrade_legacy::UpgradeContractModule + esdt_legacy::ForwarderEsdtModule + sft_legacy::ForwarderSftModule + nft_legacy::ForwarderNftModule diff --git a/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs b/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs index bc3d648b56..8ca0ffc3b3 100644 --- a/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs +++ b/contracts/feature-tests/composability/proxy-test-first/src/proxy-test-first.rs @@ -54,10 +54,13 @@ pub trait ProxyTestFirst { self.tx() .to(other_contract) - .raw_upgrade() + .typed(pay_me_proxy::PayMeProxy) + .upgrade() .argument(&456) .egld(payment) - .upgrade_contract(&code, CodeMetadata::UPGRADEABLE); + .code(code) + .code_metadata(CodeMetadata::UPGRADEABLE) + .upgrade_async_call_and_exit(); } #[payable("EGLD")] diff --git a/framework/base/src/types/interaction/tx_exec/tx_exec_deploy.rs b/framework/base/src/types/interaction/tx_exec/tx_exec_deploy.rs index b9a77119ed..28608a33f5 100644 --- a/framework/base/src/types/interaction/tx_exec/tx_exec_deploy.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_exec_deploy.rs @@ -202,3 +202,82 @@ where (new_address, decode_result(raw_results)) } } + +impl + Tx< + TxScEnv, + (), + ManagedAddress, + Payment, + Gas, + DeployCall, ()>, + OriginalResultMarker, + > +where + Api: CallTypeApi, + Payment: TxPaymentEgldOnly>, + Gas: TxGas>, + OriginalResult: TopEncodeMulti, +{ + /// Backwards compatibility, immitates the old API. + /// + /// Should no longer be used, which is why unlike all the rest of the old syntax, was deprecated. + /// + /// Uses a `DeployCall` instead of the correct `UpgradeCall`, because the old syntax did not know about upgrades. + /// + /// Note that the data type (the `DeployCall`) doesn't have the code set. + /// This is because the old API was passing it as paramter, so we use it from the `code` argument. + /// + /// Also note that the code metadata is taken from the `code_metadata` argument. + /// If another one was previously set in the `Tx` object, that one will be ignored. + #[deprecated( + since = "0.49.0", + note = "The legacy upgrade method does not correctly take the upgrade constructor into account. Please switch to the new syntax." + )] + pub fn upgrade_contract(self, code: &ManagedBuffer, code_metadata: CodeMetadata) { + let gas = self.gas.explicit_or_gas_left(&self.env); + self.payment.with_egld_value(&self.env, |egld_value| { + SendRawWrapper::::new().upgrade_contract( + &self.to, + gas, + egld_value, + code, + code_metadata, + &self.data.arg_buffer, + ); + }); + } + + /// Backwards compatibility, immitates the old API. + /// + /// Should no longer be used, which is why unlike all the rest of the old syntax, was deprecated. + /// + /// Uses a `DeployCall` instead of the correct `UpgradeCall`, because the old syntax did not know about upgrades. + /// + /// Note that the data type (the `DeployCall`) doesn't have the code set. + /// This is because the old API was passing it as paramter, so we use it from the `code` argument. + /// + /// Also note that the code metadata is taken from the `code_metadata` argument. + /// If another one was previously set in the `Tx` object, that one will be ignored. + #[deprecated( + since = "0.49.0", + note = "The legacy upgrade method does not correctly take the upgrade constructor into account. Please switch to the new syntax." + )] + pub fn upgrade_from_source( + self, + source_address: &ManagedAddress, + code_metadata: CodeMetadata, + ) { + let gas = self.gas.explicit_or_gas_left(&self.env); + self.payment.with_egld_value(&self.env, |egld_value| { + SendRawWrapper::::new().upgrade_from_source_contract( + &self.to, + gas, + egld_value, + source_address, + code_metadata, + &self.data.arg_buffer, + ); + }); + } +} diff --git a/framework/base/src/types/interaction/tx_exec/tx_exec_upgrade.rs b/framework/base/src/types/interaction/tx_exec/tx_exec_upgrade.rs index 5a08481640..0f71ae64bb 100644 --- a/framework/base/src/types/interaction/tx_exec/tx_exec_upgrade.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_exec_upgrade.rs @@ -87,13 +87,17 @@ where Gas: TxGas>, RH: TxEmptyResultHandler>, { - /// Backwards compatibility, immitates the old API. + /// Transition syntax, immitates the old API. /// /// Note that the data type (the `UpgradeCall`) doesn't have the code set. /// This is because the old API was passing it as paramter, so we use it from the `code` argument. /// /// Also note that the code metadata is taken from the `code_metadata` argument. /// If another one was previously set in the `Tx` object, that one will be ignored. + #[deprecated( + since = "0.49.0", + note = "This is a transition syntax, it would not have been reachable before 0.49.0. Use [upgrade_async_call_and_exit] instead." + )] pub fn upgrade_contract(self, code: &ManagedBuffer, code_metadata: CodeMetadata) { let gas = self.gas.explicit_or_gas_left(&self.env); self.payment.with_egld_value(&self.env, |egld_value| { @@ -108,13 +112,17 @@ where }); } - /// Backwards compatibility, immitates the old API. + /// Transition syntax, immitates the old API. /// /// Note that the data type (the `UpgradeCall`) doesn't have the code set. /// This is because the old API was passing it as paramter, so we use it from the `code` argument. /// /// Also note that the code metadata is taken from the `code_metadata` argument. /// If another one was previously set in the `Tx` object, that one will be ignored. + #[deprecated( + since = "0.49.0", + note = "This is a transition syntax, it would not have been reachable before 0.49.0. Use [upgrade_async_call_and_exit] instead." + )] pub fn upgrade_from_source( self, source_address: &ManagedAddress, From 766064c72f4877750c637bfa45f07d48c16f879a Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 12 Apr 2024 17:32:11 +0300 Subject: [PATCH 336/461] fixed backwards compatibility for with_esdt_transfer, changed multi_esdt, cleanup --- .../examples/digital-cash/src/digital_cash.rs | 2 +- .../digital-cash/src/signature_operations.rs | 4 +- .../src/esdt_transfer_with_fee.rs | 4 +- .../src/rewards_distribution.rs | 7 +-- .../src/call_transf_exec_legacy.rs | 21 +++++++ .../forwarder-raw/src/forwarder_raw_async.rs | 2 +- .../composability/forwarder/src/call_async.rs | 2 +- .../composability/forwarder/src/call_sync.rs | 4 +- .../forwarder/src/call_transf_exec.rs | 6 +- .../composability/forwarder/src/esdt.rs | 2 +- .../composability/vault/src/vault.rs | 4 +- contracts/modules/src/token_merge/mod.rs | 10 +--- contracts/modules/src/transfer_role_proxy.rs | 2 +- .../contract_base/wrappers/send_wrapper.rs | 4 +- framework/base/src/types/interaction/tx.rs | 57 +++++++++++++------ .../interaction/tx_exec/tx_exec_deploy.rs | 8 +-- .../managed/wrapped/esdt_token_payment.rs | 21 +++++++ 17 files changed, 107 insertions(+), 53 deletions(-) diff --git a/contracts/examples/digital-cash/src/digital_cash.rs b/contracts/examples/digital-cash/src/digital_cash.rs index c631256545..c1d96c9132 100644 --- a/contracts/examples/digital-cash/src/digital_cash.rs +++ b/contracts/examples/digital-cash/src/digital_cash.rs @@ -64,7 +64,7 @@ pub trait DigitalCash: if !collected_esdt_fees.is_empty() { self.tx() .to(&caller_address) - .multi_esdt(&collected_esdt_fees) + .payment(&collected_esdt_fees) .transfer(); } } diff --git a/contracts/examples/digital-cash/src/signature_operations.rs b/contracts/examples/digital-cash/src/signature_operations.rs index fd69a91ef2..9c68951f05 100644 --- a/contracts/examples/digital-cash/src/signature_operations.rs +++ b/contracts/examples/digital-cash/src/signature_operations.rs @@ -42,7 +42,7 @@ pub trait SignatureOperationsModule: storage::StorageModule + helpers::HelpersMo if !esdt_funds.is_empty() { self.tx() .to(&deposit.depositor_address) - .multi_esdt(esdt_funds) + .payment(esdt_funds) .transfer(); } } @@ -83,7 +83,7 @@ pub trait SignatureOperationsModule: storage::StorageModule + helpers::HelpersMo if !deposit.esdt_funds.is_empty() { self.tx() .to(&caller_address) - .multi_esdt(&deposit.esdt_funds) + .payment(&deposit.esdt_funds) .transfer(); } if deposited_fee.amount > 0 { diff --git a/contracts/examples/esdt-transfer-with-fee/src/esdt_transfer_with_fee.rs b/contracts/examples/esdt-transfer-with-fee/src/esdt_transfer_with_fee.rs index 495e8bb57e..de883ef83a 100644 --- a/contracts/examples/esdt-transfer-with-fee/src/esdt_transfer_with_fee.rs +++ b/contracts/examples/esdt-transfer-with-fee/src/esdt_transfer_with_fee.rs @@ -40,7 +40,7 @@ pub trait EsdtTransferWithFee { } self.paid_fees().clear(); - self.tx().to(ToCaller).multi_esdt(&fees).transfer(); + self.tx().to(ToCaller).payment(fees).transfer(); } #[payable("*")] @@ -81,7 +81,7 @@ pub trait EsdtTransferWithFee { }, } } - self.tx().to(&address).multi_esdt(new_payments).transfer(); + self.tx().to(&address).payment(new_payments).transfer(); } fn get_payment_after_fees( diff --git a/contracts/examples/rewards-distribution/src/rewards_distribution.rs b/contracts/examples/rewards-distribution/src/rewards_distribution.rs index c669b651f4..880b4ed835 100644 --- a/contracts/examples/rewards-distribution/src/rewards_distribution.rs +++ b/contracts/examples/rewards-distribution/src/rewards_distribution.rs @@ -278,11 +278,8 @@ pub trait RewardsDistribution: } self.tx().to(&caller).egld(total_egld_reward).transfer(); - self.tx().to(&caller).multi_esdt(rewards).transfer(); - self.tx() - .to(&caller) - .multi_esdt(nfts.clone_value()) - .transfer(); + self.tx().to(&caller).payment(rewards).transfer(); + self.tx().to(&caller).payment(nfts).transfer(); } fn claim_reward_token( diff --git a/contracts/feature-tests/composability/forwarder-legacy/src/call_transf_exec_legacy.rs b/contracts/feature-tests/composability/forwarder-legacy/src/call_transf_exec_legacy.rs index e402ea5316..f113edd27e 100644 --- a/contracts/feature-tests/composability/forwarder-legacy/src/call_transf_exec_legacy.rs +++ b/contracts/feature-tests/composability/forwarder-legacy/src/call_transf_exec_legacy.rs @@ -109,6 +109,27 @@ pub trait ForwarderTransferExecuteModule { .transfer_execute() } + #[endpoint] + fn transf_exec_multi_accept_funds_v2( + &self, + to: ManagedAddress, + token_payments: MultiValueEncoded>, + ) { + let mut tx = self + .vault_proxy() + .contract(to) + .accept_funds() + .multi_esdt(()); + + for multi_arg in token_payments.into_iter() { + let (token_identifier, token_nonce, amount) = multi_arg.into_tuple(); + let payment_triple = (token_identifier, token_nonce, amount); + tx = tx.with_esdt_transfer(payment_triple); + } + + tx.transfer_execute() + } + #[endpoint] fn forward_transf_exec_reject_funds_multi_transfer( &self, diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs index fbd0eec1a4..55f00f079e 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs @@ -23,7 +23,7 @@ pub trait ForwarderRawAsync: super::forwarder_raw_common::ForwarderRawCommon { #[payable("*")] fn forward_direct_esdt_multi(&self, to: ManagedAddress) { let payments = self.call_value().all_esdt_transfers(); - self.tx().to(&to).multi_esdt(payments).transfer(); + self.tx().to(&to).payment(payments).transfer(); } fn forward_contract_call( diff --git a/contracts/feature-tests/composability/forwarder/src/call_async.rs b/contracts/feature-tests/composability/forwarder/src/call_async.rs index 04ba78faab..3335b7df46 100644 --- a/contracts/feature-tests/composability/forwarder/src/call_async.rs +++ b/contracts/feature-tests/composability/forwarder/src/call_async.rs @@ -198,7 +198,7 @@ pub trait ForwarderAsyncCallModule { .to(&to) .typed(vault_proxy::VaultProxy) .accept_funds() - .with_multi_token_transfer(all_token_payments) + .payment(all_token_payments) .async_call() .call_and_exit(); } diff --git a/contracts/feature-tests/composability/forwarder/src/call_sync.rs b/contracts/feature-tests/composability/forwarder/src/call_sync.rs index 8366f0ae29..28365c77b4 100644 --- a/contracts/feature-tests/composability/forwarder/src/call_sync.rs +++ b/contracts/feature-tests/composability/forwarder/src/call_sync.rs @@ -154,7 +154,7 @@ pub trait ForwarderSyncCallModule { amount, OptionalValue::::Some(b"accept_funds_func".into()), ) - .with_multi_token_transfer(payments.clone_value()) + .payment(payments.clone_value()) .sync_call(); } @@ -180,7 +180,7 @@ pub trait ForwarderSyncCallModule { .to(&to) .typed(vault_proxy::VaultProxy) .accept_funds() - .with_multi_token_transfer(all_token_payments) + .payment(all_token_payments) .sync_call(); } } diff --git a/contracts/feature-tests/composability/forwarder/src/call_transf_exec.rs b/contracts/feature-tests/composability/forwarder/src/call_transf_exec.rs index 3573987867..9051446954 100644 --- a/contracts/feature-tests/composability/forwarder/src/call_transf_exec.rs +++ b/contracts/feature-tests/composability/forwarder/src/call_transf_exec.rs @@ -110,7 +110,7 @@ pub trait ForwarderTransferExecuteModule { .to(&to) .typed(vault_proxy::VaultProxy) .accept_funds() - .with_multi_token_transfer(all_token_payments) + .payment(all_token_payments) .transfer_execute() } @@ -133,7 +133,7 @@ pub trait ForwarderTransferExecuteModule { .to(&to) .typed(vault_proxy::VaultProxy) .accept_funds() - .with_multi_token_transfer(all_token_payments) + .payment(all_token_payments) .transfer_execute() } @@ -156,7 +156,7 @@ pub trait ForwarderTransferExecuteModule { .to(&to) .typed(vault_proxy::VaultProxy) .reject_funds() - .with_multi_token_transfer(all_token_payments) + .payment(all_token_payments) .transfer_execute() } } diff --git a/contracts/feature-tests/composability/forwarder/src/esdt.rs b/contracts/feature-tests/composability/forwarder/src/esdt.rs index 844329ae65..7a3e938c06 100644 --- a/contracts/feature-tests/composability/forwarder/src/esdt.rs +++ b/contracts/feature-tests/composability/forwarder/src/esdt.rs @@ -84,7 +84,7 @@ pub trait ForwarderEsdtModule: storage::ForwarderStorageModule { all_token_payments.push(payment); } - self.tx().to(&to).multi_esdt(all_token_payments).transfer(); + self.tx().to(&to).payment(all_token_payments).transfer(); } #[payable("EGLD")] diff --git a/contracts/feature-tests/composability/vault/src/vault.rs b/contracts/feature-tests/composability/vault/src/vault.rs index d23123ca01..c90c54bb6c 100644 --- a/contracts/feature-tests/composability/vault/src/vault.rs +++ b/contracts/feature-tests/composability/vault/src/vault.rs @@ -188,7 +188,7 @@ pub trait Vault { all_payments.push(EsdtTokenPayment::new(token_id, nonce, amount)); } - self.tx().to(caller).multi_esdt(all_payments).transfer(); + self.tx().to(caller).payment(all_payments).transfer(); } #[payable("*")] @@ -226,7 +226,7 @@ pub trait Vault { )); } - self.tx().to_caller().multi_esdt(new_tokens).transfer(); + self.tx().to_caller().payment(new_tokens).transfer(); } #[event("accept_funds")] diff --git a/contracts/modules/src/token_merge/mod.rs b/contracts/modules/src/token_merge/mod.rs index 1164a44a45..2e4fe85668 100644 --- a/contracts/modules/src/token_merge/mod.rs +++ b/contracts/modules/src/token_merge/mod.rs @@ -118,10 +118,7 @@ pub trait TokenMergeModule: .esdt_local_burn(&token.token_identifier, token.token_nonce, &token.amount); } - self.tx() - .to(ToCaller) - .multi_esdt(&output_payments) - .transfer(); + self.tx().to(ToCaller).payment(&output_payments).transfer(); output_payments } @@ -167,10 +164,7 @@ pub trait TokenMergeModule: ); tokens_to_remove.push(new_merged_token); - self.tx() - .to(ToCaller) - .multi_esdt(&tokens_to_remove) - .transfer(); + self.tx().to(ToCaller).payment(&tokens_to_remove).transfer(); tokens_to_remove } diff --git a/contracts/modules/src/transfer_role_proxy.rs b/contracts/modules/src/transfer_role_proxy.rs index 9001de263d..d5249ce04c 100644 --- a/contracts/modules/src/transfer_role_proxy.rs +++ b/contracts/modules/src/transfer_role_proxy.rs @@ -114,7 +114,7 @@ pub trait TransferRoleProxyModule { if !initial_payments.is_empty() { self.tx() .to(&original_caller) - .multi_esdt(initial_payments) + .payment(initial_payments) .transfer(); } diff --git a/framework/base/src/contract_base/wrappers/send_wrapper.rs b/framework/base/src/contract_base/wrappers/send_wrapper.rs index 74180719b4..11a8f748fc 100644 --- a/framework/base/src/contract_base/wrappers/send_wrapper.rs +++ b/framework/base/src/contract_base/wrappers/send_wrapper.rs @@ -294,7 +294,7 @@ where to: &ManagedAddress, payments: &ManagedVec>, ) { - Tx::new_tx_from_sc().to(to).multi_esdt(payments).transfer(); + Tx::new_tx_from_sc().to(to).payment(payments).transfer(); } /// Performs a simple ESDT/NFT transfer, but via async call. @@ -348,7 +348,7 @@ where ) -> ! { Tx::new_tx_from_sc() .to(to) - .multi_esdt(payments) + .payment(payments) .async_call_and_exit() } diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 75d565b97b..3d89a96115 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -205,9 +205,11 @@ where self.egld(egld_amount) } - /// Adds a single ESDT token transfer to a transaction. + /// Adds the first single, owned ESDT token payment to a transaction. /// - /// Since this is the first ESDT payment, a single payment tx is produced. Can be called again for multiple payments. + /// Since this is the first ESDT payment, a single payment tx is produced. + /// + /// Can subsequently be called again for multiple payments. pub fn esdt>>( self, payment: P, @@ -247,18 +249,32 @@ where /// Sets a collection of ESDT transfers as the payment of the transaction. /// - /// Equivalend to just ``.payment(payments)`, but only accepts the multi-esdt types. - pub fn multi_esdt(self, payments: Payment) -> Tx + /// Can be formed from single ESDT payments, but the result will always be a collection. + /// + /// Always converts the argument into an owned collection of ESDT payments. For work with references, use `.payment(&p)` instead. + pub fn multi_esdt( + self, + payments: IntoMulti, + ) -> Tx, Gas, Data, RH> where - Payment: TxPaymentMultiEsdt, + IntoMulti: Into>, { - self.payment(payments) + self.payment(payments.into()) + } + + /// Backwards compatibility. + pub fn with_esdt_transfer>>( + mut self, + payment: P, + ) -> Tx, Gas, Data, RH> { + self.payment(MultiEsdtPayment::new()) + .with_esdt_transfer(payment) } /// Backwards compatibility. pub fn with_multi_token_transfer( self, - payments: MultiEsdtPayment, // TODO: references + payments: MultiEsdtPayment, ) -> Tx, Gas, Data, RH> { self.multi_esdt(payments) } @@ -288,9 +304,12 @@ where Data: TxData, RH: TxResultHandler, { - /// Adds a single ESDT token transfer to a contract call. + /// Adds the second ESDT token transfer to a contract call. /// /// Can be called multiple times on the same call. + /// + /// When the Tx already contains a single (owned) ESDT payment, + /// adding the second one will convert it to a list. pub fn esdt>>( self, payment: P, @@ -308,14 +327,6 @@ where result_handler: self.result_handler, } } - - /// Backwards compatibility. - pub fn with_esdt_transfer>>( - self, - payment: P, - ) -> Tx, Gas, Data, RH> { - self.esdt(payment) - } } impl Tx, Gas, Data, RH> @@ -338,13 +349,23 @@ where self } + /// When the Tx already contains an owned collection of ESDT payments, + /// calling `multi_esdt` is equivalent to `esdt`, it just adds another payment to the list. + /// + /// Can be called multiple times. + pub fn multi_esdt>>( + mut self, + payment: P, + ) -> Tx, Gas, Data, RH> { + self.esdt(payment) + } + /// Backwards compatibility. pub fn with_esdt_transfer>>( mut self, payment: P, ) -> Tx, Gas, Data, RH> { - self.payment.push(payment.into()); - self + self.multi_esdt(payment) } } diff --git a/framework/base/src/types/interaction/tx_exec/tx_exec_deploy.rs b/framework/base/src/types/interaction/tx_exec/tx_exec_deploy.rs index 28608a33f5..040bf6f4af 100644 --- a/framework/base/src/types/interaction/tx_exec/tx_exec_deploy.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_exec_deploy.rs @@ -220,9 +220,9 @@ where OriginalResult: TopEncodeMulti, { /// Backwards compatibility, immitates the old API. - /// + /// /// Should no longer be used, which is why unlike all the rest of the old syntax, was deprecated. - /// + /// /// Uses a `DeployCall` instead of the correct `UpgradeCall`, because the old syntax did not know about upgrades. /// /// Note that the data type (the `DeployCall`) doesn't have the code set. @@ -249,9 +249,9 @@ where } /// Backwards compatibility, immitates the old API. - /// + /// /// Should no longer be used, which is why unlike all the rest of the old syntax, was deprecated. - /// + /// /// Uses a `DeployCall` instead of the correct `UpgradeCall`, because the old syntax did not know about upgrades. /// /// Note that the data type (the `DeployCall`) doesn't have the code set. diff --git a/framework/base/src/types/managed/wrapped/esdt_token_payment.rs b/framework/base/src/types/managed/wrapped/esdt_token_payment.rs index b074dc9bfe..ac7a54c442 100644 --- a/framework/base/src/types/managed/wrapped/esdt_token_payment.rs +++ b/framework/base/src/types/managed/wrapped/esdt_token_payment.rs @@ -258,3 +258,24 @@ impl<'a, M: ManagedTypeApi> EsdtTokenPaymentRefs<'a, M> { } } } + +impl From<()> for MultiEsdtPayment { + #[inline] + fn from(_value: ()) -> Self { + MultiEsdtPayment::new() + } +} + +impl From> for MultiEsdtPayment { + #[inline] + fn from(value: EsdtTokenPayment) -> Self { + MultiEsdtPayment::from_single_item(value) + } +} + +impl From<(TokenIdentifier, u64, BigUint)> for MultiEsdtPayment { + #[inline] + fn from(value: (TokenIdentifier, u64, BigUint)) -> Self { + MultiEsdtPayment::from_single_item(value.into()) + } +} From 145eb1bc52391ead3890fb57d9fc0c9654142ee5 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 12 Apr 2024 17:45:13 +0300 Subject: [PATCH 337/461] ESDTPayment triple as TxPayment --- .../src/call_transf_exec_legacy.rs | 14 ++++++ .../base/src/types/interaction/tx_payment.rs | 1 + .../tx_payment_single_esdt_triple.rs | 48 +++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt_triple.rs diff --git a/contracts/feature-tests/composability/forwarder-legacy/src/call_transf_exec_legacy.rs b/contracts/feature-tests/composability/forwarder-legacy/src/call_transf_exec_legacy.rs index f113edd27e..e789e4644f 100644 --- a/contracts/feature-tests/composability/forwarder-legacy/src/call_transf_exec_legacy.rs +++ b/contracts/feature-tests/composability/forwarder-legacy/src/call_transf_exec_legacy.rs @@ -18,6 +18,20 @@ pub trait ForwarderTransferExecuteModule { .transfer_execute(); } + /// Tests triple as ESDTTokenPayment. + /// + /// TODO: move somewhere else after release + #[endpoint] + #[payable("*")] + fn forward_transf_exec_accept_single_esdt(&self, to: ManagedAddress) { + let payment = self.call_value().single_esdt(); + self.vault_proxy() + .contract(to) + .accept_funds() + .payment((payment.token_identifier, 0, payment.amount)) + .transfer_execute(); + } + #[endpoint] #[payable("*")] fn forward_transf_execu_accept_funds_with_fees( diff --git a/framework/base/src/types/interaction/tx_payment.rs b/framework/base/src/types/interaction/tx_payment.rs index 252204edd8..75b93f0ee4 100644 --- a/framework/base/src/types/interaction/tx_payment.rs +++ b/framework/base/src/types/interaction/tx_payment.rs @@ -8,6 +8,7 @@ mod tx_payment_multi_esdt; mod tx_payment_none; mod tx_payment_single_esdt; mod tx_payment_single_esdt_ref; +mod tx_payment_single_esdt_triple; pub use tx_payment_egld::{Egld, EgldPayment}; pub use tx_payment_egld_value::TxEgldValue; diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt_triple.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt_triple.rs new file mode 100644 index 0000000000..6adf3dacc5 --- /dev/null +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt_triple.rs @@ -0,0 +1,48 @@ +use crate::{ + contract_base::SendRawWrapper, + types::{ + BigUint, EsdtTokenPayment, ManagedAddress, ManagedVec, MultiEsdtPayment, TokenIdentifier, + TxFrom, TxToSpecified, + }, +}; + +use super::{AnnotatedEgldPayment, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment}; + +impl TxPayment for (TokenIdentifier, u64, BigUint) +where + Env: TxEnv, +{ + fn is_no_payment(&self, _env: &Env) -> bool { + self.2 == 0u32 + } + + fn perform_transfer_execute( + self, + env: &Env, + to: &ManagedAddress, + gas_limit: u64, + fc: FunctionCall, + ) { + EsdtTokenPayment::from(self).perform_transfer_execute(env, to, gas_limit, fc) + } + + fn with_normalized( + self, + env: &Env, + from: &From, + to: To, + fc: FunctionCall, + f: F, + ) -> R + where + From: TxFrom, + To: TxToSpecified, + F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, + { + EsdtTokenPayment::from(self).with_normalized(env, from, to, fc, f) + } + + fn into_full_payment_data(self, env: &Env) -> FullPaymentData { + EsdtTokenPayment::from(self).into_full_payment_data(env) + } +} From 62a7ff225515cb681c8b61e97fc39c715b35e9ee Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Fri, 12 Apr 2024 18:36:06 +0200 Subject: [PATCH 338/461] u64 values for nonces --- .../scenario-tester/tests/st_blackbox_test.rs | 13 ++++++------- .../src/scenario/model/value/value_set_u64.rs | 9 +++++++++ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs index 1a997b698e..ae3e29da45 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs @@ -61,7 +61,6 @@ fn st_blackbox() { .code(CODE_EXPR) .returns(ReturnsNewAddress) .run(); - assert_eq!(new_address, st_contract.to_address()); let value = world @@ -124,10 +123,10 @@ fn set_state_test() { world .check_state_account(first) - .nonce("1") + .nonce(1) .balance("100") .check_state_account(second) - .nonce("2") + .nonce(2) .balance("300") .esdt_balance("str:TOKEN-123456", "500") .commit(); @@ -141,7 +140,7 @@ fn set_state_test() { world .check_state_account(third) - .nonce("3") + .nonce(3) .balance("50") .esdt_nft_balance_and_attributes("str:NFT-123456", "2", "1", Some(Vec::::new())) .commit(); @@ -158,10 +157,10 @@ fn set_state_test() { world .check_state_account(fourth) - .nonce("4") + .nonce(4) .balance("400") .check_state_account(fifth) - .nonce("5") + .nonce(5) .balance("250") .esdt_balance("str:TOKEN-123456", "2"); @@ -173,7 +172,7 @@ fn set_state_test() { world .check_state_account(sixth) - .nonce("6") + .nonce(6) .balance("600") .esdt_balance("str:TOKEN-123456", "60"); } diff --git a/framework/scenario/src/scenario/model/value/value_set_u64.rs b/framework/scenario/src/scenario/model/value/value_set_u64.rs index 1fdabe5cf7..b332543116 100644 --- a/framework/scenario/src/scenario/model/value/value_set_u64.rs +++ b/framework/scenario/src/scenario/model/value/value_set_u64.rs @@ -36,6 +36,15 @@ impl Default for U64Value { } } +impl InterpretableFrom for U64Value { + fn interpret_from(from: u64, _context: &InterpreterContext) -> Self { + U64Value { + value: from, + original: ValueSubTree::Str(from.to_string()), + } + } +} + impl InterpretableFrom for U64Value { fn interpret_from(from: ValueSubTree, context: &InterpreterContext) -> Self { let bytes = interpret_subtree(&from, context); From f6901a274d49c78592e3835225af558d837d0e66 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 12 Apr 2024 13:44:30 +0300 Subject: [PATCH 339/461] fix unused --- .../base/src/types/interaction/annotated.rs | 5 +--- .../annotated/annotated_impl_big_uint.rs | 12 ++++----- .../annotated_impl_managed_address.rs | 14 +++++----- .../annotated_impl_managed_buffer.rs | 4 +-- .../annotated/annotated_impl_u64.rs | 13 +++------ .../contract_call_exec.rs | 4 +-- .../src/types/interaction/function_call.rs | 5 ++-- .../markers/esdt_system_sc_address.rs | 12 +++------ .../src/types/interaction/markers/gas_left.rs | 11 +++----- .../types/interaction/markers/to_caller.rs | 2 +- .../src/types/interaction/markers/to_self.rs | 2 +- framework/base/src/types/interaction/mod.rs | 2 -- .../system_proxy/builtin_func_proxy.rs | 9 +++---- .../system_proxy/esdt_system_sc_proxy.rs | 12 +++------ .../system_proxy/legacy_system_sc_proxy.rs | 1 - framework/base/src/types/interaction/tx.rs | 27 +++++++++---------- .../base/src/types/interaction/tx_data.rs | 2 +- .../base/src/types/interaction/tx_exec.rs | 1 - .../types/interaction/tx_exec/tx_env_sc.rs | 4 +-- .../interaction/tx_exec/tx_exec_async.rs | 6 ++--- .../tx_exec/tx_exec_async_promises.rs | 4 +-- .../interaction/tx_exec/tx_exec_deploy.rs | 7 +++-- .../types/interaction/tx_exec/tx_exec_sync.rs | 5 ++-- .../interaction/tx_exec/tx_exec_upgrade.rs | 6 ++--- .../base/src/types/interaction/tx_payment.rs | 6 +---- .../tx_payment/tx_payment_egld_or_esdt.rs | 10 ++----- .../tx_payment_egld_or_esdt_refs.rs | 16 ++--------- .../tx_payment_egld_or_multi_esdt.rs | 15 ++--------- .../tx_payment_egld_or_multi_esdt_ref.rs | 16 ++--------- .../tx_payment/tx_payment_multi_esdt.rs | 8 +++--- .../interaction/tx_payment/tx_payment_none.rs | 10 ++----- .../tx_payment/tx_payment_single_esdt.rs | 10 +++---- .../tx_payment/tx_payment_single_esdt_ref.rs | 8 +++--- .../tx_payment_single_esdt_triple.rs | 10 +++---- .../types/interaction/tx_result_handler.rs | 2 ++ .../tx_result_handler/returns_bt.rs | 4 +-- .../tx_result_handler/returns_new_address.rs | 5 +--- .../returns_new_managed_address.rs | 4 +-- .../tx_result_handler/returns_raw_result.rs | 4 +-- .../tx_result_handler/returns_result.rs | 4 +-- .../tx_result_handler/returns_result_conv.rs | 3 +-- .../tx_result_handler/with_new_address.rs | 4 +-- .../tx_result_handler/with_result.rs | 3 +-- .../tx_result_handler/with_result_conv.rs | 3 +-- .../interaction/tx_rh_list/tx_rh_list_exec.rs | 5 +--- 45 files changed, 102 insertions(+), 218 deletions(-) diff --git a/framework/base/src/types/interaction/annotated.rs b/framework/base/src/types/interaction/annotated.rs index dc9e117e7e..5586168651 100644 --- a/framework/base/src/types/interaction/annotated.rs +++ b/framework/base/src/types/interaction/annotated.rs @@ -6,10 +6,7 @@ mod annotated_impl_u64; use crate::{ api::ManagedTypeApi, formatter::FormatBuffer, - types::{ - heap::Address, BigUint, ManagedAddress, ManagedBuffer, ManagedBufferCachedBuilder, - ManagedRef, - }, + types::{ManagedBuffer, ManagedBufferCachedBuilder}, }; use super::TxEnv; diff --git a/framework/base/src/types/interaction/annotated/annotated_impl_big_uint.rs b/framework/base/src/types/interaction/annotated/annotated_impl_big_uint.rs index 36c11f1c70..ea2250399d 100644 --- a/framework/base/src/types/interaction/annotated/annotated_impl_big_uint.rs +++ b/framework/base/src/types/interaction/annotated/annotated_impl_big_uint.rs @@ -1,4 +1,4 @@ -use crate::types::{heap::Address, BigUint, ManagedAddress, ManagedBuffer, ManagedRef}; +use crate::types::{BigUint, ManagedBuffer, ManagedRef}; use super::{AnnotatedValue, TxEnv}; @@ -18,7 +18,7 @@ where self } - fn with_value_ref(&self, env: &Env, f: F) -> R + fn with_value_ref(&self, _env: &Env, f: F) -> R where F: FnOnce(&BigUint) -> R, { @@ -42,7 +42,7 @@ where self.clone() } - fn with_value_ref(&self, env: &Env, f: F) -> R + fn with_value_ref(&self, _env: &Env, f: F) -> R where F: FnOnce(&BigUint) -> R, { @@ -66,7 +66,7 @@ where self.clone_value() } - fn with_value_ref(&self, env: &Env, f: F) -> R + fn with_value_ref(&self, _env: &Env, f: F) -> R where F: FnOnce(&BigUint) -> R, { @@ -78,7 +78,7 @@ impl AnnotatedValue> for u64 where Env: TxEnv, { - fn annotation(&self, env: &Env) -> ManagedBuffer { + fn annotation(&self, _env: &Env) -> ManagedBuffer { BigUint::from(*self).to_display() } @@ -91,7 +91,7 @@ impl AnnotatedValue> for () where Env: TxEnv, { - fn annotation(&self, env: &Env) -> ManagedBuffer { + fn annotation(&self, _env: &Env) -> ManagedBuffer { ManagedBuffer::from("0") } diff --git a/framework/base/src/types/interaction/annotated/annotated_impl_managed_address.rs b/framework/base/src/types/interaction/annotated/annotated_impl_managed_address.rs index 3d08368c53..403ccf4603 100644 --- a/framework/base/src/types/interaction/annotated/annotated_impl_managed_address.rs +++ b/framework/base/src/types/interaction/annotated/annotated_impl_managed_address.rs @@ -1,4 +1,4 @@ -use crate::types::{heap::Address, BigUint, ManagedAddress, ManagedBuffer, ManagedRef}; +use crate::types::{heap::Address, ManagedAddress, ManagedBuffer}; use super::{AnnotatedValue, TxEnv}; @@ -10,7 +10,7 @@ where self.hex_expr() } - fn to_value(&self, env: &Env) -> ManagedAddress { + fn to_value(&self, _env: &Env) -> ManagedAddress { self.clone() } @@ -18,7 +18,7 @@ where self } - fn with_value_ref(&self, env: &Env, f: F) -> R + fn with_value_ref(&self, _env: &Env, f: F) -> R where F: FnOnce(&ManagedAddress) -> R, { @@ -34,7 +34,7 @@ where self.hex_expr() } - fn to_value(&self, env: &Env) -> ManagedAddress { + fn to_value(&self, _env: &Env) -> ManagedAddress { (*self).clone() } @@ -42,7 +42,7 @@ where self.clone() } - fn with_value_ref(&self, env: &Env, f: F) -> R + fn with_value_ref(&self, _env: &Env, f: F) -> R where F: FnOnce(&ManagedAddress) -> R, { @@ -58,7 +58,7 @@ where ManagedAddress::from(self).hex_expr() } - fn to_value(&self, env: &Env) -> ManagedAddress { + fn to_value(&self, _env: &Env) -> ManagedAddress { ManagedAddress::from(self) } } @@ -71,7 +71,7 @@ where ManagedAddress::from(*self).hex_expr() } - fn to_value(&self, env: &Env) -> ManagedAddress { + fn to_value(&self, _env: &Env) -> ManagedAddress { ManagedAddress::from(*self) } } diff --git a/framework/base/src/types/interaction/annotated/annotated_impl_managed_buffer.rs b/framework/base/src/types/interaction/annotated/annotated_impl_managed_buffer.rs index 433cf431af..b8d4fc8fd7 100644 --- a/framework/base/src/types/interaction/annotated/annotated_impl_managed_buffer.rs +++ b/framework/base/src/types/interaction/annotated/annotated_impl_managed_buffer.rs @@ -1,4 +1,4 @@ -use crate::types::{heap::Address, BigUint, ManagedAddress, ManagedBuffer, ManagedRef}; +use crate::types::ManagedBuffer; use super::{AnnotatedValue, TxEnv}; @@ -18,7 +18,7 @@ where self } - fn with_value_ref(&self, env: &Env, f: F) -> R + fn with_value_ref(&self, _env: &Env, f: F) -> R where F: FnOnce(&ManagedBuffer) -> R, { diff --git a/framework/base/src/types/interaction/annotated/annotated_impl_u64.rs b/framework/base/src/types/interaction/annotated/annotated_impl_u64.rs index 04ad3fd7c0..ed310d1f43 100644 --- a/framework/base/src/types/interaction/annotated/annotated_impl_u64.rs +++ b/framework/base/src/types/interaction/annotated/annotated_impl_u64.rs @@ -1,11 +1,4 @@ -use crate::{ - api::ManagedTypeApi, - formatter::{FormatBuffer, SCDisplay}, - types::{ - heap::Address, BigUint, ManagedAddress, ManagedBuffer, ManagedBufferCachedBuilder, - ManagedRef, - }, -}; +use crate::types::ManagedBuffer; use super::{display_u64, AnnotatedValue, TxEnv}; @@ -13,7 +6,7 @@ impl AnnotatedValue for u64 where Env: TxEnv, { - fn annotation(&self, env: &Env) -> ManagedBuffer { + fn annotation(&self, _env: &Env) -> ManagedBuffer { display_u64(*self) } @@ -26,7 +19,7 @@ impl AnnotatedValue for i32 where Env: TxEnv, { - fn annotation(&self, env: &Env) -> ManagedBuffer { + fn annotation(&self, _env: &Env) -> ManagedBuffer { display_u64(*self as u64) } diff --git a/framework/base/src/types/interaction/contract_call_legacy/contract_call_exec.rs b/framework/base/src/types/interaction/contract_call_legacy/contract_call_exec.rs index 4c8a0e3497..6ec1d82009 100644 --- a/framework/base/src/types/interaction/contract_call_legacy/contract_call_exec.rs +++ b/framework/base/src/types/interaction/contract_call_legacy/contract_call_exec.rs @@ -3,11 +3,9 @@ use crate::{ codec::TopDecodeMulti, contract_base::SendRawWrapper, formatter::SCLowerHex, - io::{ArgErrorHandler, ArgId, ManagedResultArgLoader}, types::{ decode_result, AsyncCall, AsyncCallPromises, BigUint, EsdtTokenPayment, ManagedBuffer, - ManagedBufferBuilder, ManagedBufferCachedBuilder, ManagedType, ManagedVec, Tx, - TRANSFER_EXECUTE_DEFAULT_LEFTOVER, + ManagedBufferBuilder, ManagedType, ManagedVec, Tx, TRANSFER_EXECUTE_DEFAULT_LEFTOVER, }, }; diff --git a/framework/base/src/types/interaction/function_call.rs b/framework/base/src/types/interaction/function_call.rs index f18ded4c2c..1d78735a79 100644 --- a/framework/base/src/types/interaction/function_call.rs +++ b/framework/base/src/types/interaction/function_call.rs @@ -9,10 +9,9 @@ use crate::{ CallTypeApi, ManagedTypeApi, ESDT_MULTI_TRANSFER_FUNC_NAME, ESDT_NFT_TRANSFER_FUNC_NAME, ESDT_TRANSFER_FUNC_NAME, }, - formatter::SCLowerHex, types::{ - EsdtTokenPayment, EsdtTokenPaymentRefs, ManagedAddress, ManagedBuffer, - ManagedBufferBuilder, ManagedVec, MultiValueEncoded, + EsdtTokenPayment, EsdtTokenPaymentRefs, ManagedAddress, ManagedBuffer, ManagedVec, + MultiValueEncoded, }, }; diff --git a/framework/base/src/types/interaction/markers/esdt_system_sc_address.rs b/framework/base/src/types/interaction/markers/esdt_system_sc_address.rs index f9d1f94ce2..8d59b682be 100644 --- a/framework/base/src/types/interaction/markers/esdt_system_sc_address.rs +++ b/framework/base/src/types/interaction/markers/esdt_system_sc_address.rs @@ -2,14 +2,8 @@ use hex_literal::hex; use multiversx_sc_codec::{CodecFrom, EncodeErrorHandler, TopEncode, TopEncodeOutput}; use crate::{ - api::{ - const_handles, use_raw_handle, BlockchainApi, BlockchainApiImpl, CallTypeApi, - ManagedTypeApi, - }, - contract_base::BlockchainWrapper, - types::{ - AnnotatedValue, ManagedAddress, ManagedBuffer, ManagedType, TxScEnv, TxTo, TxToSpecified, - }, + api::{CallTypeApi, ManagedTypeApi}, + types::{AnnotatedValue, ManagedAddress, ManagedBuffer, TxScEnv, TxTo, TxToSpecified}, }; /// Address of the system smart contract that manages ESDT. @@ -44,7 +38,7 @@ impl AnnotatedValue, ManagedAddress> for ESDTSystemSCAddr where Api: CallTypeApi, { - fn annotation(&self, env: &TxScEnv) -> ManagedBuffer { + fn annotation(&self, _env: &TxScEnv) -> ManagedBuffer { ManagedBuffer::from(SYSTEM_SC_ADDRESS_ANNOTATION) } diff --git a/framework/base/src/types/interaction/markers/gas_left.rs b/framework/base/src/types/interaction/markers/gas_left.rs index 69f43753f6..d30209b3d1 100644 --- a/framework/base/src/types/interaction/markers/gas_left.rs +++ b/framework/base/src/types/interaction/markers/gas_left.rs @@ -1,11 +1,6 @@ use crate::{ - api::{BlockchainApi, BlockchainApiImpl, ManagedTypeApi}, - formatter::FormatBuffer, - types::{ - interaction::display_u64, AnnotatedValue, BigUint, ManagedAddress, ManagedBuffer, - ManagedBufferCachedBuilder, TxCodeValue, TxEgldValue, TxEnv, TxFrom, TxFromSpecified, - TxGasValue, TxTo, TxToSpecified, - }, + api::{BlockchainApi, BlockchainApiImpl}, + types::{interaction::display_u64, AnnotatedValue, ManagedBuffer, TxEnv, TxGasValue}, }; /// Indicates that all remaining gas should be sent to a transaction. @@ -21,7 +16,7 @@ where display_u64(self.to_value(env)) } - fn to_value(&self, env: &Env) -> u64 { + fn to_value(&self, _env: &Env) -> u64 { Env::Api::blockchain_api_impl().get_gas_left() } } diff --git a/framework/base/src/types/interaction/markers/to_caller.rs b/framework/base/src/types/interaction/markers/to_caller.rs index 7d311438b9..f24191ce9f 100644 --- a/framework/base/src/types/interaction/markers/to_caller.rs +++ b/framework/base/src/types/interaction/markers/to_caller.rs @@ -21,7 +21,7 @@ where BlockchainWrapper::::new().get_caller() } - fn with_value_ref(&self, env: &TxScEnv, f: F) -> R + fn with_value_ref(&self, _env: &TxScEnv, f: F) -> R where F: FnOnce(&ManagedAddress) -> R, { diff --git a/framework/base/src/types/interaction/markers/to_self.rs b/framework/base/src/types/interaction/markers/to_self.rs index 7b8115b38e..dee4d5ed3a 100644 --- a/framework/base/src/types/interaction/markers/to_self.rs +++ b/framework/base/src/types/interaction/markers/to_self.rs @@ -21,7 +21,7 @@ where BlockchainWrapper::::new().get_sc_address() } - fn with_value_ref(&self, env: &TxScEnv, f: F) -> R + fn with_value_ref(&self, _env: &TxScEnv, f: F) -> R where F: FnOnce(&ManagedAddress) -> R, { diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index 9703822387..e05d420cdf 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -1,5 +1,3 @@ -#![allow(unused)] // TEMP - mod annotated; mod async_call; mod async_call_promises; diff --git a/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs b/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs index 66a660a6d8..fe421c5ef7 100644 --- a/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs @@ -1,11 +1,8 @@ use multiversx_sc_codec::{CodecInto, Empty, TopEncode}; -use crate::{ - api::VMApi, - types::{ - BigUint, ManagedAddress, ManagedBuffer, ManagedVec, TokenIdentifier, Tx, TxEnv, TxFrom, - TxGas, TxProxyCall, TxProxyTrait, TxTo, - }, +use crate::types::{ + BigUint, ManagedAddress, ManagedBuffer, ManagedVec, TokenIdentifier, Tx, TxEnv, TxFrom, TxGas, + TxProxyCall, TxProxyTrait, TxTo, }; use super::builtin_func_names::{ diff --git a/framework/base/src/types/interaction/system_proxy/esdt_system_sc_proxy.rs b/framework/base/src/types/interaction/system_proxy/esdt_system_sc_proxy.rs index 56b14ce83b..3589f4ce28 100644 --- a/framework/base/src/types/interaction/system_proxy/esdt_system_sc_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy/esdt_system_sc_proxy.rs @@ -1,15 +1,11 @@ -use core::marker::PhantomData; - use super::token_properties::*; -use hex_literal::hex; use crate::{ - api::{CallTypeApi, SendApi, VMApi}, + api::CallTypeApi, types::{ - BigUint, ContractCall, ContractCallNoPayment, ContractCallWithEgld, EgldPayment, - EsdtLocalRole, EsdtTokenType, FunctionCall, ManagedAddress, ManagedBuffer, - OriginalResultMarker, TokenIdentifier, Tx, TxEnv, TxFrom, TxGas, TxProxyCall, TxProxyTrait, - TxTo, + BigUint, EgldPayment, EsdtLocalRole, EsdtTokenType, FunctionCall, ManagedAddress, + ManagedBuffer, OriginalResultMarker, TokenIdentifier, Tx, TxEnv, TxFrom, TxGas, + TxProxyCall, TxProxyTrait, TxTo, }, }; diff --git a/framework/base/src/types/interaction/system_proxy/legacy_system_sc_proxy.rs b/framework/base/src/types/interaction/system_proxy/legacy_system_sc_proxy.rs index c19fe2e4e6..6f74b80812 100644 --- a/framework/base/src/types/interaction/system_proxy/legacy_system_sc_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy/legacy_system_sc_proxy.rs @@ -1,7 +1,6 @@ use core::marker::PhantomData; // use super::properties::*; -use hex_literal::hex; use crate::{ api::{CallTypeApi, SendApi}, diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 3d89a96115..98d88e499a 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -1,24 +1,23 @@ use crate::{ - api::{CallTypeApi, ManagedTypeApi}, + api::CallTypeApi, contract_base::BlockchainWrapper, types::{ BigUint, CodeMetadata, EgldOrEsdtTokenIdentifier, EgldOrEsdtTokenPayment, - EgldOrEsdtTokenPaymentRefs, EgldOrMultiEsdtPayment, EgldOrMultiEsdtPaymentRefs, - EsdtTokenPayment, EsdtTokenPaymentRefs, ManagedAddress, ManagedBuffer, ManagedOption, - ManagedVec, MultiEsdtPayment, TokenIdentifier, + EgldOrEsdtTokenPaymentRefs, EgldOrMultiEsdtPayment, EsdtTokenPayment, EsdtTokenPaymentRefs, + ManagedAddress, ManagedBuffer, ManagedOption, ManagedVec, MultiEsdtPayment, + TokenIdentifier, }, }; use multiversx_sc_codec::TopEncodeMulti; use super::{ - contract_deploy::UNSPECIFIED_GAS_LIMIT, AnnotatedValue, Code, ContractCallBase, - ContractCallNoPayment, ContractCallWithEgld, ContractDeploy, DeployCall, Egld, EgldPayment, - ExplicitGas, FromSource, FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, - RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, TxCodeValue, TxData, - TxDataFunctionCall, TxEgldValue, TxEnv, TxFrom, TxFromSourceValue, TxGas, TxGasValue, - TxPayment, TxPaymentEgldOnly, TxPaymentMultiEsdt, TxProxyTrait, TxResultHandler, TxScEnv, TxTo, - TxToSpecified, UpgradeCall, + contract_deploy::UNSPECIFIED_GAS_LIMIT, Code, ContractCallBase, ContractCallNoPayment, + ContractCallWithEgld, ContractDeploy, DeployCall, Egld, EgldPayment, ExplicitGas, FromSource, + FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, RHListAppendNoRet, + RHListAppendRet, RHListItem, TxCodeSource, TxCodeValue, TxData, TxDataFunctionCall, + TxEgldValue, TxEnv, TxFrom, TxFromSourceValue, TxGas, TxGasValue, TxPayment, TxPaymentEgldOnly, + TxProxyTrait, TxResultHandler, TxScEnv, TxTo, TxToSpecified, UpgradeCall, }; #[must_use] @@ -264,7 +263,7 @@ where /// Backwards compatibility. pub fn with_esdt_transfer>>( - mut self, + self, payment: P, ) -> Tx, Gas, Data, RH> { self.payment(MultiEsdtPayment::new()) @@ -354,7 +353,7 @@ where /// /// Can be called multiple times. pub fn multi_esdt>>( - mut self, + self, payment: P, ) -> Tx, Gas, Data, RH> { self.esdt(payment) @@ -362,7 +361,7 @@ where /// Backwards compatibility. pub fn with_esdt_transfer>>( - mut self, + self, payment: P, ) -> Tx, Gas, Data, RH> { self.multi_esdt(payment) diff --git a/framework/base/src/types/interaction/tx_data.rs b/framework/base/src/types/interaction/tx_data.rs index 2475737df0..7ea227deaa 100644 --- a/framework/base/src/types/interaction/tx_data.rs +++ b/framework/base/src/types/interaction/tx_data.rs @@ -1,6 +1,6 @@ use crate::{ formatter::SCLowerHex, - types::{ManagedBuffer, ManagedBufferBuilder, ManagedBufferCachedBuilder}, + types::{ManagedBuffer, ManagedBufferBuilder}, }; use super::{FunctionCall, TxEnv}; diff --git a/framework/base/src/types/interaction/tx_exec.rs b/framework/base/src/types/interaction/tx_exec.rs index 3bf35975ed..0ee6371b72 100644 --- a/framework/base/src/types/interaction/tx_exec.rs +++ b/framework/base/src/types/interaction/tx_exec.rs @@ -11,7 +11,6 @@ pub use tx_exec_async::*; pub use tx_exec_async_promises::*; pub use tx_exec_deploy::*; pub use tx_exec_sync::*; -pub use tx_exec_upgrade::*; use crate::{ api::CallTypeApi, diff --git a/framework/base/src/types/interaction/tx_exec/tx_env_sc.rs b/framework/base/src/types/interaction/tx_exec/tx_env_sc.rs index cbbcc35dc2..48cf21b0bb 100644 --- a/framework/base/src/types/interaction/tx_exec/tx_env_sc.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_env_sc.rs @@ -4,8 +4,8 @@ use crate::{ api::{BlockchainApiImpl, CallTypeApi}, contract_base::BlockchainWrapper, types::{ - interaction::display_u64, AnnotatedValue, ManagedAddress, ManagedBuffer, Tx, TxBaseWithEnv, - TxEnv, TRANSFER_EXECUTE_DEFAULT_LEFTOVER, + interaction::display_u64, ManagedAddress, ManagedBuffer, Tx, TxBaseWithEnv, TxEnv, + TRANSFER_EXECUTE_DEFAULT_LEFTOVER, }, }; diff --git a/framework/base/src/types/interaction/tx_exec/tx_exec_async.rs b/framework/base/src/types/interaction/tx_exec/tx_exec_async.rs index 0e883eca3a..238b978139 100644 --- a/framework/base/src/types/interaction/tx_exec/tx_exec_async.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_exec_async.rs @@ -2,9 +2,9 @@ use crate::{ api::{CallTypeApi, StorageWriteApi}, contract_base::SendRawWrapper, types::{ - CallbackClosure, ExplicitGas, ManagedBuffer, OriginalResultMarker, Tx, TxData, - TxDataFunctionCall, TxEmptyResultHandler, TxEnv, TxFrom, TxGas, TxGasValue, TxPayment, - TxResultHandler, TxScEnv, TxTo, TxToSpecified, + CallbackClosure, OriginalResultMarker, Tx, TxData, TxDataFunctionCall, + TxEmptyResultHandler, TxEnv, TxFrom, TxGas, TxPayment, TxResultHandler, TxScEnv, TxTo, + TxToSpecified, }, }; diff --git a/framework/base/src/types/interaction/tx_exec/tx_exec_async_promises.rs b/framework/base/src/types/interaction/tx_exec/tx_exec_async_promises.rs index 4b6fadc102..ad8d8d4145 100644 --- a/framework/base/src/types/interaction/tx_exec/tx_exec_async_promises.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_exec_async_promises.rs @@ -3,8 +3,8 @@ use crate::{ contract_base::SendRawWrapper, types::{ interaction::callback_closure::CallbackClosureWithGas, CallbackClosure, ExplicitGas, - FunctionCall, GasLeft, ManagedBuffer, ManagedType, OriginalResultMarker, Tx, TxGas, - TxGasValue, TxPayment, TxResultHandler, TxScEnv, TxToSpecified, + FunctionCall, ManagedBuffer, ManagedType, OriginalResultMarker, Tx, TxGas, TxGasValue, + TxPayment, TxResultHandler, TxScEnv, TxToSpecified, }, }; diff --git a/framework/base/src/types/interaction/tx_exec/tx_exec_deploy.rs b/framework/base/src/types/interaction/tx_exec/tx_exec_deploy.rs index 040bf6f4af..9ccb4bdd2a 100644 --- a/framework/base/src/types/interaction/tx_exec/tx_exec_deploy.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_exec_deploy.rs @@ -5,10 +5,9 @@ use crate::{ contract_base::SendRawWrapper, tuple_util::NestedTupleFlatten, types::{ - decode_result, Code, CodeMetadata, ConsNoRet, ConsRet, DeployCall, FromSource, - ManagedAddress, ManagedBuffer, ManagedVec, OriginalResultMarker, RHList, RHListExec, - RHListItem, Tx, TxCodeValue, TxEmptyResultHandler, TxEnv, TxFromSourceValue, TxGas, - TxPaymentEgldOnly, TxResultHandler, TxScEnv, UpgradeCall, + decode_result, Code, CodeMetadata, DeployCall, FromSource, ManagedAddress, ManagedBuffer, + ManagedVec, OriginalResultMarker, RHListExec, Tx, TxCodeValue, TxFromSourceValue, TxGas, + TxPaymentEgldOnly, TxResultHandler, TxScEnv, }, }; diff --git a/framework/base/src/types/interaction/tx_exec/tx_exec_sync.rs b/framework/base/src/types/interaction/tx_exec/tx_exec_sync.rs index adb102d6fa..78169a665b 100644 --- a/framework/base/src/types/interaction/tx_exec/tx_exec_sync.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_exec_sync.rs @@ -5,9 +5,8 @@ use crate::{ contract_base::SendRawWrapper, tuple_util::NestedTupleFlatten, types::{ - decode_result, BackTransfers, ConsNoRet, ConsRet, ManagedBuffer, ManagedVec, - OriginalResultMarker, RHList, RHListExec, RHListItem, Tx, TxDataFunctionCall, TxEnv, TxGas, - TxPayment, TxScEnv, TxToSpecified, + decode_result, BackTransfers, ManagedBuffer, ManagedVec, OriginalResultMarker, RHListExec, + Tx, TxDataFunctionCall, TxGas, TxPayment, TxScEnv, TxToSpecified, }, }; diff --git a/framework/base/src/types/interaction/tx_exec/tx_exec_upgrade.rs b/framework/base/src/types/interaction/tx_exec/tx_exec_upgrade.rs index 0f71ae64bb..b97591ab12 100644 --- a/framework/base/src/types/interaction/tx_exec/tx_exec_upgrade.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_exec_upgrade.rs @@ -1,11 +1,9 @@ use crate::{ api::CallTypeApi, contract_base::SendRawWrapper, - tuple_util::NestedTupleFlatten, types::{ - Code, CodeMetadata, DeployRawResult, FromSource, ManagedAddress, ManagedBuffer, ManagedVec, - RHListExec, Tx, TxCodeValue, TxEmptyResultHandler, TxFrom, TxFromSourceValue, TxGas, - TxPaymentEgldOnly, TxResultHandler, TxScEnv, TxTo, UpgradeCall, + Code, CodeMetadata, FromSource, ManagedAddress, ManagedBuffer, Tx, TxCodeValue, + TxEmptyResultHandler, TxFromSourceValue, TxGas, TxPaymentEgldOnly, TxScEnv, UpgradeCall, }, }; diff --git a/framework/base/src/types/interaction/tx_payment.rs b/framework/base/src/types/interaction/tx_payment.rs index 75b93f0ee4..e72a5b9fa6 100644 --- a/framework/base/src/types/interaction/tx_payment.rs +++ b/framework/base/src/types/interaction/tx_payment.rs @@ -16,11 +16,7 @@ pub use tx_payment_multi_esdt::TxPaymentMultiEsdt; use crate::{ api::ManagedTypeApi, - contract_base::SendRawWrapper, - types::{ - BigUint, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, EsdtTokenPayment, ManagedAddress, - ManagedBuffer, MultiEsdtPayment, - }, + types::{BigUint, ManagedAddress, ManagedBuffer, MultiEsdtPayment}, }; use super::{AnnotatedValue, FunctionCall, TxEnv, TxFrom, TxToSpecified}; diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt.rs index e70c2919f2..a4ac0577ff 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt.rs @@ -1,12 +1,6 @@ -use crate::{ - contract_base::SendRawWrapper, - types::{ - BigUint, Egld, EgldOrEsdtTokenPayment, EgldOrMultiEsdtPayment, ManagedAddress, ManagedVec, - TxFrom, TxToSpecified, - }, -}; +use crate::types::{BigUint, Egld, EgldOrEsdtTokenPayment, ManagedAddress, TxFrom, TxToSpecified}; -use super::{AnnotatedEgldPayment, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment}; +use super::{FullPaymentData, FunctionCall, TxEnv, TxPayment}; impl TxPayment for &EgldOrEsdtTokenPayment where diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt_refs.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt_refs.rs index 76c5a003f2..fe0bc1352d 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt_refs.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_esdt_refs.rs @@ -1,18 +1,6 @@ -use alloc::borrow::ToOwned; +use crate::types::{BigUint, EgldOrEsdtTokenPaymentRefs, ManagedAddress, TxFrom, TxToSpecified}; -use crate::{ - api::ManagedTypeApi, - contract_base::SendRawWrapper, - types::{ - AnnotatedValue, BigUint, EgldOrEsdtTokenIdentifier, EgldOrEsdtTokenPayment, - EgldOrEsdtTokenPaymentRefs, EgldOrMultiEsdtPayment, EsdtTokenPayment, EsdtTokenPaymentRefs, - ManagedAddress, ManagedType, ManagedVec, MultiEsdtPayment, TxFrom, TxToSpecified, - }, -}; - -use super::{ - AnnotatedEgldPayment, Egld, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment, -}; +use super::{Egld, FullPaymentData, FunctionCall, TxEnv, TxPayment}; impl<'a, Env> TxPayment for EgldOrEsdtTokenPaymentRefs<'a, Env::Api> where diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt.rs index 703166a601..2538383494 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt.rs @@ -1,17 +1,6 @@ -use alloc::borrow::ToOwned; +use crate::types::{BigUint, EgldOrMultiEsdtPayment, ManagedAddress, TxFrom, TxToSpecified}; -use crate::{ - api::ManagedTypeApi, - contract_base::SendRawWrapper, - types::{ - AnnotatedValue, BigUint, EgldOrMultiEsdtPayment, EsdtTokenPayment, EsdtTokenPaymentRefs, - ManagedAddress, ManagedType, ManagedVec, MultiEsdtPayment, TxFrom, TxToSpecified, - }, -}; - -use super::{ - AnnotatedEgldPayment, Egld, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment, -}; +use super::{Egld, FullPaymentData, FunctionCall, TxEnv, TxPayment}; impl TxPayment for EgldOrMultiEsdtPayment where diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt_ref.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt_ref.rs index 06bda77eb3..2bce84e1ff 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt_ref.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_egld_or_multi_esdt_ref.rs @@ -1,18 +1,6 @@ -use alloc::borrow::ToOwned; +use crate::types::{BigUint, EgldOrMultiEsdtPaymentRefs, ManagedAddress, TxFrom, TxToSpecified}; -use crate::{ - api::ManagedTypeApi, - contract_base::SendRawWrapper, - types::{ - AnnotatedValue, BigUint, EgldOrMultiEsdtPayment, EgldOrMultiEsdtPaymentRefs, - EsdtTokenPayment, EsdtTokenPaymentRefs, ManagedAddress, ManagedType, ManagedVec, - MultiEsdtPayment, TxFrom, TxToSpecified, - }, -}; - -use super::{ - AnnotatedEgldPayment, Egld, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment, -}; +use super::{Egld, FullPaymentData, FunctionCall, TxEnv, TxPayment}; impl<'a, Env> TxPayment for EgldOrMultiEsdtPaymentRefs<'a, Env::Api> where diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs index 33543e51d4..892fd2c114 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_multi_esdt.rs @@ -2,12 +2,10 @@ use core::ops::Deref; use crate::{ contract_base::SendRawWrapper, - types::{ - BigUint, ManagedAddress, ManagedRef, ManagedVec, MultiEsdtPayment, TxFrom, TxToSpecified, - }, + types::{BigUint, ManagedAddress, ManagedRef, MultiEsdtPayment, TxFrom, TxToSpecified}, }; -use super::{AnnotatedEgldPayment, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment}; +use super::{FullPaymentData, FunctionCall, TxEnv, TxPayment}; /// Indicates that a payment object contains a multi-ESDT payment. pub trait TxPaymentMultiEsdt: TxPayment @@ -33,7 +31,7 @@ where fn perform_transfer_execute( self, - env: &Env, + _env: &Env, to: &ManagedAddress, gas_limit: u64, fc: FunctionCall, diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_none.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_none.rs index 54c82b3a3c..fe6016e43b 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_none.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_none.rs @@ -1,12 +1,6 @@ -use crate::{ - contract_base::SendRawWrapper, - types::{BigUint, ManagedAddress, ManagedVec, TxFrom, TxToSpecified}, -}; +use crate::types::{BigUint, ManagedAddress, TxFrom, TxToSpecified}; -use super::{ - AnnotatedEgldPayment, Egld, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment, - TxPaymentEgldOnly, -}; +use super::{Egld, FullPaymentData, FunctionCall, TxEnv, TxPayment, TxPaymentEgldOnly}; impl TxPayment for () where diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt.rs index 547ff12ba0..66e3374aa0 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt.rs @@ -1,12 +1,8 @@ -use crate::{ - contract_base::SendRawWrapper, - types::{ - BigUint, EsdtTokenPayment, ManagedAddress, ManagedVec, MultiEsdtPayment, TxFrom, - TxToSpecified, - }, +use crate::types::{ + BigUint, EsdtTokenPayment, ManagedAddress, MultiEsdtPayment, TxFrom, TxToSpecified, }; -use super::{AnnotatedEgldPayment, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment}; +use super::{FullPaymentData, FunctionCall, TxEnv, TxPayment}; impl TxPayment for EsdtTokenPayment where diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt_ref.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt_ref.rs index 1c93e5065b..bc5e2532a8 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt_ref.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt_ref.rs @@ -1,13 +1,11 @@ use crate::{ - api::ManagedTypeApi, contract_base::SendRawWrapper, types::{ - BigUint, EsdtTokenPaymentRefs, ManagedAddress, ManagedVec, MultiEsdtPayment, - TokenIdentifier, TxFrom, TxToSpecified, + BigUint, EsdtTokenPaymentRefs, ManagedAddress, MultiEsdtPayment, TxFrom, TxToSpecified, }, }; -use super::{AnnotatedEgldPayment, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment}; +use super::{FullPaymentData, FunctionCall, TxEnv, TxPayment}; impl<'a, Env> TxPayment for EsdtTokenPaymentRefs<'a, Env::Api> where @@ -19,7 +17,7 @@ where fn perform_transfer_execute( self, - env: &Env, + _env: &Env, to: &ManagedAddress, gas_limit: u64, fc: FunctionCall, diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt_triple.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt_triple.rs index 6adf3dacc5..c49062eb27 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt_triple.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt_triple.rs @@ -1,12 +1,8 @@ -use crate::{ - contract_base::SendRawWrapper, - types::{ - BigUint, EsdtTokenPayment, ManagedAddress, ManagedVec, MultiEsdtPayment, TokenIdentifier, - TxFrom, TxToSpecified, - }, +use crate::types::{ + BigUint, EsdtTokenPayment, ManagedAddress, TokenIdentifier, TxFrom, TxToSpecified, }; -use super::{AnnotatedEgldPayment, FullPaymentData, FunctionCall, TxEgldValue, TxEnv, TxPayment}; +use super::{FullPaymentData, FunctionCall, TxEnv, TxPayment}; impl TxPayment for (TokenIdentifier, u64, BigUint) where diff --git a/framework/base/src/types/interaction/tx_result_handler.rs b/framework/base/src/types/interaction/tx_result_handler.rs index 4bfddb56a4..ed43a292df 100644 --- a/framework/base/src/types/interaction/tx_result_handler.rs +++ b/framework/base/src/types/interaction/tx_result_handler.rs @@ -16,6 +16,8 @@ pub use returns_raw_result::*; pub use returns_result::*; pub use returns_result_conv::*; pub use with_new_address::*; +pub use with_raw_result::WithRawResult; +pub use with_result::WithResult; pub use with_result_conv::*; use super::TxEnv; diff --git a/framework/base/src/types/interaction/tx_result_handler/returns_bt.rs b/framework/base/src/types/interaction/tx_result_handler/returns_bt.rs index a04469930c..e61abf256d 100644 --- a/framework/base/src/types/interaction/tx_result_handler/returns_bt.rs +++ b/framework/base/src/types/interaction/tx_result_handler/returns_bt.rs @@ -1,8 +1,6 @@ use crate::{ contract_base::BlockchainWrapper, - types::{ - BackTransfers, ManagedAddress, ManagedBuffer, ManagedVec, RHListItem, RHListItemExec, TxEnv, - }, + types::{BackTransfers, RHListItem, RHListItemExec, TxEnv}, }; /// Indicates that back-transfers will be returned. diff --git a/framework/base/src/types/interaction/tx_result_handler/returns_new_address.rs b/framework/base/src/types/interaction/tx_result_handler/returns_new_address.rs index 6e73ecf1d1..eaa523828b 100644 --- a/framework/base/src/types/interaction/tx_result_handler/returns_new_address.rs +++ b/framework/base/src/types/interaction/tx_result_handler/returns_new_address.rs @@ -1,7 +1,4 @@ -use crate::types::{ - heap::Address, DeployRawResult, ManagedAddress, ManagedBuffer, ManagedVec, RHListItem, - RHListItemExec, TxEnv, -}; +use crate::types::{heap::Address, DeployRawResult, RHListItem, RHListItemExec, TxEnv}; /// Indicates that the newly deployed address will be returned after a deploy. pub struct ReturnsNewAddress; diff --git a/framework/base/src/types/interaction/tx_result_handler/returns_new_managed_address.rs b/framework/base/src/types/interaction/tx_result_handler/returns_new_managed_address.rs index 04f923fef2..15ed220dc4 100644 --- a/framework/base/src/types/interaction/tx_result_handler/returns_new_managed_address.rs +++ b/framework/base/src/types/interaction/tx_result_handler/returns_new_managed_address.rs @@ -1,6 +1,4 @@ -use crate::types::{ - DeployRawResult, ManagedAddress, ManagedBuffer, ManagedVec, RHListItem, RHListItemExec, TxEnv, -}; +use crate::types::{DeployRawResult, ManagedAddress, RHListItem, RHListItemExec, TxEnv}; /// Indicates that the newly deployed address will be returned after a deploy as a ManagedAddress. pub struct ReturnsNewManagedAddress; diff --git a/framework/base/src/types/interaction/tx_result_handler/returns_raw_result.rs b/framework/base/src/types/interaction/tx_result_handler/returns_raw_result.rs index 2627d99065..807ce5cf82 100644 --- a/framework/base/src/types/interaction/tx_result_handler/returns_raw_result.rs +++ b/framework/base/src/types/interaction/tx_result_handler/returns_raw_result.rs @@ -1,6 +1,6 @@ use crate::types::{ - DeployRawResult, ManagedAddress, ManagedBuffer, ManagedVec, RHListItem, RHListItemExec, - SyncCallRawResult, TxEnv, + DeployRawResult, ManagedBuffer, ManagedVec, RHListItem, RHListItemExec, SyncCallRawResult, + TxEnv, }; /// Indicates that the raw result data will be returned. diff --git a/framework/base/src/types/interaction/tx_result_handler/returns_result.rs b/framework/base/src/types/interaction/tx_result_handler/returns_result.rs index 27c547c19e..b5c4a5c491 100644 --- a/framework/base/src/types/interaction/tx_result_handler/returns_result.rs +++ b/framework/base/src/types/interaction/tx_result_handler/returns_result.rs @@ -1,8 +1,8 @@ use multiversx_sc_codec::TopDecodeMulti; use crate::types::{ - interaction::decode_result, DeployRawResult, ManagedBuffer, ManagedVec, RHListItem, - RHListItemExec, SyncCallRawResult, TxEnv, + interaction::decode_result, DeployRawResult, RHListItem, RHListItemExec, SyncCallRawResult, + TxEnv, }; /// Indicates that result will be returned. diff --git a/framework/base/src/types/interaction/tx_result_handler/returns_result_conv.rs b/framework/base/src/types/interaction/tx_result_handler/returns_result_conv.rs index e0f8cd3df1..1583d0ecbe 100644 --- a/framework/base/src/types/interaction/tx_result_handler/returns_result_conv.rs +++ b/framework/base/src/types/interaction/tx_result_handler/returns_result_conv.rs @@ -3,8 +3,7 @@ use core::marker::PhantomData; use multiversx_sc_codec::{CodecFrom, TopEncodeMulti}; use crate::types::{ - interaction::decode_result, ManagedBuffer, ManagedVec, RHListItem, RHListItemExec, - SyncCallRawResult, TxEnv, + interaction::decode_result, RHListItem, RHListItemExec, SyncCallRawResult, TxEnv, }; /// Indicates that result will be returned. diff --git a/framework/base/src/types/interaction/tx_result_handler/with_new_address.rs b/framework/base/src/types/interaction/tx_result_handler/with_new_address.rs index 2a8840f744..f26d12983c 100644 --- a/framework/base/src/types/interaction/tx_result_handler/with_new_address.rs +++ b/framework/base/src/types/interaction/tx_result_handler/with_new_address.rs @@ -1,8 +1,6 @@ use core::marker::PhantomData; -use crate::types::{ - DeployRawResult, ManagedAddress, ManagedBuffer, ManagedVec, RHListItem, RHListItemExec, TxEnv, -}; +use crate::types::{DeployRawResult, ManagedAddress, RHListItem, RHListItemExec, TxEnv}; /// Defines a lambda function to be called on the newly deployed address, after a deploy. pub struct WithNewAddress diff --git a/framework/base/src/types/interaction/tx_result_handler/with_result.rs b/framework/base/src/types/interaction/tx_result_handler/with_result.rs index d9f11aed14..ad4daea57d 100644 --- a/framework/base/src/types/interaction/tx_result_handler/with_result.rs +++ b/framework/base/src/types/interaction/tx_result_handler/with_result.rs @@ -3,8 +3,7 @@ use core::marker::PhantomData; use multiversx_sc_codec::TopDecodeMulti; use crate::types::{ - interaction::decode_result, ManagedBuffer, ManagedVec, RHListItem, RHListItemExec, - SyncCallRawResult, TxEnv, + interaction::decode_result, RHListItem, RHListItemExec, SyncCallRawResult, TxEnv, }; /// Defines a lambda function to be called on the decoded result. diff --git a/framework/base/src/types/interaction/tx_result_handler/with_result_conv.rs b/framework/base/src/types/interaction/tx_result_handler/with_result_conv.rs index 772bd9acd9..263017fe87 100644 --- a/framework/base/src/types/interaction/tx_result_handler/with_result_conv.rs +++ b/framework/base/src/types/interaction/tx_result_handler/with_result_conv.rs @@ -3,8 +3,7 @@ use core::marker::PhantomData; use multiversx_sc_codec::{CodecFrom, TopEncodeMulti}; use crate::types::{ - interaction::decode_result, ManagedBuffer, ManagedVec, RHListItem, RHListItemExec, - SyncCallRawResult, TxEnv, + interaction::decode_result, RHListItem, RHListItemExec, SyncCallRawResult, TxEnv, }; /// Defines a lambda function to be called on the decoded result. diff --git a/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_exec.rs b/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_exec.rs index 3773d58629..93f559b4ba 100644 --- a/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_exec.rs +++ b/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_exec.rs @@ -1,7 +1,4 @@ -use crate::{ - api::CallTypeApi, - types::{ManagedBuffer, OriginalResultMarker, TxEnv}, -}; +use crate::types::{OriginalResultMarker, TxEnv}; use super::{ConsNoRet, ConsRet, RHList, RHListItem}; From 00eeb401eceff0e536ac3614832c7fab429f2cb1 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sat, 13 Apr 2024 17:35:11 +0300 Subject: [PATCH 340/461] removed dependencies that are no longer used --- Cargo.lock | 4 ---- .../esdt-contract-pair/first-contract/Cargo.toml | 1 - .../execute-on-dest-esdt-issue-callback/parent/Cargo.toml | 4 ---- .../feature-tests/composability/forwarder-queue/Cargo.toml | 3 --- contracts/feature-tests/composability/forwarder/Cargo.toml | 3 --- .../composability/forwarder/src/contract_change_owner.rs | 3 +-- .../composability/forwarder/src/forwarder_main.rs | 1 - .../feature-tests/composability/promises-features/Cargo.toml | 3 --- 8 files changed, 1 insertion(+), 21 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a0fb9cfca9..9c165c5319 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -1035,7 +1035,6 @@ version = "0.0.0" dependencies = [ "multiversx-sc", "multiversx-sc-scenario", - "vault", ] [[package]] @@ -1070,7 +1069,6 @@ dependencies = [ "multiversx-sc", "multiversx-sc-scenario", "multiversx-sc-wasm-adapter", - "vault", ] [[package]] @@ -2234,7 +2232,6 @@ dependencies = [ name = "parent" version = "0.0.0" dependencies = [ - "child", "multiversx-sc", "multiversx-sc-scenario", ] @@ -2372,7 +2369,6 @@ name = "promises-features" version = "0.0.0" dependencies = [ "multiversx-sc", - "vault", ] [[package]] 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 ebb8656515..c984035267 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 @@ -8,7 +8,6 @@ publish = false [lib] path = "src/lib.rs" - [dependencies.multiversx-sc] version = "0.49.0-alpha.2" path = "../../../../../framework/base" 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 c06c523eb9..4a004fea30 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 @@ -8,10 +8,6 @@ publish = false [lib] path = "src/lib.rs" - -[dependencies.child] -path = "../child" - [dependencies.multiversx-sc] version = "0.49.0-alpha.2" path = "../../../../../framework/base" diff --git a/contracts/feature-tests/composability/forwarder-queue/Cargo.toml b/contracts/feature-tests/composability/forwarder-queue/Cargo.toml index b9e68812b1..2705677cbe 100644 --- a/contracts/feature-tests/composability/forwarder-queue/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/Cargo.toml @@ -8,9 +8,6 @@ publish = false [lib] path = "src/forwarder_queue.rs" -[dependencies.vault] -path = "../vault" - [dependencies.multiversx-sc] version = "0.49.0-alpha.2" path = "../../../../framework/base" diff --git a/contracts/feature-tests/composability/forwarder/Cargo.toml b/contracts/feature-tests/composability/forwarder/Cargo.toml index 23c091082c..f87b7190b3 100644 --- a/contracts/feature-tests/composability/forwarder/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/Cargo.toml @@ -8,9 +8,6 @@ publish = false [lib] path = "src/forwarder_main.rs" -[dependencies.vault] -path = "../vault" - [dependencies.multiversx-sc] version = "0.49.0-alpha.2" path = "../../../../framework/base" diff --git a/contracts/feature-tests/composability/forwarder/src/contract_change_owner.rs b/contracts/feature-tests/composability/forwarder/src/contract_change_owner.rs index 855abcc2fd..672d55c3f7 100644 --- a/contracts/feature-tests/composability/forwarder/src/contract_change_owner.rs +++ b/contracts/feature-tests/composability/forwarder/src/contract_change_owner.rs @@ -10,8 +10,7 @@ pub trait ChangeOwnerModule { child_sc_address: ManagedAddress, new_owner: ManagedAddress, ) -> ManagedAddress { - let () = self - .send() + self.send() .change_owner_address(child_sc_address.clone(), &new_owner) .sync_call(); diff --git a/contracts/feature-tests/composability/forwarder/src/forwarder_main.rs b/contracts/feature-tests/composability/forwarder/src/forwarder_main.rs index 61dcbad468..92d3289a21 100644 --- a/contracts/feature-tests/composability/forwarder/src/forwarder_main.rs +++ b/contracts/feature-tests/composability/forwarder/src/forwarder_main.rs @@ -1,6 +1,5 @@ #![no_std] #![allow(clippy::type_complexity)] -#![allow(clippy::let_unit_value)] pub mod call_async; pub mod call_sync; diff --git a/contracts/feature-tests/composability/promises-features/Cargo.toml b/contracts/feature-tests/composability/promises-features/Cargo.toml index aa14e0b1ac..8e81f87942 100644 --- a/contracts/feature-tests/composability/promises-features/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/Cargo.toml @@ -8,9 +8,6 @@ publish = false [lib] path = "src/promises_main.rs" -[dependencies.vault] -path = "../vault" - [dependencies.multiversx-sc] version = "0.49.0-alpha.2" path = "../../../../framework/base" From cd7ab6bc29e6855ce586f967faa474f7376faabe Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sat, 13 Apr 2024 17:43:01 +0300 Subject: [PATCH 341/461] sc 0.49.0-alpha.3 --- CHANGELOG.md | 3 +++ Cargo.lock | 18 +++++++++--------- 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 ++-- .../mappers/linked-list-repeat/meta/Cargo.toml | 2 +- .../mappers/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 +- .../benchmarks/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 +- contracts/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 +- .../Cargo.toml | 2 +- .../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 +- .../examples/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 +++--- contracts/examples/check-pause/meta/Cargo.toml | 2 +- contracts/examples/check-pause/wasm/Cargo.toml | 2 +- .../examples/crowdfunding-esdt/Cargo.toml | 4 ++-- .../examples/crowdfunding-esdt/meta/Cargo.toml | 2 +- .../examples/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 +- .../examples/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 +- contracts/examples/nft-subscription/Cargo.toml | 6 +++--- .../examples/nft-subscription/meta/Cargo.toml | 2 +- .../examples/nft-subscription/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 ++-- contracts/examples/proxy-pause/meta/Cargo.toml | 2 +- contracts/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 +- .../wasm-alloc-mem-fail/Cargo.toml | 2 +- .../wasm-alloc-mem-leaking/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 | 4 ++-- .../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-legacy/Cargo.toml | 4 ++-- .../forwarder-legacy/meta/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 +- .../composability/promises-features/Cargo.toml | 2 +- .../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 +- .../composability/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 +- .../vault/wasm-vault-upgrade/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 ++-- .../erc-style-contracts/erc721/meta/Cargo.toml | 2 +- .../erc-style-contracts/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 +- .../feature-tests/exchange-features/Cargo.toml | 4 ++-- .../exchange-features/meta/Cargo.toml | 2 +- .../exchange-features/wasm/Cargo.toml | 2 +- .../formatted-message-features/Cargo.toml | 4 ++-- .../formatted-message-features/meta/Cargo.toml | 2 +- .../formatted-message-features/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 +- .../wasm/Cargo.toml | 2 +- .../rust-testing-framework-tester/Cargo.toml | 4 ++-- .../meta/Cargo.toml | 2 +- .../wasm/Cargo.toml | 2 +- .../feature-tests/scenario-tester/Cargo.toml | 4 ++-- .../scenario-tester/meta/Cargo.toml | 2 +- .../scenario-tester/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 +- .../use-module/wasm-use-module-view/Cargo.toml | 2 +- .../feature-tests/use-module/wasm/Cargo.toml | 2 +- contracts/modules/Cargo.toml | 4 ++-- framework/base/Cargo.toml | 4 ++-- framework/derive/Cargo.toml | 2 +- framework/meta/Cargo.toml | 4 ++-- framework/scenario/Cargo.toml | 6 +++--- 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 | 4 ++-- 268 files changed, 392 insertions(+), 389 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fb3a19b767..32de5c4b7d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,9 @@ They are: - `multiversx-chain-scenario-format`, in short `scenario-format`, scenario JSON serializer/deserializer, 1 crate. - `multiversx-sdk`, in short `sdk`, allows communication with the chain(s), 1 crate. +## [sc 0.49.0-alpha.3] - 2024-04-13 +Third pre-release of the unified syntax, includes backwards compatibility fixes and testing set state/check state. + ## [sc 0.49.0-alpha.2] - 2024-04-09 Second pre-release of the unified syntax. Most features done, including fully featured interactors. Still missing: set state/check state in tests. diff --git a/Cargo.lock b/Cargo.lock index 9c165c5319..32adcdf5bf 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -1815,7 +1815,7 @@ checksum = "b59072fa0624b55ae5ae3fa6bfa91515bbeb4ac440214bc4a509e2c8806d6e9f" [[package]] name = "multiversx-price-aggregator-sc" -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" dependencies = [ "arrayvec", "getrandom 0.2.12", @@ -1836,7 +1836,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" dependencies = [ "bitflags 2.4.2", "hex-literal", @@ -1866,7 +1866,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" dependencies = [ "hex", "proc-macro2", @@ -1877,7 +1877,7 @@ dependencies = [ [[package]] name = "multiversx-sc-meta" -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" dependencies = [ "clap", "colored", @@ -1903,14 +1903,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-scenario" -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" dependencies = [ "base64", "bech32", @@ -1936,7 +1936,7 @@ dependencies = [ [[package]] name = "multiversx-sc-snippets" -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" dependencies = [ "base64", "env_logger", @@ -1950,7 +1950,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" dependencies = [ "multiversx-sc", ] @@ -1981,7 +1981,7 @@ dependencies = [ [[package]] name = "multiversx-wegld-swap-sc" -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" dependencies = [ "multiversx-sc", "multiversx-sc-modules", diff --git a/contracts/benchmarks/large-storage/Cargo.toml b/contracts/benchmarks/large-storage/Cargo.toml index cab5a60bcf..e937ae69a1 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/large-storage/meta/Cargo.toml b/contracts/benchmarks/large-storage/meta/Cargo.toml index 25bcd6a266..a8861c9cfc 100644 --- a/contracts/benchmarks/large-storage/meta/Cargo.toml +++ b/contracts/benchmarks/large-storage/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/large-storage/wasm/Cargo.toml b/contracts/benchmarks/large-storage/wasm/Cargo.toml index 16614c89ce..c177dffe51 100644 --- a/contracts/benchmarks/large-storage/wasm/Cargo.toml +++ b/contracts/benchmarks/large-storage/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 9d20e7403b..16074cce04 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 8b1eb2748a..92aa9e00a0 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 12019a1f0a..67c262e06a 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/linked-list-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml index 74d5d41e13..225bb4bc46 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 f83947344d..f554b0b088 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 77201f9be8..e5bf0384e1 100644 --- a/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml index 2d5c99b109..a5ff1b5db3 100644 --- a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 eb45b07d3b..a04e9481a2 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 23d9d35f8e..3add869333 100644 --- a/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml index 787fcab3a9..ccbefcb68d 100644 --- a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 64e7ef03b3..c1d4afd20a 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 4dca3acc7c..c93fb7908e 100644 --- a/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml index d58a2820e6..4b90afe784 100644 --- a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 034f72b2c2..2d8e92e82a 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 48286ca62c..a125bba2c5 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/single-value-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml index 74eb88203c..411ec9a1ca 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 96cb7ac06e..d812225d87 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 d0b11469ea..cec4fc321f 100644 --- a/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml index c8066692c5..f360097a23 100644 --- a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 3951fb1a7b..64789aa2d0 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 899ad17ad8..fca6291503 100644 --- a/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml index ebc7e32f0f..62ea6206bf 100644 --- a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/str-repeat/Cargo.toml b/contracts/benchmarks/str-repeat/Cargo.toml index 9dd124e9ad..d000c531d5 100644 --- a/contracts/benchmarks/str-repeat/Cargo.toml +++ b/contracts/benchmarks/str-repeat/Cargo.toml @@ -12,10 +12,10 @@ path = "src/str_repeat.rs" managed-buffer-builder-cached = ["multiversx-sc/managed-buffer-builder-cached"] [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/str-repeat/meta/Cargo.toml b/contracts/benchmarks/str-repeat/meta/Cargo.toml index 7ae209e09b..4b7f1c6022 100644 --- a/contracts/benchmarks/str-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/str-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml index 18217e1786..64863e4645 100644 --- a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml +++ b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml index cd29b1bc3c..36033c9f95 100644 --- a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml +++ b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml @@ -26,7 +26,7 @@ path = ".." features = ["managed-buffer-builder-cached"] [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/str-repeat/wasm/Cargo.toml b/contracts/benchmarks/str-repeat/wasm/Cargo.toml index cd02b379b2..a62bedbaca 100644 --- a/contracts/benchmarks/str-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/str-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/core/price-aggregator/Cargo.toml b/contracts/core/price-aggregator/Cargo.toml index 8f8f7bc975..5ac8cd49db 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.49.0-alpha.2" +version = "0.49.0-alpha.3" authors = [ "Claudiu-Marcel Bruda ", "MultiversX ", @@ -19,15 +19,15 @@ edition = "2021" path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/scenario" [dependencies] diff --git a/contracts/core/price-aggregator/meta/Cargo.toml b/contracts/core/price-aggregator/meta/Cargo.toml index 0e8d6732bc..17751a1628 100644 --- a/contracts/core/price-aggregator/meta/Cargo.toml +++ b/contracts/core/price-aggregator/meta/Cargo.toml @@ -8,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/core/price-aggregator/wasm/Cargo.toml b/contracts/core/price-aggregator/wasm/Cargo.toml index 934a5a6feb..d402bd0d78 100644 --- a/contracts/core/price-aggregator/wasm/Cargo.toml +++ b/contracts/core/price-aggregator/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/core/wegld-swap/Cargo.toml b/contracts/core/wegld-swap/Cargo.toml index ec6d025440..f889200683 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.49.0-alpha.2" +version = "0.49.0-alpha.3" authors = [ "Dorin Iancu ", @@ -20,13 +20,13 @@ edition = "2021" path = "src/wegld.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/scenario" diff --git a/contracts/core/wegld-swap/meta/Cargo.toml b/contracts/core/wegld-swap/meta/Cargo.toml index 4503b24e93..b4cd52cd9f 100644 --- a/contracts/core/wegld-swap/meta/Cargo.toml +++ b/contracts/core/wegld-swap/meta/Cargo.toml @@ -11,10 +11,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/core/wegld-swap/wasm/Cargo.toml b/contracts/core/wegld-swap/wasm/Cargo.toml index af55512e72..b9fa10fa9f 100644 --- a/contracts/core/wegld-swap/wasm/Cargo.toml +++ b/contracts/core/wegld-swap/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/adder/Cargo.toml b/contracts/examples/adder/Cargo.toml index 77e0e77979..e4bb857c31 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/scenario" diff --git a/contracts/examples/adder/interact/Cargo.toml b/contracts/examples/adder/interact/Cargo.toml index dc6a5533ea..d955f0bfb6 100644 --- a/contracts/examples/adder/interact/Cargo.toml +++ b/contracts/examples/adder/interact/Cargo.toml @@ -18,5 +18,5 @@ toml = "0.8.6" path = ".." [dependencies.multiversx-sc-snippets] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/snippets" diff --git a/contracts/examples/adder/meta/Cargo.toml b/contracts/examples/adder/meta/Cargo.toml index 03da88815e..1581fb0874 100644 --- a/contracts/examples/adder/meta/Cargo.toml +++ b/contracts/examples/adder/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/adder/wasm/Cargo.toml b/contracts/examples/adder/wasm/Cargo.toml index 716593e814..613d0060ce 100644 --- a/contracts/examples/adder/wasm/Cargo.toml +++ b/contracts/examples/adder/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 16a18869ff..03d2d06db9 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 c1fc7e8517..9678ba1852 100644 --- a/contracts/examples/bonding-curve-contract/meta/Cargo.toml +++ b/contracts/examples/bonding-curve-contract/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/bonding-curve-contract/wasm/Cargo.toml b/contracts/examples/bonding-curve-contract/wasm/Cargo.toml index d0666d9679..c7487594f9 100644 --- a/contracts/examples/bonding-curve-contract/wasm/Cargo.toml +++ b/contracts/examples/bonding-curve-contract/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/check-pause/Cargo.toml b/contracts/examples/check-pause/Cargo.toml index 290ffbc562..1838cf3cd0 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" [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/scenario" diff --git a/contracts/examples/check-pause/meta/Cargo.toml b/contracts/examples/check-pause/meta/Cargo.toml index a526576983..85b2e19f06 100644 --- a/contracts/examples/check-pause/meta/Cargo.toml +++ b/contracts/examples/check-pause/meta/Cargo.toml @@ -9,6 +9,6 @@ authors = ["Alin Cruceat "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/check-pause/wasm/Cargo.toml b/contracts/examples/check-pause/wasm/Cargo.toml index 1471f77b76..7545ebf696 100644 --- a/contracts/examples/check-pause/wasm/Cargo.toml +++ b/contracts/examples/check-pause/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crowdfunding-esdt/Cargo.toml b/contracts/examples/crowdfunding-esdt/Cargo.toml index c982172007..9a9f88f258 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 2877f2c877..3fa9486d89 100644 --- a/contracts/examples/crowdfunding-esdt/meta/Cargo.toml +++ b/contracts/examples/crowdfunding-esdt/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml b/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml index b560b3fb61..88e4c7b4c5 100644 --- a/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml +++ b/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-bubbles/Cargo.toml b/contracts/examples/crypto-bubbles/Cargo.toml index 05bbae4ea6..992a7df997 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/scenario" diff --git a/contracts/examples/crypto-bubbles/meta/Cargo.toml b/contracts/examples/crypto-bubbles/meta/Cargo.toml index 4c0bf972fe..6966cd9bff 100644 --- a/contracts/examples/crypto-bubbles/meta/Cargo.toml +++ b/contracts/examples/crypto-bubbles/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-bubbles/wasm/Cargo.toml b/contracts/examples/crypto-bubbles/wasm/Cargo.toml index 0515a1046f..7ed5a2fe05 100644 --- a/contracts/examples/crypto-bubbles/wasm/Cargo.toml +++ b/contracts/examples/crypto-bubbles/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 2cde4b803f..2f81bfefd2 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.49.0-alpha.2" +version = "0.49.0-alpha.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 8f04c8950d..1471748b18 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.49.0-alpha.2" +version = "0.49.0-alpha.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 c350697701..f8481bac43 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 a112a3b69c..07c6da37c1 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-auction/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml index 257e449243..59dd92f035 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-kitties/kitty-genetic-alg/Cargo.toml b/contracts/examples/crypto-kitties/kitty-genetic-alg/Cargo.toml index f2e197c104..82976fe38b 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 a26801542e..662321fef8 100644 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false 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 7e4fd09b60..e1b8fc8e9f 100644 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-kitties/kitty-ownership/Cargo.toml b/contracts/examples/crypto-kitties/kitty-ownership/Cargo.toml index d99ec3d2d7..1804881778 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 723a9f1ced..8c5c36e49e 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-ownership/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml index 867b708bbc..533db13539 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-zombies/Cargo.toml b/contracts/examples/crypto-zombies/Cargo.toml index eaf7930699..d3ab2af074 100644 --- a/contracts/examples/crypto-zombies/Cargo.toml +++ b/contracts/examples/crypto-zombies/Cargo.toml @@ -9,11 +9,11 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/scenario" [dependencies.kitty] diff --git a/contracts/examples/crypto-zombies/meta/Cargo.toml b/contracts/examples/crypto-zombies/meta/Cargo.toml index b7d51e7216..8d208fd522 100644 --- a/contracts/examples/crypto-zombies/meta/Cargo.toml +++ b/contracts/examples/crypto-zombies/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-zombies/wasm/Cargo.toml b/contracts/examples/crypto-zombies/wasm/Cargo.toml index 29e2f90339..12124bb027 100644 --- a/contracts/examples/crypto-zombies/wasm/Cargo.toml +++ b/contracts/examples/crypto-zombies/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/digital-cash/Cargo.toml b/contracts/examples/digital-cash/Cargo.toml index f6c2eee8c7..a38a59b831 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/scenario" diff --git a/contracts/examples/digital-cash/meta/Cargo.toml b/contracts/examples/digital-cash/meta/Cargo.toml index 5bea40a8b4..42c42bdd13 100644 --- a/contracts/examples/digital-cash/meta/Cargo.toml +++ b/contracts/examples/digital-cash/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/digital-cash/wasm/Cargo.toml b/contracts/examples/digital-cash/wasm/Cargo.toml index 34e178511e..f46d4873a3 100644 --- a/contracts/examples/digital-cash/wasm/Cargo.toml +++ b/contracts/examples/digital-cash/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/empty/Cargo.toml b/contracts/examples/empty/Cargo.toml index cbe9d305c9..1ef8b5c4c2 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/scenario" [dev-dependencies] diff --git a/contracts/examples/empty/meta/Cargo.toml b/contracts/examples/empty/meta/Cargo.toml index 931c9a1806..4405415a13 100644 --- a/contracts/examples/empty/meta/Cargo.toml +++ b/contracts/examples/empty/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/empty/wasm/Cargo.toml b/contracts/examples/empty/wasm/Cargo.toml index cc030dad95..ac45db4841 100644 --- a/contracts/examples/empty/wasm/Cargo.toml +++ b/contracts/examples/empty/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 9f8e06c391..05712405c8 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 a60f8c4877..3b7d671fa5 100644 --- a/contracts/examples/esdt-transfer-with-fee/meta/Cargo.toml +++ b/contracts/examples/esdt-transfer-with-fee/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml index 5057d0f972..607cf21443 100644 --- a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml +++ b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/factorial/Cargo.toml b/contracts/examples/factorial/Cargo.toml index 50c79d55b7..d58309586d 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/scenario" diff --git a/contracts/examples/factorial/meta/Cargo.toml b/contracts/examples/factorial/meta/Cargo.toml index 5c76e48e8e..2ed75a17e5 100644 --- a/contracts/examples/factorial/meta/Cargo.toml +++ b/contracts/examples/factorial/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/factorial/wasm/Cargo.toml b/contracts/examples/factorial/wasm/Cargo.toml index 0fd3f40ad7..fe4e508dc9 100644 --- a/contracts/examples/factorial/wasm/Cargo.toml +++ b/contracts/examples/factorial/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/fractional-nfts/Cargo.toml b/contracts/examples/fractional-nfts/Cargo.toml index 120f1ca2a3..8c11b19fdc 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/scenario" diff --git a/contracts/examples/fractional-nfts/meta/Cargo.toml b/contracts/examples/fractional-nfts/meta/Cargo.toml index 8c42e9c567..ecb2f5f2f1 100644 --- a/contracts/examples/fractional-nfts/meta/Cargo.toml +++ b/contracts/examples/fractional-nfts/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/fractional-nfts/wasm/Cargo.toml b/contracts/examples/fractional-nfts/wasm/Cargo.toml index 2e36eae6fb..f20930d2ad 100644 --- a/contracts/examples/fractional-nfts/wasm/Cargo.toml +++ b/contracts/examples/fractional-nfts/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/lottery-esdt/Cargo.toml b/contracts/examples/lottery-esdt/Cargo.toml index f218aa93ad..e7eb4659ab 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/scenario" diff --git a/contracts/examples/lottery-esdt/meta/Cargo.toml b/contracts/examples/lottery-esdt/meta/Cargo.toml index 1b05f3c86d..8233b7c512 100644 --- a/contracts/examples/lottery-esdt/meta/Cargo.toml +++ b/contracts/examples/lottery-esdt/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/lottery-esdt/wasm/Cargo.toml b/contracts/examples/lottery-esdt/wasm/Cargo.toml index 478f2fc345..69c7b818d5 100644 --- a/contracts/examples/lottery-esdt/wasm/Cargo.toml +++ b/contracts/examples/lottery-esdt/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/multisig/Cargo.toml b/contracts/examples/multisig/Cargo.toml index 05643e6af2..bcce2fa6d0 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/scenario" [dev-dependencies.adder] @@ -27,7 +27,7 @@ path = "../adder" path = "../factorial" [dev-dependencies.multiversx-wegld-swap-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../core/wegld-swap" [dev-dependencies] diff --git a/contracts/examples/multisig/interact/Cargo.toml b/contracts/examples/multisig/interact/Cargo.toml index 2cafd006f9..2f1e91bbdd 100644 --- a/contracts/examples/multisig/interact/Cargo.toml +++ b/contracts/examples/multisig/interact/Cargo.toml @@ -18,13 +18,13 @@ toml = "0.8.6" path = ".." [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../contracts/modules" [dependencies.multiversx-sc-snippets] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/snippets" [dependencies.multiversx-sc-scenario] -version = "=0.49.0-alpha.2" +version = "=0.49.0-alpha.3" path = "../../../../framework/scenario" diff --git a/contracts/examples/multisig/meta/Cargo.toml b/contracts/examples/multisig/meta/Cargo.toml index e7544b2c11..5c26bd8270 100644 --- a/contracts/examples/multisig/meta/Cargo.toml +++ b/contracts/examples/multisig/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/multisig/wasm-multisig-full/Cargo.toml b/contracts/examples/multisig/wasm-multisig-full/Cargo.toml index ed54fb3f09..5f9c065231 100644 --- a/contracts/examples/multisig/wasm-multisig-full/Cargo.toml +++ b/contracts/examples/multisig/wasm-multisig-full/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 0b0ffd57c2..699aee56ba 100644 --- a/contracts/examples/multisig/wasm-multisig-view/Cargo.toml +++ b/contracts/examples/multisig/wasm-multisig-view/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/multisig/wasm/Cargo.toml b/contracts/examples/multisig/wasm/Cargo.toml index 3c39f4e812..6001a724d2 100644 --- a/contracts/examples/multisig/wasm/Cargo.toml +++ b/contracts/examples/multisig/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-minter/Cargo.toml b/contracts/examples/nft-minter/Cargo.toml index 8b70aba861..c5918b6f7b 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-minter/meta/Cargo.toml b/contracts/examples/nft-minter/meta/Cargo.toml index 7cf76194d1..9b562d0350 100644 --- a/contracts/examples/nft-minter/meta/Cargo.toml +++ b/contracts/examples/nft-minter/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-minter/wasm/Cargo.toml b/contracts/examples/nft-minter/wasm/Cargo.toml index da6e4d3c21..1243696a1c 100644 --- a/contracts/examples/nft-minter/wasm/Cargo.toml +++ b/contracts/examples/nft-minter/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 faffbc1a54..87521e853e 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 a47735c0d9..5682886f56 100644 --- a/contracts/examples/nft-storage-prepay/meta/Cargo.toml +++ b/contracts/examples/nft-storage-prepay/meta/Cargo.toml @@ -11,6 +11,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-storage-prepay/wasm/Cargo.toml b/contracts/examples/nft-storage-prepay/wasm/Cargo.toml index 63ba85a7d0..229c6a4717 100644 --- a/contracts/examples/nft-storage-prepay/wasm/Cargo.toml +++ b/contracts/examples/nft-storage-prepay/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-subscription/Cargo.toml b/contracts/examples/nft-subscription/Cargo.toml index bf9b4f419f..b26f94c434 100644 --- a/contracts/examples/nft-subscription/Cargo.toml +++ b/contracts/examples/nft-subscription/Cargo.toml @@ -9,13 +9,13 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-subscription/meta/Cargo.toml b/contracts/examples/nft-subscription/meta/Cargo.toml index 3775f5cee5..8b62235f45 100644 --- a/contracts/examples/nft-subscription/meta/Cargo.toml +++ b/contracts/examples/nft-subscription/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-subscription/wasm/Cargo.toml b/contracts/examples/nft-subscription/wasm/Cargo.toml index 1ffeadbe56..ca9a314ce2 100644 --- a/contracts/examples/nft-subscription/wasm/Cargo.toml +++ b/contracts/examples/nft-subscription/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/order-book/factory/Cargo.toml b/contracts/examples/order-book/factory/Cargo.toml index 4e17fa774b..9fb1974147 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 194a432f9c..c5fe703a4a 100644 --- a/contracts/examples/order-book/factory/meta/Cargo.toml +++ b/contracts/examples/order-book/factory/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/order-book/factory/wasm/Cargo.toml b/contracts/examples/order-book/factory/wasm/Cargo.toml index ce10c37c7f..06ae5207f1 100644 --- a/contracts/examples/order-book/factory/wasm/Cargo.toml +++ b/contracts/examples/order-book/factory/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/order-book/pair/Cargo.toml b/contracts/examples/order-book/pair/Cargo.toml index 8f961c51be..3b5064a83b 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 45ef69dbd6..99e08d3bf3 100644 --- a/contracts/examples/order-book/pair/meta/Cargo.toml +++ b/contracts/examples/order-book/pair/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/order-book/pair/wasm/Cargo.toml b/contracts/examples/order-book/pair/wasm/Cargo.toml index 9ed18aeb20..61aef735af 100644 --- a/contracts/examples/order-book/pair/wasm/Cargo.toml +++ b/contracts/examples/order-book/pair/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/ping-pong-egld/Cargo.toml b/contracts/examples/ping-pong-egld/Cargo.toml index e968442b7c..674b90d665 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 b6492950a1..98bcbcba8c 100644 --- a/contracts/examples/ping-pong-egld/meta/Cargo.toml +++ b/contracts/examples/ping-pong-egld/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/ping-pong-egld/wasm/Cargo.toml b/contracts/examples/ping-pong-egld/wasm/Cargo.toml index 0d7ac94d72..c7dcdf0380 100644 --- a/contracts/examples/ping-pong-egld/wasm/Cargo.toml +++ b/contracts/examples/ping-pong-egld/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/proxy-pause/Cargo.toml b/contracts/examples/proxy-pause/Cargo.toml index 6903e9a658..9accf4aeea 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 bbdce3a720..6dcc4e30ab 100644 --- a/contracts/examples/proxy-pause/meta/Cargo.toml +++ b/contracts/examples/proxy-pause/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = [ "you",] path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/proxy-pause/wasm/Cargo.toml b/contracts/examples/proxy-pause/wasm/Cargo.toml index ade889dbf1..ca38a58a94 100644 --- a/contracts/examples/proxy-pause/wasm/Cargo.toml +++ b/contracts/examples/proxy-pause/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/rewards-distribution/Cargo.toml b/contracts/examples/rewards-distribution/Cargo.toml index 46e3c7426c..e52b38c28c 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/scenario" diff --git a/contracts/examples/rewards-distribution/meta/Cargo.toml b/contracts/examples/rewards-distribution/meta/Cargo.toml index af8b1e3fdb..746938fde8 100644 --- a/contracts/examples/rewards-distribution/meta/Cargo.toml +++ b/contracts/examples/rewards-distribution/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = ["Claudiu-Marcel Bruda "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/rewards-distribution/wasm/Cargo.toml b/contracts/examples/rewards-distribution/wasm/Cargo.toml index 06205454f5..3cee3848c2 100644 --- a/contracts/examples/rewards-distribution/wasm/Cargo.toml +++ b/contracts/examples/rewards-distribution/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/seed-nft-minter/Cargo.toml b/contracts/examples/seed-nft-minter/Cargo.toml index d47f7a103b..f1c0ccd1c5 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 113bf6fcbb..b62a153697 100644 --- a/contracts/examples/seed-nft-minter/meta/Cargo.toml +++ b/contracts/examples/seed-nft-minter/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = ["Claudiu-Marcel Bruda "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/seed-nft-minter/wasm/Cargo.toml b/contracts/examples/seed-nft-minter/wasm/Cargo.toml index 844ec4ce9c..ebf2f8df94 100644 --- a/contracts/examples/seed-nft-minter/wasm/Cargo.toml +++ b/contracts/examples/seed-nft-minter/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/token-release/Cargo.toml b/contracts/examples/token-release/Cargo.toml index 9e84276585..01ff068282 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/scenario" diff --git a/contracts/examples/token-release/meta/Cargo.toml b/contracts/examples/token-release/meta/Cargo.toml index 245912467e..e2afb339ec 100644 --- a/contracts/examples/token-release/meta/Cargo.toml +++ b/contracts/examples/token-release/meta/Cargo.toml @@ -10,7 +10,7 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/token-release/wasm/Cargo.toml b/contracts/examples/token-release/wasm/Cargo.toml index 0863733c27..064f98b3c8 100644 --- a/contracts/examples/token-release/wasm/Cargo.toml +++ b/contracts/examples/token-release/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/abi-tester/Cargo.toml b/contracts/feature-tests/abi-tester/Cargo.toml index afaa799635..c19e464f3e 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/scenario" [dev-dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 457e86a074..33e1e2787e 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.49.0-alpha.2" + "version": "0.49.0-alpha.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 20d4ee7906..478b195d18 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.49.0-alpha.2" + "version": "0.49.0-alpha.3" } }, "docs": [ diff --git a/contracts/feature-tests/abi-tester/meta/Cargo.toml b/contracts/feature-tests/abi-tester/meta/Cargo.toml index b3d94a1fb1..9b7c4a08c9 100644 --- a/contracts/feature-tests/abi-tester/meta/Cargo.toml +++ b/contracts/feature-tests/abi-tester/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false 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 60b4c4d018..8bfa480843 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 cfbf6696e6..65a7038c2b 100644 --- a/contracts/feature-tests/abi-tester/wasm/Cargo.toml +++ b/contracts/feature-tests/abi-tester/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 519f3892f1..1b07610469 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 e5d1f0e801..c3ad60f909 100644 --- a/contracts/feature-tests/alloc-features/meta/Cargo.toml +++ b/contracts/feature-tests/alloc-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml index fe0fb46c53..59084bf018 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml index 59a3b1e893..7c0ebffec7 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/wasm/Cargo.toml b/contracts/feature-tests/alloc-features/wasm/Cargo.toml index c5c9cf50ce..784dd52e8b 100644 --- a/contracts/feature-tests/alloc-features/wasm/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 170e7947a3..c6ba72f9b7 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/scenario" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 52f74fd411..81e892886e 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.8.6" path = ".." [dependencies.multiversx-sc-snippets] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 b11857dcff..30215e3488 100644 --- a/contracts/feature-tests/basic-features/meta/Cargo.toml +++ b/contracts/feature-tests/basic-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false 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 8a3e03b97a..bcbd853f58 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 939489e8f0..d348b58457 100644 --- a/contracts/feature-tests/basic-features/wasm/Cargo.toml +++ b/contracts/feature-tests/basic-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = true path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 abb7d894ca..7f39fd1c2b 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 9c685118f9..07f567b2f3 100644 --- a/contracts/feature-tests/big-float-features/meta/Cargo.toml +++ b/contracts/feature-tests/big-float-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/big-float-features/wasm/Cargo.toml b/contracts/feature-tests/big-float-features/wasm/Cargo.toml index 318d83673b..04f16e8c5c 100644 --- a/contracts/feature-tests/big-float-features/wasm/Cargo.toml +++ b/contracts/feature-tests/big-float-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/Cargo.toml b/contracts/feature-tests/composability/Cargo.toml index 938768f769..d2c31be93d 100644 --- a/contracts/feature-tests/composability/Cargo.toml +++ b/contracts/feature-tests/composability/Cargo.toml @@ -36,9 +36,9 @@ path = "recursive-caller" path = "vault" [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 603387dcec..988a74e311 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 57d609aa8c..8809391c73 100644 --- a/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false 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 b92baea5d0..6e67682cd7 100644 --- a/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 775eec997d..cf497b77d8 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 c984035267..95b8bb3e7a 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 @@ -9,10 +9,10 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 cd02f10c2c..b688de7b7e 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../../framework/meta" default-features = false 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 b3f7654bd7..5eea19a304 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 3d5ec4343c..ee50706ffe 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 98115fbd0f..a2c8472890 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../../framework/meta" default-features = false 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 5b7f33d216..dccf91ee2d 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 136c7346f1..6beeb65885 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 e55b31e0c0..7d56002e94 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 81c849a074..2e59dd11f1 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../../framework/meta" default-features = false 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 247bbec770..111c39dc04 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 4a004fea30..3719359f0d 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 @@ -9,10 +9,10 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 02b3fb2b9f..0f9b09b643 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../../framework/meta" default-features = false 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 5e25d80dee..49cce44ba0 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/forwarder-legacy/Cargo.toml b/contracts/feature-tests/composability/forwarder-legacy/Cargo.toml index b751258cfa..b7be9a2b09 100644 --- a/contracts/feature-tests/composability/forwarder-legacy/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-legacy/Cargo.toml @@ -12,10 +12,10 @@ path = "src/forwarder_legacy_main.rs" path = "../vault" [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/forwarder-legacy/meta/Cargo.toml b/contracts/feature-tests/composability/forwarder-legacy/meta/Cargo.toml index 559f4b20e2..de2b7deb4f 100644 --- a/contracts/feature-tests/composability/forwarder-legacy/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-legacy/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/forwarder-queue/Cargo.toml b/contracts/feature-tests/composability/forwarder-queue/Cargo.toml index 2705677cbe..807a48e584 100644 --- a/contracts/feature-tests/composability/forwarder-queue/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/Cargo.toml @@ -9,14 +9,14 @@ publish = false path = "src/forwarder_queue.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" optional = true [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 f465a1a111..3ccbf42df7 100644 --- a/contracts/feature-tests/composability/forwarder-queue/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false 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 cb1ae3c65c..df35b3e625 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 829e9f792d..2caa94fdf6 100644 --- a/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 7cc1b41bdc..4ff47c8dcc 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 92175b201b..7db4c8cc8b 100644 --- a/contracts/feature-tests/composability/forwarder-raw/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-raw/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false 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 538475d3b1..0691deeb91 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 7365f87735..87467a5713 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 cb9092dc7b..49a2aaccc5 100644 --- a/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 f87b7190b3..43287d2f99 100644 --- a/contracts/feature-tests/composability/forwarder/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/Cargo.toml @@ -9,10 +9,10 @@ publish = false path = "src/forwarder_main.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 5bab38b0ed..373e719d27 100644 --- a/contracts/feature-tests/composability/forwarder/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml b/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml index 5d65561d9f..840717266b 100644 --- a/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 9b763b7bb0..eee6ad38e7 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../contracts/modules" [dependencies.multiversx-sc-snippets] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 2f2cfc6b07..f5d6597a04 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 b43117afb7..197d6d771a 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,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false 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 7b0d418800..d5fa591652 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 8e81f87942..b36abd2473 100644 --- a/contracts/feature-tests/composability/promises-features/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = "src/promises_main.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" diff --git a/contracts/feature-tests/composability/promises-features/meta/Cargo.toml b/contracts/feature-tests/composability/promises-features/meta/Cargo.toml index 612ac28984..c74045ba74 100644 --- a/contracts/feature-tests/composability/promises-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml b/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml index 9f4fbe32c3..38a99b57d1 100644 --- a/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 8cebc36d6f..2ac10d9906 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.4.1" [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 e18657f249..de0d156d9a 100644 --- a/contracts/feature-tests/composability/proxy-test-first/meta/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-first/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false 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 2261045523..3288ee5579 100644 --- a/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 615d809aa5..be7e7245e3 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 12e84b7230..559e0ab0b2 100644 --- a/contracts/feature-tests/composability/proxy-test-second/meta/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-second/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false 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 268ff3f2f5..99fb50fdae 100644 --- a/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 a0a6278b38..5af4f6b07d 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 599841d5fb..96bc818532 100644 --- a/contracts/feature-tests/composability/recursive-caller/meta/Cargo.toml +++ b/contracts/feature-tests/composability/recursive-caller/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml index 9c75f7ec7f..a72b6b1e24 100644 --- a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 b5acba41f5..b79e8d56b0 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 c1c4f4df1e..79476b840c 100644 --- a/contracts/feature-tests/composability/transfer-role-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/transfer-role-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false 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 773143455c..ef7b1f1428 100644 --- a/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 b50ef91a46..e31b239684 100644 --- a/contracts/feature-tests/composability/vault/Cargo.toml +++ b/contracts/feature-tests/composability/vault/Cargo.toml @@ -10,9 +10,9 @@ path = "src/vault.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 5f23118119..8d1b082bab 100644 --- a/contracts/feature-tests/composability/vault/meta/Cargo.toml +++ b/contracts/feature-tests/composability/vault/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false 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 9039df2a4c..b09fa9bbe9 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml index 1d0df10024..3014a523c9 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 9c5cb3ac00..c298a50dbd 100644 --- a/contracts/feature-tests/composability/vault/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 5cb374cf2f..3c19ea4d30 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 edbca52c79..1c7cafcd1d 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false 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 bd96532634..33abc78a59 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 f40d3515e1..3ca5de7c09 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 521545335f..df8110b562 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false 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 840f16343b..6a20d7350e 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 d43e1a740f..f9bfaf993c 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 76c3595d6c..6671d757bb 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false 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 acfe93462e..a7a481f28c 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 7b174d1c34..e9b17b91f2 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 62714e29b5..cac8f568a7 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false 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 4b97617741..76b0cf4614 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 8c19ff102d..83ed113938 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 2d02fbd210..359adb0799 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc20/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false 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 d5f6957015..5dcd945afd 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 254a40cb7c..a10fafd483 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 2fee5bb8f9..1a13e5b8ac 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc721/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false 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 22edbf129b..62f50069de 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/wasm-adapter" [workspace] 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 2d569594b0..044e9c98ee 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 d433dc152e..2325b11301 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/meta" default-features = false 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 773ab49014..86bf125ffb 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/esdt-system-sc-mock/Cargo.toml b/contracts/feature-tests/esdt-system-sc-mock/Cargo.toml index 110a8e9bd9..d6a741ce2a 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 4003060c14..703b7a9353 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/meta/Cargo.toml +++ b/contracts/feature-tests/esdt-system-sc-mock/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false 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 35572ee7f2..e95c73f7c7 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.toml +++ b/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/exchange-features/Cargo.toml b/contracts/feature-tests/exchange-features/Cargo.toml index c5f62b4c5a..d88b0bfe55 100644 --- a/contracts/feature-tests/exchange-features/Cargo.toml +++ b/contracts/feature-tests/exchange-features/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/exchange_features.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/exchange-features/meta/Cargo.toml b/contracts/feature-tests/exchange-features/meta/Cargo.toml index f7a183430f..a136b96009 100644 --- a/contracts/feature-tests/exchange-features/meta/Cargo.toml +++ b/contracts/feature-tests/exchange-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/exchange-features/wasm/Cargo.toml b/contracts/feature-tests/exchange-features/wasm/Cargo.toml index fa2c693992..b5faf4bc2a 100644 --- a/contracts/feature-tests/exchange-features/wasm/Cargo.toml +++ b/contracts/feature-tests/exchange-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 cc124713b7..449928d8e1 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 b0d9228ef7..4a1af3ce58 100644 --- a/contracts/feature-tests/formatted-message-features/meta/Cargo.toml +++ b/contracts/feature-tests/formatted-message-features/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = [ "you",] path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml b/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml index 57f367e7b7..ad6413abb0 100644 --- a/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml +++ b/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/managed-map-features/Cargo.toml b/contracts/feature-tests/managed-map-features/Cargo.toml index 39a114ccee..2d0005c680 100644 --- a/contracts/feature-tests/managed-map-features/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/Cargo.toml @@ -9,11 +9,11 @@ publish = false path = "src/mmap_features.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 70337ef43e..58b74efc31 100644 --- a/contracts/feature-tests/managed-map-features/meta/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/managed-map-features/wasm/Cargo.toml b/contracts/feature-tests/managed-map-features/wasm/Cargo.toml index 320c50a632..e9281f9976 100644 --- a/contracts/feature-tests/managed-map-features/wasm/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 9715f9ed8f..ef65d67f43 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 573b351f94..6ebca90110 100644 --- a/contracts/feature-tests/multi-contract-features/meta/Cargo.toml +++ b/contracts/feature-tests/multi-contract-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false 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 e2208ba71b..e8162e6df5 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 56e59eb3c5..bfa63ab7ea 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 @@ -26,7 +26,7 @@ path = ".." features = ["example_feature"] [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 d285b18931..82a1d0906f 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 9d6e21c6ea..462466dc27 100644 --- a/contracts/feature-tests/multi-contract-features/wasm/Cargo.toml +++ b/contracts/feature-tests/multi-contract-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 3698a878b9..5a51dbe4ab 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 99414c7e02..6f1b4f7b20 100644 --- a/contracts/feature-tests/panic-message-features/meta/Cargo.toml +++ b/contracts/feature-tests/panic-message-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/panic-message-features/wasm/Cargo.toml b/contracts/feature-tests/panic-message-features/wasm/Cargo.toml index 63bee8f3d1..a8bb519333 100644 --- a/contracts/feature-tests/panic-message-features/wasm/Cargo.toml +++ b/contracts/feature-tests/panic-message-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 1955cc0d71..f393b769a0 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 b138fb0932..b0e53733be 100644 --- a/contracts/feature-tests/payable-features/meta/Cargo.toml +++ b/contracts/feature-tests/payable-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/payable-features/wasm/Cargo.toml b/contracts/feature-tests/payable-features/wasm/Cargo.toml index 049b406aa5..e8005d93c3 100644 --- a/contracts/feature-tests/payable-features/wasm/Cargo.toml +++ b/contracts/feature-tests/payable-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 3e8a6469a5..25e0ba5e4d 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 40979f73f1..654a8d30d2 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.49.0-alpha.2" +version = "0.49.0-alpha.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 fc87dc6b82..dd54362752 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/meta/Cargo.toml +++ b/contracts/feature-tests/rust-snippets-generator-test/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false 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 08c7eb2512..6be0e2b462 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.toml +++ b/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 0ecc629875..83b382a1b6 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.49.0-alpha.2" +version = "0.49.0-alpha.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.49.0-alpha.2" +version = "0.49.0-alpha.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 abfddefb59..d8ebeebdfe 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/meta/Cargo.toml +++ b/contracts/feature-tests/rust-testing-framework-tester/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false 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 dc5966b935..844da5b804 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.toml +++ b/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/scenario-tester/Cargo.toml b/contracts/feature-tests/scenario-tester/Cargo.toml index 192916d27e..eb15243aa1 100644 --- a/contracts/feature-tests/scenario-tester/Cargo.toml +++ b/contracts/feature-tests/scenario-tester/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/scenario-tester/meta/Cargo.toml b/contracts/feature-tests/scenario-tester/meta/Cargo.toml index a4c669e5f1..551bd6efe7 100644 --- a/contracts/feature-tests/scenario-tester/meta/Cargo.toml +++ b/contracts/feature-tests/scenario-tester/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/scenario-tester/wasm/Cargo.toml b/contracts/feature-tests/scenario-tester/wasm/Cargo.toml index 1baaa13b44..026d4b7463 100644 --- a/contracts/feature-tests/scenario-tester/wasm/Cargo.toml +++ b/contracts/feature-tests/scenario-tester/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 905ede62be..f55b44c58c 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../contracts/modules" [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../framework/scenario" [dev-dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 557e9f5fad..bfbc356ab4 100644 --- a/contracts/feature-tests/use-module/meta/Cargo.toml +++ b/contracts/feature-tests/use-module/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/use-module/meta/abi/Cargo.toml b/contracts/feature-tests/use-module/meta/abi/Cargo.toml index 3184d932c3..f4a72800b6 100644 --- a/contracts/feature-tests/use-module/meta/abi/Cargo.toml +++ b/contracts/feature-tests/use-module/meta/abi/Cargo.toml @@ -9,10 +9,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/meta" default-features = false 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 7bdd9cdc73..fedbb5c8c4 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.49.0-alpha.2" + "version": "0.49.0-alpha.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 bb8b10e3dd..75b41e0f02 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.49.0-alpha.2" + "version": "0.49.0-alpha.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 9e0975de50..a5c2d575ab 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.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 ee8e101689..f95cab10e3 100644 --- a/contracts/feature-tests/use-module/wasm/Cargo.toml +++ b/contracts/feature-tests/use-module/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/modules/Cargo.toml b/contracts/modules/Cargo.toml index 87cd42fe2d..338ab2ae7d 100644 --- a/contracts/modules/Cargo.toml +++ b/contracts/modules/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-modules" -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" edition = "2021" authors = ["MultiversX "] @@ -17,5 +17,5 @@ categories = ["no-std", "wasm", "cryptography::cryptocurrencies"] alloc = ["multiversx-sc/alloc"] [dependencies.multiversx-sc] -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../framework/base" diff --git a/framework/base/Cargo.toml b/framework/base/Cargo.toml index 226844c6b4..9537ff48ee 100644 --- a/framework/base/Cargo.toml +++ b/framework/base/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc" -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" edition = "2021" authors = ["Andrei Marinica ", "MultiversX "] @@ -28,7 +28,7 @@ bitflags = "=2.4.2" num-traits = { version = "=0.2.17", default-features = false } [dependencies.multiversx-sc-derive] -version = "=0.49.0-alpha.2" +version = "=0.49.0-alpha.3" path = "../derive" [dependencies.multiversx-sc-codec] diff --git a/framework/derive/Cargo.toml b/framework/derive/Cargo.toml index e3c39d67b6..b15e244e7d 100644 --- a/framework/derive/Cargo.toml +++ b/framework/derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-derive" -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" edition = "2021" authors = ["Andrei Marinica ", "MultiversX "] diff --git a/framework/meta/Cargo.toml b/framework/meta/Cargo.toml index a63b1b7e61..f0c8b354f7 100644 --- a/framework/meta/Cargo.toml +++ b/framework/meta/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-meta" -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" edition = "2021" authors = [ @@ -52,7 +52,7 @@ pathdiff = { version = "0.2.1", optional = true } common-path = { version = "1.0.0", optional = true } [dependencies.multiversx-sc] -version = "=0.49.0-alpha.2" +version = "=0.49.0-alpha.3" path = "../base" features = ["alloc", "num-bigint"] diff --git a/framework/scenario/Cargo.toml b/framework/scenario/Cargo.toml index ac7b78cd25..59aa246985 100644 --- a/framework/scenario/Cargo.toml +++ b/framework/scenario/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-scenario" -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" edition = "2021" authors = [ @@ -40,12 +40,12 @@ path = "src/main.rs" run-go-tests = [] [dependencies.multiversx-sc] -version = "=0.49.0-alpha.2" +version = "=0.49.0-alpha.3" features = ["alloc", "num-bigint"] path = "../base" [dependencies.multiversx-sc-meta] -version = "=0.49.0-alpha.2" +version = "=0.49.0-alpha.3" path = "../meta" [dependencies.multiversx-chain-scenario-format] diff --git a/framework/snippets/Cargo.toml b/framework/snippets/Cargo.toml index 03a0d48c6c..d07d310522 100644 --- a/framework/snippets/Cargo.toml +++ b/framework/snippets/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-snippets" -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.3" edition = "2021" authors = ["MultiversX "] @@ -22,7 +22,7 @@ env_logger = "0.11" futures = "0.3" [dependencies.multiversx-sc-scenario] -version = "=0.49.0-alpha.2" +version = "=0.49.0-alpha.3" path = "../scenario" [dependencies.multiversx-sdk] diff --git a/framework/wasm-adapter/Cargo.toml b/framework/wasm-adapter/Cargo.toml index 9220813f9b..148d6d74ee 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.49.0-alpha.2" +version = "0.49.0-alpha.3" edition = "2021" authors = [ @@ -22,5 +22,5 @@ categories = [ ] [dependencies.multiversx-sc] -version = "=0.49.0-alpha.2" +version = "=0.49.0-alpha.3" path = "../base" diff --git a/tools/mxpy-snippet-generator/Cargo.toml b/tools/mxpy-snippet-generator/Cargo.toml index 1cda1d668a..029658ccf8 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.49.0-alpha.2" +version = "0.49.0-alpha.3" path = "../../framework/base" [dependencies] diff --git a/tools/rust-debugger/format-tests/Cargo.toml b/tools/rust-debugger/format-tests/Cargo.toml index 1f8412b35d..3a6a5987c1 100644 --- a/tools/rust-debugger/format-tests/Cargo.toml +++ b/tools/rust-debugger/format-tests/Cargo.toml @@ -9,11 +9,11 @@ name = "format-tests" path = "src/format_tests.rs" [dependencies.multiversx-sc] -version = "=0.49.0-alpha.2" +version = "=0.49.0-alpha.3" path = "../../../framework/base" [dependencies.multiversx-sc-scenario] -version = "=0.49.0-alpha.2" +version = "=0.49.0-alpha.3" path = "../../../framework/scenario" [dependencies.multiversx-chain-vm] From 82f90d746e11c42050897ab8800cf4c7235dd47e Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Mon, 15 Apr 2024 12:18:44 +0200 Subject: [PATCH 342/461] cleanup --- .../tests/price_aggregator_blackbox_test.rs | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs b/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs index db64b7749c..c57e36711e 100644 --- a/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs +++ b/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs @@ -2,7 +2,6 @@ use multiversx_price_aggregator_sc::{ price_aggregator_data::{OracleStatus, TimestampedPrice, TokenPair}, ContractObj, PriceAggregator, MAX_ROUND_DURATION_SECONDS, }; -use multiversx_sc_modules::staking::ProxyTrait as _; use multiversx_sc_scenario::imports::*; @@ -23,8 +22,6 @@ const USD_TICKER: &[u8] = b"USDC"; const PRICE_AGGREGATOR: ScExpr = ScExpr("price-aggregator"); const OWNER: AddressExpr = AddressExpr("owner"); -type PriceAggregatorContract = ContractInfo>; - fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); @@ -40,7 +37,6 @@ fn world() -> ScenarioWorld { struct PriceAggregatorTestState { world: ScenarioWorld, oracles: Vec, - price_aggregator_contract: PriceAggregatorContract, price_aggregator_whitebox: WhiteboxContract>, } @@ -67,7 +63,7 @@ impl PriceAggregatorTestState { } world.set_state_step(set_state_step); - let price_aggregator_contract = PriceAggregatorContract::new(PRICE_AGGREGATOR_ADDRESS_EXPR); + // 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, @@ -76,7 +72,6 @@ impl PriceAggregatorTestState { Self { world, oracles, - price_aggregator_contract, price_aggregator_whitebox, } } @@ -380,13 +375,14 @@ fn test_price_aggregator_slashing() { state.vote_slash_member(&state.oracles[2].clone(), state.oracles[1].to_address()); state.vote_slash_member(&state.oracles[3].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()), - ), - ); + state + .world + .tx() + .from(&state.oracles[0].to_address()) + .to(PRICE_AGGREGATOR) + .typed(price_aggregator_proxy::PriceAggregatorProxy) + .slash_member(state.oracles[1].to_address()) + .run(); // oracle 1 try submit after slashing state.submit_and_expect_err( From 24f35ac75cad8595f977ac5b5f82df9629ca43a6 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Mon, 15 Apr 2024 17:46:33 +0200 Subject: [PATCH 343/461] block info builder impl --- framework/scenario/src/facade/world_tx.rs | 1 + .../src/facade/world_tx/block_info_builder.rs | 146 ++++++++++++++++++ .../src/facade/world_tx/scenario_env_exec.rs | 6 +- 3 files changed, 152 insertions(+), 1 deletion(-) create mode 100644 framework/scenario/src/facade/world_tx/block_info_builder.rs diff --git a/framework/scenario/src/facade/world_tx.rs b/framework/scenario/src/facade/world_tx.rs index 2fa69c744e..11a4ed554f 100644 --- a/framework/scenario/src/facade/world_tx.rs +++ b/framework/scenario/src/facade/world_tx.rs @@ -1,5 +1,6 @@ #![allow(unused)] // TEMP +mod block_info_builder; mod scenario_env; mod scenario_env_deploy; mod scenario_env_exec; diff --git a/framework/scenario/src/facade/world_tx/block_info_builder.rs b/framework/scenario/src/facade/world_tx/block_info_builder.rs new file mode 100644 index 0000000000..a03b312255 --- /dev/null +++ b/framework/scenario/src/facade/world_tx/block_info_builder.rs @@ -0,0 +1,146 @@ +use crate::{ + scenario::ScenarioRunner, + scenario_model::{BlockInfo, BytesValue, SetStateStep, U64Value}, + ScenarioWorld, +}; + +pub struct BlockInfoBuilder<'w> { + world: &'w mut ScenarioWorld, + set_state_step: SetStateStep, + current_block: BlockInfo, + previous_block: BlockInfo, +} + +impl<'w> BlockInfoBuilder<'w> { + pub(crate) fn new(world: &'w mut ScenarioWorld) -> BlockInfoBuilder<'w> { + let mut builder = BlockInfoBuilder { + world, + set_state_step: SetStateStep::new(), + current_block: BlockInfo::default(), + previous_block: BlockInfo::default(), + }; + builder + } + + // Forces value drop and commit block info. + pub fn commit(self) {} + + /// Finished and sets all account in the blockchain mock. + fn commit_block_info(&mut self) { + self.add_current_block_info(); + self.world.run_set_state_step(&self.set_state_step); + } + + fn add_current_block_info(&mut self) { + self.set_state_step.previous_block_info = + Box::new(Some(core::mem::take(&mut self.previous_block))); + self.set_state_step.current_block_info = + Box::new(Some(core::mem::take(&mut self.current_block))); + } + + pub fn block_epoch(mut self, block_epoch_expr: N) -> Self + where + U64Value: From, + { + let block_epoch = U64Value::from(block_epoch_expr); + + self.current_block.block_epoch = Some(block_epoch); + self + } + + pub fn block_nonce(mut self, block_nonce_expr: N) -> Self + where + U64Value: From, + { + let block_nonce = U64Value::from(block_nonce_expr); + + self.current_block.block_nonce = Some(block_nonce); + self + } + + pub fn block_round(mut self, block_round_expr: N) -> Self + where + U64Value: From, + { + let block_round = U64Value::from(block_round_expr); + + self.current_block.block_round = Some(block_round); + self + } + + pub fn block_timestamp(mut self, block_timestamp_expr: N) -> Self + where + U64Value: From, + { + let block_timestamp = U64Value::from(block_timestamp_expr); + + self.current_block.block_timestamp = Some(block_timestamp); + self + } + + pub fn block_random_seed(mut self, block_random_seed_expr: B) -> Self + where + BytesValue: From, + { + let block_random_seed = BytesValue::from(block_random_seed_expr); + + self.current_block.block_random_seed = Some(block_random_seed); + self + } + + pub fn prev_block_epoch(mut self, block_epoch_expr: N) -> Self + where + U64Value: From, + { + let prev_block_epoch = U64Value::from(block_epoch_expr); + + self.previous_block.block_epoch = Some(prev_block_epoch); + self + } + + pub fn prev_block_nonce(mut self, block_nonce_expr: N) -> Self + where + U64Value: From, + { + let prev_block_nonce = U64Value::from(block_nonce_expr); + + self.previous_block.block_nonce = Some(prev_block_nonce); + self + } + + pub fn prev_block_round(mut self, block_round_expr: N) -> Self + where + U64Value: From, + { + let prev_block_round = U64Value::from(block_round_expr); + + self.previous_block.block_round = Some(prev_block_round); + self + } + + pub fn prev_block_timestamp(mut self, block_timestamp_expr: N) -> Self + where + U64Value: From, + { + let prev_block_timestamp = U64Value::from(block_timestamp_expr); + + self.previous_block.block_timestamp = Some(prev_block_timestamp); + self + } + + pub fn prev_block_random_seed(mut self, block_random_seed_expr: B) -> Self + where + BytesValue: From, + { + let prev_block_random_seed = BytesValue::from(block_random_seed_expr); + + self.previous_block.block_random_seed = Some(prev_block_random_seed); + self + } +} + +impl Drop for BlockInfoBuilder<'_> { + fn drop(&mut self) { + self.commit_block_info(); + } +} diff --git a/framework/scenario/src/facade/world_tx/scenario_env_exec.rs b/framework/scenario/src/facade/world_tx/scenario_env_exec.rs index 5eef522784..3dcd1de553 100644 --- a/framework/scenario/src/facade/world_tx/scenario_env_exec.rs +++ b/framework/scenario/src/facade/world_tx/scenario_env_exec.rs @@ -21,7 +21,7 @@ use crate::{ ScenarioTxEnv, ScenarioTxRun, ScenarioWorld, }; -use super::ScenarioTxEnvData; +use super::{block_info_builder::BlockInfoBuilder, ScenarioTxEnvData}; /// Environment for executing transactions. pub struct ScenarioEnvExec<'w> { @@ -106,6 +106,10 @@ impl ScenarioWorld { { SetStateBuilder::new(self, address_expr.into()) } + + pub fn block_info(&mut self) -> BlockInfoBuilder<'_> { + BlockInfoBuilder::new(self) + } } pub struct SetStateBuilder<'w> { From df8b61ac0a9a04e74f3cfde27d5544f38cabbd31 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Mon, 15 Apr 2024 18:11:07 +0200 Subject: [PATCH 344/461] tx to step fix for esdt payments --- .../src/scenario/model/transaction/tx_esdt.rs | 14 ++++++++++++++ .../src/scenario/tx_to_step/tx_to_step_call.rs | 8 +++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/framework/scenario/src/scenario/model/transaction/tx_esdt.rs b/framework/scenario/src/scenario/model/transaction/tx_esdt.rs index cf17a76a19..67ccf99956 100644 --- a/framework/scenario/src/scenario/model/transaction/tx_esdt.rs +++ b/framework/scenario/src/scenario/model/transaction/tx_esdt.rs @@ -1,3 +1,5 @@ +use multiversx_sc::{api::ManagedTypeApi, types::EsdtTokenPayment}; + use crate::{ scenario::model::{BigUintValue, BytesValue, U64Value}, scenario_format::{ @@ -33,6 +35,18 @@ impl IntoRaw for TxESDT { } } +impl From> for TxESDT { + fn from(value: EsdtTokenPayment) -> Self { + TxESDT { + esdt_token_identifier: BytesValue::from( + value.token_identifier.as_managed_buffer().to_vec(), + ), + nonce: U64Value::from(value.token_nonce), + esdt_value: BigUintValue::from(value.amount), + } + } +} + fn interpret_esdt_token_identifier( esdt_token_identifier: Option, context: &InterpreterContext, diff --git a/framework/scenario/src/scenario/tx_to_step/tx_to_step_call.rs b/framework/scenario/src/scenario/tx_to_step/tx_to_step_call.rs index b155ac66df..d111116a5c 100644 --- a/framework/scenario/src/scenario/tx_to_step/tx_to_step_call.rs +++ b/framework/scenario/src/scenario/tx_to_step/tx_to_step_call.rs @@ -2,7 +2,7 @@ use multiversx_sc::types::{ FunctionCall, RHListExec, Tx, TxEnv, TxFromSpecified, TxGas, TxPayment, TxToSpecified, }; -use crate::scenario_model::{ScCallStep, TxExpect, TxResponse}; +use crate::scenario_model::{ScCallStep, TxESDT, TxExpect, TxResponse}; use super::{address_annotated, gas_annotated, StepWrapper, TxToStep}; @@ -65,6 +65,12 @@ where let full_payment_data = payment.into_full_payment_data(env); if let Some(annotated_egld_payment) = full_payment_data.egld { step.tx.egld_value = annotated_egld_payment.into(); + } else { + step.tx.esdt_value = full_payment_data + .multi_esdt + .iter() + .map(TxESDT::from) + .collect(); } step From 3773481048b6be9169670e462ff568f96525bb32 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Mon, 15 Apr 2024 18:14:35 +0200 Subject: [PATCH 345/461] clippy --- framework/scenario/src/facade/world_tx/block_info_builder.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/framework/scenario/src/facade/world_tx/block_info_builder.rs b/framework/scenario/src/facade/world_tx/block_info_builder.rs index a03b312255..0defeb61d9 100644 --- a/framework/scenario/src/facade/world_tx/block_info_builder.rs +++ b/framework/scenario/src/facade/world_tx/block_info_builder.rs @@ -13,13 +13,12 @@ pub struct BlockInfoBuilder<'w> { impl<'w> BlockInfoBuilder<'w> { pub(crate) fn new(world: &'w mut ScenarioWorld) -> BlockInfoBuilder<'w> { - let mut builder = BlockInfoBuilder { + BlockInfoBuilder { world, set_state_step: SetStateStep::new(), current_block: BlockInfo::default(), previous_block: BlockInfo::default(), - }; - builder + } } // Forces value drop and commit block info. From 9b4d31707cfeaa2bc1d8cb747a4cff08b3e7a96e Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 16 Apr 2024 17:30:28 +0300 Subject: [PATCH 346/461] unified syntax - more migrations --- .../src/crowdfunding_esdt.rs | 11 +++-- .../examples/lottery-esdt/src/lottery.rs | 16 +++---- .../examples/nft-minter/src/nft_module.rs | 11 +---- .../forwarder-raw/src/forwarder_raw_async.rs | 5 +- .../local-esdt-and-nft/src/lib.rs | 6 ++- .../erc1155-marketplace/src/lib.rs | 25 +++++----- .../rust-testing-framework-tester/src/lib.rs | 8 +--- .../src/bonding_curve/utils/user_endpoints.rs | 17 +++---- contracts/modules/src/staking.rs | 6 ++- contracts/modules/src/token_merge/mod.rs | 8 ++-- .../tx_payment/tx_payment_single_esdt.rs | 46 +++++++++++++++++++ 11 files changed, 103 insertions(+), 56 deletions(-) diff --git a/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt.rs b/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt.rs index abe8420d82..1dea493562 100644 --- a/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt.rs +++ b/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt.rs @@ -75,8 +75,10 @@ pub trait Crowdfunding { let token_identifier = self.cf_token_identifier().get(); let sc_balance = self.get_current_funds(); - self.send() - .direct(&caller, &token_identifier, 0, &sc_balance); + self.tx() + .to(&caller) + .egld_or_single_esdt(&token_identifier, 0, &sc_balance) + .transfer(); }, Status::Failed => { let caller = self.blockchain().get_caller(); @@ -86,7 +88,10 @@ pub trait Crowdfunding { let token_identifier = self.cf_token_identifier().get(); self.deposit(&caller).clear(); - self.send().direct(&caller, &token_identifier, 0, &deposit); + self.tx() + .to(&caller) + .egld_or_single_esdt(&token_identifier, 0, &deposit) + .transfer(); } }, } diff --git a/contracts/examples/lottery-esdt/src/lottery.rs b/contracts/examples/lottery-esdt/src/lottery.rs index 48a94b14b2..3c5d9040b1 100644 --- a/contracts/examples/lottery-esdt/src/lottery.rs +++ b/contracts/examples/lottery-esdt/src/lottery.rs @@ -291,19 +291,19 @@ pub trait Lottery { &BigUint::from(info.prize_distribution.get(i)), ); - self.send() - .direct(&winner_address, &info.token_identifier, 0, &prize); + self.tx() + .to(&winner_address) + .egld_or_single_esdt(&info.token_identifier, 0, &prize) + .transfer(); info.prize_pool -= prize; } // send leftover to first place let first_place_winner = ticket_holders_mapper.get(winning_tickets[0]); - self.send().direct( - &first_place_winner, - &info.token_identifier, - 0, - &info.prize_pool, - ); + self.tx() + .to(&first_place_winner) + .egld_or_single_esdt(&info.token_identifier, 0, &info.prize_pool) + .transfer(); } fn clear_storage(&self, lottery_name: &ManagedBuffer) { diff --git a/contracts/examples/nft-minter/src/nft_module.rs b/contracts/examples/nft-minter/src/nft_module.rs index 05b937f432..6b324fefee 100644 --- a/contracts/examples/nft-minter/src/nft_module.rs +++ b/contracts/examples/nft-minter/src/nft_module.rs @@ -95,12 +95,7 @@ pub trait NftModule { .transfer(); let owner = self.blockchain().get_owner_address(); - self.send().direct( - &owner, - &payment.token_identifier, - payment.token_nonce, - &payment.amount, - ); + self.tx().to(owner).payment(payment).transfer(); } // views @@ -133,11 +128,9 @@ pub trait NftModule { self.nft_token_id().set(&token_id.unwrap_esdt()); }, ManagedAsyncCallResult::Err(_) => { - let caller = self.blockchain().get_owner_address(); let returned = self.call_value().egld_or_single_esdt(); if returned.token_identifier.is_egld() && returned.amount > 0 { - self.send() - .direct(&caller, &returned.token_identifier, 0, &returned.amount); + self.tx().to(ToCaller).egld(returned.amount).transfer(); } }, } diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs index 55f00f079e..7c26b40c60 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_async.rs @@ -6,7 +6,10 @@ pub trait ForwarderRawAsync: super::forwarder_raw_common::ForwarderRawCommon { #[payable("*")] fn forward_payment(&self, to: ManagedAddress) { let (token, payment) = self.call_value().egld_or_single_fungible_esdt(); - self.send().direct(&to, &token, 0, &payment); + self.tx() + .to(to) + .egld_or_single_esdt(&token, 0, &payment) + .transfer(); } #[endpoint] diff --git a/contracts/feature-tests/composability/local-esdt-and-nft/src/lib.rs b/contracts/feature-tests/composability/local-esdt-and-nft/src/lib.rs index e65fd789b4..b51fd3ab9c 100644 --- a/contracts/feature-tests/composability/local-esdt-and-nft/src/lib.rs +++ b/contracts/feature-tests/composability/local-esdt-and-nft/src/lib.rs @@ -138,8 +138,10 @@ pub trait LocalEsdtAndEsdtNft { nonce: u64, amount: BigUint, ) { - self.send() - .transfer_esdt_via_async_call(to, token_identifier, nonce, amount); + self.tx() + .to(to) + .esdt((token_identifier, nonce, amount)) + .async_call_and_exit(); } #[endpoint] diff --git a/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/src/lib.rs b/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/src/lib.rs index 08c0f09258..7aa633d71c 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/src/lib.rs +++ b/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/src/lib.rs @@ -108,7 +108,10 @@ pub trait Erc1155Marketplace { let claimable_funds_mapper = self.get_claimable_funds_mapper(); for (token_identifier, amount) in claimable_funds_mapper.iter() { - self.send().direct(&caller, &token_identifier, 0, &amount); + self.tx() + .to(&caller) + .egld_or_single_esdt(&token_identifier, 0, &amount) + .transfer(); self.clear_claimable_funds(&token_identifier); } } @@ -178,12 +181,10 @@ pub trait Erc1155Marketplace { // refund losing bid if !auction.current_winner.is_zero() { - self.send().direct( - &auction.current_winner, - &auction.token_identifier, - 0, - &auction.current_bid, - ); + self.tx() + .to(&auction.current_winner) + .egld_or_single_esdt(&auction.token_identifier, 0, &auction.current_bid) + .transfer(); } // update auction bid and winner @@ -217,12 +218,10 @@ pub trait Erc1155Marketplace { self.add_claimable_funds(&auction.token_identifier, &cut_amount); // send part of the bid to the original owner - self.send().direct( - &auction.original_owner, - &auction.token_identifier, - 0, - &amount_to_send, - ); + self.tx() + .to(&auction.original_owner) + .egld_or_single_esdt(&auction.token_identifier, 0, &amount_to_send) + .transfer(); // send token to winner self.async_transfer_token(type_id, nft_id, auction.current_winner); diff --git a/contracts/feature-tests/rust-testing-framework-tester/src/lib.rs b/contracts/feature-tests/rust-testing-framework-tester/src/lib.rs index dae11542e4..d535041664 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/src/lib.rs +++ b/contracts/feature-tests/rust-testing-framework-tester/src/lib.rs @@ -62,14 +62,8 @@ pub trait RustTestingFrameworkTester: dummy_module::DummyModule { #[payable("EGLD")] #[endpoint] fn recieve_egld_half(&self) { - let caller = self.blockchain().get_caller(); let payment_amount = &*self.call_value().egld_value() / 2u32; - self.send().direct( - &caller, - &EgldOrEsdtTokenIdentifier::egld(), - 0, - &payment_amount, - ); + self.tx().to(ToCaller).egld(payment_amount).transfer(); } #[payable("*")] diff --git a/contracts/modules/src/bonding_curve/utils/user_endpoints.rs b/contracts/modules/src/bonding_curve/utils/user_endpoints.rs index d81fc4f2b1..f627d26256 100644 --- a/contracts/modules/src/bonding_curve/utils/user_endpoints.rs +++ b/contracts/modules/src/bonding_curve/utils/user_endpoints.rs @@ -48,8 +48,11 @@ pub trait UserEndpointsModule: storage::StorageModule + events::EventsModule { self.nonce_amount(&offered_token, nonce) .update(|val| *val += sell_amount); - self.send() - .direct(&caller, &payment_token, 0u64, &calculated_price); + self.tx() + .to(&caller) + .egld_or_single_esdt(&payment_token, 0u64, &calculated_price) + .transfer(); + self.token_details(&offered_token) .update(|details| details.add_nonce(nonce)); @@ -116,12 +119,10 @@ pub trait UserEndpointsModule: storage::StorageModule + events::EventsModule { }, }; - self.send().direct( - &caller, - &offered_token, - 0u64, - &(&payment - &calculated_price), - ); + self.tx() + .to(&caller) + .egld_or_single_esdt(&offered_token, 0u64, &(&payment - &calculated_price)) + .transfer(); self.buy_token_event(&caller, &calculated_price); } diff --git a/contracts/modules/src/staking.rs b/contracts/modules/src/staking.rs index 3db2350fb1..e30a457e51 100644 --- a/contracts/modules/src/staking.rs +++ b/contracts/modules/src/staking.rs @@ -90,8 +90,10 @@ pub trait StakingModule { staked_amount_mapper.set(&leftover_amount); let staking_token = self.staking_token().get(); - self.send() - .direct(&caller, &staking_token, 0, &unstake_amount); + self.tx() + .to(caller) + .egld_or_single_esdt(&staking_token, 0, &unstake_amount) + .transfer(); } #[endpoint(voteSlashMember)] diff --git a/contracts/modules/src/token_merge/mod.rs b/contracts/modules/src/token_merge/mod.rs index 2e4fe85668..b940980dfe 100644 --- a/contracts/modules/src/token_merge/mod.rs +++ b/contracts/modules/src/token_merge/mod.rs @@ -74,9 +74,11 @@ pub trait TokenMergeModule: let merged_token_payment = self.create_merged_token(merged_token_id, &all_merged_instances, attr_creator); - let caller = self.blockchain().get_caller(); - self.send() - .direct_non_zero_esdt_payment(&caller, &merged_token_payment); + + self.tx() + .to(ToCaller) + .payment(&merged_token_payment) + .transfer_if_not_empty(); merged_token_payment } diff --git a/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt.rs b/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt.rs index 66e3374aa0..975a5d0d78 100644 --- a/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt.rs +++ b/framework/base/src/types/interaction/tx_payment/tx_payment_single_esdt.rs @@ -46,3 +46,49 @@ where } } } + +impl TxPayment for &EsdtTokenPayment +where + Env: TxEnv, +{ + #[inline] + fn is_no_payment(&self, _env: &Env) -> bool { + self.amount == 0u32 + } + + #[inline] + fn perform_transfer_execute( + self, + env: &Env, + to: &ManagedAddress, + gas_limit: u64, + fc: FunctionCall, + ) { + self.as_refs() + .perform_transfer_execute(env, to, gas_limit, fc); + } + + #[inline] + fn with_normalized( + self, + env: &Env, + from: &From, + to: To, + fc: FunctionCall, + f: F, + ) -> R + where + From: TxFrom, + To: TxToSpecified, + F: FnOnce(&ManagedAddress, &BigUint, &FunctionCall) -> R, + { + self.as_refs().with_normalized(env, from, to, fc, f) + } + + fn into_full_payment_data(self, _env: &Env) -> FullPaymentData { + FullPaymentData { + egld: None, + multi_esdt: MultiEsdtPayment::from_single_item(self.clone()), + } + } +} From 7bb85c9553605d9661219be3e022304fcebf1180 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Tue, 16 Apr 2024 20:14:03 +0300 Subject: [PATCH 347/461] check deposit problem --- .../tests/crowdfunding_esdt_blackbox_test.rs | 100 ++++++++++-------- 1 file changed, 55 insertions(+), 45 deletions(-) diff --git a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs index a23ecc3854..b821b070fb 100644 --- a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs +++ b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs @@ -6,7 +6,6 @@ use num_bigint::BigUint; const CF_DEADLINE: u64 = 7 * 24 * 60 * 60; // 1 week in seconds const CF_TOKEN_ID: &[u8] = b"CROWD-123456"; const CF_TOKEN_ID_EXPR: &str = "str:CROWD-123456"; -const CROWDFUNDING_ESDT_ADDRESS_EXPR: &str = "sc:crowdfunding-esdt"; const CROWDFUNDING_ESDT_PATH_EXPR: &str = "mxsc:output/crowdfunding-esdt.mxsc.json"; const FIRST_USER_ADDRESS_EXPR: &str = "address:first-user"; const FIRST_USER_ADDRESS_EXPR_REPL: AddressExpr = AddressExpr("first-user"); @@ -40,32 +39,31 @@ struct CrowdfundingESDTTestState { impl CrowdfundingESDTTestState { fn new() -> Self { let mut world = world(); - let owner_address = "address:owner"; - - world.set_state_step( - SetStateStep::new() - .put_account(OWNER_ADDRESS_EXPR_REPL, Account::new().nonce(1)) - .new_address(owner_address, 1, CROWDFUNDING_ESDT_ADDRESS_EXPR) - .put_account( - FIRST_USER_ADDRESS_EXPR_REPL, - Account::new() - .nonce(1) - .balance("1_000") - .esdt_balance(CF_TOKEN_ID_EXPR, "1_000"), - ) - .put_account( - SECOND_USER_ADDRESS_EXPR_REPL, - Account::new() - .nonce(1) - .esdt_balance(CF_TOKEN_ID_EXPR, "1_000"), - ), - ); - - let crowdfunding_esdt_contract = - CrowdfundingESDTContract::new(CROWDFUNDING_ESDT_ADDRESS_EXPR); - - let first_user_address = AddressValue::from(FIRST_USER_ADDRESS_EXPR).to_address(); - let second_user_address = AddressValue::from(SECOND_USER_ADDRESS_EXPR).to_address(); + // let owner_address = "address:owner"; + + world + .account(OWNER_ADDRESS_EXPR) + .nonce(1) + .account(FIRST_USER_ADDRESS_EXPR_REPL) + .nonce(1) + .balance("1000") + .esdt_balance(CF_TOKEN_ID_EXPR, "1000") + .account(SECOND_USER_ADDRESS_EXPR_REPL) + .nonce(1) + .esdt_balance(CF_TOKEN_ID_EXPR, "1000"); + + world.set_state_step(SetStateStep::new().new_address( + OWNER_ADDRESS_EXPR, + 1, + SC_CROWDFUNDING_ESDT_EXPR.eval_to_expr().as_str(), + )); + + let crowdfunding_esdt_contract = CrowdfundingESDTContract::new(SC_CROWDFUNDING_ESDT_EXPR); + + let first_user_address = + AddressValue::from(FIRST_USER_ADDRESS_EXPR_REPL.eval_to_expr().as_str()).to_address(); + let second_user_address = + AddressValue::from(SECOND_USER_ADDRESS_EXPR_REPL.eval_to_expr().as_str()).to_address(); Self { world, @@ -96,22 +94,24 @@ impl CrowdfundingESDTTestState { .to(SC_CROWDFUNDING_ESDT_EXPR) .typed(crowdfunding_esdt_proxy::CrowdfundingProxy) .fund() - .single_esdt( - &TokenIdentifier::from(CF_TOKEN_ID_EXPR), + .egld_or_single_esdt( + &EgldOrEsdtTokenIdentifier::esdt(CF_TOKEN_ID), 0u64, &multiversx_sc::proxy_imports::BigUint::from(amount), ) .run(); } - fn check_deposit(&mut self, donor: Address, amount: u64) -> &mut Self { - self.world.sc_query( - ScQueryStep::new() - .call(self.crowdfunding_esdt_contract.deposit(&donor)) - .expect_value(SingleValue::from(BigUint::from(amount))), - ); + fn check_deposit(&mut self, donor: Address, amount: u64) { + let value = world() + .query() + .to(SC_CROWDFUNDING_ESDT_EXPR) + .typed(crowdfunding_esdt_proxy::CrowdfundingProxy) + .deposit(&donor) + .returns(ReturnsResultConv::::new()) + .run(); - self + assert_eq!(value, amount.into()); } fn check_status(&mut self, expected_value: Status) -> &mut Self { @@ -157,8 +157,8 @@ fn test_fund() { let mut state = CrowdfundingESDTTestState::new(); state.deploy(); - state.fund(FIRST_USER_ADDRESS_EXPR_REPL, 1_000); - state.check_deposit(state.first_user_address.clone(), 1_000); + state.fund(FIRST_USER_ADDRESS_EXPR_REPL, 1_000u64); + state.check_deposit(state.first_user_address.clone(), 1_000u64); } #[test] @@ -198,12 +198,14 @@ fn test_successful_cf() { state.deploy(); // first user fund - state.fund(FIRST_USER_ADDRESS_EXPR_REPL, 1000); - state.check_deposit(state.first_user_address.clone(), 1_000); + state.fund(FIRST_USER_ADDRESS_EXPR_REPL, 1_000u64); //.eval_to_expr().as_str(), "1000"); + // state.check_deposit(state.first_user_address.clone(), 1_000); + // state.check_deposit(FIRST_USER_ADDRESS_EXPR_REPL, 1_000); // second user fund state.fund(SECOND_USER_ADDRESS_EXPR_REPL, 1000); - state.check_deposit(state.second_user_address.clone(), 1_000); + // state.check_deposit(SECOND_USER_ADDRESS_EXPR_REPL, 1_000); + // state.check_deposit(state.second_user_address.clone(), 1_000); // set block timestamp after deadline state.set_block_timestamp(CF_DEADLINE + 1); @@ -235,12 +237,20 @@ fn test_failed_cf() { state.deploy(); // first user fund - state.fund(FIRST_USER_ADDRESS_EXPR_REPL, 300); - state.check_deposit(state.first_user_address.clone(), 300u64); + state.fund( + FIRST_USER_ADDRESS_EXPR_REPL, //.eval_to_expr().as_str() + 300, + ); + // state.check_deposit(FIRST_USER_ADDRESS_EXPR_REPL, 300u64); + // state.check_deposit(state.first_user_address.clone(), 300u64); // second user fund - state.fund(SECOND_USER_ADDRESS_EXPR_REPL, 600); - state.check_deposit(state.second_user_address.clone(), 600u64); + state.fund( + SECOND_USER_ADDRESS_EXPR_REPL, //.eval_to_expr().as_str() + 600, + ); + // state.check_deposit(SECOND_USER_ADDRESS_EXPR_REPL, 600u64); + // state.check_deposit(state.second_user_address.clone(), 600u64); // set block timestamp after deadline state.set_block_timestamp(CF_DEADLINE + 1); From b015b41494ff6b62452abec81590a19e85691f04 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 17 Apr 2024 09:46:30 +0300 Subject: [PATCH 348/461] wasm crate comment fix --- contracts/examples/adder/wasm/src/lib.rs | 2 +- .../examples/crypto-zombies/wasm/src/lib.rs | 2 +- contracts/examples/empty/wasm/src/lib.rs | 2 +- contracts/examples/factorial/wasm/src/lib.rs | 2 +- .../multisig/wasm-multisig-full/src/lib.rs | 2 +- contracts/examples/multisig/wasm/src/lib.rs | 2 +- .../examples/ping-pong-egld/wasm/src/lib.rs | 2 +- .../feature-tests/abi-tester/wasm/src/lib.rs | 2 +- .../forwarder-legacy/wasm/Cargo.toml | 32 +++++++ .../forwarder-legacy/wasm/src/lib.rs | 94 +++++++++++++++++++ .../src/lib.rs | 2 +- .../proxy-test-second/wasm/src/lib.rs | 2 +- .../vault/wasm-vault-upgrade/src/lib.rs | 2 +- .../composability/vault/wasm/src/lib.rs | 2 +- .../exchange-features/wasm/src/lib.rs | 3 +- .../scenario-tester/wasm/src/lib.rs | 2 +- .../cmd/contract/sc_config/wasm_crate_gen.rs | 4 +- 17 files changed, 144 insertions(+), 15 deletions(-) create mode 100644 contracts/feature-tests/composability/forwarder-legacy/wasm/Cargo.toml create mode 100644 contracts/feature-tests/composability/forwarder-legacy/wasm/src/lib.rs diff --git a/contracts/examples/adder/wasm/src/lib.rs b/contracts/examples/adder/wasm/src/lib.rs index 38c36e9d2c..f5f1d356c2 100644 --- a/contracts/examples/adder/wasm/src/lib.rs +++ b/contracts/examples/adder/wasm/src/lib.rs @@ -8,7 +8,7 @@ // Upgrade: 1 // Endpoints: 2 // Async Callback (empty): 1 -// Total number of exported functions: 4 +// Total number of exported functions: 5 #![no_std] #![allow(internal_features)] diff --git a/contracts/examples/crypto-zombies/wasm/src/lib.rs b/contracts/examples/crypto-zombies/wasm/src/lib.rs index ffc350bc7d..13e3db684c 100644 --- a/contracts/examples/crypto-zombies/wasm/src/lib.rs +++ b/contracts/examples/crypto-zombies/wasm/src/lib.rs @@ -8,7 +8,7 @@ // Upgrade: 1 // Endpoints: 17 // Async Callback: 1 -// Total number of exported functions: 19 +// Total number of exported functions: 20 #![no_std] #![allow(internal_features)] diff --git a/contracts/examples/empty/wasm/src/lib.rs b/contracts/examples/empty/wasm/src/lib.rs index 6267772e3b..53a9c2f2f1 100644 --- a/contracts/examples/empty/wasm/src/lib.rs +++ b/contracts/examples/empty/wasm/src/lib.rs @@ -8,7 +8,7 @@ // Upgrade: 1 // Endpoints: 0 // Async Callback (empty): 1 -// Total number of exported functions: 2 +// Total number of exported functions: 3 #![no_std] #![allow(internal_features)] diff --git a/contracts/examples/factorial/wasm/src/lib.rs b/contracts/examples/factorial/wasm/src/lib.rs index 0b5b352a7c..969872f107 100644 --- a/contracts/examples/factorial/wasm/src/lib.rs +++ b/contracts/examples/factorial/wasm/src/lib.rs @@ -8,7 +8,7 @@ // Upgrade: 1 // Endpoints: 1 // Async Callback (empty): 1 -// Total number of exported functions: 3 +// Total number of exported functions: 4 #![no_std] #![allow(internal_features)] diff --git a/contracts/examples/multisig/wasm-multisig-full/src/lib.rs b/contracts/examples/multisig/wasm-multisig-full/src/lib.rs index bc725882a2..254c27444a 100644 --- a/contracts/examples/multisig/wasm-multisig-full/src/lib.rs +++ b/contracts/examples/multisig/wasm-multisig-full/src/lib.rs @@ -8,7 +8,7 @@ // Upgrade: 1 // Endpoints: 28 // Async Callback: 1 -// Total number of exported functions: 30 +// Total number of exported functions: 31 #![no_std] #![allow(internal_features)] diff --git a/contracts/examples/multisig/wasm/src/lib.rs b/contracts/examples/multisig/wasm/src/lib.rs index 553df1cde9..ab19ce2ad3 100644 --- a/contracts/examples/multisig/wasm/src/lib.rs +++ b/contracts/examples/multisig/wasm/src/lib.rs @@ -8,7 +8,7 @@ // Upgrade: 1 // Endpoints: 20 // Async Callback: 1 -// Total number of exported functions: 22 +// Total number of exported functions: 23 #![no_std] #![allow(internal_features)] diff --git a/contracts/examples/ping-pong-egld/wasm/src/lib.rs b/contracts/examples/ping-pong-egld/wasm/src/lib.rs index 32ace34885..b3fb0e62cb 100644 --- a/contracts/examples/ping-pong-egld/wasm/src/lib.rs +++ b/contracts/examples/ping-pong-egld/wasm/src/lib.rs @@ -8,7 +8,7 @@ // Upgrade: 1 // Endpoints: 10 // Async Callback (empty): 1 -// Total number of exported functions: 12 +// Total number of exported functions: 13 #![no_std] #![allow(internal_features)] diff --git a/contracts/feature-tests/abi-tester/wasm/src/lib.rs b/contracts/feature-tests/abi-tester/wasm/src/lib.rs index e38197e707..b8183ee1af 100644 --- a/contracts/feature-tests/abi-tester/wasm/src/lib.rs +++ b/contracts/feature-tests/abi-tester/wasm/src/lib.rs @@ -8,7 +8,7 @@ // Upgrade: 1 // Endpoints: 27 // Async Callback (empty): 1 -// Total number of exported functions: 29 +// Total number of exported functions: 30 #![no_std] #![allow(internal_features)] diff --git a/contracts/feature-tests/composability/forwarder-legacy/wasm/Cargo.toml b/contracts/feature-tests/composability/forwarder-legacy/wasm/Cargo.toml new file mode 100644 index 0000000000..58f24599a1 --- /dev/null +++ b/contracts/feature-tests/composability/forwarder-legacy/wasm/Cargo.toml @@ -0,0 +1,32 @@ +# Code generated by the multiversx-sc build system. DO NOT EDIT. + +# ########################################## +# ############## AUTO-GENERATED ############# +# ########################################## + +[package] +name = "forwarder-legacy-wasm" +version = "0.0.0" +edition = "2021" +publish = false + +[lib] +crate-type = ["cdylib"] + +[profile.release] +codegen-units = 1 +opt-level = "z" +lto = true +debug = false +panic = "abort" +overflow-checks = false + +[dependencies.forwarder-legacy] +path = ".." + +[dependencies.multiversx-sc-wasm-adapter] +version = "0.49.0-alpha.3" +path = "../../../../../framework/wasm-adapter" + +[workspace] +members = ["."] diff --git a/contracts/feature-tests/composability/forwarder-legacy/wasm/src/lib.rs b/contracts/feature-tests/composability/forwarder-legacy/wasm/src/lib.rs new file mode 100644 index 0000000000..180b626b66 --- /dev/null +++ b/contracts/feature-tests/composability/forwarder-legacy/wasm/src/lib.rs @@ -0,0 +1,94 @@ +// Code generated by the multiversx-sc build system. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +// Init: 1 +// Endpoints: 68 +// Async Callback: 1 +// Total number of exported functions: 70 + +#![no_std] +#![allow(internal_features)] +#![feature(lang_items)] + +multiversx_sc_wasm_adapter::allocator!(); +multiversx_sc_wasm_adapter::panic_handler!(); + +multiversx_sc_wasm_adapter::endpoints! { + forwarder_legacy + ( + init => init + send_egld => send_egld + echo_arguments_sync => echo_arguments_sync + echo_arguments_sync_twice => echo_arguments_sync_twice + forward_sync_accept_funds => forward_sync_accept_funds + forward_sync_accept_funds_with_fees => forward_sync_accept_funds_with_fees + forward_sync_accept_funds_then_read => forward_sync_accept_funds_then_read + forward_sync_retrieve_funds => forward_sync_retrieve_funds + forward_sync_retrieve_funds_with_accept_func => forward_sync_retrieve_funds_with_accept_func + accept_funds_func => accept_funds_func + forward_sync_accept_funds_multi_transfer => forward_sync_accept_funds_multi_transfer + echo_args_async => echo_args_async + forward_async_accept_funds => forward_async_accept_funds + forward_async_accept_funds_half_payment => forward_async_accept_funds_half_payment + forward_async_accept_funds_with_fees => forward_async_accept_funds_with_fees + forward_async_retrieve_funds => forward_async_retrieve_funds + send_funds_twice => send_funds_twice + send_async_accept_multi_transfer => send_async_accept_multi_transfer + callback_data => callback_data + callback_data_at_index => callback_data_at_index + clear_callback_data => clear_callback_data + forward_transf_exec_accept_funds => forward_transf_exec_accept_funds + forward_transf_exec_accept_single_esdt => forward_transf_exec_accept_single_esdt + forward_transf_execu_accept_funds_with_fees => forward_transf_execu_accept_funds_with_fees + forward_transf_exec_accept_funds_twice => forward_transf_exec_accept_funds_twice + forward_transf_exec_accept_funds_return_values => forward_transf_exec_accept_funds_return_values + transf_exec_multi_accept_funds => transf_exec_multi_accept_funds + transf_exec_multi_accept_funds_v2 => transf_exec_multi_accept_funds_v2 + forward_transf_exec_reject_funds_multi_transfer => forward_transf_exec_reject_funds_multi_transfer + transf_exec_multi_reject_funds => transf_exec_multi_reject_funds + changeOwnerAddress => change_owner + deploy_contract => deploy_contract + deploy_two_contracts => deploy_two_contracts + deploy_vault_from_source => deploy_vault_from_source + upgradeVault => upgrade_vault + upgrade_vault_from_source => upgrade_vault_from_source + getFungibleEsdtBalance => get_fungible_esdt_balance + getCurrentNftNonce => get_current_nft_nonce + send_esdt => send_esdt + send_esdt_with_fees => send_esdt_with_fees + send_esdt_twice => send_esdt_twice + send_esdt_direct_multi_transfer => send_esdt_direct_multi_transfer + issue_fungible_token => issue_fungible_token + local_mint => local_mint + local_burn => local_burn + get_esdt_local_roles => get_esdt_local_roles + get_esdt_token_data => get_esdt_token_data + is_esdt_frozen => is_esdt_frozen + is_esdt_paused => is_esdt_paused + is_esdt_limited_transfer => is_esdt_limited_transfer + validate_token_identifier => validate_token_identifier + sft_issue => sft_issue + get_nft_balance => get_nft_balance + buy_nft => buy_nft + nft_issue => nft_issue + nft_create => nft_create + nft_create_compact => nft_create_compact + nft_add_uris => nft_add_uris + nft_update_attributes => nft_update_attributes + nft_decode_complex_attributes => nft_decode_complex_attributes + nft_add_quantity => nft_add_quantity + nft_burn => nft_burn + transfer_nft_via_async_call => transfer_nft_via_async_call + transfer_nft_and_execute => transfer_nft_and_execute + create_and_send => create_and_send + setLocalRoles => set_local_roles + unsetLocalRoles => unset_local_roles + lastIssuedToken => last_issued_token + lastErrorMessage => last_error_message + ) +} + +multiversx_sc_wasm_adapter::async_callback! { forwarder_legacy } diff --git a/contracts/feature-tests/composability/forwarder-raw/wasm-forwarder-raw-init-async-call/src/lib.rs b/contracts/feature-tests/composability/forwarder-raw/wasm-forwarder-raw-init-async-call/src/lib.rs index c81e3182c8..cd1297b69f 100644 --- a/contracts/feature-tests/composability/forwarder-raw/wasm-forwarder-raw-init-async-call/src/lib.rs +++ b/contracts/feature-tests/composability/forwarder-raw/wasm-forwarder-raw-init-async-call/src/lib.rs @@ -8,7 +8,7 @@ // Upgrade: 1 // Endpoints: 0 // Async Callback: 1 -// Total number of exported functions: 2 +// Total number of exported functions: 3 #![no_std] #![allow(internal_features)] diff --git a/contracts/feature-tests/composability/proxy-test-second/wasm/src/lib.rs b/contracts/feature-tests/composability/proxy-test-second/wasm/src/lib.rs index bf6cc294c2..d920e6b80c 100644 --- a/contracts/feature-tests/composability/proxy-test-second/wasm/src/lib.rs +++ b/contracts/feature-tests/composability/proxy-test-second/wasm/src/lib.rs @@ -8,7 +8,7 @@ // Upgrade: 1 // Endpoints: 3 // Async Callback (empty): 1 -// Total number of exported functions: 5 +// Total number of exported functions: 6 #![no_std] #![allow(internal_features)] diff --git a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/src/lib.rs b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/src/lib.rs index 772ffc92ba..1592f8eec6 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/src/lib.rs +++ b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/src/lib.rs @@ -7,7 +7,7 @@ // Upgrade: 1 // Endpoints: 0 // Async Callback (empty): 1 -// Total number of exported functions: 1 +// Total number of exported functions: 2 #![no_std] #![allow(internal_features)] diff --git a/contracts/feature-tests/composability/vault/wasm/src/lib.rs b/contracts/feature-tests/composability/vault/wasm/src/lib.rs index 0c5cd48e03..30a7fadf8b 100644 --- a/contracts/feature-tests/composability/vault/wasm/src/lib.rs +++ b/contracts/feature-tests/composability/vault/wasm/src/lib.rs @@ -8,7 +8,7 @@ // Upgrade: 1 // Endpoints: 15 // Async Callback (empty): 1 -// Total number of exported functions: 17 +// Total number of exported functions: 18 #![no_std] #![allow(internal_features)] diff --git a/contracts/feature-tests/exchange-features/wasm/src/lib.rs b/contracts/feature-tests/exchange-features/wasm/src/lib.rs index b0842b89d6..944349b256 100644 --- a/contracts/feature-tests/exchange-features/wasm/src/lib.rs +++ b/contracts/feature-tests/exchange-features/wasm/src/lib.rs @@ -5,7 +5,8 @@ //////////////////////////////////////////////////// // Init: 1 -// Endpoints: 3 +// Upgrade: 1 +// Endpoints: 2 // Async Callback (empty): 1 // Total number of exported functions: 5 diff --git a/contracts/feature-tests/scenario-tester/wasm/src/lib.rs b/contracts/feature-tests/scenario-tester/wasm/src/lib.rs index e4a29325bf..ae1ba48ffd 100644 --- a/contracts/feature-tests/scenario-tester/wasm/src/lib.rs +++ b/contracts/feature-tests/scenario-tester/wasm/src/lib.rs @@ -8,7 +8,7 @@ // Upgrade: 1 // Endpoints: 2 // Async Callback (empty): 1 -// Total number of exported functions: 4 +// Total number of exported functions: 5 #![no_std] #![allow(internal_features)] diff --git a/framework/meta/src/cmd/contract/sc_config/wasm_crate_gen.rs b/framework/meta/src/cmd/contract/sc_config/wasm_crate_gen.rs index e4d0230490..4117cc24f8 100644 --- a/framework/meta/src/cmd/contract/sc_config/wasm_crate_gen.rs +++ b/framework/meta/src/cmd/contract/sc_config/wasm_crate_gen.rs @@ -18,6 +18,7 @@ const PREFIX_AUTO_GENERATED: &str = "; const NUM_INIT: usize = 1; +const NUM_UPGRADE: usize = 1; const NUM_ASYNC_CB: usize = 1; const VER_1_71: &str = "1.71.0-nightly"; @@ -117,7 +118,8 @@ impl ContractVariant { total += NUM_INIT; } if !self.abi.upgrade_constructors.is_empty() { - write_stat_comment(wasm_lib_file, "Upgrade:", NUM_INIT); + write_stat_comment(wasm_lib_file, "Upgrade:", NUM_UPGRADE); + total += NUM_UPGRADE; } write_stat_comment(wasm_lib_file, "Endpoints:", self.abi.endpoints.len()); From e6449ff9fa5a3f8a2203d9be0a2e0dc8ebec3685 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 17 Apr 2024 09:48:29 +0300 Subject: [PATCH 349/461] gitignore tweak --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 7c530277be..8295450d89 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ # The root Cargo.lock is kept for dependabot. contracts/**/Cargo.lock !contracts/**/wasm*/Cargo.lock +contracts/**/output*/ data/**/Cargo.lock framework/**/Cargo.lock sdk/**/Cargo.lock From 96e5f0bf47ae49f4369c7efaa013d8d62f26fd6d Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Wed, 17 Apr 2024 16:20:21 +0300 Subject: [PATCH 350/461] replace with new syntax --- .../tests/crowdfunding_esdt_blackbox_test.rs | 180 +++++++----------- 1 file changed, 74 insertions(+), 106 deletions(-) diff --git a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs index b821b070fb..735c2f48f9 100644 --- a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs +++ b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs @@ -1,4 +1,4 @@ -use crowdfunding_esdt::{crowdfunding_esdt_proxy, ProxyTrait as _, Status}; +use crowdfunding_esdt::crowdfunding_esdt_proxy; use multiversx_sc_scenario::imports::*; use num_bigint::BigUint; @@ -6,43 +6,33 @@ use num_bigint::BigUint; const CF_DEADLINE: u64 = 7 * 24 * 60 * 60; // 1 week in seconds const CF_TOKEN_ID: &[u8] = b"CROWD-123456"; const CF_TOKEN_ID_EXPR: &str = "str:CROWD-123456"; -const CROWDFUNDING_ESDT_PATH_EXPR: &str = "mxsc:output/crowdfunding-esdt.mxsc.json"; -const FIRST_USER_ADDRESS_EXPR: &str = "address:first-user"; const FIRST_USER_ADDRESS_EXPR_REPL: AddressExpr = AddressExpr("first-user"); -const OWNER_ADDRESS_EXPR: &str = "address:owner"; const OWNER_ADDRESS_EXPR_REPL: AddressExpr = AddressExpr("owner"); -const SECOND_USER_ADDRESS_EXPR: &str = "address:second-user"; const SECOND_USER_ADDRESS_EXPR_REPL: AddressExpr = AddressExpr("second-user"); const CODE_EXPR: MxscExpr = MxscExpr("output/crowdfunding-esdt.mxsc.json"); const SC_CROWDFUNDING_ESDT_EXPR: ScExpr = ScExpr("crowdfunding-esdt"); -type CrowdfundingESDTContract = ContractInfo>; - fn world() -> ScenarioWorld { + let contract_path: &str = "mxsc:output/crowdfunding-esdt.mxsc.json"; + let mut blockchain = ScenarioWorld::new(); blockchain.set_current_dir_from_workspace("contracts/examples/crowdfunding-esdt"); - blockchain.register_contract( - CROWDFUNDING_ESDT_PATH_EXPR, - crowdfunding_esdt::ContractBuilder, - ); + blockchain.register_contract(contract_path, crowdfunding_esdt::ContractBuilder); blockchain } struct CrowdfundingESDTTestState { world: ScenarioWorld, - crowdfunding_esdt_contract: CrowdfundingESDTContract, - first_user_address: Address, - second_user_address: Address, } impl CrowdfundingESDTTestState { fn new() -> Self { let mut world = world(); - // let owner_address = "address:owner"; + let owner_address: &str = "address:owner"; world - .account(OWNER_ADDRESS_EXPR) + .account(owner_address) .nonce(1) .account(FIRST_USER_ADDRESS_EXPR_REPL) .nonce(1) @@ -53,24 +43,12 @@ impl CrowdfundingESDTTestState { .esdt_balance(CF_TOKEN_ID_EXPR, "1000"); world.set_state_step(SetStateStep::new().new_address( - OWNER_ADDRESS_EXPR, + owner_address, 1, SC_CROWDFUNDING_ESDT_EXPR.eval_to_expr().as_str(), )); - let crowdfunding_esdt_contract = CrowdfundingESDTContract::new(SC_CROWDFUNDING_ESDT_EXPR); - - let first_user_address = - AddressValue::from(FIRST_USER_ADDRESS_EXPR_REPL.eval_to_expr().as_str()).to_address(); - let second_user_address = - AddressValue::from(SECOND_USER_ADDRESS_EXPR_REPL.eval_to_expr().as_str()).to_address(); - - Self { - world, - crowdfunding_esdt_contract, - first_user_address, - second_user_address, - } + Self { world } } fn deploy(&mut self) { @@ -102,53 +80,51 @@ impl CrowdfundingESDTTestState { .run(); } - fn check_deposit(&mut self, donor: Address, amount: u64) { - let value = world() + fn check_deposit(&mut self, donor: AddressExpr, amount: u64) { + let value = self + .world .query() .to(SC_CROWDFUNDING_ESDT_EXPR) .typed(crowdfunding_esdt_proxy::CrowdfundingProxy) - .deposit(&donor) + .deposit(donor.eval_to_array()) .returns(ReturnsResultConv::::new()) .run(); assert_eq!(value, amount.into()); } - fn check_status(&mut self, expected_value: Status) -> &mut Self { - self.world.sc_query( - ScQueryStep::new() - .call(self.crowdfunding_esdt_contract.status()) - .expect_value(expected_value), - ); + fn check_status(&mut self, expected_value: crowdfunding_esdt_proxy::Status) { + let status = self + .world + .query() + .to(SC_CROWDFUNDING_ESDT_EXPR) + .typed(crowdfunding_esdt_proxy::CrowdfundingProxy) + .status() + .returns(ReturnsResult) + .run(); - self + assert_eq!(status, expected_value); } - fn claim(&mut self, address: &str) -> &mut Self { - self.world.sc_call( - ScCallStep::new() - .from(address) - .call(self.crowdfunding_esdt_contract.claim()), - ); - - self + fn claim(&mut self, address: AddressExpr) { + self.world + .tx() + .from(address) + .to(SC_CROWDFUNDING_ESDT_EXPR) + .typed(crowdfunding_esdt_proxy::CrowdfundingProxy) + .claim() + .run(); } - fn check_esdt_balance(&mut self, address_expr: &str, balance_expr: &str) -> &mut Self { + fn check_esdt_balance(&mut self, address: AddressExpr, balance_expr: &str) { self.world - .check_state_step(CheckStateStep::new().put_account( - address_expr, - CheckAccount::new().esdt_balance(CF_TOKEN_ID_EXPR, balance_expr), - )); - - self + .check_state_account(address) + .esdt_balance(CF_TOKEN_ID_EXPR, balance_expr); } - fn set_block_timestamp(&mut self, block_timestamp_expr: u64) -> &mut Self { + fn set_block_timestamp(&mut self, block_timestamp_expr: u64) { self.world .set_state_step(SetStateStep::new().block_timestamp(block_timestamp_expr)); - - self } } @@ -158,7 +134,7 @@ fn test_fund() { state.deploy(); state.fund(FIRST_USER_ADDRESS_EXPR_REPL, 1_000u64); - state.check_deposit(state.first_user_address.clone(), 1_000u64); + state.check_deposit(FIRST_USER_ADDRESS_EXPR_REPL, 1_000u64); } #[test] @@ -166,7 +142,7 @@ fn test_status() { let mut state = CrowdfundingESDTTestState::new(); state.deploy(); - state.check_status(Status::FundingPeriod); + state.check_status(crowdfunding_esdt_proxy::Status::FundingPeriod); } #[test] @@ -174,22 +150,18 @@ fn test_sc_error() { let mut state = CrowdfundingESDTTestState::new(); state.deploy(); - state.world.sc_call( - ScCallStep::new() - .from(FIRST_USER_ADDRESS_EXPR) - .egld_value("1_000") - .call(state.crowdfunding_esdt_contract.fund()) - .expect(TxExpect::user_error("str:wrong token")), - ); - state.world.sc_query( - ScQueryStep::new() - .call( - state - .crowdfunding_esdt_contract - .deposit(&state.first_user_address), - ) - .expect(TxExpect::ok().result("0x")), - ); + state + .world + .tx() + .from(FIRST_USER_ADDRESS_EXPR_REPL) + .to(SC_CROWDFUNDING_ESDT_EXPR) + .typed(crowdfunding_esdt_proxy::CrowdfundingProxy) + .fund() + .egld(1000) + .with_result(ExpectError(4, "wrong token")) + .run(); + + state.check_deposit(FIRST_USER_ADDRESS_EXPR_REPL, 0); } #[test] @@ -198,37 +170,35 @@ fn test_successful_cf() { state.deploy(); // first user fund - state.fund(FIRST_USER_ADDRESS_EXPR_REPL, 1_000u64); //.eval_to_expr().as_str(), "1000"); - // state.check_deposit(state.first_user_address.clone(), 1_000); - // state.check_deposit(FIRST_USER_ADDRESS_EXPR_REPL, 1_000); + state.fund(FIRST_USER_ADDRESS_EXPR_REPL, 1_000u64); + state.check_deposit(FIRST_USER_ADDRESS_EXPR_REPL, 1_000); // second user fund state.fund(SECOND_USER_ADDRESS_EXPR_REPL, 1000); - // state.check_deposit(SECOND_USER_ADDRESS_EXPR_REPL, 1_000); - // state.check_deposit(state.second_user_address.clone(), 1_000); + state.check_deposit(SECOND_USER_ADDRESS_EXPR_REPL, 1_000); // set block timestamp after deadline state.set_block_timestamp(CF_DEADLINE + 1); // check status successful - state.check_status(Status::Successful); - - // user try claim - state.world.sc_call( - ScCallStep::new() - .from(FIRST_USER_ADDRESS_EXPR) - .call(state.crowdfunding_esdt_contract.claim()) - .expect(TxExpect::user_error( - "str:only owner can claim successful funding", - )), - ); + state.check_status(crowdfunding_esdt_proxy::Status::Successful); + + state + .world + .tx() + .from(FIRST_USER_ADDRESS_EXPR_REPL) + .to(SC_CROWDFUNDING_ESDT_EXPR) + .typed(crowdfunding_esdt_proxy::CrowdfundingProxy) + .claim() + .with_result(ExpectError(4, "only owner can claim successful funding")) + .run(); // owner claim - state.claim(OWNER_ADDRESS_EXPR); + state.claim(OWNER_ADDRESS_EXPR_REPL); - state.check_esdt_balance(OWNER_ADDRESS_EXPR, "2_000"); - state.check_esdt_balance(FIRST_USER_ADDRESS_EXPR, "0"); - state.check_esdt_balance(SECOND_USER_ADDRESS_EXPR, "0"); + state.check_esdt_balance(OWNER_ADDRESS_EXPR_REPL, "2_000"); + state.check_esdt_balance(FIRST_USER_ADDRESS_EXPR_REPL, "0"); + state.check_esdt_balance(SECOND_USER_ADDRESS_EXPR_REPL, "0"); } #[test] @@ -241,30 +211,28 @@ fn test_failed_cf() { FIRST_USER_ADDRESS_EXPR_REPL, //.eval_to_expr().as_str() 300, ); - // state.check_deposit(FIRST_USER_ADDRESS_EXPR_REPL, 300u64); - // state.check_deposit(state.first_user_address.clone(), 300u64); + state.check_deposit(FIRST_USER_ADDRESS_EXPR_REPL, 300u64); // second user fund state.fund( SECOND_USER_ADDRESS_EXPR_REPL, //.eval_to_expr().as_str() 600, ); - // state.check_deposit(SECOND_USER_ADDRESS_EXPR_REPL, 600u64); - // state.check_deposit(state.second_user_address.clone(), 600u64); + state.check_deposit(SECOND_USER_ADDRESS_EXPR_REPL, 600u64); // set block timestamp after deadline state.set_block_timestamp(CF_DEADLINE + 1); // check status failed - state.check_status(Status::Failed); + state.check_status(crowdfunding_esdt_proxy::Status::Failed); // first user claim - state.claim(FIRST_USER_ADDRESS_EXPR); + state.claim(FIRST_USER_ADDRESS_EXPR_REPL); // second user claim - state.claim(SECOND_USER_ADDRESS_EXPR); + state.claim(SECOND_USER_ADDRESS_EXPR_REPL); - state.check_esdt_balance(OWNER_ADDRESS_EXPR, "0"); - state.check_esdt_balance(FIRST_USER_ADDRESS_EXPR, "1_000"); - state.check_esdt_balance(SECOND_USER_ADDRESS_EXPR, "1_000"); + state.check_esdt_balance(OWNER_ADDRESS_EXPR_REPL, "0"); + state.check_esdt_balance(FIRST_USER_ADDRESS_EXPR_REPL, "1_000"); + state.check_esdt_balance(SECOND_USER_ADDRESS_EXPR_REPL, "1_000"); } From f0bf082830b02a3455c66d1bb9715559fa263373 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Wed, 17 Apr 2024 16:44:26 +0300 Subject: [PATCH 351/461] reaname const --- .../tests/crowdfunding_esdt_blackbox_test.rs | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs index 735c2f48f9..cc4235704c 100644 --- a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs +++ b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs @@ -6,9 +6,9 @@ use num_bigint::BigUint; const CF_DEADLINE: u64 = 7 * 24 * 60 * 60; // 1 week in seconds const CF_TOKEN_ID: &[u8] = b"CROWD-123456"; const CF_TOKEN_ID_EXPR: &str = "str:CROWD-123456"; -const FIRST_USER_ADDRESS_EXPR_REPL: AddressExpr = AddressExpr("first-user"); -const OWNER_ADDRESS_EXPR_REPL: AddressExpr = AddressExpr("owner"); -const SECOND_USER_ADDRESS_EXPR_REPL: AddressExpr = AddressExpr("second-user"); +const FIRST_USER_ADDRESS: AddressExpr = AddressExpr("first-user"); +const OWNER_ADDRESS: AddressExpr = AddressExpr("owner"); +const SECOND_USER_ADDRESS: AddressExpr = AddressExpr("second-user"); const CODE_EXPR: MxscExpr = MxscExpr("output/crowdfunding-esdt.mxsc.json"); const SC_CROWDFUNDING_ESDT_EXPR: ScExpr = ScExpr("crowdfunding-esdt"); @@ -34,11 +34,11 @@ impl CrowdfundingESDTTestState { world .account(owner_address) .nonce(1) - .account(FIRST_USER_ADDRESS_EXPR_REPL) + .account(FIRST_USER_ADDRESS) .nonce(1) .balance("1000") .esdt_balance(CF_TOKEN_ID_EXPR, "1000") - .account(SECOND_USER_ADDRESS_EXPR_REPL) + .account(SECOND_USER_ADDRESS) .nonce(1) .esdt_balance(CF_TOKEN_ID_EXPR, "1000"); @@ -54,7 +54,7 @@ impl CrowdfundingESDTTestState { fn deploy(&mut self) { self.world .tx() - .from(OWNER_ADDRESS_EXPR_REPL) + .from(OWNER_ADDRESS) .typed(crowdfunding_esdt_proxy::CrowdfundingProxy) .init( 2_000u32, @@ -133,8 +133,8 @@ fn test_fund() { let mut state = CrowdfundingESDTTestState::new(); state.deploy(); - state.fund(FIRST_USER_ADDRESS_EXPR_REPL, 1_000u64); - state.check_deposit(FIRST_USER_ADDRESS_EXPR_REPL, 1_000u64); + state.fund(FIRST_USER_ADDRESS, 1_000u64); + state.check_deposit(FIRST_USER_ADDRESS, 1_000u64); } #[test] @@ -153,7 +153,7 @@ fn test_sc_error() { state .world .tx() - .from(FIRST_USER_ADDRESS_EXPR_REPL) + .from(FIRST_USER_ADDRESS) .to(SC_CROWDFUNDING_ESDT_EXPR) .typed(crowdfunding_esdt_proxy::CrowdfundingProxy) .fund() @@ -161,7 +161,7 @@ fn test_sc_error() { .with_result(ExpectError(4, "wrong token")) .run(); - state.check_deposit(FIRST_USER_ADDRESS_EXPR_REPL, 0); + state.check_deposit(FIRST_USER_ADDRESS, 0); } #[test] @@ -170,12 +170,12 @@ fn test_successful_cf() { state.deploy(); // first user fund - state.fund(FIRST_USER_ADDRESS_EXPR_REPL, 1_000u64); - state.check_deposit(FIRST_USER_ADDRESS_EXPR_REPL, 1_000); + state.fund(FIRST_USER_ADDRESS, 1_000u64); + state.check_deposit(FIRST_USER_ADDRESS, 1_000); // second user fund - state.fund(SECOND_USER_ADDRESS_EXPR_REPL, 1000); - state.check_deposit(SECOND_USER_ADDRESS_EXPR_REPL, 1_000); + state.fund(SECOND_USER_ADDRESS, 1000); + state.check_deposit(SECOND_USER_ADDRESS, 1_000); // set block timestamp after deadline state.set_block_timestamp(CF_DEADLINE + 1); @@ -186,7 +186,7 @@ fn test_successful_cf() { state .world .tx() - .from(FIRST_USER_ADDRESS_EXPR_REPL) + .from(FIRST_USER_ADDRESS) .to(SC_CROWDFUNDING_ESDT_EXPR) .typed(crowdfunding_esdt_proxy::CrowdfundingProxy) .claim() @@ -194,11 +194,11 @@ fn test_successful_cf() { .run(); // owner claim - state.claim(OWNER_ADDRESS_EXPR_REPL); + state.claim(OWNER_ADDRESS); - state.check_esdt_balance(OWNER_ADDRESS_EXPR_REPL, "2_000"); - state.check_esdt_balance(FIRST_USER_ADDRESS_EXPR_REPL, "0"); - state.check_esdt_balance(SECOND_USER_ADDRESS_EXPR_REPL, "0"); + state.check_esdt_balance(OWNER_ADDRESS, "2_000"); + state.check_esdt_balance(FIRST_USER_ADDRESS, "0"); + state.check_esdt_balance(SECOND_USER_ADDRESS, "0"); } #[test] @@ -208,17 +208,17 @@ fn test_failed_cf() { // first user fund state.fund( - FIRST_USER_ADDRESS_EXPR_REPL, //.eval_to_expr().as_str() + FIRST_USER_ADDRESS, //.eval_to_expr().as_str() 300, ); - state.check_deposit(FIRST_USER_ADDRESS_EXPR_REPL, 300u64); + state.check_deposit(FIRST_USER_ADDRESS, 300u64); // second user fund state.fund( - SECOND_USER_ADDRESS_EXPR_REPL, //.eval_to_expr().as_str() + SECOND_USER_ADDRESS, //.eval_to_expr().as_str() 600, ); - state.check_deposit(SECOND_USER_ADDRESS_EXPR_REPL, 600u64); + state.check_deposit(SECOND_USER_ADDRESS, 600u64); // set block timestamp after deadline state.set_block_timestamp(CF_DEADLINE + 1); @@ -227,12 +227,12 @@ fn test_failed_cf() { state.check_status(crowdfunding_esdt_proxy::Status::Failed); // first user claim - state.claim(FIRST_USER_ADDRESS_EXPR_REPL); + state.claim(FIRST_USER_ADDRESS); // second user claim - state.claim(SECOND_USER_ADDRESS_EXPR_REPL); + state.claim(SECOND_USER_ADDRESS); - state.check_esdt_balance(OWNER_ADDRESS_EXPR_REPL, "0"); - state.check_esdt_balance(FIRST_USER_ADDRESS_EXPR_REPL, "1_000"); - state.check_esdt_balance(SECOND_USER_ADDRESS_EXPR_REPL, "1_000"); + state.check_esdt_balance(OWNER_ADDRESS, "0"); + state.check_esdt_balance(FIRST_USER_ADDRESS, "1_000"); + state.check_esdt_balance(SECOND_USER_ADDRESS, "1_000"); } From 0330c4ff7ce73772a134dec81b2f8c647c95db47 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 17 Apr 2024 17:34:05 +0300 Subject: [PATCH 352/461] unified syntax - expect value --- .../adder/tests/adder_blackbox_test.rs | 33 ++++++++------- .../src/types/interaction/expr/sc_expr.rs | 16 ++++++-- .../src/facade/expr/bech32_address.rs | 4 ++ .../scenario/src/facade/result_handlers.rs | 2 + .../facade/result_handlers/expect_value.rs | 40 +++++++++++++++++++ .../src/scenario/model/value/address_value.rs | 20 +++++++++- 6 files changed, 94 insertions(+), 21 deletions(-) create mode 100644 framework/scenario/src/facade/result_handlers/expect_value.rs diff --git a/contracts/examples/adder/tests/adder_blackbox_test.rs b/contracts/examples/adder/tests/adder_blackbox_test.rs index e52c8c3ddb..1dafca181a 100644 --- a/contracts/examples/adder/tests/adder_blackbox_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_test.rs @@ -1,5 +1,4 @@ use multiversx_sc_scenario::imports::*; -use num_bigint::BigUint; use adder::*; @@ -20,16 +19,12 @@ fn world() -> ScenarioWorld { #[test] fn adder_blackbox() { let mut world = world(); - let owner_address = "address:owner"; - let adder_contract = ContractInfo::>::new("sc:adder"); world.start_trace(); - world.set_state_step( - SetStateStep::new() - .put_account(owner_address, Account::new().nonce(1)) - .new_address(owner_address, 1, "sc:adder"), - ); + world.account(OWNER).nonce(1); + + world.set_state_step(SetStateStep::new().new_address(OWNER, 1, SC_ADDER)); let new_address = world .tx() @@ -40,16 +35,15 @@ fn adder_blackbox() { .returns(ReturnsNewAddress) .run(); - assert_eq!(new_address, adder_contract.to_address()); + assert_eq!(new_address, SC_ADDER.to_address()); - let value = world + world .query() .to(SC_ADDER) .typed(adder_proxy::AdderProxy) .sum() - .returns(ReturnsResultConv::::new()) + .returns(ExpectValue(5u32)) .run(); - assert_eq!(value, BigUint::from(5u32)); world .tx() @@ -59,13 +53,18 @@ fn adder_blackbox() { .add(1u32) .run(); + world + .query() + .to(SC_ADDER) + .typed(adder_proxy::AdderProxy) + .sum() + .returns(ExpectValue(6u32)) + .run(); + world.check_state_step( CheckStateStep::new() - .put_account(owner_address, CheckAccount::new()) - .put_account( - &adder_contract, - CheckAccount::new().check_storage("str:sum", "6"), - ), + .put_account(OWNER, CheckAccount::new()) + .put_account(SC_ADDER, CheckAccount::new().check_storage("str:sum", "6")), ); world.write_scenario_trace("trace1.scen.json"); diff --git a/framework/base/src/types/interaction/expr/sc_expr.rs b/framework/base/src/types/interaction/expr/sc_expr.rs index c84f8df02f..f51ca88051 100644 --- a/framework/base/src/types/interaction/expr/sc_expr.rs +++ b/framework/base/src/types/interaction/expr/sc_expr.rs @@ -1,8 +1,11 @@ use core::ptr; -use crate::types::{ - AnnotatedValue, ManagedAddress, ManagedBuffer, TxEnv, TxFrom, TxFromSpecified, TxTo, - TxToSpecified, +use crate::{ + proxy_imports::Address, + types::{ + AnnotatedValue, ManagedAddress, ManagedBuffer, TxEnv, TxFrom, TxFromSpecified, TxTo, + TxToSpecified, + }, }; const SC_PREFIX: &str = "sc:"; @@ -28,6 +31,13 @@ where } } +impl<'a> ScExpr<'a> { + pub fn to_address(&self) -> Address { + let expr: [u8; 32] = self.eval_to_array(); + expr.into() + } +} + impl<'a, Env> TxFrom for ScExpr<'a> where Env: TxEnv, diff --git a/framework/scenario/src/facade/expr/bech32_address.rs b/framework/scenario/src/facade/expr/bech32_address.rs index 9b7291ad16..abc9d00cff 100644 --- a/framework/scenario/src/facade/expr/bech32_address.rs +++ b/framework/scenario/src/facade/expr/bech32_address.rs @@ -56,6 +56,10 @@ impl Bech32Address { self.bech32.to_owned() } + pub fn to_hex(&self) -> String { + hex::encode(&self.address) + } + pub fn as_address(&self) -> &Address { &self.address } diff --git a/framework/scenario/src/facade/result_handlers.rs b/framework/scenario/src/facade/result_handlers.rs index 24709626ea..1893647b45 100644 --- a/framework/scenario/src/facade/result_handlers.rs +++ b/framework/scenario/src/facade/result_handlers.rs @@ -1,6 +1,7 @@ mod expect_error; mod expect_message; mod expect_status; +mod expect_value; mod returns_message; mod returns_new_bech32_address; mod returns_new_token_identifier; @@ -10,6 +11,7 @@ mod with_tx_raw_response; pub use expect_error::ExpectError; pub use expect_message::ExpectMessage; pub use expect_status::ExpectStatus; +pub use expect_value::ExpectValue; pub use returns_message::ReturnsMessage; pub use returns_new_bech32_address::ReturnsNewBech32Address; pub use returns_new_token_identifier::ReturnsNewTokenIdentifier; diff --git a/framework/scenario/src/facade/result_handlers/expect_value.rs b/framework/scenario/src/facade/result_handlers/expect_value.rs new file mode 100644 index 0000000000..05ebe0f79f --- /dev/null +++ b/framework/scenario/src/facade/result_handlers/expect_value.rs @@ -0,0 +1,40 @@ +use multiversx_sc::{ + codec::{CodecFrom, TopEncodeMulti}, + types::{RHListItem, RHListItemExec, TxEnv}, +}; + +use crate::scenario_model::{BytesValue, CheckValue, TxExpect, TxResponse}; + +/// Verifies that transaction result matches the given value. +/// +/// Can only be used in tests and interactors, not available in contracts. +pub struct ExpectValue(pub T); + +impl RHListItem for ExpectValue +where + Env: TxEnv, + T: TopEncodeMulti, + Original: CodecFrom, +{ + type Returns = (); +} + +impl RHListItemExec for ExpectValue +where + Env: TxEnv, + T: TopEncodeMulti, + Original: CodecFrom, +{ + fn item_tx_expect(&self, mut prev: TxExpect) -> TxExpect { + let mut encoded = Vec::>::new(); + self.0.multi_encode(&mut encoded).expect("encoding error"); + let out_values = encoded + .into_iter() + .map(|value| CheckValue::Equal(BytesValue::from(value))) + .collect(); + prev.out = CheckValue::Equal(out_values); + prev + } + + fn item_process_result(self, _: &TxResponse) -> Self::Returns {} +} diff --git a/framework/scenario/src/scenario/model/value/address_value.rs b/framework/scenario/src/scenario/model/value/address_value.rs index 640451a63c..1315a4fbd5 100644 --- a/framework/scenario/src/scenario/model/value/address_value.rs +++ b/framework/scenario/src/scenario/model/value/address_value.rs @@ -1,6 +1,6 @@ use std::fmt; -use crate::multiversx_sc::types::Address; +use crate::multiversx_sc::types::{Address, AddressExpr, ScExpr}; use crate::{ facade::expr::Bech32Address, @@ -133,3 +133,21 @@ impl From<&str> for AddressValue { AddressValue::interpret_from(from, &InterpreterContext::default()) } } + +impl From for AddressValue { + fn from(from: AddressExpr) -> Self { + AddressValue { + value: from.eval_to_array().into(), + original: ValueSubTree::Str(from.eval_to_expr()), + } + } +} + +impl From> for AddressValue { + fn from(from: ScExpr) -> Self { + AddressValue { + value: from.eval_to_array().into(), + original: ValueSubTree::Str(from.eval_to_expr()), + } + } +} From b4145b07015bcbd65bf3734bcf611f82eadc65f1 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 17 Apr 2024 18:01:26 +0300 Subject: [PATCH 353/461] build fix --- framework/base/src/types/interaction/expr/sc_expr.rs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/framework/base/src/types/interaction/expr/sc_expr.rs b/framework/base/src/types/interaction/expr/sc_expr.rs index f51ca88051..aa57b1af30 100644 --- a/framework/base/src/types/interaction/expr/sc_expr.rs +++ b/framework/base/src/types/interaction/expr/sc_expr.rs @@ -1,11 +1,8 @@ use core::ptr; -use crate::{ - proxy_imports::Address, - types::{ - AnnotatedValue, ManagedAddress, ManagedBuffer, TxEnv, TxFrom, TxFromSpecified, TxTo, - TxToSpecified, - }, +use crate::types::{ + heap::Address, AnnotatedValue, ManagedAddress, ManagedBuffer, TxEnv, TxFrom, TxFromSpecified, + TxTo, TxToSpecified, }; const SC_PREFIX: &str = "sc:"; From 43edef0cb8a36f1d59d408b155b5c9f666c70bb5 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 17 Apr 2024 17:44:12 +0300 Subject: [PATCH 354/461] scenario tx file rename --- framework/scenario/src/facade/world_tx.rs | 14 +++++++------- ...{scenario_env_exec.rs => scenario_exec_call.rs} | 0 ...nario_env_deploy.rs => scenario_exec_deploy.rs} | 0 ...cenario_env_query.rs => scenario_query_call.rs} | 0 .../{scenario_env.rs => scenario_tx_env.rs} | 0 5 files changed, 7 insertions(+), 7 deletions(-) rename framework/scenario/src/facade/world_tx/{scenario_env_exec.rs => scenario_exec_call.rs} (100%) rename framework/scenario/src/facade/world_tx/{scenario_env_deploy.rs => scenario_exec_deploy.rs} (100%) rename framework/scenario/src/facade/world_tx/{scenario_env_query.rs => scenario_query_call.rs} (100%) rename framework/scenario/src/facade/world_tx/{scenario_env.rs => scenario_tx_env.rs} (100%) diff --git a/framework/scenario/src/facade/world_tx.rs b/framework/scenario/src/facade/world_tx.rs index 2fa69c744e..005421c933 100644 --- a/framework/scenario/src/facade/world_tx.rs +++ b/framework/scenario/src/facade/world_tx.rs @@ -1,11 +1,11 @@ #![allow(unused)] // TEMP -mod scenario_env; -mod scenario_env_deploy; -mod scenario_env_exec; -mod scenario_env_query; +mod scenario_exec_call; +mod scenario_exec_deploy; +mod scenario_query_call; mod scenario_rh_impl; +mod scenario_tx_env; -pub use scenario_env::{ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun}; -pub use scenario_env_exec::ScenarioEnvExec; -pub use scenario_env_query::ScenarioEnvQuery; +pub use scenario_exec_call::ScenarioEnvExec; +pub use scenario_query_call::ScenarioEnvQuery; +pub use scenario_tx_env::{ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun}; diff --git a/framework/scenario/src/facade/world_tx/scenario_env_exec.rs b/framework/scenario/src/facade/world_tx/scenario_exec_call.rs similarity index 100% rename from framework/scenario/src/facade/world_tx/scenario_env_exec.rs rename to framework/scenario/src/facade/world_tx/scenario_exec_call.rs diff --git a/framework/scenario/src/facade/world_tx/scenario_env_deploy.rs b/framework/scenario/src/facade/world_tx/scenario_exec_deploy.rs similarity index 100% rename from framework/scenario/src/facade/world_tx/scenario_env_deploy.rs rename to framework/scenario/src/facade/world_tx/scenario_exec_deploy.rs diff --git a/framework/scenario/src/facade/world_tx/scenario_env_query.rs b/framework/scenario/src/facade/world_tx/scenario_query_call.rs similarity index 100% rename from framework/scenario/src/facade/world_tx/scenario_env_query.rs rename to framework/scenario/src/facade/world_tx/scenario_query_call.rs diff --git a/framework/scenario/src/facade/world_tx/scenario_env.rs b/framework/scenario/src/facade/world_tx/scenario_tx_env.rs similarity index 100% rename from framework/scenario/src/facade/world_tx/scenario_env.rs rename to framework/scenario/src/facade/world_tx/scenario_tx_env.rs From 02556f8a8b2b216ac3adfcb751690ac4d1587f72 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 17 Apr 2024 18:12:43 +0300 Subject: [PATCH 355/461] scenario exec - rename, reorg, cleanup --- framework/scenario/src/facade/world_tx.rs | 4 +- .../facade/world_tx/scenario_check_state.rs | 227 ++++++++++++++++ .../src/facade/world_tx/scenario_exec_call.rs | 243 +----------------- .../facade/world_tx/scenario_exec_deploy.rs | 14 +- .../facade/world_tx/scenario_query_call.rs | 231 +---------------- .../src/facade/world_tx/scenario_rh_impl.rs | 12 +- .../src/facade/world_tx/scenario_set_state.rs | 239 +++++++++++++++++ .../src/facade/world_tx/scenario_tx_env.rs | 8 +- 8 files changed, 485 insertions(+), 493 deletions(-) create mode 100644 framework/scenario/src/facade/world_tx/scenario_check_state.rs create mode 100644 framework/scenario/src/facade/world_tx/scenario_set_state.rs diff --git a/framework/scenario/src/facade/world_tx.rs b/framework/scenario/src/facade/world_tx.rs index 005421c933..a2d7373a42 100644 --- a/framework/scenario/src/facade/world_tx.rs +++ b/framework/scenario/src/facade/world_tx.rs @@ -1,9 +1,9 @@ -#![allow(unused)] // TEMP - +mod scenario_check_state; mod scenario_exec_call; mod scenario_exec_deploy; mod scenario_query_call; mod scenario_rh_impl; +mod scenario_set_state; mod scenario_tx_env; pub use scenario_exec_call::ScenarioEnvExec; diff --git a/framework/scenario/src/facade/world_tx/scenario_check_state.rs b/framework/scenario/src/facade/world_tx/scenario_check_state.rs new file mode 100644 index 0000000000..ab54d7411f --- /dev/null +++ b/framework/scenario/src/facade/world_tx/scenario_check_state.rs @@ -0,0 +1,227 @@ +use std::collections::{btree_map::Entry, BTreeMap}; + +use multiversx_chain_scenario_format::interpret_trait::{InterpretableFrom, InterpreterContext}; +use multiversx_sc::{codec::test_util::top_encode_to_vec_u8_or_panic, proxy_imports::TopEncode}; + +use crate::{ + scenario::ScenarioRunner, + scenario_model::{ + AddressKey, BigUintValue, BytesKey, BytesValue, CheckAccount, CheckEsdt, CheckEsdtData, + CheckEsdtInstances, CheckEsdtMap, CheckEsdtMapContents, CheckStateStep, CheckStorage, + CheckStorageDetails, CheckValue, U64Value, + }, + ScenarioWorld, +}; + +impl ScenarioWorld { + pub fn check_state_account(&mut self, address: A) -> CheckStateBuilder<'_> + where + AddressKey: From, + { + CheckStateBuilder::new(self, address.into()) + } +} + +pub struct CheckStateBuilder<'w> { + world: &'w mut ScenarioWorld, + check_state_step: CheckStateStep, + current_account: CheckAccount, + current_address: AddressKey, +} + +impl<'w> CheckStateBuilder<'w> { + pub(crate) fn new(world: &'w mut ScenarioWorld, address: AddressKey) -> CheckStateBuilder<'w> { + let mut builder = CheckStateBuilder { + world, + check_state_step: CheckStateStep::new(), + current_account: CheckAccount::new(), + current_address: AddressKey::default(), + }; + builder.reset_account(address); + builder + } + + /// Starts building of a new account. + pub fn check_state_account(mut self, address_expr: A) -> Self + where + AddressKey: From, + { + self.add_current_acount(); + self.reset_account(address_expr.into()); + self + } + + fn add_current_acount(&mut self) { + if let Entry::Vacant(entry) = self + .check_state_step + .accounts + .accounts + .entry(core::mem::take(&mut self.current_address)) + { + entry.insert(core::mem::take(&mut self.current_account)); + }; + } + + fn reset_account(&mut self, address: AddressKey) { + self.current_address = address; + self.current_account = CheckAccount::default(); + } + + /// Finished and sets all account in the blockchain mock. + fn commit_accounts(&mut self) { + self.add_current_acount(); + self.world.run_check_state_step(&self.check_state_step); + } + + /// Forces value drop and commit accounts. + pub fn commit(self) {} + + pub fn nonce(mut self, nonce: V) -> Self + where + U64Value: InterpretableFrom, + { + self.current_account.nonce = CheckValue::Equal(U64Value::interpret_from( + nonce, + &InterpreterContext::default(), + )); + self + } + + pub fn balance(mut self, balance_expr: V) -> Self + where + BigUintValue: InterpretableFrom, + { + self.current_account.balance = CheckValue::Equal(BigUintValue::interpret_from( + balance_expr, + &InterpreterContext::default(), + )); + self + } + + pub fn code(mut self, code_expr: V) -> Self + where + BytesValue: InterpretableFrom, + { + self.current_account.code = CheckValue::Equal(BytesValue::interpret_from( + code_expr, + &InterpreterContext::default(), + )); + self + } + + pub fn code_metadata(mut self, code_metadata_expr: V) -> Self + where + BytesValue: InterpretableFrom, + { + self.current_account.code_metadata = CheckValue::Equal(BytesValue::interpret_from( + code_metadata_expr, + &InterpreterContext::default(), + )); + self + } + + pub fn esdt_balance(mut self, token_id_expr: K, balance_expr: V) -> Self + where + BytesKey: From, + BigUintValue: From, + { + let token_id = BytesKey::from(token_id_expr); + let balance = BigUintValue::from(balance_expr); + + match &mut self.current_account.esdt { + CheckEsdtMap::Unspecified | CheckEsdtMap::Star => { + let mut new_esdt_map = BTreeMap::new(); + let _ = new_esdt_map.insert(token_id, CheckEsdt::Short(balance)); + + let new_check_esdt_map = CheckEsdtMapContents { + contents: new_esdt_map, + other_esdts_allowed: true, + }; + + self.current_account.esdt = CheckEsdtMap::Equal(new_check_esdt_map); + }, + CheckEsdtMap::Equal(check_esdt_map) => { + if check_esdt_map.contents.contains_key(&token_id) { + let prev_entry = check_esdt_map.contents.get_mut(&token_id).unwrap(); + match prev_entry { + CheckEsdt::Short(prev_balance_check) => *prev_balance_check = balance, + CheckEsdt::Full(prev_esdt_check) => match prev_esdt_check.instances { + CheckEsdtInstances::Star => todo!(), + CheckEsdtInstances::Equal(_) => todo!(), + }, + } + } + }, + } + + self + } + + pub fn esdt_nft_balance_and_attributes( + mut self, + token_id_expr: K, + nonce_expr: N, + balance_expr: V, + attributes_expr: Option, + ) -> Self + where + BytesKey: From, + U64Value: From, + BigUintValue: From, + T: TopEncode, + { + let token_id = BytesKey::from(token_id_expr); + + if let CheckEsdtMap::Unspecified = &self.current_account.esdt { + let mut check_esdt = CheckEsdt::Full(CheckEsdtData::default()); + + if let Some(attributes_expr) = attributes_expr { + check_esdt.add_balance_and_attributes_check( + nonce_expr, + balance_expr, + top_encode_to_vec_u8_or_panic(&attributes_expr), + ); + } else { + check_esdt.add_balance_and_attributes_check( + nonce_expr, + balance_expr, + Vec::::new(), + ); + } + + let mut new_esdt_map = BTreeMap::new(); + let _ = new_esdt_map.insert(token_id, check_esdt); + + let new_check_esdt_map = CheckEsdtMapContents { + contents: new_esdt_map, + other_esdts_allowed: true, + }; + + self.current_account.esdt = CheckEsdtMap::Equal(new_check_esdt_map); + } + + self + } + + pub fn check_storage(mut self, key: &str, value: &str) -> Self { + let mut details = match &self.current_account.storage { + CheckStorage::Star => CheckStorageDetails::default(), + CheckStorage::Equal(details) => details.clone(), + }; + details.storages.insert( + BytesKey::interpret_from(key, &InterpreterContext::default()), + CheckValue::Equal(BytesValue::interpret_from( + value, + &InterpreterContext::default(), + )), + ); + self.current_account.storage = CheckStorage::Equal(details); + self + } +} + +impl<'w> Drop for CheckStateBuilder<'w> { + fn drop(&mut self) { + self.commit_accounts(); + } +} diff --git a/framework/scenario/src/facade/world_tx/scenario_exec_call.rs b/framework/scenario/src/facade/world_tx/scenario_exec_call.rs index 5eef522784..e92e38087c 100644 --- a/framework/scenario/src/facade/world_tx/scenario_exec_call.rs +++ b/framework/scenario/src/facade/world_tx/scenario_exec_call.rs @@ -1,23 +1,15 @@ -use std::{collections::btree_map::Entry, ops::Add, path::PathBuf}; - -use multiversx_chain_scenario_format::serde_raw::ValueSubTree; use multiversx_sc::{ tuple_util::NestedTupleFlatten, types::{ - Address, AddressExpr, AnnotatedValue, Code, DeployCall, FunctionCall, ManagedAddress, - ManagedBuffer, RHListExec, Tx, TxBaseWithEnv, TxCodeSource, TxCodeSourceSpecified, - TxCodeValue, TxEnv, TxFromSpecified, TxGas, TxPayment, TxTo, TxToSpecified, + FunctionCall, ManagedAddress, ManagedBuffer, RHListExec, Tx, TxBaseWithEnv, TxEnv, + TxFromSpecified, TxGas, TxPayment, TxToSpecified, }, }; -use serde_json::map::OccupiedEntry; use crate::{ api::StaticApi, - scenario::{tx_to_step::TxToStep, ScenarioRunner}, - scenario_model::{ - Account, AddressKey, AddressValue, BigUintValue, BytesKey, BytesValue, Esdt, EsdtObject, - NewAddress, ScCallStep, ScDeployStep, SetStateStep, TxExpect, TxResponse, U64Value, - }, + scenario::tx_to_step::TxToStep, + scenario_model::{TxExpect, TxResponse}, ScenarioTxEnv, ScenarioTxRun, ScenarioWorld, }; @@ -99,231 +91,4 @@ impl ScenarioWorld { step_wrapper.process_result(); self } - - pub fn account(&mut self, address_expr: A) -> SetStateBuilder<'_> - where - AddressKey: From, - { - SetStateBuilder::new(self, address_expr.into()) - } -} - -pub struct SetStateBuilder<'w> { - world: &'w mut ScenarioWorld, - set_state_step: SetStateStep, - current_account: Account, - current_address: AddressKey, -} - -impl<'w> SetStateBuilder<'w> { - pub(crate) fn new(world: &'w mut ScenarioWorld, address: AddressKey) -> SetStateBuilder<'w> { - let mut builder = SetStateBuilder { - world, - set_state_step: SetStateStep::new(), - current_address: AddressKey::default(), - current_account: Account::new(), - }; - builder.reset_account(address); - builder - } - - fn add_current_acount(&mut self) { - if let Entry::Vacant(entry) = self - .set_state_step - .accounts - .entry(core::mem::take(&mut self.current_address)) - { - entry.insert(core::mem::take(&mut self.current_account)); - }; - } - - fn reset_account(&mut self, address: AddressKey) { - assert!( - !self - .world - .get_debugger_backend() - .vm_runner - .blockchain_mock - .state - .account_exists(&address.to_vm_address()), - "updating existing accounts currently not supported" - ); - - self.current_address = address; - self.current_account = Account::default(); - } - - /// Starts building of a new account. - pub fn account(mut self, address_expr: A) -> Self - where - AddressKey: From, - { - self.add_current_acount(); - self.reset_account(address_expr.into()); - self - } - - /// Finished and sets all account in the blockchain mock. - fn commit_accounts(&mut self) { - self.add_current_acount(); - self.world.run_set_state_step(&self.set_state_step); - } - - /// Forces value drop and commit accounts. - pub fn commit(self) {} - - pub fn nonce(mut self, nonce: V) -> Self - where - U64Value: From, - { - self.current_account.nonce = Some(U64Value::from(nonce)); - self - } - - pub fn balance(mut self, balance_expr: V) -> Self - where - BigUintValue: From, - { - self.current_account.balance = Some(BigUintValue::from(balance_expr)); - self - } - - pub fn esdt_balance(mut self, token_id_expr: K, balance_expr: V) -> Self - where - BytesKey: From, - BigUintValue: From, - { - let token_id = BytesKey::from(token_id_expr); - let esdt_data_ref = self.get_esdt_data_or_create(&token_id); - esdt_data_ref.set_balance(0u64, balance_expr); - - self - } - - pub fn esdt_nft_balance( - mut self, - token_id_expr: K, - nonce_expr: N, - balance_expr: V, - opt_attributes_expr: Option, - ) -> Self - where - N: Clone, - BytesKey: From, - U64Value: From, - BigUintValue: From, - BytesValue: From, - { - let token_id = BytesKey::from(token_id_expr); - - let esdt_obj_ref = self - .get_esdt_data_or_create(&token_id) - .get_mut_esdt_object(); - esdt_obj_ref.set_balance(nonce_expr.clone(), balance_expr); - - if let Some(attributes_expr) = opt_attributes_expr { - esdt_obj_ref.set_token_attributes(nonce_expr, attributes_expr); - } - - self - } - - #[allow(clippy::too_many_arguments)] - pub fn esdt_nft_all_properties( - mut self, - token_id_expr: K, - nonce_expr: N, - balance_expr: V, - opt_attributes_expr: Option, - royalties_expr: N, - creator_expr: Option, - hash_expr: Option, - uris_expr: Vec, - ) -> Self - where - BytesKey: From, - U64Value: From, - BigUintValue: From, - BytesValue: From, - { - let token_id = BytesKey::from(token_id_expr); - - let esdt_obj_ref = self - .get_esdt_data_or_create(&token_id) - .get_mut_esdt_object(); - - esdt_obj_ref.set_token_all_properties( - nonce_expr, - balance_expr, - opt_attributes_expr, - royalties_expr, - creator_expr, - hash_expr, - uris_expr, - ); - - self - } - - pub fn esdt_nft_last_nonce(mut self, token_id_expr: K, last_nonce_expr: N) -> Self - where - BytesKey: From, - U64Value: From, - { - let token_id = BytesKey::from(token_id_expr); - - let esdt_obj_ref = self - .get_esdt_data_or_create(&token_id) - .get_mut_esdt_object(); - esdt_obj_ref.set_last_nonce(last_nonce_expr); - - self - } - - // TODO: Find a better way to pass roles - pub fn esdt_roles(mut self, token_id_expr: K, roles: Vec) -> Self - where - BytesKey: From, - { - let token_id = BytesKey::from(token_id_expr); - - let esdt_obj_ref = self - .get_esdt_data_or_create(&token_id) - .get_mut_esdt_object(); - esdt_obj_ref.set_roles(roles); - - self - } - - fn get_esdt_data_or_create(&mut self, token_id: &BytesKey) -> &mut Esdt { - if !self.current_account.esdt.contains_key(token_id) { - self.current_account - .esdt - .insert(token_id.clone(), Esdt::Full(EsdtObject::default())); - } - - self.current_account.esdt.get_mut(token_id).unwrap() - } - - pub fn code(mut self, code_expr: V) -> Self - where - BytesValue: From, - { - self.current_account.code = Some(BytesValue::from(code_expr)); - self - } - - pub fn owner(mut self, owner_expr: V) -> Self - where - AddressValue: From, - { - self.current_account.owner = Some(AddressValue::from(owner_expr)); - self - } -} - -impl<'w> Drop for SetStateBuilder<'w> { - fn drop(&mut self) { - self.commit_accounts(); - } } diff --git a/framework/scenario/src/facade/world_tx/scenario_exec_deploy.rs b/framework/scenario/src/facade/world_tx/scenario_exec_deploy.rs index c218f06869..866d4f562f 100644 --- a/framework/scenario/src/facade/world_tx/scenario_exec_deploy.rs +++ b/framework/scenario/src/facade/world_tx/scenario_exec_deploy.rs @@ -1,20 +1,14 @@ -use std::path::PathBuf; - -use multiversx_chain_scenario_format::serde_raw::ValueSubTree; use multiversx_sc::{ tuple_util::NestedTupleFlatten, types::{ - AnnotatedValue, Code, DeployCall, FunctionCall, ManagedAddress, ManagedBuffer, RHListExec, - Tx, TxBaseWithEnv, TxCodeSource, TxCodeSourceSpecified, TxCodeValue, TxEnv, - TxFromSpecified, TxGas, TxPayment, TxToSpecified, + Code, DeployCall, RHListExec, Tx, TxBaseWithEnv, TxCodeValue, TxFromSpecified, TxGas, + TxPayment, }, }; use crate::{ - api::StaticApi, - scenario::tx_to_step::TxToStep, - scenario_model::{AddressValue, BytesValue, ScCallStep, ScDeployStep, TxResponse}, - ScenarioEnvExec, ScenarioTxEnv, ScenarioTxRun, ScenarioWorld, + scenario::tx_to_step::TxToStep, scenario_model::TxResponse, ScenarioEnvExec, ScenarioTxRun, + ScenarioWorld, }; use super::ScenarioTxEnvData; diff --git a/framework/scenario/src/facade/world_tx/scenario_query_call.rs b/framework/scenario/src/facade/world_tx/scenario_query_call.rs index 387ad0f444..dbcf3130f5 100644 --- a/framework/scenario/src/facade/world_tx/scenario_query_call.rs +++ b/framework/scenario/src/facade/world_tx/scenario_query_call.rs @@ -1,27 +1,15 @@ -use std::{ - collections::{btree_map::Entry, BTreeMap}, - path::PathBuf, -}; - -use multiversx_chain_scenario_format::interpret_trait::{InterpretableFrom, InterpreterContext}; use multiversx_sc::{ - codec::test_util::top_encode_to_vec_u8_or_panic, - proxy_imports::TopEncode, tuple_util::NestedTupleFlatten, types::{ - AnnotatedValue, FunctionCall, ManagedAddress, ManagedBuffer, RHListExec, Tx, TxBaseWithEnv, - TxEnv, TxFromSpecified, TxGas, TxPayment, TxToSpecified, + FunctionCall, ManagedAddress, ManagedBuffer, RHListExec, Tx, TxBaseWithEnv, TxEnv, + TxToSpecified, }, }; use crate::{ api::StaticApi, - scenario::{tx_to_step::TxToQueryStep, ScenarioRunner}, - scenario_model::{ - AddressKey, BigUintValue, BytesKey, BytesValue, CheckAccount, CheckEsdt, CheckEsdtData, - CheckEsdtInstances, CheckEsdtMap, CheckEsdtMapContents, CheckStateStep, CheckStorage, - CheckStorageDetails, CheckValue, TxExpect, TxResponse, U64Value, - }, + scenario::tx_to_step::TxToQueryStep, + scenario_model::{TxExpect, TxResponse}, ScenarioTxEnv, ScenarioTxEnvData, ScenarioTxRun, ScenarioWorld, }; @@ -93,215 +81,4 @@ impl ScenarioWorld { step_wrapper.process_result(); self } - - pub fn check_state_account(&mut self, address: A) -> CheckStateBuilder<'_> - where - AddressKey: From, - { - CheckStateBuilder::new(self, address.into()) - } -} - -pub struct CheckStateBuilder<'w> { - world: &'w mut ScenarioWorld, - check_state_step: CheckStateStep, - current_account: CheckAccount, - current_address: AddressKey, -} - -impl<'w> CheckStateBuilder<'w> { - pub(crate) fn new(world: &'w mut ScenarioWorld, address: AddressKey) -> CheckStateBuilder<'w> { - let mut builder = CheckStateBuilder { - world, - check_state_step: CheckStateStep::new(), - current_account: CheckAccount::new(), - current_address: AddressKey::default(), - }; - builder.reset_account(address); - builder - } - - /// Starts building of a new account. - pub fn check_state_account(mut self, address_expr: A) -> Self - where - AddressKey: From, - { - self.add_current_acount(); - self.reset_account(address_expr.into()); - self - } - - fn add_current_acount(&mut self) { - if let Entry::Vacant(entry) = self - .check_state_step - .accounts - .accounts - .entry(core::mem::take(&mut self.current_address)) - { - entry.insert(core::mem::take(&mut self.current_account)); - }; - } - - fn reset_account(&mut self, address: AddressKey) { - self.current_address = address; - self.current_account = CheckAccount::default(); - } - - /// Finished and sets all account in the blockchain mock. - fn commit_accounts(&mut self) { - self.add_current_acount(); - self.world.run_check_state_step(&self.check_state_step); - } - - /// Forces value drop and commit accounts. - pub fn commit(self) {} - - pub fn nonce(mut self, nonce: V) -> Self - where - U64Value: InterpretableFrom, - { - self.current_account.nonce = CheckValue::Equal(U64Value::interpret_from( - nonce, - &InterpreterContext::default(), - )); - self - } - - pub fn balance(mut self, balance_expr: V) -> Self - where - BigUintValue: InterpretableFrom, - { - self.current_account.balance = CheckValue::Equal(BigUintValue::interpret_from( - balance_expr, - &InterpreterContext::default(), - )); - self - } - - pub fn code(mut self, code_expr: V) -> Self - where - BytesValue: InterpretableFrom, - { - self.current_account.code = CheckValue::Equal(BytesValue::interpret_from( - code_expr, - &InterpreterContext::default(), - )); - self - } - - pub fn code_metadata(mut self, code_metadata_expr: V) -> Self - where - BytesValue: InterpretableFrom, - { - self.current_account.code_metadata = CheckValue::Equal(BytesValue::interpret_from( - code_metadata_expr, - &InterpreterContext::default(), - )); - self - } - - pub fn esdt_balance(mut self, token_id_expr: K, balance_expr: V) -> Self - where - BytesKey: From, - BigUintValue: From, - { - let token_id = BytesKey::from(token_id_expr); - let balance = BigUintValue::from(balance_expr); - - match &mut self.current_account.esdt { - CheckEsdtMap::Unspecified | CheckEsdtMap::Star => { - let mut new_esdt_map = BTreeMap::new(); - let _ = new_esdt_map.insert(token_id, CheckEsdt::Short(balance)); - - let new_check_esdt_map = CheckEsdtMapContents { - contents: new_esdt_map, - other_esdts_allowed: true, - }; - - self.current_account.esdt = CheckEsdtMap::Equal(new_check_esdt_map); - }, - CheckEsdtMap::Equal(check_esdt_map) => { - if check_esdt_map.contents.contains_key(&token_id) { - let prev_entry = check_esdt_map.contents.get_mut(&token_id).unwrap(); - match prev_entry { - CheckEsdt::Short(prev_balance_check) => *prev_balance_check = balance, - CheckEsdt::Full(prev_esdt_check) => match prev_esdt_check.instances { - CheckEsdtInstances::Star => todo!(), - CheckEsdtInstances::Equal(_) => todo!(), - }, - } - } - }, - } - - self - } - - pub fn esdt_nft_balance_and_attributes( - mut self, - token_id_expr: K, - nonce_expr: N, - balance_expr: V, - attributes_expr: Option, - ) -> Self - where - BytesKey: From, - U64Value: From, - BigUintValue: From, - T: TopEncode, - { - let token_id = BytesKey::from(token_id_expr); - - if let CheckEsdtMap::Unspecified = &self.current_account.esdt { - let mut check_esdt = CheckEsdt::Full(CheckEsdtData::default()); - - if let Some(attributes_expr) = attributes_expr { - check_esdt.add_balance_and_attributes_check( - nonce_expr, - balance_expr, - top_encode_to_vec_u8_or_panic(&attributes_expr), - ); - } else { - check_esdt.add_balance_and_attributes_check( - nonce_expr, - balance_expr, - Vec::::new(), - ); - } - - let mut new_esdt_map = BTreeMap::new(); - let _ = new_esdt_map.insert(token_id, check_esdt); - - let new_check_esdt_map = CheckEsdtMapContents { - contents: new_esdt_map, - other_esdts_allowed: true, - }; - - self.current_account.esdt = CheckEsdtMap::Equal(new_check_esdt_map); - } - - self - } - - pub fn check_storage(mut self, key: &str, value: &str) -> Self { - let mut details = match &self.current_account.storage { - CheckStorage::Star => CheckStorageDetails::default(), - CheckStorage::Equal(details) => details.clone(), - }; - details.storages.insert( - BytesKey::interpret_from(key, &InterpreterContext::default()), - CheckValue::Equal(BytesValue::interpret_from( - value, - &InterpreterContext::default(), - )), - ); - self.current_account.storage = CheckStorage::Equal(details); - self - } -} - -impl<'w> Drop for CheckStateBuilder<'w> { - fn drop(&mut self) { - self.commit_accounts(); - } } diff --git a/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs b/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs index bbf29a0d03..d040f0bc3a 100644 --- a/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs +++ b/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs @@ -1,18 +1,12 @@ use multiversx_sc::{ codec::{CodecFrom, TopDecodeMulti, TopEncodeMulti}, types::{ - ManagedAddress, RHList, RHListItem, RHListItemExec, ReturnsNewAddress, - ReturnsNewManagedAddress, ReturnsResult, ReturnsResultConv, TxEnv, WithNewAddress, - WithResultConv, + ManagedAddress, RHListItemExec, ReturnsNewAddress, ReturnsNewManagedAddress, ReturnsResult, + ReturnsResultConv, TxEnv, WithNewAddress, WithResultConv, }, }; -use crate::{ - api::StaticApi, - scenario_model::{TxResponse, TypedResponse}, -}; - -use super::ScenarioTxEnvData; +use crate::scenario_model::{TxResponse, TypedResponse}; impl RHListItemExec for ReturnsResult where diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state.rs b/framework/scenario/src/facade/world_tx/scenario_set_state.rs new file mode 100644 index 0000000000..110b1b9692 --- /dev/null +++ b/framework/scenario/src/facade/world_tx/scenario_set_state.rs @@ -0,0 +1,239 @@ +use std::collections::btree_map::Entry; + +use crate::{ + scenario::ScenarioRunner, + scenario_model::{ + Account, AddressKey, AddressValue, BigUintValue, BytesKey, BytesValue, Esdt, EsdtObject, + SetStateStep, U64Value, + }, + ScenarioWorld, +}; + +impl ScenarioWorld { + pub fn account(&mut self, address_expr: A) -> SetStateBuilder<'_> + where + AddressKey: From, + { + SetStateBuilder::new(self, address_expr.into()) + } +} + +pub struct SetStateBuilder<'w> { + world: &'w mut ScenarioWorld, + set_state_step: SetStateStep, + current_account: Account, + current_address: AddressKey, +} + +impl<'w> SetStateBuilder<'w> { + pub(crate) fn new(world: &'w mut ScenarioWorld, address: AddressKey) -> SetStateBuilder<'w> { + let mut builder = SetStateBuilder { + world, + set_state_step: SetStateStep::new(), + current_address: AddressKey::default(), + current_account: Account::new(), + }; + builder.reset_account(address); + builder + } + + fn add_current_acount(&mut self) { + if let Entry::Vacant(entry) = self + .set_state_step + .accounts + .entry(core::mem::take(&mut self.current_address)) + { + entry.insert(core::mem::take(&mut self.current_account)); + }; + } + + fn reset_account(&mut self, address: AddressKey) { + assert!( + !self + .world + .get_debugger_backend() + .vm_runner + .blockchain_mock + .state + .account_exists(&address.to_vm_address()), + "updating existing accounts currently not supported" + ); + + self.current_address = address; + self.current_account = Account::default(); + } + + /// Starts building of a new account. + pub fn account(mut self, address_expr: A) -> Self + where + AddressKey: From, + { + self.add_current_acount(); + self.reset_account(address_expr.into()); + self + } + + /// Finished and sets all account in the blockchain mock. + fn commit_accounts(&mut self) { + self.add_current_acount(); + self.world.run_set_state_step(&self.set_state_step); + } + + /// Forces value drop and commit accounts. + pub fn commit(self) {} + + pub fn nonce(mut self, nonce: V) -> Self + where + U64Value: From, + { + self.current_account.nonce = Some(U64Value::from(nonce)); + self + } + + pub fn balance(mut self, balance_expr: V) -> Self + where + BigUintValue: From, + { + self.current_account.balance = Some(BigUintValue::from(balance_expr)); + self + } + + pub fn esdt_balance(mut self, token_id_expr: K, balance_expr: V) -> Self + where + BytesKey: From, + BigUintValue: From, + { + let token_id = BytesKey::from(token_id_expr); + let esdt_data_ref = self.get_esdt_data_or_create(&token_id); + esdt_data_ref.set_balance(0u64, balance_expr); + + self + } + + pub fn esdt_nft_balance( + mut self, + token_id_expr: K, + nonce_expr: N, + balance_expr: V, + opt_attributes_expr: Option, + ) -> Self + where + N: Clone, + BytesKey: From, + U64Value: From, + BigUintValue: From, + BytesValue: From, + { + let token_id = BytesKey::from(token_id_expr); + + let esdt_obj_ref = self + .get_esdt_data_or_create(&token_id) + .get_mut_esdt_object(); + esdt_obj_ref.set_balance(nonce_expr.clone(), balance_expr); + + if let Some(attributes_expr) = opt_attributes_expr { + esdt_obj_ref.set_token_attributes(nonce_expr, attributes_expr); + } + + self + } + + #[allow(clippy::too_many_arguments)] + pub fn esdt_nft_all_properties( + mut self, + token_id_expr: K, + nonce_expr: N, + balance_expr: V, + opt_attributes_expr: Option, + royalties_expr: N, + creator_expr: Option, + hash_expr: Option, + uris_expr: Vec, + ) -> Self + where + BytesKey: From, + U64Value: From, + BigUintValue: From, + BytesValue: From, + { + let token_id = BytesKey::from(token_id_expr); + + let esdt_obj_ref = self + .get_esdt_data_or_create(&token_id) + .get_mut_esdt_object(); + + esdt_obj_ref.set_token_all_properties( + nonce_expr, + balance_expr, + opt_attributes_expr, + royalties_expr, + creator_expr, + hash_expr, + uris_expr, + ); + + self + } + + pub fn esdt_nft_last_nonce(mut self, token_id_expr: K, last_nonce_expr: N) -> Self + where + BytesKey: From, + U64Value: From, + { + let token_id = BytesKey::from(token_id_expr); + + let esdt_obj_ref = self + .get_esdt_data_or_create(&token_id) + .get_mut_esdt_object(); + esdt_obj_ref.set_last_nonce(last_nonce_expr); + + self + } + + // TODO: Find a better way to pass roles + pub fn esdt_roles(mut self, token_id_expr: K, roles: Vec) -> Self + where + BytesKey: From, + { + let token_id = BytesKey::from(token_id_expr); + + let esdt_obj_ref = self + .get_esdt_data_or_create(&token_id) + .get_mut_esdt_object(); + esdt_obj_ref.set_roles(roles); + + self + } + + fn get_esdt_data_or_create(&mut self, token_id: &BytesKey) -> &mut Esdt { + if !self.current_account.esdt.contains_key(token_id) { + self.current_account + .esdt + .insert(token_id.clone(), Esdt::Full(EsdtObject::default())); + } + + self.current_account.esdt.get_mut(token_id).unwrap() + } + + pub fn code(mut self, code_expr: V) -> Self + where + BytesValue: From, + { + self.current_account.code = Some(BytesValue::from(code_expr)); + self + } + + pub fn owner(mut self, owner_expr: V) -> Self + where + AddressValue: From, + { + self.current_account.owner = Some(AddressValue::from(owner_expr)); + self + } +} + +impl<'w> Drop for SetStateBuilder<'w> { + fn drop(&mut self) { + self.commit_accounts(); + } +} diff --git a/framework/scenario/src/facade/world_tx/scenario_tx_env.rs b/framework/scenario/src/facade/world_tx/scenario_tx_env.rs index aac1952a34..d195a7600d 100644 --- a/framework/scenario/src/facade/world_tx/scenario_tx_env.rs +++ b/framework/scenario/src/facade/world_tx/scenario_tx_env.rs @@ -1,12 +1,8 @@ use std::path::PathBuf; -use multiversx_sc::types::{AnnotatedValue, ManagedAddress, ManagedBuffer, TxBaseWithEnv, TxEnv}; +use multiversx_sc::types::{ManagedAddress, ManagedBuffer, TxEnv}; -use crate::{ - api::StaticApi, - scenario_model::{TxExpect, TxResponse}, - ScenarioWorld, -}; +use crate::{api::StaticApi, scenario_model::TxExpect, ScenarioWorld}; /// Designates a tx environment suitable for running scenarios locally. pub trait ScenarioTxEnv: TxEnv { From 9549b7e327c5020a95691e30ed413e4c9010ad69 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 17 Apr 2024 18:23:02 +0300 Subject: [PATCH 356/461] check state refactor --- .../adder/tests/adder_blackbox_test.rs | 8 +++----- .../tests/crowdfunding_esdt_blackbox_test.rs | 2 +- .../scenario-tester/tests/st_blackbox_test.rs | 20 +++++++++---------- .../facade/world_tx/scenario_check_state.rs | 4 ++-- 4 files changed, 16 insertions(+), 18 deletions(-) diff --git a/contracts/examples/adder/tests/adder_blackbox_test.rs b/contracts/examples/adder/tests/adder_blackbox_test.rs index 1dafca181a..4b0f740343 100644 --- a/contracts/examples/adder/tests/adder_blackbox_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_test.rs @@ -61,11 +61,9 @@ fn adder_blackbox() { .returns(ExpectValue(6u32)) .run(); - world.check_state_step( - CheckStateStep::new() - .put_account(OWNER, CheckAccount::new()) - .put_account(SC_ADDER, CheckAccount::new().check_storage("str:sum", "6")), - ); + world.check_account(OWNER); + + world.check_account(SC_ADDER).check_storage("str:sum", "6"); world.write_scenario_trace("trace1.scen.json"); } diff --git a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs index cc4235704c..c3a1e383f3 100644 --- a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs +++ b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs @@ -118,7 +118,7 @@ impl CrowdfundingESDTTestState { fn check_esdt_balance(&mut self, address: AddressExpr, balance_expr: &str) { self.world - .check_state_account(address) + .check_account(address) .esdt_balance(CF_TOKEN_ID_EXPR, balance_expr); } diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs index ae3e29da45..de877fb76b 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs @@ -42,10 +42,10 @@ fn st_blackbox() { .commit(); world - .check_state_account(owner_address) + .check_account(owner_address) .nonce("1") .balance("100") - .check_state_account(other_address) + .check_account(other_address) .nonce("2") .balance("300") .esdt_balance("str:TOKEN-123456", "500") @@ -81,10 +81,10 @@ fn st_blackbox() { .run(); world - .check_state_account(owner_address) + .check_account(owner_address) .nonce("3") .balance("100") - .check_state_account(st_contract) + .check_account(st_contract) .check_storage("str:sum", "6") .commit(); @@ -122,10 +122,10 @@ fn set_state_test() { .commit(); world - .check_state_account(first) + .check_account(first) .nonce(1) .balance("100") - .check_state_account(second) + .check_account(second) .nonce(2) .balance("300") .esdt_balance("str:TOKEN-123456", "500") @@ -139,7 +139,7 @@ fn set_state_test() { .commit(); world - .check_state_account(third) + .check_account(third) .nonce(3) .balance("50") .esdt_nft_balance_and_attributes("str:NFT-123456", "2", "1", Some(Vec::::new())) @@ -156,10 +156,10 @@ fn set_state_test() { .esdt_balance("str:TOKEN-123456", "2"); world - .check_state_account(fourth) + .check_account(fourth) .nonce(4) .balance("400") - .check_state_account(fifth) + .check_account(fifth) .nonce(5) .balance("250") .esdt_balance("str:TOKEN-123456", "2"); @@ -171,7 +171,7 @@ fn set_state_test() { .esdt_balance("str:TOKEN-123456", "60"); world - .check_state_account(sixth) + .check_account(sixth) .nonce(6) .balance("600") .esdt_balance("str:TOKEN-123456", "60"); diff --git a/framework/scenario/src/facade/world_tx/scenario_check_state.rs b/framework/scenario/src/facade/world_tx/scenario_check_state.rs index ab54d7411f..ffb4a2754b 100644 --- a/framework/scenario/src/facade/world_tx/scenario_check_state.rs +++ b/framework/scenario/src/facade/world_tx/scenario_check_state.rs @@ -14,7 +14,7 @@ use crate::{ }; impl ScenarioWorld { - pub fn check_state_account(&mut self, address: A) -> CheckStateBuilder<'_> + pub fn check_account(&mut self, address: A) -> CheckStateBuilder<'_> where AddressKey: From, { @@ -42,7 +42,7 @@ impl<'w> CheckStateBuilder<'w> { } /// Starts building of a new account. - pub fn check_state_account(mut self, address_expr: A) -> Self + pub fn check_account(mut self, address_expr: A) -> Self where AddressKey: From, { From a372df542b3922ae98d6a00599571b35b1417981 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 18 Apr 2024 12:03:40 +0300 Subject: [PATCH 357/461] set state - refactor --- framework/scenario/src/facade/world_tx.rs | 1 + .../src/facade/world_tx/scenario_set_state.rs | 256 ++++-------------- .../world_tx/scenario_set_state_account.rs | 173 ++++++++++++ 3 files changed, 234 insertions(+), 196 deletions(-) create mode 100644 framework/scenario/src/facade/world_tx/scenario_set_state_account.rs diff --git a/framework/scenario/src/facade/world_tx.rs b/framework/scenario/src/facade/world_tx.rs index b0a694afbf..236a9b95b6 100644 --- a/framework/scenario/src/facade/world_tx.rs +++ b/framework/scenario/src/facade/world_tx.rs @@ -6,6 +6,7 @@ mod scenario_query_call; mod scenario_rh_impl; mod scenario_set_state; mod scenario_tx_env; +mod scenario_set_state_account; pub use scenario_exec_call::ScenarioEnvExec; pub use scenario_query_call::ScenarioEnvQuery; diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state.rs b/framework/scenario/src/facade/world_tx/scenario_set_state.rs index e59ca32ba6..3cfee4b9cc 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state.rs @@ -1,22 +1,22 @@ -use std::collections::btree_map::Entry; - use crate::{ scenario::ScenarioRunner, - scenario_model::{ - Account, AddressKey, AddressValue, BigUintValue, BytesKey, BytesValue, Esdt, EsdtObject, - SetStateStep, U64Value, - }, + scenario_model::{Account, AddressKey, SetStateStep}, ScenarioWorld, }; -use super::block_info_builder::BlockInfoBuilder; +use super::{block_info_builder::BlockInfoBuilder, scenario_set_state_account::CurrentAccount}; impl ScenarioWorld { - pub fn account(&mut self, address_expr: A) -> SetStateBuilder<'_> + pub fn account(&mut self, address_expr: A) -> SetStateBuilder<'_, CurrentAccount> where AddressKey: From, { - SetStateBuilder::new(self, address_expr.into()) + let base = SetStateBuilderBase::new(self); + let item = base.start_account(address_expr.into()); + SetStateBuilder { + base: Some(base), + item, + } } pub fn block_info(&mut self) -> BlockInfoBuilder<'_> { @@ -24,36 +24,36 @@ impl ScenarioWorld { } } -pub struct SetStateBuilder<'w> { - world: &'w mut ScenarioWorld, - set_state_step: SetStateStep, - current_account: Account, - current_address: AddressKey, +pub trait SetStateBuilderItem { + fn commit_to_step(&mut self, step: &mut SetStateStep); } -impl<'w> SetStateBuilder<'w> { - pub(crate) fn new(world: &'w mut ScenarioWorld, address: AddressKey) -> SetStateBuilder<'w> { - let mut builder = SetStateBuilder { +impl SetStateBuilderItem for () { + fn commit_to_step(&mut self, _step: &mut SetStateStep) {} +} + +pub(crate) struct SetStateBuilderBase<'w> { + pub(crate) world: &'w mut ScenarioWorld, + pub(crate) set_state_step: SetStateStep, +} + +pub struct SetStateBuilder<'w, Current> +where + Current: SetStateBuilderItem, +{ + pub(crate) base: Option>, + pub(crate) item: Current, +} + +impl<'w> SetStateBuilderBase<'w> { + fn new(world: &'w mut ScenarioWorld) -> Self { + SetStateBuilderBase { world, set_state_step: SetStateStep::new(), - current_address: AddressKey::default(), - current_account: Account::new(), - }; - builder.reset_account(address); - builder - } - - fn add_current_acount(&mut self) { - if let Entry::Vacant(entry) = self - .set_state_step - .accounts - .entry(core::mem::take(&mut self.current_address)) - { - entry.insert(core::mem::take(&mut self.current_account)); - }; + } } - fn reset_account(&mut self, address: AddressKey) { + fn start_account(&self, address: AddressKey) -> CurrentAccount { assert!( !self .world @@ -65,181 +65,45 @@ impl<'w> SetStateBuilder<'w> { "updating existing accounts currently not supported" ); - self.current_address = address; - self.current_account = Account::default(); + CurrentAccount { + address, + account: Account::default(), + } } +} + +impl<'w> SetStateBuilder<'w, ()> {} +impl<'w, Item> SetStateBuilder<'w, Item> +where + Item: SetStateBuilderItem, +{ /// Starts building of a new account. - pub fn account(mut self, address_expr: A) -> Self + pub fn account(mut self, address_expr: A) -> SetStateBuilder<'w, CurrentAccount> where AddressKey: From, { - self.add_current_acount(); - self.reset_account(address_expr.into()); - self - } - - /// Finished and sets all account in the blockchain mock. - fn commit_accounts(&mut self) { - self.add_current_acount(); - self.world.run_set_state_step(&self.set_state_step); + let mut base = core::mem::take(&mut self.base).unwrap(); + self.item.commit_to_step(&mut base.set_state_step); + let item = base.start_account(address_expr.into()); + SetStateBuilder { + base: Some(base), + item, + } } /// Forces value drop and commit accounts. pub fn commit(self) {} - - pub fn nonce(mut self, nonce: V) -> Self - where - U64Value: From, - { - self.current_account.nonce = Some(U64Value::from(nonce)); - self - } - - pub fn balance(mut self, balance_expr: V) -> Self - where - BigUintValue: From, - { - self.current_account.balance = Some(BigUintValue::from(balance_expr)); - self - } - - pub fn esdt_balance(mut self, token_id_expr: K, balance_expr: V) -> Self - where - BytesKey: From, - BigUintValue: From, - { - let token_id = BytesKey::from(token_id_expr); - let esdt_data_ref = self.get_esdt_data_or_create(&token_id); - esdt_data_ref.set_balance(0u64, balance_expr); - - self - } - - pub fn esdt_nft_balance( - mut self, - token_id_expr: K, - nonce_expr: N, - balance_expr: V, - opt_attributes_expr: Option, - ) -> Self - where - N: Clone, - BytesKey: From, - U64Value: From, - BigUintValue: From, - BytesValue: From, - { - let token_id = BytesKey::from(token_id_expr); - - let esdt_obj_ref = self - .get_esdt_data_or_create(&token_id) - .get_mut_esdt_object(); - esdt_obj_ref.set_balance(nonce_expr.clone(), balance_expr); - - if let Some(attributes_expr) = opt_attributes_expr { - esdt_obj_ref.set_token_attributes(nonce_expr, attributes_expr); - } - - self - } - - #[allow(clippy::too_many_arguments)] - pub fn esdt_nft_all_properties( - mut self, - token_id_expr: K, - nonce_expr: N, - balance_expr: V, - opt_attributes_expr: Option, - royalties_expr: N, - creator_expr: Option, - hash_expr: Option, - uris_expr: Vec, - ) -> Self - where - BytesKey: From, - U64Value: From, - BigUintValue: From, - BytesValue: From, - { - let token_id = BytesKey::from(token_id_expr); - - let esdt_obj_ref = self - .get_esdt_data_or_create(&token_id) - .get_mut_esdt_object(); - - esdt_obj_ref.set_token_all_properties( - nonce_expr, - balance_expr, - opt_attributes_expr, - royalties_expr, - creator_expr, - hash_expr, - uris_expr, - ); - - self - } - - pub fn esdt_nft_last_nonce(mut self, token_id_expr: K, last_nonce_expr: N) -> Self - where - BytesKey: From, - U64Value: From, - { - let token_id = BytesKey::from(token_id_expr); - - let esdt_obj_ref = self - .get_esdt_data_or_create(&token_id) - .get_mut_esdt_object(); - esdt_obj_ref.set_last_nonce(last_nonce_expr); - - self - } - - // TODO: Find a better way to pass roles - pub fn esdt_roles(mut self, token_id_expr: K, roles: Vec) -> Self - where - BytesKey: From, - { - let token_id = BytesKey::from(token_id_expr); - - let esdt_obj_ref = self - .get_esdt_data_or_create(&token_id) - .get_mut_esdt_object(); - esdt_obj_ref.set_roles(roles); - - self - } - - fn get_esdt_data_or_create(&mut self, token_id: &BytesKey) -> &mut Esdt { - if !self.current_account.esdt.contains_key(token_id) { - self.current_account - .esdt - .insert(token_id.clone(), Esdt::Full(EsdtObject::default())); - } - - self.current_account.esdt.get_mut(token_id).unwrap() - } - - pub fn code(mut self, code_expr: V) -> Self - where - BytesValue: From, - { - self.current_account.code = Some(BytesValue::from(code_expr)); - self - } - - pub fn owner(mut self, owner_expr: V) -> Self - where - AddressValue: From, - { - self.current_account.owner = Some(AddressValue::from(owner_expr)); - self - } } -impl<'w> Drop for SetStateBuilder<'w> { +impl<'w, Current> Drop for SetStateBuilder<'w, Current> +where + Current: SetStateBuilderItem, +{ fn drop(&mut self) { - self.commit_accounts(); + if let Some(base) = &mut self.base { + self.item.commit_to_step(&mut base.set_state_step); + base.world.run_set_state_step(&base.set_state_step); + } } } diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state_account.rs b/framework/scenario/src/facade/world_tx/scenario_set_state_account.rs new file mode 100644 index 0000000000..4dc49fd116 --- /dev/null +++ b/framework/scenario/src/facade/world_tx/scenario_set_state_account.rs @@ -0,0 +1,173 @@ +use std::collections::btree_map::Entry; + +use crate::scenario_model::{ + Account, AddressKey, AddressValue, BigUintValue, BytesKey, BytesValue, Esdt, EsdtObject, + SetStateStep, U64Value, +}; + +use super::scenario_set_state::{SetStateBuilder, SetStateBuilderItem}; + +pub struct CurrentAccount { + pub(crate) address: AddressKey, + pub(crate) account: Account, +} + +impl SetStateBuilderItem for CurrentAccount { + fn commit_to_step(&mut self, step: &mut SetStateStep) { + if let Entry::Vacant(entry) = step.accounts.entry(core::mem::take(&mut self.address)) { + entry.insert(core::mem::take(&mut self.account)); + }; + } +} + +impl<'w> SetStateBuilder<'w, CurrentAccount> { + pub fn nonce(mut self, nonce: V) -> Self + where + U64Value: From, + { + self.item.account.nonce = Some(U64Value::from(nonce)); + self + } + + pub fn balance(mut self, balance_expr: V) -> Self + where + BigUintValue: From, + { + self.item.account.balance = Some(BigUintValue::from(balance_expr)); + self + } + + pub fn esdt_balance(mut self, token_id_expr: K, balance_expr: V) -> Self + where + BytesKey: From, + BigUintValue: From, + { + let token_id = BytesKey::from(token_id_expr); + let esdt_data_ref = self.get_esdt_data_or_create(&token_id); + esdt_data_ref.set_balance(0u64, balance_expr); + + self + } + + pub fn esdt_nft_balance( + mut self, + token_id_expr: K, + nonce_expr: N, + balance_expr: V, + opt_attributes_expr: Option, + ) -> Self + where + N: Clone, + BytesKey: From, + U64Value: From, + BigUintValue: From, + BytesValue: From, + { + let token_id = BytesKey::from(token_id_expr); + + let esdt_obj_ref = self + .get_esdt_data_or_create(&token_id) + .get_mut_esdt_object(); + esdt_obj_ref.set_balance(nonce_expr.clone(), balance_expr); + + if let Some(attributes_expr) = opt_attributes_expr { + esdt_obj_ref.set_token_attributes(nonce_expr, attributes_expr); + } + + self + } + + #[allow(clippy::too_many_arguments)] + pub fn esdt_nft_all_properties( + mut self, + token_id_expr: K, + nonce_expr: N, + balance_expr: V, + opt_attributes_expr: Option, + royalties_expr: N, + creator_expr: Option, + hash_expr: Option, + uris_expr: Vec, + ) -> Self + where + BytesKey: From, + U64Value: From, + BigUintValue: From, + BytesValue: From, + { + let token_id = BytesKey::from(token_id_expr); + + let esdt_obj_ref = self + .get_esdt_data_or_create(&token_id) + .get_mut_esdt_object(); + + esdt_obj_ref.set_token_all_properties( + nonce_expr, + balance_expr, + opt_attributes_expr, + royalties_expr, + creator_expr, + hash_expr, + uris_expr, + ); + + self + } + + pub fn esdt_nft_last_nonce(mut self, token_id_expr: K, last_nonce_expr: N) -> Self + where + BytesKey: From, + U64Value: From, + { + let token_id = BytesKey::from(token_id_expr); + + let esdt_obj_ref = self + .get_esdt_data_or_create(&token_id) + .get_mut_esdt_object(); + esdt_obj_ref.set_last_nonce(last_nonce_expr); + + self + } + + // TODO: Find a better way to pass roles + pub fn esdt_roles(mut self, token_id_expr: K, roles: Vec) -> Self + where + BytesKey: From, + { + let token_id = BytesKey::from(token_id_expr); + + let esdt_obj_ref = self + .get_esdt_data_or_create(&token_id) + .get_mut_esdt_object(); + esdt_obj_ref.set_roles(roles); + + self + } + + fn get_esdt_data_or_create(&mut self, token_id: &BytesKey) -> &mut Esdt { + if !self.item.account.esdt.contains_key(token_id) { + self.item + .account + .esdt + .insert(token_id.clone(), Esdt::Full(EsdtObject::default())); + } + + self.item.account.esdt.get_mut(token_id).unwrap() + } + + pub fn code(mut self, code_expr: V) -> Self + where + BytesValue: From, + { + self.item.account.code = Some(BytesValue::from(code_expr)); + self + } + + pub fn owner(mut self, owner_expr: V) -> Self + where + AddressValue: From, + { + self.item.account.owner = Some(AddressValue::from(owner_expr)); + self + } +} From cc1d2156d778e0f7b95d2eb4ee353750fc20a4fa Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 18 Apr 2024 13:06:28 +0300 Subject: [PATCH 358/461] check tx - fix expect message when status is empty --- .../panic-message-features/tests/pmf_blackbox_test.rs | 2 +- .../scenario/src/facade/result_handlers/expect_message.rs | 6 +++++- framework/scenario/src/scenario/model/value/value_check.rs | 4 ++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs b/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs index 28499c0e84..371bf0aeb3 100644 --- a/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs +++ b/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs @@ -73,9 +73,9 @@ fn tx_expect_error_test() { .to(SC_PMF) .typed(pmf_proxy::PanicMessageFeaturesProxy) .sc_panic() - .with_result(ExpectStatus(4)) .with_result(ExpectMessage("sc_panic! test")) .with_result(ExpectError(4, "sc_panic! test")) + .with_result(ExpectStatus(4)) .run(); } diff --git a/framework/scenario/src/facade/result_handlers/expect_message.rs b/framework/scenario/src/facade/result_handlers/expect_message.rs index 4f46d05b59..af5fa2a429 100644 --- a/framework/scenario/src/facade/result_handlers/expect_message.rs +++ b/framework/scenario/src/facade/result_handlers/expect_message.rs @@ -1,7 +1,7 @@ use multiversx_chain_scenario_format::serde_raw::ValueSubTree; use multiversx_sc::types::{RHListItem, RHListItemExec, TxEnv}; -use crate::scenario_model::{BytesValue, CheckValue, TxExpect, TxResponse}; +use crate::scenario_model::{BytesValue, CheckValue, TxExpect, TxResponse, U64Value}; /// Verifies that transaction result message matches the given one. /// @@ -20,6 +20,10 @@ where Env: TxEnv, { fn item_tx_expect(&self, mut prev: TxExpect) -> TxExpect { + if prev.status.is_equal_to(U64Value::empty()) { + prev.status = CheckValue::Star; + } + let expect_message_expr = BytesValue { value: self.0.to_string().into_bytes(), original: ValueSubTree::Str(format!("str:{}", self.0)), diff --git a/framework/scenario/src/scenario/model/value/value_check.rs b/framework/scenario/src/scenario/model/value/value_check.rs index 5299aa9e1b..9091f73594 100644 --- a/framework/scenario/src/scenario/model/value/value_check.rs +++ b/framework/scenario/src/scenario/model/value/value_check.rs @@ -21,6 +21,10 @@ where pub fn is_star(&self) -> bool { matches!(self, CheckValue::Star) } + + pub fn is_equal_to(&self, _value: T) -> bool { + matches!(self, CheckValue::Equal(_value)) + } } impl InterpretableFrom for CheckValue From 7c291a5961577788fcf223bfd02e0102ba8e4f2e Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 18 Apr 2024 18:55:29 +0300 Subject: [PATCH 359/461] set state - integrated block info --- framework/scenario/src/facade/world_tx.rs | 2 +- .../src/facade/world_tx/block_info_builder.rs | 132 ++++++------------ .../src/facade/world_tx/scenario_set_state.rs | 16 ++- 3 files changed, 55 insertions(+), 95 deletions(-) diff --git a/framework/scenario/src/facade/world_tx.rs b/framework/scenario/src/facade/world_tx.rs index 236a9b95b6..9d805cb30d 100644 --- a/framework/scenario/src/facade/world_tx.rs +++ b/framework/scenario/src/facade/world_tx.rs @@ -5,8 +5,8 @@ mod scenario_exec_deploy; mod scenario_query_call; mod scenario_rh_impl; mod scenario_set_state; -mod scenario_tx_env; mod scenario_set_state_account; +mod scenario_tx_env; pub use scenario_exec_call::ScenarioEnvExec; pub use scenario_query_call::ScenarioEnvQuery; diff --git a/framework/scenario/src/facade/world_tx/block_info_builder.rs b/framework/scenario/src/facade/world_tx/block_info_builder.rs index 0defeb61d9..91ac2a0620 100644 --- a/framework/scenario/src/facade/world_tx/block_info_builder.rs +++ b/framework/scenario/src/facade/world_tx/block_info_builder.rs @@ -1,49 +1,55 @@ -use crate::{ - scenario::ScenarioRunner, - scenario_model::{BlockInfo, BytesValue, SetStateStep, U64Value}, - ScenarioWorld, -}; - -pub struct BlockInfoBuilder<'w> { - world: &'w mut ScenarioWorld, - set_state_step: SetStateStep, - current_block: BlockInfo, - previous_block: BlockInfo, +use crate::scenario_model::{BlockInfo, BytesValue, SetStateStep, U64Value}; + +use super::scenario_set_state::{SetStateBuilder, SetStateBuilderItem}; + +pub enum BlockInfoTarget { + Current, + Previous, +} + +pub struct BlockItem { + target: BlockInfoTarget, + block_info: BlockInfo, } -impl<'w> BlockInfoBuilder<'w> { - pub(crate) fn new(world: &'w mut ScenarioWorld) -> BlockInfoBuilder<'w> { - BlockInfoBuilder { - world, - set_state_step: SetStateStep::new(), - current_block: BlockInfo::default(), - previous_block: BlockInfo::default(), +impl BlockItem { + pub fn new_current() -> Self { + BlockItem { + target: BlockInfoTarget::Current, + block_info: BlockInfo::default(), } } - // Forces value drop and commit block info. - pub fn commit(self) {} - - /// Finished and sets all account in the blockchain mock. - fn commit_block_info(&mut self) { - self.add_current_block_info(); - self.world.run_set_state_step(&self.set_state_step); + pub fn new_prev() -> Self { + BlockItem { + target: BlockInfoTarget::Previous, + block_info: BlockInfo::default(), + } } +} - fn add_current_block_info(&mut self) { - self.set_state_step.previous_block_info = - Box::new(Some(core::mem::take(&mut self.previous_block))); - self.set_state_step.current_block_info = - Box::new(Some(core::mem::take(&mut self.current_block))); +impl SetStateBuilderItem for BlockItem { + fn commit_to_step(&mut self, step: &mut SetStateStep) { + let block_info = core::mem::take(&mut self.block_info); + match self.target { + BlockInfoTarget::Current => { + step.current_block_info = Box::new(Some(block_info)); + }, + BlockInfoTarget::Previous => { + step.previous_block_info = Box::new(Some(block_info)); + }, + } } +} +impl<'w> SetStateBuilder<'w, BlockItem> { pub fn block_epoch(mut self, block_epoch_expr: N) -> Self where U64Value: From, { let block_epoch = U64Value::from(block_epoch_expr); - self.current_block.block_epoch = Some(block_epoch); + self.item.block_info.block_epoch = Some(block_epoch); self } @@ -53,7 +59,7 @@ impl<'w> BlockInfoBuilder<'w> { { let block_nonce = U64Value::from(block_nonce_expr); - self.current_block.block_nonce = Some(block_nonce); + self.item.block_info.block_nonce = Some(block_nonce); self } @@ -63,7 +69,7 @@ impl<'w> BlockInfoBuilder<'w> { { let block_round = U64Value::from(block_round_expr); - self.current_block.block_round = Some(block_round); + self.item.block_info.block_round = Some(block_round); self } @@ -73,7 +79,7 @@ impl<'w> BlockInfoBuilder<'w> { { let block_timestamp = U64Value::from(block_timestamp_expr); - self.current_block.block_timestamp = Some(block_timestamp); + self.item.block_info.block_timestamp = Some(block_timestamp); self } @@ -83,63 +89,7 @@ impl<'w> BlockInfoBuilder<'w> { { let block_random_seed = BytesValue::from(block_random_seed_expr); - self.current_block.block_random_seed = Some(block_random_seed); - self - } - - pub fn prev_block_epoch(mut self, block_epoch_expr: N) -> Self - where - U64Value: From, - { - let prev_block_epoch = U64Value::from(block_epoch_expr); - - self.previous_block.block_epoch = Some(prev_block_epoch); - self - } - - pub fn prev_block_nonce(mut self, block_nonce_expr: N) -> Self - where - U64Value: From, - { - let prev_block_nonce = U64Value::from(block_nonce_expr); - - self.previous_block.block_nonce = Some(prev_block_nonce); + self.item.block_info.block_random_seed = Some(block_random_seed); self } - - pub fn prev_block_round(mut self, block_round_expr: N) -> Self - where - U64Value: From, - { - let prev_block_round = U64Value::from(block_round_expr); - - self.previous_block.block_round = Some(prev_block_round); - self - } - - pub fn prev_block_timestamp(mut self, block_timestamp_expr: N) -> Self - where - U64Value: From, - { - let prev_block_timestamp = U64Value::from(block_timestamp_expr); - - self.previous_block.block_timestamp = Some(prev_block_timestamp); - self - } - - pub fn prev_block_random_seed(mut self, block_random_seed_expr: B) -> Self - where - BytesValue: From, - { - let prev_block_random_seed = BytesValue::from(block_random_seed_expr); - - self.previous_block.block_random_seed = Some(prev_block_random_seed); - self - } -} - -impl Drop for BlockInfoBuilder<'_> { - fn drop(&mut self) { - self.commit_block_info(); - } } diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state.rs b/framework/scenario/src/facade/world_tx/scenario_set_state.rs index 3cfee4b9cc..b1df67bbf5 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state.rs @@ -4,7 +4,7 @@ use crate::{ ScenarioWorld, }; -use super::{block_info_builder::BlockInfoBuilder, scenario_set_state_account::CurrentAccount}; +use super::{block_info_builder::BlockItem, scenario_set_state_account::CurrentAccount}; impl ScenarioWorld { pub fn account(&mut self, address_expr: A) -> SetStateBuilder<'_, CurrentAccount> @@ -19,8 +19,18 @@ impl ScenarioWorld { } } - pub fn block_info(&mut self) -> BlockInfoBuilder<'_> { - BlockInfoBuilder::new(self) + pub fn current_block(&mut self) -> SetStateBuilder<'_, BlockItem> { + SetStateBuilder { + base: Some(SetStateBuilderBase::new(self)), + item: BlockItem::new_current(), + } + } + + pub fn previous_block(&mut self) -> SetStateBuilder<'_, BlockItem> { + SetStateBuilder { + base: Some(SetStateBuilderBase::new(self)), + item: BlockItem::new_current(), + } } } From 27861624f53d69e94c6e8c29d5358131d2184333 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 18 Apr 2024 19:03:37 +0300 Subject: [PATCH 360/461] set state - refactor --- framework/scenario/src/facade/world_tx.rs | 2 -- .../src/facade/world_tx/scenario_set_state.rs | 19 +++++++++-------- .../scenario_set_account.rs} | 21 +++++++++++++------ .../scenario_set_block.rs} | 14 ++++++------- 4 files changed, 32 insertions(+), 24 deletions(-) rename framework/scenario/src/facade/world_tx/{scenario_set_state_account.rs => scenario_set_state/scenario_set_account.rs} (92%) rename framework/scenario/src/facade/world_tx/{block_info_builder.rs => scenario_set_state/scenario_set_block.rs} (87%) diff --git a/framework/scenario/src/facade/world_tx.rs b/framework/scenario/src/facade/world_tx.rs index 9d805cb30d..a2d7373a42 100644 --- a/framework/scenario/src/facade/world_tx.rs +++ b/framework/scenario/src/facade/world_tx.rs @@ -1,11 +1,9 @@ -mod block_info_builder; mod scenario_check_state; mod scenario_exec_call; mod scenario_exec_deploy; mod scenario_query_call; mod scenario_rh_impl; mod scenario_set_state; -mod scenario_set_state_account; mod scenario_tx_env; pub use scenario_exec_call::ScenarioEnvExec; diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state.rs b/framework/scenario/src/facade/world_tx/scenario_set_state.rs index b1df67bbf5..cc5874d0de 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state.rs @@ -1,13 +1,17 @@ +mod scenario_set_account; +mod scenario_set_block; + use crate::{ scenario::ScenarioRunner, - scenario_model::{Account, AddressKey, SetStateStep}, + scenario_model::{AddressKey, SetStateStep}, ScenarioWorld, }; -use super::{block_info_builder::BlockItem, scenario_set_state_account::CurrentAccount}; +use scenario_set_account::AccountItem; +use scenario_set_block::BlockItem; impl ScenarioWorld { - pub fn account(&mut self, address_expr: A) -> SetStateBuilder<'_, CurrentAccount> + pub fn account(&mut self, address_expr: A) -> SetStateBuilder<'_, AccountItem> where AddressKey: From, { @@ -63,7 +67,7 @@ impl<'w> SetStateBuilderBase<'w> { } } - fn start_account(&self, address: AddressKey) -> CurrentAccount { + fn start_account(&self, address: AddressKey) -> AccountItem { assert!( !self .world @@ -75,10 +79,7 @@ impl<'w> SetStateBuilderBase<'w> { "updating existing accounts currently not supported" ); - CurrentAccount { - address, - account: Account::default(), - } + AccountItem::new(address) } } @@ -89,7 +90,7 @@ where Item: SetStateBuilderItem, { /// Starts building of a new account. - pub fn account(mut self, address_expr: A) -> SetStateBuilder<'w, CurrentAccount> + pub fn account(mut self, address_expr: A) -> SetStateBuilder<'w, AccountItem> where AddressKey: From, { diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state_account.rs b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs similarity index 92% rename from framework/scenario/src/facade/world_tx/scenario_set_state_account.rs rename to framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs index 4dc49fd116..d985cbed66 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state_account.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs @@ -5,14 +5,23 @@ use crate::scenario_model::{ SetStateStep, U64Value, }; -use super::scenario_set_state::{SetStateBuilder, SetStateBuilderItem}; +use super::{SetStateBuilder, SetStateBuilderItem}; -pub struct CurrentAccount { - pub(crate) address: AddressKey, - pub(crate) account: Account, +pub struct AccountItem { + address: AddressKey, + account: Account, } -impl SetStateBuilderItem for CurrentAccount { +impl AccountItem { + pub fn new(address: AddressKey) -> Self { + AccountItem { + address, + account: Account::default(), + } + } +} + +impl SetStateBuilderItem for AccountItem { fn commit_to_step(&mut self, step: &mut SetStateStep) { if let Entry::Vacant(entry) = step.accounts.entry(core::mem::take(&mut self.address)) { entry.insert(core::mem::take(&mut self.account)); @@ -20,7 +29,7 @@ impl SetStateBuilderItem for CurrentAccount { } } -impl<'w> SetStateBuilder<'w, CurrentAccount> { +impl<'w> SetStateBuilder<'w, AccountItem> { pub fn nonce(mut self, nonce: V) -> Self where U64Value: From, diff --git a/framework/scenario/src/facade/world_tx/block_info_builder.rs b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_block.rs similarity index 87% rename from framework/scenario/src/facade/world_tx/block_info_builder.rs rename to framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_block.rs index 91ac2a0620..9b487859e4 100644 --- a/framework/scenario/src/facade/world_tx/block_info_builder.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_block.rs @@ -1,28 +1,28 @@ use crate::scenario_model::{BlockInfo, BytesValue, SetStateStep, U64Value}; -use super::scenario_set_state::{SetStateBuilder, SetStateBuilderItem}; +use super::{SetStateBuilder, SetStateBuilderItem}; -pub enum BlockInfoTarget { +pub enum BlockItemTarget { Current, Previous, } pub struct BlockItem { - target: BlockInfoTarget, + target: BlockItemTarget, block_info: BlockInfo, } impl BlockItem { pub fn new_current() -> Self { BlockItem { - target: BlockInfoTarget::Current, + target: BlockItemTarget::Current, block_info: BlockInfo::default(), } } pub fn new_prev() -> Self { BlockItem { - target: BlockInfoTarget::Previous, + target: BlockItemTarget::Previous, block_info: BlockInfo::default(), } } @@ -32,10 +32,10 @@ impl SetStateBuilderItem for BlockItem { fn commit_to_step(&mut self, step: &mut SetStateStep) { let block_info = core::mem::take(&mut self.block_info); match self.target { - BlockInfoTarget::Current => { + BlockItemTarget::Current => { step.current_block_info = Box::new(Some(block_info)); }, - BlockInfoTarget::Previous => { + BlockItemTarget::Previous => { step.previous_block_info = Box::new(Some(block_info)); }, } From f20cb3b91d45aee63741c21953cab2c46b74f6bd Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 18 Apr 2024 19:19:49 +0300 Subject: [PATCH 361/461] set state - refactor --- .../src/facade/world_tx/scenario_set_state.rs | 42 ++++++++++++------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state.rs b/framework/scenario/src/facade/world_tx/scenario_set_state.rs index cc5874d0de..30de24fbc2 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state.rs @@ -11,30 +11,26 @@ use scenario_set_account::AccountItem; use scenario_set_block::BlockItem; impl ScenarioWorld { + fn empty_builder(&mut self) -> SetStateBuilder<'_, ()> { + SetStateBuilder { + base: Some(SetStateBuilderBase::new(self)), + item: (), + } + } + pub fn account(&mut self, address_expr: A) -> SetStateBuilder<'_, AccountItem> where AddressKey: From, { - let base = SetStateBuilderBase::new(self); - let item = base.start_account(address_expr.into()); - SetStateBuilder { - base: Some(base), - item, - } + self.empty_builder().account(address_expr) } pub fn current_block(&mut self) -> SetStateBuilder<'_, BlockItem> { - SetStateBuilder { - base: Some(SetStateBuilderBase::new(self)), - item: BlockItem::new_current(), - } + self.empty_builder().current_block() } pub fn previous_block(&mut self) -> SetStateBuilder<'_, BlockItem> { - SetStateBuilder { - base: Some(SetStateBuilderBase::new(self)), - item: BlockItem::new_current(), - } + self.empty_builder().previous_block() } } @@ -103,6 +99,24 @@ where } } + pub fn current_block(&mut self) -> SetStateBuilder<'w, BlockItem> { + let mut base = core::mem::take(&mut self.base).unwrap(); + self.item.commit_to_step(&mut base.set_state_step); + SetStateBuilder { + base: Some(base), + item: BlockItem::new_current(), + } + } + + pub fn previous_block(&mut self) -> SetStateBuilder<'w, BlockItem> { + let mut base = core::mem::take(&mut self.base).unwrap(); + self.item.commit_to_step(&mut base.set_state_step); + SetStateBuilder { + base: Some(base), + item: BlockItem::new_prev(), + } + } + /// Forces value drop and commit accounts. pub fn commit(self) {} } From 618854a2a5b36d88bccb1b1195a5bed9b5bc5897 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 18 Apr 2024 19:34:42 +0300 Subject: [PATCH 362/461] set state - new address --- .../adder/tests/adder_blackbox_test.rs | 2 +- .../tests/crowdfunding_esdt_blackbox_test.rs | 4 +- .../src/facade/world_tx/scenario_set_state.rs | 44 ++++++++++++++++++- .../scenario_set_new_address.rs | 14 ++++++ .../src/scenario/model/new_address.rs | 2 +- 5 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_new_address.rs diff --git a/contracts/examples/adder/tests/adder_blackbox_test.rs b/contracts/examples/adder/tests/adder_blackbox_test.rs index 4b0f740343..9c6dc26dd5 100644 --- a/contracts/examples/adder/tests/adder_blackbox_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_test.rs @@ -24,7 +24,7 @@ fn adder_blackbox() { world.account(OWNER).nonce(1); - world.set_state_step(SetStateStep::new().new_address(OWNER, 1, SC_ADDER)); + world.new_address(OWNER, 1, SC_ADDER); let new_address = world .tx() diff --git a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs index c3a1e383f3..fae306ed35 100644 --- a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs +++ b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs @@ -42,11 +42,11 @@ impl CrowdfundingESDTTestState { .nonce(1) .esdt_balance(CF_TOKEN_ID_EXPR, "1000"); - world.set_state_step(SetStateStep::new().new_address( + world.new_address( owner_address, 1, SC_CROWDFUNDING_ESDT_EXPR.eval_to_expr().as_str(), - )); + ); Self { world } } diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state.rs b/framework/scenario/src/facade/world_tx/scenario_set_state.rs index 30de24fbc2..11fd25a3f6 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state.rs @@ -1,14 +1,16 @@ mod scenario_set_account; mod scenario_set_block; +mod scenario_set_new_address; use crate::{ scenario::ScenarioRunner, - scenario_model::{AddressKey, SetStateStep}, + scenario_model::{AddressKey, AddressValue, NewAddress, SetStateStep, U64Value}, ScenarioWorld, }; use scenario_set_account::AccountItem; use scenario_set_block::BlockItem; +use scenario_set_new_address::NewAddressItem; impl ScenarioWorld { fn empty_builder(&mut self) -> SetStateBuilder<'_, ()> { @@ -25,6 +27,21 @@ impl ScenarioWorld { self.empty_builder().account(address_expr) } + pub fn new_address( + &mut self, + creator_address_expr: CA, + creator_nonce_expr: CN, + new_address_expr: NA, + ) -> SetStateBuilder<'_, NewAddressItem> + where + AddressValue: From, + U64Value: From, + AddressValue: From, + { + self.empty_builder() + .new_address(creator_address_expr, creator_nonce_expr, new_address_expr) + } + pub fn current_block(&mut self) -> SetStateBuilder<'_, BlockItem> { self.empty_builder().current_block() } @@ -99,6 +116,31 @@ where } } + pub fn new_address( + mut self, + creator_address_expr: CA, + creator_nonce_expr: CN, + new_address_expr: NA, + ) -> SetStateBuilder<'w, NewAddressItem> + where + AddressValue: From, + U64Value: From, + AddressValue: From, + { + let mut base = core::mem::take(&mut self.base).unwrap(); + self.item.commit_to_step(&mut base.set_state_step); + SetStateBuilder { + base: Some(base), + item: NewAddressItem { + new_address: NewAddress { + creator_address: AddressValue::from(creator_address_expr), + creator_nonce: U64Value::from(creator_nonce_expr), + new_address: AddressValue::from(new_address_expr), + }, + }, + } + } + pub fn current_block(&mut self) -> SetStateBuilder<'w, BlockItem> { let mut base = core::mem::take(&mut self.base).unwrap(); self.item.commit_to_step(&mut base.set_state_step); diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_new_address.rs b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_new_address.rs new file mode 100644 index 0000000000..35a8ae392b --- /dev/null +++ b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_new_address.rs @@ -0,0 +1,14 @@ +use crate::scenario_model::{NewAddress, SetStateStep}; + +use super::SetStateBuilderItem; + +pub struct NewAddressItem { + pub(super) new_address: NewAddress, +} + +impl SetStateBuilderItem for NewAddressItem { + fn commit_to_step(&mut self, step: &mut SetStateStep) { + step.new_addresses + .push(core::mem::take(&mut self.new_address)); + } +} diff --git a/framework/scenario/src/scenario/model/new_address.rs b/framework/scenario/src/scenario/model/new_address.rs index f4893978d1..3ef0ddba2c 100644 --- a/framework/scenario/src/scenario/model/new_address.rs +++ b/framework/scenario/src/scenario/model/new_address.rs @@ -5,7 +5,7 @@ use crate::scenario_format::{ use super::{AddressValue, U64Value}; -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Default)] pub struct NewAddress { pub creator_address: AddressValue, pub creator_nonce: U64Value, From 108d73de15ca8e6b79126c5334884b1a0789aecf Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 18 Apr 2024 19:39:41 +0300 Subject: [PATCH 363/461] set state - cleanup --- .../scenario/src/facade/world_tx/scenario_set_state.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state.rs b/framework/scenario/src/facade/world_tx/scenario_set_state.rs index 11fd25a3f6..9376050f58 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state.rs @@ -59,17 +59,17 @@ impl SetStateBuilderItem for () { fn commit_to_step(&mut self, _step: &mut SetStateStep) {} } -pub(crate) struct SetStateBuilderBase<'w> { - pub(crate) world: &'w mut ScenarioWorld, - pub(crate) set_state_step: SetStateStep, +struct SetStateBuilderBase<'w> { + world: &'w mut ScenarioWorld, + set_state_step: SetStateStep, } pub struct SetStateBuilder<'w, Current> where Current: SetStateBuilderItem, { - pub(crate) base: Option>, - pub(crate) item: Current, + base: Option>, + item: Current, } impl<'w> SetStateBuilderBase<'w> { From cc6febd2570a2d7bbdb75604abca0fa6b4c9e799 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 18 Apr 2024 23:07:40 +0300 Subject: [PATCH 364/461] unified syntax - migrate multisig blackbox tests --- contracts/examples/adder/sc-config.toml | 3 + .../tests/crowdfunding_esdt_blackbox_test.rs | 20 +- .../examples/multisig/src/adder_proxy.rs | 110 ++++ .../multisig/tests/multisig_blackbox_test.rs | 578 ++++++++++-------- 4 files changed, 441 insertions(+), 270 deletions(-) create mode 100644 contracts/examples/multisig/src/adder_proxy.rs diff --git a/contracts/examples/adder/sc-config.toml b/contracts/examples/adder/sc-config.toml index b56f82b429..091de3f7f6 100644 --- a/contracts/examples/adder/sc-config.toml +++ b/contracts/examples/adder/sc-config.toml @@ -2,3 +2,6 @@ [[proxy]] path = "src/adder_proxy.rs" + +[[proxy]] +path = "../multisig/src/adder_proxy.rs" diff --git a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs index c3a1e383f3..d7b8d616a0 100644 --- a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs +++ b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs @@ -1,7 +1,6 @@ use crowdfunding_esdt::crowdfunding_esdt_proxy; use multiversx_sc_scenario::imports::*; -use num_bigint::BigUint; const CF_DEADLINE: u64 = 7 * 24 * 60 * 60; // 1 week in seconds const CF_TOKEN_ID: &[u8] = b"CROWD-123456"; @@ -29,10 +28,9 @@ struct CrowdfundingESDTTestState { impl CrowdfundingESDTTestState { fn new() -> Self { let mut world = world(); - let owner_address: &str = "address:owner"; world - .account(owner_address) + .account(OWNER_ADDRESS) .nonce(1) .account(FIRST_USER_ADDRESS) .nonce(1) @@ -43,7 +41,7 @@ impl CrowdfundingESDTTestState { .esdt_balance(CF_TOKEN_ID_EXPR, "1000"); world.set_state_step(SetStateStep::new().new_address( - owner_address, + OWNER_ADDRESS.eval_to_expr().as_str(), 1, SC_CROWDFUNDING_ESDT_EXPR.eval_to_expr().as_str(), )); @@ -81,29 +79,23 @@ impl CrowdfundingESDTTestState { } fn check_deposit(&mut self, donor: AddressExpr, amount: u64) { - let value = self - .world + self.world .query() .to(SC_CROWDFUNDING_ESDT_EXPR) .typed(crowdfunding_esdt_proxy::CrowdfundingProxy) .deposit(donor.eval_to_array()) - .returns(ReturnsResultConv::::new()) + .returns(ExpectValue(amount)) .run(); - - assert_eq!(value, amount.into()); } fn check_status(&mut self, expected_value: crowdfunding_esdt_proxy::Status) { - let status = self - .world + self.world .query() .to(SC_CROWDFUNDING_ESDT_EXPR) .typed(crowdfunding_esdt_proxy::CrowdfundingProxy) .status() - .returns(ReturnsResult) + .returns(ExpectValue(expected_value)) .run(); - - assert_eq!(status, expected_value); } fn claim(&mut self, address: AddressExpr) { diff --git a/contracts/examples/multisig/src/adder_proxy.rs b/contracts/examples/multisig/src/adder_proxy.rs new file mode 100644 index 0000000000..0b1b663669 --- /dev/null +++ b/contracts/examples/multisig/src/adder_proxy.rs @@ -0,0 +1,110 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(dead_code)] +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +pub struct AdderProxy; + +impl TxProxyTrait for AdderProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = AdderProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + AdderProxyMethods { wrapped_tx: tx } + } +} + +pub struct AdderProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl AdderProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init< + Arg0: CodecInto>, + >( + self, + initial_value: Arg0, + ) -> TxProxyDeploy { + self.wrapped_tx + .raw_deploy() + .argument(&initial_value) + .original_result() + } +} + +#[rustfmt::skip] +impl AdderProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn upgrade< + Arg0: CodecInto>, + >( + self, + initial_value: Arg0, + ) -> TxProxyUpgrade { + self.wrapped_tx + .raw_upgrade() + .argument(&initial_value) + .original_result() + } +} + +#[rustfmt::skip] +impl AdderProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn sum( + self, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call("getSum") + .original_result() + } + + /// Add desired amount to the storage variable. + pub fn add< + Arg0: CodecInto>, + >( + self, + value: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("add") + .argument(&value) + .original_result() + } +} diff --git a/contracts/examples/multisig/tests/multisig_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_blackbox_test.rs index 691c2750db..1529746ec6 100644 --- a/contracts/examples/multisig/tests/multisig_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_blackbox_test.rs @@ -1,21 +1,23 @@ use multiversx_sc::codec::top_encode_to_vec_u8_or_panic; use multiversx_sc_scenario::imports::*; -use adder::ProxyTrait as _; -use multisig::{ - multisig_perform::ProxyTrait as _, multisig_propose::ProxyTrait as _, user_role::UserRole, - ProxyTrait as _, -}; +use adder::{adder_proxy, ProxyTrait as _}; +use multisig::{multisig_perform::ProxyTrait as _, multisig_proxy}; use num_bigint::BigUint; const ADDER_ADDRESS_EXPR: &str = "sc:adder"; -const ADDER_OWNER_ADDRESS_EXPR: &str = "address:adder-owner"; +const SC_ADDER_EXPR: ScExpr = ScExpr("adder"); +const ADDER_OWNER_ADDRESS_EXPR: AddressExpr = AddressExpr("adder-owner"); const ADDER_PATH_EXPR: &str = "mxsc:test-contracts/adder.mxsc.json"; +const ADDER_CODE_EXPR: MxscExpr = MxscExpr("test-contracts/adder.mxsc.json"); const BOARD_MEMBER_ADDRESS_EXPR: &str = "address:board-member"; +const BOARD_MEMBER_ADDRESS_EXPR_REPL: AddressExpr = AddressExpr("board-member"); const MULTISIG_ADDRESS_EXPR: &str = "sc:multisig"; +const SC_MULTISIG_EXPR: ScExpr = ScExpr("multisig"); const MULTISIG_PATH_EXPR: &str = "mxsc:output/multisig.mxsc.json"; -const OWNER_ADDRESS_EXPR: &str = "address:owner"; -const PROPOSER_ADDRESS_EXPR: &str = "address:proposer"; +const MULTISIG_CODE_EXPR: MxscExpr = MxscExpr("output/multisig.mxsc.json"); +const OWNER_ADDRESS_EXPR_REPL: AddressExpr = AddressExpr("owner"); +const PROPOSER_ADDRESS_EXPR: AddressExpr = AddressExpr("proposer"); const PROPOSER_BALANCE_EXPR: &str = "100,000,000"; const QUORUM_SIZE: usize = 1; @@ -33,8 +35,6 @@ fn world() -> ScenarioWorld { struct MultisigTestState { world: ScenarioWorld, - proposer_address: Address, - board_member_address: Address, multisig_contract: MultisigContract, adder_contract: AdderContract, adder_address: Address, @@ -43,29 +43,36 @@ struct MultisigTestState { 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(PROPOSER_BALANCE_EXPR), - ) - .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 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); - let adder_address = AddressValue::from(ADDER_ADDRESS_EXPR).to_address(); + + world + .account(OWNER_ADDRESS_EXPR_REPL) + .nonce(1) + .account(PROPOSER_ADDRESS_EXPR) + .nonce(1) + .balance(PROPOSER_BALANCE_EXPR) + .account(BOARD_MEMBER_ADDRESS_EXPR_REPL) + .nonce(1) + .account(ADDER_OWNER_ADDRESS_EXPR) + .nonce(1); + + world.set_state_step(SetStateStep::new().new_address( + OWNER_ADDRESS_EXPR_REPL.eval_to_expr().as_str(), + 1, + SC_MULTISIG_EXPR.eval_to_expr().as_str(), + )); + + world.set_state_step(SetStateStep::new().new_address( + ADDER_OWNER_ADDRESS_EXPR.eval_to_expr().as_str(), + 1, + SC_ADDER_EXPR.eval_to_expr().as_str(), + )); + + let multisig_contract = MultisigContract::new(SC_MULTISIG_EXPR.eval_to_expr().as_str()); + let adder_contract = AdderContract::new(SC_ADDER_EXPR.eval_to_expr().as_str()); + let adder_address = AddressValue::from(SC_ADDER_EXPR.eval_to_expr().as_str()).to_address(); Self { world, - proposer_address, - board_member_address, multisig_contract, adder_contract, adder_address, @@ -73,70 +80,76 @@ impl MultisigTestState { } 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()), - ), - ); + let board_members = + MultiValueVec::from(vec![BOARD_MEMBER_ADDRESS_EXPR_REPL.eval_to_array()]); + + self.world + .tx() + .from(OWNER_ADDRESS_EXPR_REPL) + .typed(multisig_proxy::MultisigProxy) + .init(QUORUM_SIZE, board_members) + .code(MULTISIG_CODE_EXPR) + .run(); + + let action_id: usize = self + .world + .tx() + .from(BOARD_MEMBER_ADDRESS_EXPR_REPL) + .to(SC_MULTISIG_EXPR) + .typed(multisig_proxy::MultisigProxy) + .propose_add_proposer(PROPOSER_ADDRESS_EXPR.eval_to_array()) + .returns(ReturnsResult) + .run(); + self.sign(action_id); self.perform(action_id); - self.expect_user_role(&self.proposer_address.clone(), UserRole::Proposer); + self.expect_user_role(PROPOSER_ADDRESS_EXPR, multisig_proxy::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 deploy_adder_contract(&mut self) { + self.world + .tx() + .from(ADDER_OWNER_ADDRESS_EXPR) + .typed(adder_proxy::AdderProxy) + .init(5u64) + .code(ADDER_CODE_EXPR) + .run(); } - fn propose_add_board_member(&mut self, board_member_address: Address) -> usize { + fn propose_add_board_member(&mut self, board_member_address: AddressExpr) -> usize { self.world .tx() - .from(AddressExpr("proposer")) - .call( - self.multisig_contract - .propose_add_board_member(board_member_address), - ) + .from(PROPOSER_ADDRESS_EXPR) + .to(SC_MULTISIG_EXPR) + .typed(multisig_proxy::MultisigProxy) + .propose_add_board_member(board_member_address.eval_to_array()) .returns(ReturnsResult) .run() } - 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), - ), - ) + fn propose_add_proposer(&mut self, proposer_address: AddressExpr) -> usize { + self.world + .tx() + .from(PROPOSER_ADDRESS_EXPR) + .to(SC_MULTISIG_EXPR) + .typed(multisig_proxy::MultisigProxy) + .propose_add_proposer(proposer_address.eval_to_array()) + .returns(ReturnsResult) + .run() } 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)), - ) + self.world + .tx() + .from(PROPOSER_ADDRESS_EXPR) + .to(SC_MULTISIG_EXPR) + .typed(multisig_proxy::MultisigProxy) + .propose_change_quorum(new_quorum) + .returns(ReturnsResult) + .run() } fn propose_transfer_execute( @@ -145,12 +158,14 @@ impl MultisigTestState { egld_amount: u64, contract_call: FunctionCall, ) -> usize { - self.world.sc_call_get_result( - ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( - self.multisig_contract - .propose_transfer_execute(to, egld_amount, contract_call), - ), - ) + self.world + .tx() + .from(PROPOSER_ADDRESS_EXPR) + .to(SC_MULTISIG_EXPR) + .typed(multisig_proxy::MultisigProxy) + .propose_transfer_execute(to, egld_amount, contract_call) + .returns(ReturnsResult) + .run() } fn propose_async_call( @@ -159,20 +174,25 @@ impl MultisigTestState { egld_amount: u64, contract_call: FunctionCall, ) -> usize { - self.world.sc_call_get_result( - ScCallStep::new().from(PROPOSER_ADDRESS_EXPR).call( - self.multisig_contract - .propose_async_call(to, egld_amount, contract_call), - ), - ) + self.world + .tx() + .from(PROPOSER_ADDRESS_EXPR) + .to(SC_MULTISIG_EXPR) + .typed(multisig_proxy::MultisigProxy) + .propose_async_call(to, egld_amount, contract_call) + .returns(ReturnsResult) + .run() } - 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_remove_user(&mut self, user_address: AddressExpr) -> usize { + self.world + .tx() + .from(PROPOSER_ADDRESS_EXPR) + .to(SC_MULTISIG_EXPR) + .typed(multisig_proxy::MultisigProxy) + .propose_remove_user(user_address.eval_to_array()) + .returns(ReturnsResult) + .run() } fn propose_sc_deploy_from_source( @@ -183,14 +203,13 @@ impl MultisigTestState { 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, - ), - )) + .tx() + .from(PROPOSER_ADDRESS_EXPR) + .to(SC_MULTISIG_EXPR) + .typed(multisig_proxy::MultisigProxy) + .propose_sc_deploy_from_source(amount, source, code_metadata, arguments) + .returns(ReturnsResult) + .run() } fn propose_sc_upgrade_from_source( @@ -202,48 +221,58 @@ impl MultisigTestState { 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, - ), - )) + .tx() + .from(PROPOSER_ADDRESS_EXPR) + .to(SC_MULTISIG_EXPR) + .typed(multisig_proxy::MultisigProxy) + .propose_sc_upgrade_from_source(sc_address, amount, source, code_metadata, arguments) + .returns(ReturnsResult) + .run() } 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)), - ); + self.world + .tx() + .from(BOARD_MEMBER_ADDRESS_EXPR_REPL) + .to(SC_MULTISIG_EXPR) + .typed(multisig_proxy::MultisigProxy) + .perform_action_endpoint(action_id) + .run(); } fn perform_and_expect_err(&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::user_error("str:".to_string() + err_message)), - ); + self.world + .tx() + .from(BOARD_MEMBER_ADDRESS_EXPR_REPL) + .to(SC_MULTISIG_EXPR) + .typed(multisig_proxy::MultisigProxy) + .perform_action_endpoint(action_id) + .with_result(ExpectError(4, err_message)) + .run(); } 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)), - ); + self.world + .tx() + .from(BOARD_MEMBER_ADDRESS_EXPR_REPL) + .to(SC_MULTISIG_EXPR) + .typed(multisig_proxy::MultisigProxy) + .sign(action_id) + .run(); } - 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), - ); + fn expect_user_role( + &mut self, + user: AddressExpr, + expected_user_role: multisig_proxy::UserRole, + ) { + self.world + .query() + .to(SC_MULTISIG_EXPR) + .typed(multisig_proxy::MultisigProxy) + .user_role(user.eval_to_array()) + .returns(ExpectValue(expected_user_role)) + .run(); } } @@ -252,28 +281,30 @@ 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(); + let new_board_member_expr: AddressExpr = AddressExpr("new-board-member"); - state.world.set_state_step( - SetStateStep::new().put_account(NEW_BOARD_MEMBER_ADDRESS_EXPR, Account::new().nonce(1)), - ); + state.world.account(new_board_member_expr).nonce(1); - state.expect_user_role(&new_board_member_address, UserRole::None); + state.expect_user_role(new_board_member_expr, multisig_proxy::UserRole::None); - let action_id = state.propose_add_board_member(new_board_member_address.clone()); + let action_id = state.propose_add_board_member(new_board_member_expr); state.sign(action_id); state.perform(action_id); - state.expect_user_role(&new_board_member_address, UserRole::BoardMember); - 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(), - ])), - ); + let expected_value = MultiValueVec::from(vec![ + BOARD_MEMBER_ADDRESS_EXPR_REPL.eval_to_array(), + new_board_member_expr.eval_to_array(), + ]); + + state.expect_user_role(new_board_member_expr, multisig_proxy::UserRole::BoardMember); + state + .world + .query() + .to(SC_MULTISIG_EXPR) + .typed(multisig_proxy::MultisigProxy) + .get_all_board_members() + .returns(ExpectValue(expected_value)) + .run() } #[test] @@ -281,28 +312,33 @@ 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(); + let new_proposer_address_expr: AddressExpr = AddressExpr("new-proposer"); - state.world.set_state_step( - SetStateStep::new().put_account(NEW_PROPOSER_ADDRESS_EXPR, Account::new().nonce(1)), - ); + state.world.account(new_proposer_address_expr).nonce(1); - state.expect_user_role(&new_proposer_address, UserRole::None); + state.expect_user_role(new_proposer_address_expr, multisig_proxy::UserRole::None); - let action_id = state.propose_add_proposer(new_proposer_address.clone()); + let action_id = state.propose_add_proposer(new_proposer_address_expr); state.sign(action_id); state.perform(action_id); - state.expect_user_role(&new_proposer_address, UserRole::Proposer); - 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(), - ])), + state.expect_user_role( + new_proposer_address_expr, + multisig_proxy::UserRole::Proposer, ); + + let expected_value = MultiValueVec::from(vec![ + PROPOSER_ADDRESS_EXPR.eval_to_array(), + new_proposer_address_expr.eval_to_array(), + ]); + state + .world + .query() + .to(SC_MULTISIG_EXPR) + .typed(multisig_proxy::MultisigProxy) + .get_all_proposers() + .returns(ExpectValue(expected_value)) + .run(); } #[test] @@ -310,18 +346,21 @@ fn test_remove_proposer() { let mut state = MultisigTestState::new(); state.deploy_multisig_contract(); - state.expect_user_role(&state.proposer_address.clone(), UserRole::Proposer); + state.expect_user_role(PROPOSER_ADDRESS_EXPR, multisig_proxy::UserRole::Proposer); - let action_id = state.propose_remove_user(state.proposer_address.clone()); + let action_id = state.propose_remove_user(PROPOSER_ADDRESS_EXPR); state.sign(action_id); state.perform(action_id); - state.expect_user_role(&state.proposer_address.clone(), UserRole::None); - state.world.sc_query( - ScQueryStep::new() - .call(state.multisig_contract.get_all_proposers()) - .expect_value(MultiValueVec::
::new()), - ); + state.expect_user_role(PROPOSER_ADDRESS_EXPR, multisig_proxy::UserRole::None); + state + .world + .query() + .to(SC_MULTISIG_EXPR) + .typed(multisig_proxy::MultisigProxy) + .get_all_proposers() + .returns(ExpectValue(MultiValueVec::
::new())) + .run(); } #[test] @@ -329,7 +368,7 @@ fn test_try_remove_all_board_members() { let mut state = MultisigTestState::new(); state.deploy_multisig_contract(); - let action_id = state.propose_remove_user(state.board_member_address.clone()); + let action_id = state.propose_remove_user(BOARD_MEMBER_ADDRESS_EXPR_REPL); state.sign(action_id); state.perform_and_expect_err(action_id, "quorum cannot exceed board size") } @@ -346,45 +385,55 @@ fn test_change_quorum() { state.perform_and_expect_err(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::user_error( - "str:cannot discard action with valid signatures", - )), - ); + state + .world + .tx() + .from(BOARD_MEMBER_ADDRESS_EXPR_REPL) + .to(SC_MULTISIG_EXPR) + .typed(multisig_proxy::MultisigProxy) + .discard_action(action_id) + .with_result(ExpectError( + 4, + "cannot discard action with valid signatures", + )) + .run(); // unsign and discard action - state.world.sc_call( - ScCallStep::new() - .from(BOARD_MEMBER_ADDRESS_EXPR) - .call(state.multisig_contract.unsign(action_id)), - ); + state + .world + .tx() + .from(BOARD_MEMBER_ADDRESS_EXPR_REPL) + .to(SC_MULTISIG_EXPR) + .typed(multisig_proxy::MultisigProxy) + .unsign(action_id) + .run(); - state.world.sc_call( - ScCallStep::new() - .from(BOARD_MEMBER_ADDRESS_EXPR) - .call(state.multisig_contract.discard_action(action_id)), - ); + state + .world + .tx() + .from(BOARD_MEMBER_ADDRESS_EXPR_REPL) + .to(SC_MULTISIG_EXPR) + .typed(multisig_proxy::MultisigProxy) + .discard_action(action_id) + .run(); // try sign discarded action - state.world.sc_call( - ScCallStep::new() - .from(BOARD_MEMBER_ADDRESS_EXPR) - .call(state.multisig_contract.sign(action_id)) - .expect(TxExpect::user_error("str:action does not exist")), - ); + state + .world + .tx() + .from(BOARD_MEMBER_ADDRESS_EXPR_REPL) + .to(SC_MULTISIG_EXPR) + .typed(multisig_proxy::MultisigProxy) + .sign(action_id) + .with_result(ExpectError(4, "action does not exist")) + .run(); // 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(); + let new_board_member_address_expr: AddressExpr = AddressExpr("new-board-member"); - state.world.set_state_step( - SetStateStep::new().put_account(NEW_BOARD_MEMBER_ADDRESS_EXPR, Account::new().nonce(1)), - ); + state.world.account(new_board_member_address_expr).nonce(1); - let action_id = state.propose_add_board_member(new_board_member_address); + let action_id = state.propose_add_board_member(new_board_member_address_expr); state.sign(action_id); state.perform(action_id); @@ -399,57 +448,62 @@ 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)), - ); + let new_user_address_expr: AddressExpr = AddressExpr("new-user"); + state.world.account(new_user_address_expr).nonce(1); - const AMOUNT: &str = "100"; + let amount: u64 = 100; - state.world.sc_call( - ScCallStep::new() - .from(PROPOSER_ADDRESS_EXPR) - .egld_value(AMOUNT) - .call(state.multisig_contract.deposit()), - ); + state + .world + .tx() + .from(PROPOSER_ADDRESS_EXPR) + .to(SC_MULTISIG_EXPR) + .typed(multisig_proxy::MultisigProxy) + .deposit() + .egld(amount) + .run(); - state.world.check_state_step( - CheckStateStep::new() - .put_account(MULTISIG_ADDRESS_EXPR, CheckAccount::new().balance(AMOUNT)), - ); + state + .world + .check_account(SC_MULTISIG_EXPR) + .balance(amount.to_string().as_str()); // 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, - FunctionCall::empty(), - )) - .expect(TxExpect::user_error("str:proposed action has no effect")), - ); + state + .world + .tx() + .from(PROPOSER_ADDRESS_EXPR) + .to(SC_MULTISIG_EXPR) + .typed(multisig_proxy::MultisigProxy) + .propose_transfer_execute( + new_user_address_expr.eval_to_array(), + 0u64, + FunctionCall::empty(), + ) + .with_result(ExpectError(4, "proposed action has no effect")) + .run(); // propose - 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, - AMOUNT.parse::().unwrap(), - FunctionCall::empty(), - ), - )); + let action_id = state + .world + .tx() + .from(PROPOSER_ADDRESS_EXPR) + .to(SC_MULTISIG_EXPR) + .typed(multisig_proxy::MultisigProxy) + .propose_transfer_execute( + new_user_address_expr.eval_to_array(), + amount, + FunctionCall::empty(), + ) + .returns(ReturnsResult) + .run(); 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)), - ); + state + .world + .check_account(new_user_address_expr) + .balance(amount.to_string().as_str()); } #[test] @@ -457,17 +511,26 @@ fn test_transfer_execute_sc_all() { let mut state = MultisigTestState::new(); state.deploy_multisig_contract().deploy_adder_contract(); - let adder_call = state.adder_contract.add(5u64).into_function_call(); + let adder_call = state + .world + .tx() + .typed(adder_proxy::AdderProxy) + .add(5u64) + .into_function_call(); + let adder_address = AddressValue::from(SC_ADDER_EXPR.eval_to_expr().as_str()).to_address(); - let action_id = state.propose_transfer_execute(state.adder_address.clone(), 0u64, adder_call); + let action_id = state.propose_transfer_execute(adder_address, 0u64, adder_call); state.sign(action_id); state.perform(action_id); - state.world.sc_query( - ScQueryStep::new() - .call(state.adder_contract.sum()) - .expect_value(SingleValue::from(BigUint::from(10u64))), - ); + state + .world + .query() + .to(SC_ADDER_EXPR) + .typed(adder_proxy::AdderProxy) + .sum() + .with_result(ExpectValue(BigUint::from(10u64))) + .run(); } #[test] @@ -481,11 +544,14 @@ fn test_async_call_to_sc() { state.sign(action_id); state.perform(action_id); - state.world.sc_query( - ScQueryStep::new() - .call(state.adder_contract.sum()) - .expect_value(SingleValue::from(BigUint::from(10u64))), - ); + state + .world + .query() + .to(SC_ADDER_EXPR) + .typed(adder_proxy::AdderProxy) + .sum() + .returns(ExpectValue(10u64)) + .run(); } #[test] From 8eb704cc9e811b22d48e3621e6f3e463627a2bea Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Fri, 19 Apr 2024 13:22:17 +0300 Subject: [PATCH 365/461] unified syntax - migrate all tests --- .../tests/crowdfunding_esdt_blackbox_test.rs | 12 +- .../multisig/tests/multisig_blackbox_test.rs | 196 +++++++++--------- .../scenario/src/facade/expr/mxsc_expr.rs | 20 ++ 3 files changed, 128 insertions(+), 100 deletions(-) diff --git a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs index d7b8d616a0..e47e5ea385 100644 --- a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs +++ b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs @@ -12,12 +12,12 @@ const CODE_EXPR: MxscExpr = MxscExpr("output/crowdfunding-esdt.mxsc.json"); const SC_CROWDFUNDING_ESDT_EXPR: ScExpr = ScExpr("crowdfunding-esdt"); fn world() -> ScenarioWorld { - let contract_path: &str = "mxsc:output/crowdfunding-esdt.mxsc.json"; - let mut blockchain = ScenarioWorld::new(); - blockchain.set_current_dir_from_workspace("contracts/examples/crowdfunding-esdt"); - blockchain.register_contract(contract_path, crowdfunding_esdt::ContractBuilder); + blockchain.register_contract( + CODE_EXPR.eval_to_expr().as_str(), + crowdfunding_esdt::ContractBuilder, + ); blockchain } @@ -41,9 +41,9 @@ impl CrowdfundingESDTTestState { .esdt_balance(CF_TOKEN_ID_EXPR, "1000"); world.set_state_step(SetStateStep::new().new_address( - OWNER_ADDRESS.eval_to_expr().as_str(), + OWNER_ADDRESS, 1, - SC_CROWDFUNDING_ESDT_EXPR.eval_to_expr().as_str(), + SC_CROWDFUNDING_ESDT_EXPR, )); Self { world } diff --git a/contracts/examples/multisig/tests/multisig_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_blackbox_test.rs index 1529746ec6..22a4219fd4 100644 --- a/contracts/examples/multisig/tests/multisig_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_blackbox_test.rs @@ -1,43 +1,38 @@ use multiversx_sc::codec::top_encode_to_vec_u8_or_panic; use multiversx_sc_scenario::imports::*; -use adder::{adder_proxy, ProxyTrait as _}; -use multisig::{multisig_perform::ProxyTrait as _, multisig_proxy}; +use adder::adder_proxy; +use multisig::multisig_proxy; use num_bigint::BigUint; -const ADDER_ADDRESS_EXPR: &str = "sc:adder"; const SC_ADDER_EXPR: ScExpr = ScExpr("adder"); const ADDER_OWNER_ADDRESS_EXPR: AddressExpr = AddressExpr("adder-owner"); -const ADDER_PATH_EXPR: &str = "mxsc:test-contracts/adder.mxsc.json"; const ADDER_CODE_EXPR: MxscExpr = MxscExpr("test-contracts/adder.mxsc.json"); -const BOARD_MEMBER_ADDRESS_EXPR: &str = "address:board-member"; -const BOARD_MEMBER_ADDRESS_EXPR_REPL: AddressExpr = AddressExpr("board-member"); -const MULTISIG_ADDRESS_EXPR: &str = "sc:multisig"; +const BOARD_MEMBER_ADDRESS_EXPR: AddressExpr = AddressExpr("board-member"); const SC_MULTISIG_EXPR: ScExpr = ScExpr("multisig"); -const MULTISIG_PATH_EXPR: &str = "mxsc:output/multisig.mxsc.json"; const MULTISIG_CODE_EXPR: MxscExpr = MxscExpr("output/multisig.mxsc.json"); -const OWNER_ADDRESS_EXPR_REPL: AddressExpr = AddressExpr("owner"); +const OWNER_ADDRESS_EXPR: AddressExpr = AddressExpr("owner"); const PROPOSER_ADDRESS_EXPR: AddressExpr = AddressExpr("proposer"); const PROPOSER_BALANCE_EXPR: &str = "100,000,000"; 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.register_contract( + MULTISIG_CODE_EXPR.eval_to_expr().as_str(), + multisig::ContractBuilder, + ); + blockchain.register_contract( + ADDER_CODE_EXPR.eval_to_expr().as_str(), + adder::ContractBuilder, + ); blockchain } struct MultisigTestState { world: ScenarioWorld, - multisig_contract: MultisigContract, - adder_contract: AdderContract, - adder_address: Address, } impl MultisigTestState { @@ -45,47 +40,37 @@ impl MultisigTestState { let mut world = world(); world - .account(OWNER_ADDRESS_EXPR_REPL) + .account(OWNER_ADDRESS_EXPR) .nonce(1) .account(PROPOSER_ADDRESS_EXPR) .nonce(1) .balance(PROPOSER_BALANCE_EXPR) - .account(BOARD_MEMBER_ADDRESS_EXPR_REPL) + .account(BOARD_MEMBER_ADDRESS_EXPR) .nonce(1) .account(ADDER_OWNER_ADDRESS_EXPR) .nonce(1); world.set_state_step(SetStateStep::new().new_address( - OWNER_ADDRESS_EXPR_REPL.eval_to_expr().as_str(), + OWNER_ADDRESS_EXPR, 1, - SC_MULTISIG_EXPR.eval_to_expr().as_str(), + SC_MULTISIG_EXPR, )); world.set_state_step(SetStateStep::new().new_address( - ADDER_OWNER_ADDRESS_EXPR.eval_to_expr().as_str(), + ADDER_OWNER_ADDRESS_EXPR, 1, - SC_ADDER_EXPR.eval_to_expr().as_str(), + SC_ADDER_EXPR, )); - let multisig_contract = MultisigContract::new(SC_MULTISIG_EXPR.eval_to_expr().as_str()); - let adder_contract = AdderContract::new(SC_ADDER_EXPR.eval_to_expr().as_str()); - let adder_address = AddressValue::from(SC_ADDER_EXPR.eval_to_expr().as_str()).to_address(); - - Self { - world, - multisig_contract, - adder_contract, - adder_address, - } + Self { world } } fn deploy_multisig_contract(&mut self) -> &mut Self { - let board_members = - MultiValueVec::from(vec![BOARD_MEMBER_ADDRESS_EXPR_REPL.eval_to_array()]); + let board_members = MultiValueVec::from(vec![BOARD_MEMBER_ADDRESS_EXPR.eval_to_array()]); self.world .tx() - .from(OWNER_ADDRESS_EXPR_REPL) + .from(OWNER_ADDRESS_EXPR) .typed(multisig_proxy::MultisigProxy) .init(QUORUM_SIZE, board_members) .code(MULTISIG_CODE_EXPR) @@ -94,7 +79,7 @@ impl MultisigTestState { let action_id: usize = self .world .tx() - .from(BOARD_MEMBER_ADDRESS_EXPR_REPL) + .from(BOARD_MEMBER_ADDRESS_EXPR) .to(SC_MULTISIG_EXPR) .typed(multisig_proxy::MultisigProxy) .propose_add_proposer(PROPOSER_ADDRESS_EXPR.eval_to_array()) @@ -154,7 +139,7 @@ impl MultisigTestState { fn propose_transfer_execute( &mut self, - to: Address, + to: ScExpr, egld_amount: u64, contract_call: FunctionCall, ) -> usize { @@ -163,14 +148,14 @@ impl MultisigTestState { .from(PROPOSER_ADDRESS_EXPR) .to(SC_MULTISIG_EXPR) .typed(multisig_proxy::MultisigProxy) - .propose_transfer_execute(to, egld_amount, contract_call) + .propose_transfer_execute(to.eval_to_array(), egld_amount, contract_call) .returns(ReturnsResult) .run() } fn propose_async_call( &mut self, - to: Address, + to: ScExpr, egld_amount: u64, contract_call: FunctionCall, ) -> usize { @@ -179,7 +164,7 @@ impl MultisigTestState { .from(PROPOSER_ADDRESS_EXPR) .to(SC_MULTISIG_EXPR) .typed(multisig_proxy::MultisigProxy) - .propose_async_call(to, egld_amount, contract_call) + .propose_async_call(to.eval_to_array(), egld_amount, contract_call) .returns(ReturnsResult) .run() } @@ -198,7 +183,7 @@ impl MultisigTestState { fn propose_sc_deploy_from_source( &mut self, amount: u64, - source: Address, + source: ScExpr, code_metadata: CodeMetadata, arguments: MultiValueVec>, ) -> usize { @@ -207,16 +192,16 @@ impl MultisigTestState { .from(PROPOSER_ADDRESS_EXPR) .to(SC_MULTISIG_EXPR) .typed(multisig_proxy::MultisigProxy) - .propose_sc_deploy_from_source(amount, source, code_metadata, arguments) + .propose_sc_deploy_from_source(amount, source.eval_to_array(), code_metadata, arguments) .returns(ReturnsResult) .run() } fn propose_sc_upgrade_from_source( &mut self, - sc_address: Address, + sc_address: ScExpr, amount: u64, - source: Address, + source: ScExpr, code_metadata: CodeMetadata, arguments: MultiValueVec>, ) -> usize { @@ -225,7 +210,13 @@ impl MultisigTestState { .from(PROPOSER_ADDRESS_EXPR) .to(SC_MULTISIG_EXPR) .typed(multisig_proxy::MultisigProxy) - .propose_sc_upgrade_from_source(sc_address, amount, source, code_metadata, arguments) + .propose_sc_upgrade_from_source( + sc_address.eval_to_array(), + amount, + source.eval_to_array(), + code_metadata, + arguments, + ) .returns(ReturnsResult) .run() } @@ -233,7 +224,7 @@ impl MultisigTestState { fn perform(&mut self, action_id: usize) { self.world .tx() - .from(BOARD_MEMBER_ADDRESS_EXPR_REPL) + .from(BOARD_MEMBER_ADDRESS_EXPR) .to(SC_MULTISIG_EXPR) .typed(multisig_proxy::MultisigProxy) .perform_action_endpoint(action_id) @@ -243,7 +234,7 @@ impl MultisigTestState { fn perform_and_expect_err(&mut self, action_id: usize, err_message: &str) { self.world .tx() - .from(BOARD_MEMBER_ADDRESS_EXPR_REPL) + .from(BOARD_MEMBER_ADDRESS_EXPR) .to(SC_MULTISIG_EXPR) .typed(multisig_proxy::MultisigProxy) .perform_action_endpoint(action_id) @@ -254,7 +245,7 @@ impl MultisigTestState { fn sign(&mut self, action_id: usize) { self.world .tx() - .from(BOARD_MEMBER_ADDRESS_EXPR_REPL) + .from(BOARD_MEMBER_ADDRESS_EXPR) .to(SC_MULTISIG_EXPR) .typed(multisig_proxy::MultisigProxy) .sign(action_id) @@ -292,7 +283,7 @@ fn test_add_board_member() { state.perform(action_id); let expected_value = MultiValueVec::from(vec![ - BOARD_MEMBER_ADDRESS_EXPR_REPL.eval_to_array(), + BOARD_MEMBER_ADDRESS_EXPR.eval_to_array(), new_board_member_expr.eval_to_array(), ]); @@ -368,7 +359,7 @@ fn test_try_remove_all_board_members() { let mut state = MultisigTestState::new(); state.deploy_multisig_contract(); - let action_id = state.propose_remove_user(BOARD_MEMBER_ADDRESS_EXPR_REPL); + let action_id = state.propose_remove_user(BOARD_MEMBER_ADDRESS_EXPR); state.sign(action_id); state.perform_and_expect_err(action_id, "quorum cannot exceed board size") } @@ -388,7 +379,7 @@ fn test_change_quorum() { state .world .tx() - .from(BOARD_MEMBER_ADDRESS_EXPR_REPL) + .from(BOARD_MEMBER_ADDRESS_EXPR) .to(SC_MULTISIG_EXPR) .typed(multisig_proxy::MultisigProxy) .discard_action(action_id) @@ -402,7 +393,7 @@ fn test_change_quorum() { state .world .tx() - .from(BOARD_MEMBER_ADDRESS_EXPR_REPL) + .from(BOARD_MEMBER_ADDRESS_EXPR) .to(SC_MULTISIG_EXPR) .typed(multisig_proxy::MultisigProxy) .unsign(action_id) @@ -411,7 +402,7 @@ fn test_change_quorum() { state .world .tx() - .from(BOARD_MEMBER_ADDRESS_EXPR_REPL) + .from(BOARD_MEMBER_ADDRESS_EXPR) .to(SC_MULTISIG_EXPR) .typed(multisig_proxy::MultisigProxy) .discard_action(action_id) @@ -421,7 +412,7 @@ fn test_change_quorum() { state .world .tx() - .from(BOARD_MEMBER_ADDRESS_EXPR_REPL) + .from(BOARD_MEMBER_ADDRESS_EXPR) .to(SC_MULTISIG_EXPR) .typed(multisig_proxy::MultisigProxy) .sign(action_id) @@ -517,9 +508,8 @@ fn test_transfer_execute_sc_all() { .typed(adder_proxy::AdderProxy) .add(5u64) .into_function_call(); - let adder_address = AddressValue::from(SC_ADDER_EXPR.eval_to_expr().as_str()).to_address(); - let action_id = state.propose_transfer_execute(adder_address, 0u64, adder_call); + let action_id = state.propose_transfer_execute(SC_ADDER_EXPR, 0u64, adder_call); state.sign(action_id); state.perform(action_id); @@ -538,9 +528,14 @@ fn test_async_call_to_sc() { let mut state = MultisigTestState::new(); state.deploy_multisig_contract().deploy_adder_contract(); - let adder_call = state.adder_contract.add(5u64).into_function_call(); + let adder_call = state + .world + .tx() + .typed(adder_proxy::AdderProxy) + .add(5u64) + .into_function_call(); - let action_id = state.propose_async_call(state.adder_address.clone(), 0u64, adder_call); + let action_id = state.propose_async_call(SC_ADDER_EXPR, 0u64, adder_call); state.sign(action_id); state.perform(action_id); @@ -559,69 +554,82 @@ 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"; + let new_adder_address_expr: ScExpr = ScExpr("new-adder"); state.world.set_state_step(SetStateStep::new().new_address( - MULTISIG_ADDRESS_EXPR, + SC_MULTISIG_EXPR, 0, - NEW_ADDER_ADDRESS_EXPR, + new_adder_address_expr, )); - let new_adder_address = AddressValue::from(NEW_ADDER_ADDRESS_EXPR).to_address(); - let action_id = state.propose_sc_deploy_from_source( 0u64, - state.adder_address.clone(), + SC_ADDER_EXPR, CodeMetadata::all(), MultiValueVec::from([top_encode_to_vec_u8_or_panic(&5u64)]), ); state.sign(action_id); - state.world.sc_call( - ScCallStep::new() - .from(BOARD_MEMBER_ADDRESS_EXPR) - .call(state.multisig_contract.perform_action_endpoint(action_id)) - .expect_value(OptionalValue::Some(new_adder_address.clone())), - ); + state + .world + .tx() + .from(BOARD_MEMBER_ADDRESS_EXPR) + .to(SC_MULTISIG_EXPR) + .typed(multisig_proxy::MultisigProxy) + .perform_action_endpoint(action_id) + .returns(ExpectValue(OptionalValue::Some( + new_adder_address_expr.to_address(), + ))) + .run(); - let adder_call = state.adder_contract.add(5u64).into_function_call(); + let adder_call = state + .world + .tx() + .to(SC_ADDER_EXPR) + .typed(adder_proxy::AdderProxy) + .add(5u64) + .into_function_call(); - let action_id = state.propose_transfer_execute(new_adder_address, 0u64, adder_call); + let action_id = state.propose_transfer_execute(new_adder_address_expr, 0u64, adder_call); state.sign(action_id); state.perform(action_id); - let mut new_adder_contract = AdderContract::new(NEW_ADDER_ADDRESS_EXPR); + state + .world + .query() + .to(new_adder_address_expr) + .typed(adder_proxy::AdderProxy) + .sum() + .returns(ExpectValue(BigUint::from(10u64))) + .run(); - state.world.sc_query( - ScQueryStep::new() - .call(new_adder_contract.sum()) - .expect_value(SingleValue::from(BigUint::from(10u64))), - ); + let factorial_address_expr: ScExpr = ScExpr("factorial"); + let factorial_path_expr: MxscExpr = MxscExpr("test-contracts/factorial.mxsc.json"); - const FACTORIAL_ADDRESS_EXPR: &str = "sc:factorial"; - const FACTORIAL_PATH_EXPR: &str = "mxsc:test-contracts/factorial.mxsc.json"; + let factorial_code = state + .world + .code_expression(factorial_path_expr.eval_to_expr().as_str()); - 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.eval_to_expr().as_str(), + factorial::ContractBuilder, + ); 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()), - )); + .account(factorial_address_expr) + .code(factorial_code.clone()); let action_id = state.propose_sc_upgrade_from_source( - state.adder_address.clone(), + SC_ADDER_EXPR, 0u64, - factorial_address, + factorial_address_expr, 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)), - ); + state + .world + .check_account(SC_ADDER_EXPR) + .code(factorial_path_expr.eval_to_expr().as_str()); } diff --git a/framework/scenario/src/facade/expr/mxsc_expr.rs b/framework/scenario/src/facade/expr/mxsc_expr.rs index 0946b93327..d130102600 100644 --- a/framework/scenario/src/facade/expr/mxsc_expr.rs +++ b/framework/scenario/src/facade/expr/mxsc_expr.rs @@ -30,3 +30,23 @@ where } impl<'a, Env> TxCodeValue for MxscExpr<'a> where Env: ScenarioTxEnv {} + +impl<'a> MxscExpr<'a> { + pub fn eval_to_expr(&self) -> String { + format!("{MXSC_PREFIX}{}", self.0) + } +} + +#[cfg(test)] +pub mod tests { + use crate::imports::MxscExpr; + + fn assert_eq_eval(expr: &'static str, expected: &str) { + assert_eq!(&MxscExpr(expr).eval_to_expr(), expected); + } + + #[test] + fn test_address_value() { + assert_eq_eval("output/adder.mxsc.json", "mxsc:output/adder.mxsc.json"); + } +} From 73638aa9c3721f6ceff0953ca1b50fd2084b880c Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sun, 21 Apr 2024 17:06:25 +0300 Subject: [PATCH 366/461] unified syntax - sync call same context & readonly --- .../forwarder-raw/src/forwarder_raw_sync.rs | 4 +- .../types/interaction/tx_exec/tx_exec_sync.rs | 66 +++++++++++++++++++ 2 files changed, 68 insertions(+), 2 deletions(-) diff --git a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_sync.rs b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_sync.rs index a4e98f36a7..799ce0cb83 100644 --- a/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_sync.rs +++ b/contracts/feature-tests/composability/forwarder-raw/src/forwarder_raw_sync.rs @@ -82,7 +82,7 @@ pub trait ForwarderRawSync: super::forwarder_raw_common::ForwarderRawCommon { .raw_call(endpoint_name) .arguments_raw(args.to_arg_buffer()) .returns(ReturnsRawResult) - .sync_call(); + .sync_call_same_context(); self.execute_on_same_context_result(result); } @@ -102,7 +102,7 @@ pub trait ForwarderRawSync: super::forwarder_raw_common::ForwarderRawCommon { .raw_call(endpoint_name) .arguments_raw(args.to_arg_buffer()) .returns(ReturnsRawResult) - .sync_call(); + .sync_call_readonly(); self.execute_on_dest_context_result(result); } diff --git a/framework/base/src/types/interaction/tx_exec/tx_exec_sync.rs b/framework/base/src/types/interaction/tx_exec/tx_exec_sync.rs index 78169a665b..e66e76cf26 100644 --- a/framework/base/src/types/interaction/tx_exec/tx_exec_sync.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_exec_sync.rs @@ -54,6 +54,72 @@ where let tuple_result = result_handler.list_process_result(&sync_raw_result); tuple_result.flatten_unpack() } + + fn execute_sync_call_same_context_raw(self) -> (ManagedVec>, RH) { + let gas_limit = self.gas.gas_value(&self.env); + + let raw_result = self.payment.with_normalized( + &self.env, + &self.from, + self.to, + self.data.into(), + |norm_to, norm_egld, norm_fc| { + SendRawWrapper::::new().execute_on_same_context_raw( + gas_limit, + norm_to, + norm_egld, + &norm_fc.function_name, + &norm_fc.arg_buffer, + ) + }, + ); + + SendRawWrapper::::new().clean_return_data(); + + (raw_result, self.result_handler) + } + + pub fn sync_call_same_context(self) -> ::Unpacked { + let (raw_result, result_handler) = self.execute_sync_call_same_context_raw(); + let sync_raw_result = SyncCallRawResult(raw_result); + let tuple_result = result_handler.list_process_result(&sync_raw_result); + tuple_result.flatten_unpack() + } +} + +impl Tx, (), To, (), Gas, FC, RH> +where + Api: CallTypeApi, + To: TxToSpecified>, + Gas: TxGas>, + FC: TxDataFunctionCall>, + RH: RHListExec, TxScEnv>, + RH::ListReturns: NestedTupleFlatten, +{ + fn execute_sync_call_readonly_raw(self) -> (ManagedVec>, RH) { + let gas_limit = self.gas.gas_value(&self.env); + let function_call = self.data.into(); + + let raw_result = self.to.with_value_ref(&self.env, |to| { + SendRawWrapper::::new().execute_on_dest_context_readonly_raw( + gas_limit, + to, + &function_call.function_name, + &function_call.arg_buffer, + ) + }); + + SendRawWrapper::::new().clean_return_data(); + + (raw_result, self.result_handler) + } + + pub fn sync_call_readonly(self) -> ::Unpacked { + let (raw_result, result_handler) = self.execute_sync_call_readonly_raw(); + let sync_raw_result = SyncCallRawResult(raw_result); + let tuple_result = result_handler.list_process_result(&sync_raw_result); + tuple_result.flatten_unpack() + } } impl From 1114009f96fb759ee634f9642ad7143ac03b6efb Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sun, 21 Apr 2024 20:19:35 +0300 Subject: [PATCH 367/461] cleanup --- .../esdt-contract-pair/first-contract/src/lib.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/contracts/feature-tests/composability/esdt-contract-pair/first-contract/src/lib.rs b/contracts/feature-tests/composability/esdt-contract-pair/first-contract/src/lib.rs index 7ce368781a..2d35ac5ea8 100644 --- a/contracts/feature-tests/composability/esdt-contract-pair/first-contract/src/lib.rs +++ b/contracts/feature-tests/composability/esdt-contract-pair/first-contract/src/lib.rs @@ -2,9 +2,9 @@ multiversx_sc::imports!(); -const ESDT_TRANSFER_STRING: &[u8] = b"ESDTTransfer"; -const SECOND_CONTRACT_ACCEPT_ESDT_PAYMENT: &[u8] = b"acceptEsdtPayment"; -const SECOND_CONTRACT_REJECT_ESDT_PAYMENT: &[u8] = b"rejectEsdtPayment"; +const ESDT_TRANSFER_STRING: &str = "ESDTTransfer"; +const SECOND_CONTRACT_ACCEPT_ESDT_PAYMENT: &str = "acceptEsdtPayment"; +const SECOND_CONTRACT_REJECT_ESDT_PAYMENT: &str = "rejectEsdtPayment"; #[multiversx_sc::contract] pub trait FirstContract { @@ -115,7 +115,7 @@ pub trait FirstContract { self.tx() .to(&second_contract_address) .gas(gas_left) - .raw_call(ManagedBuffer::from(SECOND_CONTRACT_ACCEPT_ESDT_PAYMENT)) + .raw_call(SECOND_CONTRACT_ACCEPT_ESDT_PAYMENT) .single_esdt(&expected_token_identifier, 0u64, &esdt_value) .transfer_execute(); } @@ -138,7 +138,7 @@ pub trait FirstContract { self.tx() .to(to) - .raw_call(ManagedBuffer::from(ESDT_TRANSFER_STRING)) + .raw_call(ESDT_TRANSFER_STRING) .arguments_raw(arg_buffer) .async_call_and_exit(); } From 68a6df617e3cbc1ef56e1aa3c6a251fc68d66846 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 22 Apr 2024 13:59:09 +0300 Subject: [PATCH 368/461] cleanup --- contracts/examples/adder/sc-config.toml | 3 - .../examples/multisig/src/adder_proxy.rs | 110 ------------------ 2 files changed, 113 deletions(-) delete mode 100644 contracts/examples/multisig/src/adder_proxy.rs diff --git a/contracts/examples/adder/sc-config.toml b/contracts/examples/adder/sc-config.toml index 091de3f7f6..b56f82b429 100644 --- a/contracts/examples/adder/sc-config.toml +++ b/contracts/examples/adder/sc-config.toml @@ -2,6 +2,3 @@ [[proxy]] path = "src/adder_proxy.rs" - -[[proxy]] -path = "../multisig/src/adder_proxy.rs" diff --git a/contracts/examples/multisig/src/adder_proxy.rs b/contracts/examples/multisig/src/adder_proxy.rs deleted file mode 100644 index 0b1b663669..0000000000 --- a/contracts/examples/multisig/src/adder_proxy.rs +++ /dev/null @@ -1,110 +0,0 @@ -// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. - -//////////////////////////////////////////////////// -////////////////// AUTO-GENERATED ////////////////// -//////////////////////////////////////////////////// - -#![allow(dead_code)] -#![allow(clippy::all)] - -use multiversx_sc::proxy_imports::*; - -pub struct AdderProxy; - -impl TxProxyTrait for AdderProxy -where - Env: TxEnv, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ - type TxProxyMethods = AdderProxyMethods; - - fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { - AdderProxyMethods { wrapped_tx: tx } - } -} - -pub struct AdderProxyMethods -where - Env: TxEnv, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ - wrapped_tx: Tx, -} - -#[rustfmt::skip] -impl AdderProxyMethods -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - Gas: TxGas, -{ - pub fn init< - Arg0: CodecInto>, - >( - self, - initial_value: Arg0, - ) -> TxProxyDeploy { - self.wrapped_tx - .raw_deploy() - .argument(&initial_value) - .original_result() - } -} - -#[rustfmt::skip] -impl AdderProxyMethods -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ - pub fn upgrade< - Arg0: CodecInto>, - >( - self, - initial_value: Arg0, - ) -> TxProxyUpgrade { - self.wrapped_tx - .raw_upgrade() - .argument(&initial_value) - .original_result() - } -} - -#[rustfmt::skip] -impl AdderProxyMethods -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ - pub fn sum( - self, - ) -> TxProxyCall> { - self.wrapped_tx - .raw_call("getSum") - .original_result() - } - - /// Add desired amount to the storage variable. - pub fn add< - Arg0: CodecInto>, - >( - self, - value: Arg0, - ) -> TxProxyCall { - self.wrapped_tx - .raw_call("add") - .argument(&value) - .original_result() - } -} From 5f03f836413342ece941d0eaf7c51b3d2ebba9eb Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Mon, 22 Apr 2024 14:44:28 +0200 Subject: [PATCH 369/461] optimization for transaction fetching for interactor and small fix for fetching esdt balances --- Cargo.lock | 1 + .../scenario/src/standalone/account_tool.rs | 2 +- framework/snippets/Cargo.toml | 1 + framework/snippets/src/interactor_retrieve.rs | 90 ++++++++----------- sdk/core/src/data/address.rs | 6 ++ sdk/core/src/data/transaction.rs | 14 +-- 6 files changed, 54 insertions(+), 60 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 32adcdf5bf..0b6d17acb1 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -1945,6 +1945,7 @@ dependencies = [ "log", "multiversx-sc-scenario", "multiversx-sdk", + "rand 0.8.5", "tokio", ] diff --git a/framework/scenario/src/standalone/account_tool.rs b/framework/scenario/src/standalone/account_tool.rs index 76ecd693a5..1ea1e2f6b4 100644 --- a/framework/scenario/src/standalone/account_tool.rs +++ b/framework/scenario/src/standalone/account_tool.rs @@ -76,7 +76,7 @@ pub fn set_account( for (_, esdt_balance) in account_esdt.iter() { account_state = account_state.esdt_balance( - esdt_balance.token_identifier.as_str(), + format!("str:{}", esdt_balance.token_identifier).as_str(), esdt_balance.balance.as_str(), ); } diff --git a/framework/snippets/Cargo.toml b/framework/snippets/Cargo.toml index d07d310522..4a2476136f 100644 --- a/framework/snippets/Cargo.toml +++ b/framework/snippets/Cargo.toml @@ -20,6 +20,7 @@ base64 = "0.21.5" log = "0.4.17" env_logger = "0.11" futures = "0.3" +rand = "0.8.5" [dependencies.multiversx-sc-scenario] version = "=0.49.0-alpha.3" diff --git a/framework/snippets/src/interactor_retrieve.rs b/framework/snippets/src/interactor_retrieve.rs index c19392095a..6dfa0c5085 100644 --- a/framework/snippets/src/interactor_retrieve.rs +++ b/framework/snippets/src/interactor_retrieve.rs @@ -1,64 +1,50 @@ use crate::Interactor; use log::info; use multiversx_sdk::data::transaction::TransactionOnNetwork; -use std::time::Duration; +use rand::Rng; +use std::time::{Duration, Instant}; -const TX_GET_RESULTS_NUM_RETRIES: usize = 8; -const EXTRA_WAITING_TIME_MS: Duration = Duration::from_millis(8000); -const WAITING_TIME_MS: Duration = Duration::from_secs(25); -const WAIT: u64 = 1000; +const INITIAL_BACKOFF_DELAY: f32 = 1.4; +const MAX_RETRIES: usize = 8; +const MAX_BACKOFF_DELAY: Duration = Duration::from_secs(6); impl Interactor { /// Retrieves a transaction from the network. pub(crate) async fn retrieve_tx_on_network(&self, tx_hash: String) -> TransactionOnNetwork { - let mut waiting_time_ms = 0; - let mut break_outer = false; - sleep(&mut waiting_time_ms, WAITING_TIME_MS).await; - - let tx = 'outer: loop { - let mut retries = TX_GET_RESULTS_NUM_RETRIES; - let mut wait = WAIT; - loop { - let tx_info_result = self.proxy.get_transaction_info_with_results(&tx_hash).await; - match tx_info_result { - Ok(tx) => { - if break_outer { - break 'outer tx; - } - - // reset waiting time - waiting_time_ms = WAITING_TIME_MS.as_millis() as u64; - - tokio::time::sleep(EXTRA_WAITING_TIME_MS).await; - break_outer = true; - + let mut rng = rand::thread_rng(); + let mut retries = 0; + let mut backoff_delay = Duration::from_secs_f32(INITIAL_BACKOFF_DELAY); + let start_time = Instant::now(); + + loop { + match self.proxy.get_transaction_info_with_results(&tx_hash).await { + Ok(tx) => { + info!("Transaction retrieved successfully: {:#?}", tx); + return tx; + }, + Err(err) => { + retries += 1; + if retries >= MAX_RETRIES { + info!("Transaction failed, max retries exceeded: {}", err); + println!("Transaction failed, max retries exceeded: {}", err); break; - }, - Err(err) => { - assert!( - retries > 0, - "still no answer after {TX_GET_RESULTS_NUM_RETRIES} retries" - ); - - info!( - "tx result fetch error after {} ms: {}", - self.waiting_time_ms, err - ); - retries -= 1; - sleep(&mut waiting_time_ms, Duration::from_millis(wait)).await; - wait *= 2; - }, - } + } + + let backoff_time = backoff_delay + .mul_f32(rng.gen_range(0.8..1.2)) + .min(MAX_BACKOFF_DELAY); + tokio::time::sleep(backoff_time).await; + backoff_delay *= 2; // exponential backoff + }, } - }; - - info!("tx with results: {:#?}", tx); - tx + } + + // retries have been exhausted + let elapsed_time = start_time.elapsed(); + println!( + "Fetching transaction failed and retries exhausted, returning default transaction. Total elapsed time: {:?}", + elapsed_time + ); + TransactionOnNetwork::default() } } - -/// Sleeps for the given duration and adds the duration to the waiting time. -pub async fn sleep(waiting_time_ms: &mut u64, duration: Duration) { - *waiting_time_ms += duration.as_millis() as u64; - tokio::time::sleep(duration).await; -} diff --git a/sdk/core/src/data/address.rs b/sdk/core/src/data/address.rs index 9612157326..8c4af1fb37 100644 --- a/sdk/core/src/data/address.rs +++ b/sdk/core/src/data/address.rs @@ -63,6 +63,12 @@ impl Debug for Address { } } +impl Default for Address { + fn default() -> Self { + Address::from_bytes([0u8; 32]) + } +} + impl Serialize for Address { fn serialize(&self, serializer: S) -> Result where diff --git a/sdk/core/src/data/transaction.rs b/sdk/core/src/data/transaction.rs index 2df6f37d87..ed0a51b8df 100644 --- a/sdk/core/src/data/transaction.rs +++ b/sdk/core/src/data/transaction.rs @@ -48,7 +48,7 @@ pub struct ResponseTxCost { } // TransactionOnNetwork holds a transaction's info entry in a hyper block -#[derive(Debug, Clone, Serialize, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize, Default)] #[serde(rename_all = "camelCase")] pub struct TransactionOnNetwork { #[serde(rename = "type")] @@ -67,19 +67,19 @@ pub struct TransactionOnNetwork { pub destination_shard: u32, pub block_nonce: u64, pub block_hash: String, - pub notarized_at_source_in_meta_nonce: u64, + pub notarized_at_source_in_meta_nonce: Option, #[serde(rename = "NotarizedAtSourceInMetaHash")] - pub notarized_at_source_in_meta_hash: String, - pub notarized_at_destination_in_meta_nonce: u64, - pub notarized_at_destination_in_meta_hash: String, + pub notarized_at_source_in_meta_hash: Option, + pub notarized_at_destination_in_meta_nonce: Option, + pub notarized_at_destination_in_meta_hash: Option, pub processing_type_on_destination: String, pub miniblock_type: String, pub miniblock_hash: String, pub timestamp: u64, pub data: Option, pub status: String, - pub hyperblock_nonce: u64, - pub hyperblock_hash: String, + pub hyperblock_nonce: Option, + pub hyperblock_hash: Option, pub smart_contract_results: Option>, pub logs: Option, } From dbf0e2b181536e2cfd7889323a82881884605d57 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Mon, 22 Apr 2024 16:47:04 +0200 Subject: [PATCH 370/461] cleanup and extra impls for AddressValue --- .../tests/price_aggregator_blackbox_test.rs | 36 ++++---- .../src/scenario/model/value/address_value.rs | 84 +++++++++++++++++++ 2 files changed, 102 insertions(+), 18 deletions(-) diff --git a/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs b/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs index c57e36711e..bd73790c0a 100644 --- a/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs +++ b/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs @@ -44,26 +44,24 @@ impl PriceAggregatorTestState { fn new() -> Self { let mut world = world(); - let mut set_state_step = SetStateStep::new() - .put_account(OWNER, Account::new().nonce(1)) - .new_address(OWNER_ADDRESS_EXPR, 1, PRICE_AGGREGATOR_ADDRESS_EXPR) - .block_timestamp(100); + world.account(OWNER).nonce(1); + world.current_block().block_timestamp(100); + + world.set_state_step(SetStateStep::new()).new_address( + OWNER_ADDRESS_EXPR, + 1, + PRICE_AGGREGATOR_ADDRESS_EXPR, + ); 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), - ); - + world.account(address_expr).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, @@ -104,7 +102,7 @@ impl PriceAggregatorTestState { for address in self.oracles.iter() { self.world .tx() - .from(&address.to_address()) + .from(address) .to(PRICE_AGGREGATOR) .typed(price_aggregator_proxy::PriceAggregatorProxy) .stake() @@ -138,7 +136,7 @@ impl PriceAggregatorTestState { fn submit(&mut self, from: &AddressValue, submission_timestamp: u64, price: u64) { self.world .tx() - .from(&from.to_address()) + .from(from) .to(PRICE_AGGREGATOR) .typed(price_aggregator_proxy::PriceAggregatorProxy) .submit( @@ -160,7 +158,7 @@ impl PriceAggregatorTestState { ) { self.world .tx() - .from(&from.to_address()) + .from(from) .to(PRICE_AGGREGATOR) .typed(price_aggregator_proxy::PriceAggregatorProxy) .submit( @@ -178,7 +176,7 @@ impl PriceAggregatorTestState { fn vote_slash_member(&mut self, from: &AddressValue, member_to_slash: Address) { self.world .tx() - .from(&from.to_address()) + .from(from) .to(PRICE_AGGREGATOR) .typed(price_aggregator_proxy::PriceAggregatorProxy) .vote_slash_member(member_to_slash) @@ -283,7 +281,8 @@ fn test_price_aggregator_submit_round_ok() { let current_timestamp = 110; state .world - .set_state_step(SetStateStep::new().block_timestamp(current_timestamp)); + .current_block() + .block_timestamp(current_timestamp); // submit second state.submit(&state.oracles[1].clone(), 101, 11_000); @@ -340,7 +339,8 @@ fn test_price_aggregator_discarded_round() { let current_timestamp = 100 + MAX_ROUND_DURATION_SECONDS + 1; state .world - .set_state_step(SetStateStep::new().block_timestamp(current_timestamp)); + .current_block() + .block_timestamp(current_timestamp); // submit second - this will discard the previous submission state.submit(&state.oracles[1].clone(), current_timestamp - 1, 11_000); @@ -378,7 +378,7 @@ fn test_price_aggregator_slashing() { state .world .tx() - .from(&state.oracles[0].to_address()) + .from(&state.oracles[0]) .to(PRICE_AGGREGATOR) .typed(price_aggregator_proxy::PriceAggregatorProxy) .slash_member(state.oracles[1].to_address()) diff --git a/framework/scenario/src/scenario/model/value/address_value.rs b/framework/scenario/src/scenario/model/value/address_value.rs index 1315a4fbd5..8564bb6e47 100644 --- a/framework/scenario/src/scenario/model/value/address_value.rs +++ b/framework/scenario/src/scenario/model/value/address_value.rs @@ -1,3 +1,7 @@ +use multiversx_sc::{ + api::ManagedTypeApi, + types::{AnnotatedValue, ManagedAddress, ManagedBuffer, TxEnv, TxFrom, TxFromSpecified}, +}; use std::fmt; use crate::multiversx_sc::types::{Address, AddressExpr, ScExpr}; @@ -151,3 +155,83 @@ impl From> for AddressValue { } } } + +impl From<&AddressValue> for ManagedAddress +where + M: ManagedTypeApi, +{ + #[inline] + fn from(address_value: &AddressValue) -> Self { + ManagedAddress::from_address(&address_value.value) + } +} + +impl TxFrom for AddressValue +where + Env: TxEnv, +{ + fn resolve_address(&self, _env: &Env) -> ManagedAddress { + self.into() + } +} + +impl AnnotatedValue> for AddressValue +where + Env: TxEnv, +{ + fn annotation(&self, _env: &Env) -> multiversx_sc::types::ManagedBuffer { + ManagedBuffer::from(self.original.to_string()) + } + + fn to_value(&self, _env: &Env) -> ManagedAddress { + ManagedAddress::from_address(&self.value) + } + + fn into_value(self, _env: &Env) -> ManagedAddress { + ManagedAddress::from_address(&self.value) + } + + fn with_value_ref(&self, _env: &Env, f: F) -> R + where + F: FnOnce(&ManagedAddress) -> R, + { + f(&ManagedAddress::from_address(&self.value)) + } +} + +impl AnnotatedValue> for &AddressValue +where + Env: TxEnv, +{ + fn annotation(&self, _env: &Env) -> multiversx_sc::types::ManagedBuffer { + ManagedBuffer::from(self.original.to_string()) + } + + fn to_value(&self, _env: &Env) -> ManagedAddress { + ManagedAddress::from_address(&self.value) + } + + fn into_value(self, _env: &Env) -> ManagedAddress { + ManagedAddress::from_address(&self.value) + } + + fn with_value_ref(&self, _env: &Env, f: F) -> R + where + F: FnOnce(&ManagedAddress) -> R, + { + f(&ManagedAddress::from_address(&self.value)) + } +} + +impl TxFromSpecified for AddressValue where Env: TxEnv {} + +impl TxFrom for &AddressValue +where + Env: TxEnv, +{ + fn resolve_address(&self, _env: &Env) -> ManagedAddress { + ManagedAddress::from_address(&self.value) + } +} + +impl TxFromSpecified for &AddressValue where Env: TxEnv {} From 4be479b85b6f8d18eff7691efc7aadc35115b0b6 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Mon, 22 Apr 2024 18:51:01 +0200 Subject: [PATCH 371/461] #[type_abi] for structs and proxy regen --- contracts/core/price-aggregator/src/events.rs | 3 ++- .../price-aggregator/src/price_aggregator_data.rs | 12 ++++++++---- .../price-aggregator/tests/price_aggregator_proxy.rs | 4 ++-- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/contracts/core/price-aggregator/src/events.rs b/contracts/core/price-aggregator/src/events.rs index f2212815c9..d485e622db 100644 --- a/contracts/core/price-aggregator/src/events.rs +++ b/contracts/core/price-aggregator/src/events.rs @@ -3,7 +3,8 @@ multiversx_sc::derive_imports!(); use crate::price_aggregator_data::{TimestampedPrice, TokenPair}; -#[derive(TypeAbi, TopEncode)] +#[type_abi] +#[derive(TopEncode)] pub struct NewRoundEvent { price: BigUint, timestamp: u64, diff --git a/contracts/core/price-aggregator/src/price_aggregator_data.rs b/contracts/core/price-aggregator/src/price_aggregator_data.rs index 13249216ba..c348b67d22 100644 --- a/contracts/core/price-aggregator/src/price_aggregator_data.rs +++ b/contracts/core/price-aggregator/src/price_aggregator_data.rs @@ -1,13 +1,15 @@ multiversx_sc::imports!(); multiversx_sc::derive_imports!(); -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi, Clone)] +#[type_abi] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, Clone)] pub struct TokenPair { pub from: ManagedBuffer, pub to: ManagedBuffer, } -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +#[type_abi] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct PriceFeed { pub round_id: u32, pub from: ManagedBuffer, @@ -17,14 +19,16 @@ pub struct PriceFeed { pub decimals: u8, } -#[derive(TopEncode, TopDecode, TypeAbi, Debug, PartialEq, Eq)] +#[type_abi] +#[derive(TopEncode, TopDecode, Debug, PartialEq, Eq)] pub struct TimestampedPrice { pub price: BigUint, pub timestamp: u64, pub decimals: u8, } -#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi, Debug, PartialEq, Eq)] +#[type_abi] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, Debug, PartialEq, Eq)] pub struct OracleStatus { pub accepted_submissions: u64, pub total_submissions: u64, diff --git a/contracts/core/price-aggregator/tests/price_aggregator_proxy.rs b/contracts/core/price-aggregator/tests/price_aggregator_proxy.rs index c7b05acaf5..fbdab94593 100644 --- a/contracts/core/price-aggregator/tests/price_aggregator_proxy.rs +++ b/contracts/core/price-aggregator/tests/price_aggregator_proxy.rs @@ -340,7 +340,7 @@ where } } -#[derive(TopEncode, TopDecode)] +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct PriceFeed where Api: ManagedTypeApi, @@ -353,7 +353,7 @@ where pub decimals: u8, } -#[derive(TopEncode, TopDecode)] +#[derive(TopEncode)] pub struct NewRoundEvent where Api: ManagedTypeApi, From 99d6177d3d64f17af00ee3f137bded51d33af8b4 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 22 Apr 2024 21:54:36 +0300 Subject: [PATCH 372/461] unified syntax - removed method to_caller --- contracts/feature-tests/composability/vault/src/vault.rs | 2 +- framework/base/src/types/interaction/tx.rs | 9 +-------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/contracts/feature-tests/composability/vault/src/vault.rs b/contracts/feature-tests/composability/vault/src/vault.rs index a14da93521..1fb32cccdd 100644 --- a/contracts/feature-tests/composability/vault/src/vault.rs +++ b/contracts/feature-tests/composability/vault/src/vault.rs @@ -222,7 +222,7 @@ pub trait Vault { )); } - self.tx().to_caller().payment(new_tokens).transfer(); + self.tx().to(ToCaller).payment(new_tokens).transfer(); } #[event("accept_funds")] diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 98d88e499a..c7a72eaa75 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -1,11 +1,9 @@ use crate::{ api::CallTypeApi, - contract_base::BlockchainWrapper, types::{ BigUint, CodeMetadata, EgldOrEsdtTokenIdentifier, EgldOrEsdtTokenPayment, EgldOrEsdtTokenPaymentRefs, EgldOrMultiEsdtPayment, EsdtTokenPayment, EsdtTokenPaymentRefs, - ManagedAddress, ManagedBuffer, ManagedOption, ManagedVec, MultiEsdtPayment, - TokenIdentifier, + ManagedBuffer, ManagedOption, ManagedVec, MultiEsdtPayment, TokenIdentifier, }, }; @@ -151,11 +149,6 @@ where result_handler: self.result_handler, } } - - pub fn to_caller(self) -> Tx, Payment, Gas, Data, RH> { - let caller = BlockchainWrapper::::new().get_caller(); - self.to(caller) - } } impl Tx From a2539b66b3994e98e084658a658fa6e7d2ff77f2 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Mon, 22 Apr 2024 23:32:01 +0300 Subject: [PATCH 373/461] unified syntax - migrate rewards distribution --- .../rewards-distribution/sc-config.toml | 5 + .../src/rewards_distribution.rs | 7 +- .../src/rewards_distribution_proxy.rs | 233 +++++++++++++++ .../tests/mock_seed_nft_minter_proxy.rs | 86 ++++++ .../rewards_distribution_blackbox_test.rs | 276 ++++++++---------- 5 files changed, 455 insertions(+), 152 deletions(-) create mode 100644 contracts/examples/rewards-distribution/sc-config.toml create mode 100644 contracts/examples/rewards-distribution/src/rewards_distribution_proxy.rs create mode 100644 contracts/examples/rewards-distribution/tests/mock_seed_nft_minter_proxy.rs diff --git a/contracts/examples/rewards-distribution/sc-config.toml b/contracts/examples/rewards-distribution/sc-config.toml new file mode 100644 index 0000000000..888d97a79f --- /dev/null +++ b/contracts/examples/rewards-distribution/sc-config.toml @@ -0,0 +1,5 @@ +[[proxy]] +path = "src/rewards_distribution_proxy.rs" +[[proxy.path-rename]] +from = "multiversx_sc::types::io::operation_completion_status::" +to = "" diff --git a/contracts/examples/rewards-distribution/src/rewards_distribution.rs b/contracts/examples/rewards-distribution/src/rewards_distribution.rs index 880b4ed835..a964d8e63b 100644 --- a/contracts/examples/rewards-distribution/src/rewards_distribution.rs +++ b/contracts/examples/rewards-distribution/src/rewards_distribution.rs @@ -5,6 +5,7 @@ use multiversx_sc_modules::ongoing_operation::{ CONTINUE_OP, DEFAULT_MIN_GAS_TO_SAVE_PROGRESS, STOP_OP, }; +pub mod rewards_distribution_proxy; pub mod seed_nft_minter_proxy; type Epoch = u64; @@ -13,13 +14,15 @@ pub const EPOCHS_IN_WEEK: Epoch = 7; pub const MAX_PERCENTAGE: u64 = 100_000; // 100% pub const DIVISION_SAFETY_CONSTANT: u64 = 1_000_000_000_000; -#[derive(ManagedVecItem, NestedEncode, NestedDecode, TypeAbi)] +#[type_abi] +#[derive(ManagedVecItem, NestedEncode, NestedDecode)] pub struct Bracket { pub index_percent: u64, pub bracket_reward_percent: u64, } -#[derive(ManagedVecItem, NestedEncode, NestedDecode, TypeAbi)] +#[type_abi] +#[derive(ManagedVecItem, NestedEncode, NestedDecode)] pub struct ComputedBracket { pub end_index: u64, pub nft_reward_percent: BigUint, diff --git a/contracts/examples/rewards-distribution/src/rewards_distribution_proxy.rs b/contracts/examples/rewards-distribution/src/rewards_distribution_proxy.rs new file mode 100644 index 0000000000..4a02c6c098 --- /dev/null +++ b/contracts/examples/rewards-distribution/src/rewards_distribution_proxy.rs @@ -0,0 +1,233 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(dead_code)] +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +pub struct RewardsDistributionProxy; + +impl TxProxyTrait for RewardsDistributionProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = RewardsDistributionProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + RewardsDistributionProxyMethods { wrapped_tx: tx } + } +} + +pub struct RewardsDistributionProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl RewardsDistributionProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + seed_nft_minter_address: Arg0, + brackets: Arg1, + ) -> TxProxyDeploy { + self.wrapped_tx + .raw_deploy() + .argument(&seed_nft_minter_address) + .argument(&brackets) + .original_result() + } +} + +#[rustfmt::skip] +impl RewardsDistributionProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn deposit_royalties( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("depositRoyalties") + .original_result() + } + + pub fn raffle( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("raffle") + .original_result() + } + + pub fn claim_rewards< + Arg0: CodecInto, + Arg1: CodecInto, + Arg2: CodecInto, u64>>>, + >( + self, + raffle_id_start: Arg0, + raffle_id_end: Arg1, + reward_tokens: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("claimRewards") + .argument(&raffle_id_start) + .argument(&raffle_id_end) + .argument(&reward_tokens) + .original_result() + } + + pub fn compute_claimable_amount< + Arg0: CodecInto, + Arg1: CodecInto>, + Arg2: CodecInto, + Arg3: CodecInto, + >( + self, + raffle_id: Arg0, + reward_token_id: Arg1, + reward_token_nonce: Arg2, + nft_nonce: Arg3, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call("computeClaimableAmount") + .argument(&raffle_id) + .argument(&reward_token_id) + .argument(&reward_token_nonce) + .argument(&nft_nonce) + .original_result() + } + + pub fn raffle_id( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("getRaffleId") + .original_result() + } + + pub fn completed_raffle_id_count( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("getCompletedRaffleIdCount") + .original_result() + } + + pub fn royalties< + Arg0: CodecInto, + Arg1: CodecInto>, + Arg2: CodecInto, + >( + self, + raffle_id: Arg0, + reward_token_id: Arg1, + reward_token_nonce: Arg2, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call("getRoyalties") + .argument(&raffle_id) + .argument(&reward_token_id) + .argument(&reward_token_nonce) + .original_result() + } + + pub fn nft_reward_percent< + Arg0: CodecInto, + Arg1: CodecInto, + >( + self, + raffle_id: Arg0, + nft_nonce: Arg1, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call("getNftRewardPercent") + .argument(&raffle_id) + .argument(&nft_nonce) + .original_result() + } + + pub fn was_claimed< + Arg0: CodecInto, + Arg1: CodecInto>, + Arg2: CodecInto, + Arg3: CodecInto, + >( + self, + raffle_id: Arg0, + reward_token_id: Arg1, + reward_token_nonce: Arg2, + nft_nonce: Arg3, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("getWasClaimed") + .argument(&raffle_id) + .argument(&reward_token_id) + .argument(&reward_token_nonce) + .argument(&nft_nonce) + .original_result() + } + + pub fn seed_nft_minter_address( + self, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call("getSeedNftMinterAddress") + .original_result() + } + + pub fn brackets( + self, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call("getBrackets") + .original_result() + } + + pub fn last_raffle_epoch( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("getLastRaffleEpoch") + .original_result() + } + + pub fn nft_token_id( + self, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call("getNftTokenId") + .original_result() + } +} + +#[derive(ManagedVecItem, NestedEncode, NestedDecode)] +pub struct Bracket { + pub index_percent: u64, + pub bracket_reward_percent: u64, +} diff --git a/contracts/examples/rewards-distribution/tests/mock_seed_nft_minter_proxy.rs b/contracts/examples/rewards-distribution/tests/mock_seed_nft_minter_proxy.rs new file mode 100644 index 0000000000..6fd95b934c --- /dev/null +++ b/contracts/examples/rewards-distribution/tests/mock_seed_nft_minter_proxy.rs @@ -0,0 +1,86 @@ +use multiversx_sc::proxy_imports::*; + +pub struct MockSeedNftMinterProxy; + +impl TxProxyTrait for MockSeedNftMinterProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = MockSeedNftMinterProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + MockSeedNftMinterProxyMethods { wrapped_tx: tx } + } +} + +pub struct MockSeedNftMinterProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl MockSeedNftMinterProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init< + Arg0: CodecInto>, + >( + self, + nft_token_id: Arg0, + ) -> TxProxyDeploy { + self.wrapped_tx + .raw_deploy() + .argument(&nft_token_id) + .original_result() + } +} + +#[rustfmt::skip] +impl MockSeedNftMinterProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn set_nft_count< + Arg0: CodecInto, + >( + self, + nft_count: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("setNftCount") + .argument(&nft_count) + .original_result() + } + + pub fn nft_count( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("getNftCount") + .original_result() + } + + pub fn nft_token_id( + self, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call("getNftTokenId") + .original_result() + } +} diff --git a/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs b/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs index 4380f0122f..a670ef91ca 100644 --- a/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs +++ b/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs @@ -1,37 +1,37 @@ mod mock_seed_nft_minter; +mod mock_seed_nft_minter_proxy; mod utils; use multiversx_sc_scenario::imports::*; use std::iter::zip; -use crate::mock_seed_nft_minter::ProxyTrait as _; use rewards_distribution::{ - Bracket, ContractObj, ProxyTrait as _, RewardsDistribution, DIVISION_SAFETY_CONSTANT, + rewards_distribution_proxy, ContractObj, ProxyTrait as _, RewardsDistribution, + DIVISION_SAFETY_CONSTANT, }; const NFT_TOKEN_ID: &[u8] = b"NFT-123456"; const NFT_TOKEN_ID_EXPR: &str = "str:NFT-123456"; -const ALICE_ADDRESS_EXPR: &str = "address:alice"; -const OWNER_ADDRESS_EXPR: &str = "address:owner"; -const REWARDS_DISTRIBUTION_ADDRESS_EXPR: &str = "sc:rewards-distribution"; -const REWARDS_DISTRIBUTION_PATH_EXPR: &str = "mxsc:output/rewards-distribution.mxsc.json"; -const SEED_NFT_MINTER_ADDRESS_EXPR: &str = "sc:seed-nft-minter"; -const SEED_NFT_MINTER_PATH_EXPR: &str = "mxsc:../seed-nft-minter/output/seed-nft-minter.mxsc.json"; +const ALICE_ADDRESS_EXPR: AddressExpr = AddressExpr("alice"); +const OWNER_ADDRESS_EXPR: AddressExpr = AddressExpr("owner"); +const REWARDS_DISTRIBUTION_ADDRESS_EXPR: ScExpr = ScExpr("rewards-distribution"); +const REWARDS_DISTRIBUTION_PATH_EXPR: MxscExpr = MxscExpr("output/rewards-distribution.mxsc.json"); +const SEED_NFT_MINTER_ADDRESS_EXPR: ScExpr = ScExpr("seed-nft-minter"); +const SEED_NFT_MINTER_PATH_EXPR: MxscExpr = + MxscExpr("../seed-nft-minter/output/seed-nft-minter.mxsc.json"); type RewardsDistributionContract = ContractInfo>; -type SeedNFTMinterContract = ContractInfo>; fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); - blockchain.set_current_dir_from_workspace("contracts/examples/rewards-distribution"); blockchain.register_contract( - REWARDS_DISTRIBUTION_PATH_EXPR, + REWARDS_DISTRIBUTION_PATH_EXPR.eval_to_expr().as_str(), rewards_distribution::ContractBuilder, ); blockchain.register_contract( - SEED_NFT_MINTER_PATH_EXPR, + SEED_NFT_MINTER_PATH_EXPR.eval_to_expr().as_str(), mock_seed_nft_minter::ContractBuilder, ); blockchain @@ -39,8 +39,6 @@ fn world() -> ScenarioWorld { struct RewardsDistributionTestState { world: ScenarioWorld, - seed_nft_minter_address: Address, - seed_nft_minter_contract: SeedNFTMinterContract, rewards_distribution_contract: RewardsDistributionContract, rewards_distribution_whitebox: WhiteboxContract>, } @@ -49,13 +47,8 @@ impl RewardsDistributionTestState { fn new() -> Self { let mut world = world(); - world.set_state_step( - SetStateStep::new().put_account(OWNER_ADDRESS_EXPR, Account::new().nonce(1)), - ); - - let seed_nft_minter_address = AddressValue::from(SEED_NFT_MINTER_ADDRESS_EXPR).to_address(); + world.account(OWNER_ADDRESS_EXPR).nonce(1); - let seed_nft_minter_contract = SeedNFTMinterContract::new(SEED_NFT_MINTER_ADDRESS_EXPR); let rewards_distribution_contract = RewardsDistributionContract::new(REWARDS_DISTRIBUTION_ADDRESS_EXPR); let rewards_distribution_whitebox = WhiteboxContract::new( @@ -65,38 +58,32 @@ impl RewardsDistributionTestState { Self { world, - seed_nft_minter_address, - seed_nft_minter_contract, rewards_distribution_contract, rewards_distribution_whitebox, } } fn deploy_seed_nft_minter_contract(&mut self) -> &mut Self { - let seed_nft_miinter_code = self.world.code_expression(SEED_NFT_MINTER_PATH_EXPR); - - self.world.sc_deploy( - ScDeployStep::new() - .from(OWNER_ADDRESS_EXPR) - .code(seed_nft_miinter_code) - .call( - self.seed_nft_minter_contract - .init(TokenIdentifier::from_esdt_bytes(NFT_TOKEN_ID)), - ), - ); - - self.world.sc_call( - ScCallStep::new() - .from(OWNER_ADDRESS_EXPR) - .call(self.seed_nft_minter_contract.set_nft_count(10_000u64)), - ); + self.world + .tx() + .from(OWNER_ADDRESS_EXPR) + .typed(mock_seed_nft_minter_proxy::MockSeedNftMinterProxy) + .init(TokenIdentifier::from_esdt_bytes(NFT_TOKEN_ID)) + .code(SEED_NFT_MINTER_PATH_EXPR) + .run(); + + self.world + .tx() + .from(OWNER_ADDRESS_EXPR) + .to(SEED_NFT_MINTER_ADDRESS_EXPR) + .typed(mock_seed_nft_minter_proxy::MockSeedNftMinterProxy) + .set_nft_count(10_000u64) + .run(); self } fn deploy_rewards_distribution_contract(&mut self) -> &mut Self { - let rewards_distribution_code = self.world.code_expression(REWARDS_DISTRIBUTION_PATH_EXPR); - let brackets_vec = &[ (10, 2_000), (90, 6_000), @@ -105,22 +92,20 @@ impl RewardsDistributionTestState { (25_000, 35_000), (72_000, 40_000), ]; - let mut brackets = ManagedVec::::new(); + let mut brackets = ManagedVec::new(); for (index_percent, bracket_reward_percent) in brackets_vec.iter().cloned() { - brackets.push(Bracket { + brackets.push(rewards_distribution_proxy::Bracket { index_percent, bracket_reward_percent, }); } - self.world.sc_deploy( - ScDeployStep::new() - .from(OWNER_ADDRESS_EXPR) - .code(rewards_distribution_code) - .call( - self.rewards_distribution_contract - .init(self.seed_nft_minter_address.clone(), brackets), - ), - ); + self.world + .tx() + .from(OWNER_ADDRESS_EXPR) + .typed(rewards_distribution_proxy::RewardsDistributionProxy) + .init(SEED_NFT_MINTER_ADDRESS_EXPR.to_address(), brackets) + .code(REWARDS_DISTRIBUTION_PATH_EXPR) + .run(); self } @@ -130,18 +115,17 @@ impl RewardsDistributionTestState { fn test_compute_brackets() { let mut state = RewardsDistributionTestState::new(); - let rewards_distribution_code = state.world.code_expression(REWARDS_DISTRIBUTION_PATH_EXPR); + let rewards_distribution_code = state + .world + .code_expression(REWARDS_DISTRIBUTION_PATH_EXPR.eval_to_expr().as_str()); - state.world.set_state_step( - SetStateStep::new().put_account( - REWARDS_DISTRIBUTION_ADDRESS_EXPR, - Account::new() - .nonce(1) - .owner(OWNER_ADDRESS_EXPR) - .code(rewards_distribution_code) - .balance("0"), - ), - ); + state + .world + .account(REWARDS_DISTRIBUTION_ADDRESS_EXPR) + .nonce(1) + .owner(OWNER_ADDRESS_EXPR) + .code(rewards_distribution_code) + .balance("0"); state.world.whitebox_call( &state.rewards_distribution_whitebox, @@ -182,24 +166,30 @@ fn test_raffle_and_claim() { let mut state = RewardsDistributionTestState::new(); let nft_nonces: [u64; 6] = [1, 2, 3, 4, 5, 6]; - let nft_payments: Vec = nft_nonces - .iter() - .map(|nonce| TxESDT { - esdt_token_identifier: NFT_TOKEN_ID.into(), - nonce: (*nonce).into(), - esdt_value: 1u64.into(), - }) - .collect(); - - let mut alice_account = Account::new().nonce(1).balance("2_070_000_000"); - for nonce in nft_nonces.iter() { - alice_account = - alice_account.esdt_nft_balance(NFT_TOKEN_ID_EXPR, *nonce, "1", Option::<&[u8]>::None); + let mut nft_payments = ManagedVec::new(); + for nonce in nft_nonces.into_iter() { + let payment = EsdtTokenPayment::new(NFT_TOKEN_ID.into(), nonce, 1u64.into()); + nft_payments.push(payment); + } + + { + let mut account_setter = state + .world + .account(ALICE_ADDRESS_EXPR) + .nonce(1) + .balance("2_070_000_000"); + for nft_nonce in nft_nonces { + account_setter = account_setter.esdt_nft_balance( + NFT_TOKEN_ID_EXPR, + nft_nonce, + "1", + Option::<&[u8]>::None, + ); + } } state.world.set_state_step( SetStateStep::new() - .put_account(ALICE_ADDRESS_EXPR, alice_account) .new_address(OWNER_ADDRESS_EXPR, 1, SEED_NFT_MINTER_ADDRESS_EXPR) .new_address(OWNER_ADDRESS_EXPR, 3, REWARDS_DISTRIBUTION_ADDRESS_EXPR), ); @@ -209,12 +199,15 @@ fn test_raffle_and_claim() { .deploy_rewards_distribution_contract(); // deposit royalties - state.world.sc_call( - ScCallStep::new() - .from(ALICE_ADDRESS_EXPR) - .egld_value("2_070_000_000") - .call(state.rewards_distribution_contract.deposit_royalties()), - ); + state + .world + .tx() + .from(ALICE_ADDRESS_EXPR) + .to(REWARDS_DISTRIBUTION_ADDRESS_EXPR) + .typed(rewards_distribution_proxy::RewardsDistributionProxy) + .deposit_royalties() + .egld(2_070_000_000) + .run(); // run the raffle state.world.sc_call( @@ -228,19 +221,16 @@ fn test_raffle_and_claim() { let mut rewards: Vec> = Vec::new(); // post-raffle reward amount frequency checksstate for nonce in 1u64..=10_000u64 { - state.world.sc_call_use_result( - ScCallStep::new().from(ALICE_ADDRESS_EXPR).call( - state - .rewards_distribution_contract - .compute_claimable_amount( - 0u64, - &EgldOrEsdtTokenIdentifier::egld(), - 0u64, - nonce, - ), - ), - |r: TypedResponse>| rewards.push(r.result.unwrap()), - ); + let reward = state + .world + .tx() + .from(ALICE_ADDRESS_EXPR) + .to(REWARDS_DISTRIBUTION_ADDRESS_EXPR) + .typed(rewards_distribution_proxy::RewardsDistributionProxy) + .compute_claimable_amount(0u64, &EgldOrEsdtTokenIdentifier::egld(), 0u64, nonce) + .returns(ReturnsResult) + .run(); + rewards.push(reward); } assert_eq!(rewards.len() as u64, 10_000u64); @@ -272,21 +262,15 @@ fn test_raffle_and_claim() { let expected_rewards = [114_999, 114_999, 114_999, 828_000, 114_999, 114_999]; for (nonce, expected_reward) in std::iter::zip(nft_nonces, expected_rewards) { - state.world.sc_call_use_result( - ScCallStep::new().from(ALICE_ADDRESS_EXPR).call( - state - .rewards_distribution_contract - .compute_claimable_amount( - 0u64, - &EgldOrEsdtTokenIdentifier::egld(), - 0u64, - nonce, - ), - ), - |r: TypedResponse>| { - assert_eq!(r.result.unwrap().to_u64().unwrap(), expected_reward); - }, - ); + state + .world + .tx() + .from(ALICE_ADDRESS_EXPR) + .to(REWARDS_DISTRIBUTION_ADDRESS_EXPR) + .typed(rewards_distribution_proxy::RewardsDistributionProxy) + .compute_claimable_amount(0u64, &EgldOrEsdtTokenIdentifier::egld(), 0u64, nonce) + .returns(ExpectValue(expected_reward)) + .run(); } // claim rewards @@ -295,41 +279,36 @@ fn test_raffle_and_claim() { MultiValue2, u64>, > = MultiValueEncoded::new(); reward_tokens.push((EgldOrEsdtTokenIdentifier::egld(), 0).into()); - state.world.sc_call( - ScCallStep::new() - .from(ALICE_ADDRESS_EXPR) - .multi_esdt_transfer(nft_payments.clone()) - .call( - state - .rewards_distribution_contract - .claim_rewards(0u64, 0u64, reward_tokens), - ), - ); + state + .world + .tx() + .from(ALICE_ADDRESS_EXPR) + .to(REWARDS_DISTRIBUTION_ADDRESS_EXPR) + .typed(rewards_distribution_proxy::RewardsDistributionProxy) + .claim_rewards(0u64, 0u64, reward_tokens) + .with_multi_token_transfer(nft_payments.clone()) + .run(); // check that the rewards were claimed for nonce in nft_nonces.iter() { - state.world.sc_query( - ScQueryStep::new() - .call(state.rewards_distribution_contract.was_claimed( - 0u64, - &EgldOrEsdtTokenIdentifier::egld(), - 0u64, - nonce, - )) - .expect_value(SingleValue::from(true)), - ); + state + .world + .query() + .to(REWARDS_DISTRIBUTION_ADDRESS_EXPR) + .typed(rewards_distribution_proxy::RewardsDistributionProxy) + .was_claimed(0u64, &EgldOrEsdtTokenIdentifier::egld(), 0u64, nonce) + .returns(ExpectValue(true)) + .run(); } // confirm the received amount matches the sum of the queried rewards let alice_balance_after_claim: u64 = expected_rewards.iter().sum(); - let balance_expr = alice_balance_after_claim.to_string(); + let balance_expr: &str = &alice_balance_after_claim.to_string(); state .world - .check_state_step(CheckStateStep::new().put_account( - ALICE_ADDRESS_EXPR, - CheckAccount::new().balance(balance_expr.as_str()), - )); + .check_account(ALICE_ADDRESS_EXPR) + .balance(balance_expr); // a second claim with the same nfts should succeed, but return no more rewards let mut reward_tokens: MultiValueEncoded< @@ -337,21 +316,18 @@ fn test_raffle_and_claim() { MultiValue2, u64>, > = MultiValueEncoded::new(); reward_tokens.push((EgldOrEsdtTokenIdentifier::egld(), 0).into()); - state.world.sc_call( - ScCallStep::new() - .from(ALICE_ADDRESS_EXPR) - .multi_esdt_transfer(nft_payments) - .call( - state - .rewards_distribution_contract - .claim_rewards(0u64, 0u64, reward_tokens), - ), - ); + state + .world + .tx() + .from(ALICE_ADDRESS_EXPR) + .to(REWARDS_DISTRIBUTION_ADDRESS_EXPR) + .typed(rewards_distribution_proxy::RewardsDistributionProxy) + .claim_rewards(0u64, 0u64, reward_tokens) + .with_multi_token_transfer(nft_payments) + .run(); state .world - .check_state_step(CheckStateStep::new().put_account( - ALICE_ADDRESS_EXPR, - CheckAccount::new().balance(balance_expr.as_str()), - )); + .check_account(ALICE_ADDRESS_EXPR) + .balance(balance_expr); } From ccde5de2dd0977a9bb2f74b9d7507081fa20691b Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Mon, 22 Apr 2024 23:36:03 +0300 Subject: [PATCH 374/461] fix clippy --- .../tests/mock_seed_nft_minter_proxy.rs | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/contracts/examples/rewards-distribution/tests/mock_seed_nft_minter_proxy.rs b/contracts/examples/rewards-distribution/tests/mock_seed_nft_minter_proxy.rs index 6fd95b934c..22d9e055cd 100644 --- a/contracts/examples/rewards-distribution/tests/mock_seed_nft_minter_proxy.rs +++ b/contracts/examples/rewards-distribution/tests/mock_seed_nft_minter_proxy.rs @@ -67,20 +67,4 @@ where .argument(&nft_count) .original_result() } - - pub fn nft_count( - self, - ) -> TxProxyCall { - self.wrapped_tx - .raw_call("getNftCount") - .original_result() - } - - pub fn nft_token_id( - self, - ) -> TxProxyCall> { - self.wrapped_tx - .raw_call("getNftTokenId") - .original_result() - } } From 48cfe2a9712a1d289d1d9a3db42d460cf9ae2e30 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 23 Apr 2024 02:02:03 +0300 Subject: [PATCH 375/461] unified syntax - new address in deploy tx --- .../adder/tests/adder_blackbox_test.rs | 3 +- .../multisig/tests/multisig_blackbox_test.rs | 23 ++++-------- .../scenario-tester/tests/st_blackbox_test.rs | 2 +- framework/base/src/types/interaction/tx.rs | 36 +++++++++++++++---- .../base/src/types/interaction/tx_env.rs | 9 +++++ .../src/facade/world_tx/scenario_exec_call.rs | 30 ++++++++++++++-- .../scenario/tx_to_step/step_annotation.rs | 4 +-- .../scenario/tx_to_step/tx_to_step_call.rs | 4 +-- .../scenario/tx_to_step/tx_to_step_deploy.rs | 2 +- .../scenario/tx_to_step/tx_to_step_query.rs | 2 +- .../tx_to_step/tx_to_step_transfer.rs | 4 +-- 11 files changed, 82 insertions(+), 37 deletions(-) diff --git a/contracts/examples/adder/tests/adder_blackbox_test.rs b/contracts/examples/adder/tests/adder_blackbox_test.rs index 9c6dc26dd5..9ca51ccbeb 100644 --- a/contracts/examples/adder/tests/adder_blackbox_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_test.rs @@ -24,14 +24,13 @@ fn adder_blackbox() { world.account(OWNER).nonce(1); - world.new_address(OWNER, 1, SC_ADDER); - let new_address = world .tx() .from(OWNER) .typed(adder_proxy::AdderProxy) .init(5u32) .code(CODE_EXPR) + .new_address(SC_ADDER) .returns(ReturnsNewAddress) .run(); diff --git a/contracts/examples/multisig/tests/multisig_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_blackbox_test.rs index 22a4219fd4..5be8e9d52b 100644 --- a/contracts/examples/multisig/tests/multisig_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_blackbox_test.rs @@ -50,18 +50,6 @@ impl MultisigTestState { .account(ADDER_OWNER_ADDRESS_EXPR) .nonce(1); - world.set_state_step(SetStateStep::new().new_address( - OWNER_ADDRESS_EXPR, - 1, - SC_MULTISIG_EXPR, - )); - - world.set_state_step(SetStateStep::new().new_address( - ADDER_OWNER_ADDRESS_EXPR, - 1, - SC_ADDER_EXPR, - )); - Self { world } } @@ -74,6 +62,7 @@ impl MultisigTestState { .typed(multisig_proxy::MultisigProxy) .init(QUORUM_SIZE, board_members) .code(MULTISIG_CODE_EXPR) + .new_address(SC_MULTISIG_EXPR) .run(); let action_id: usize = self @@ -101,6 +90,7 @@ impl MultisigTestState { .typed(adder_proxy::AdderProxy) .init(5u64) .code(ADDER_CODE_EXPR) + .new_address(SC_ADDER_EXPR) .run(); } @@ -555,11 +545,10 @@ fn test_deploy_and_upgrade_from_source() { state.deploy_multisig_contract().deploy_adder_contract(); let new_adder_address_expr: ScExpr = ScExpr("new-adder"); - state.world.set_state_step(SetStateStep::new().new_address( - SC_MULTISIG_EXPR, - 0, - new_adder_address_expr, - )); + + state + .world + .new_address(SC_MULTISIG_EXPR, 0, new_adder_address_expr); let action_id = state.propose_sc_deploy_from_source( 0u64, diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs index de877fb76b..1af150a76f 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs @@ -51,7 +51,7 @@ fn st_blackbox() { .esdt_balance("str:TOKEN-123456", "500") .commit(); - world.set_state_step(SetStateStep::new().new_address(owner_address, 1, "sc:scenario-tester")); + world.new_address(owner_address, 1, "sc:scenario-tester"); let new_address = world .tx() diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 98d88e499a..ca5beddb0a 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -12,12 +12,13 @@ use crate::{ use multiversx_sc_codec::TopEncodeMulti; use super::{ - contract_deploy::UNSPECIFIED_GAS_LIMIT, Code, ContractCallBase, ContractCallNoPayment, - ContractCallWithEgld, ContractDeploy, DeployCall, Egld, EgldPayment, ExplicitGas, FromSource, - FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, RHListAppendNoRet, - RHListAppendRet, RHListItem, TxCodeSource, TxCodeValue, TxData, TxDataFunctionCall, - TxEgldValue, TxEnv, TxFrom, TxFromSourceValue, TxGas, TxGasValue, TxPayment, TxPaymentEgldOnly, - TxProxyTrait, TxResultHandler, TxScEnv, TxTo, TxToSpecified, UpgradeCall, + contract_deploy::UNSPECIFIED_GAS_LIMIT, AnnotatedValue, Code, ContractCallBase, + ContractCallNoPayment, ContractCallWithEgld, ContractDeploy, DeployCall, Egld, EgldPayment, + ExplicitGas, FromSource, FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, + RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, TxCodeValue, TxData, + TxDataFunctionCall, TxEgldValue, TxEnv, TxEnvMockDeployAddress, TxFrom, TxFromSourceValue, + TxFromSpecified, TxGas, TxGasValue, TxPayment, TxPaymentEgldOnly, TxProxyTrait, + TxResultHandler, TxScEnv, TxTo, TxToSpecified, UpgradeCall, }; #[must_use] @@ -827,6 +828,29 @@ where } } +impl + Tx, RH> +where + Env: TxEnvMockDeployAddress, + From: TxFromSpecified, + To: TxTo, + Payment: TxPaymentEgldOnly, + Gas: TxGas, + CodeSource: TxCodeSource, + RH: TxResultHandler, +{ + /// Sets the new mock address to be used for the newly deployed contract. + /// + /// Only allowed in tests. + pub fn new_address(mut self, new_address: NA) -> Self + where + NA: AnnotatedValue>, + { + self.env.mock_deploy_new_address(&self.from, new_address); + self + } +} + impl Tx, RH> where diff --git a/framework/base/src/types/interaction/tx_env.rs b/framework/base/src/types/interaction/tx_env.rs index 16fd0da683..11e7b91e6a 100644 --- a/framework/base/src/types/interaction/tx_env.rs +++ b/framework/base/src/types/interaction/tx_env.rs @@ -3,6 +3,8 @@ use crate::{ types::{ManagedAddress, ManagedBuffer}, }; +use super::{AnnotatedValue, TxFromSpecified}; + pub trait TxEnv: Sized { type Api: CallTypeApi; @@ -15,3 +17,10 @@ pub trait TxEnv: Sized { fn default_gas_value(&self) -> u64; } + +pub trait TxEnvMockDeployAddress: TxEnv { + fn mock_deploy_new_address(&mut self, from: &From, new_address: NA) + where + From: TxFromSpecified, + NA: AnnotatedValue>; +} diff --git a/framework/scenario/src/facade/world_tx/scenario_exec_call.rs b/framework/scenario/src/facade/world_tx/scenario_exec_call.rs index e92e38087c..dd258da3b4 100644 --- a/framework/scenario/src/facade/world_tx/scenario_exec_call.rs +++ b/framework/scenario/src/facade/world_tx/scenario_exec_call.rs @@ -2,14 +2,14 @@ use multiversx_sc::{ tuple_util::NestedTupleFlatten, types::{ FunctionCall, ManagedAddress, ManagedBuffer, RHListExec, Tx, TxBaseWithEnv, TxEnv, - TxFromSpecified, TxGas, TxPayment, TxToSpecified, + TxEnvMockDeployAddress, TxFromSpecified, TxGas, TxPayment, TxToSpecified, }, }; use crate::{ api::StaticApi, - scenario::tx_to_step::TxToStep, - scenario_model::{TxExpect, TxResponse}, + scenario::tx_to_step::{address_annotated, TxToStep}, + scenario_model::{SetStateStep, TxExpect, TxResponse}, ScenarioTxEnv, ScenarioTxRun, ScenarioWorld, }; @@ -39,6 +39,30 @@ impl<'w> TxEnv for ScenarioEnvExec<'w> { } } +impl<'w> TxEnvMockDeployAddress for ScenarioEnvExec<'w> { + fn mock_deploy_new_address(&mut self, from: &From, new_address: NA) + where + From: TxFromSpecified, + NA: multiversx_sc::types::AnnotatedValue>, + { + let from_value = address_annotated(self, from); + let sender_nonce = self + .world + .get_state() + .accounts + .get(&from_value.to_vm_address()) + .expect("sender does not exist") + .nonce; + let new_address_value = address_annotated(self, &new_address); + + self.world.set_state_step(SetStateStep::new().new_address( + from_value, + sender_nonce, + new_address_value, + )); + } +} + impl<'w> ScenarioTxEnv for ScenarioEnvExec<'w> { fn env_data(&self) -> &ScenarioTxEnvData { &self.data diff --git a/framework/scenario/src/scenario/tx_to_step/step_annotation.rs b/framework/scenario/src/scenario/tx_to_step/step_annotation.rs index 2defb50786..c341427ab7 100644 --- a/framework/scenario/src/scenario/tx_to_step/step_annotation.rs +++ b/framework/scenario/src/scenario/tx_to_step/step_annotation.rs @@ -3,14 +3,14 @@ use multiversx_sc::types::{AnnotatedValue, Code, ManagedAddress, TxCodeValue, Tx use crate::scenario_model::{AddressValue, BytesValue, U64Value}; -pub fn address_annotated(env: &Env, from: Addr) -> AddressValue +pub fn address_annotated(env: &Env, from: &Addr) -> AddressValue where Env: TxEnv, Addr: AnnotatedValue>, { let annotation = from.annotation(env).to_string(); AddressValue { - value: from.into_value(env).to_address(), + value: from.to_value(env).to_address(), original: ValueSubTree::Str(annotation), } } diff --git a/framework/scenario/src/scenario/tx_to_step/tx_to_step_call.rs b/framework/scenario/src/scenario/tx_to_step/tx_to_step_call.rs index d111116a5c..7daa8ac810 100644 --- a/framework/scenario/src/scenario/tx_to_step/tx_to_step_call.rs +++ b/framework/scenario/src/scenario/tx_to_step/tx_to_step_call.rs @@ -53,8 +53,8 @@ where Gas: TxGas, { let mut step = ScCallStep::new() - .from(address_annotated(env, from)) - .to(address_annotated(env, to)) + .from(address_annotated(env, &from)) + .to(address_annotated(env, &to)) .function(data.function_name.to_string().as_str()); for arg in data.arg_buffer.iter_buffers() { step.tx.arguments.push(arg.to_vec().into()); diff --git a/framework/scenario/src/scenario/tx_to_step/tx_to_step_deploy.rs b/framework/scenario/src/scenario/tx_to_step/tx_to_step_deploy.rs index 3221de4b45..4e49be51b4 100644 --- a/framework/scenario/src/scenario/tx_to_step/tx_to_step_deploy.rs +++ b/framework/scenario/src/scenario/tx_to_step/tx_to_step_deploy.rs @@ -46,7 +46,7 @@ where CodeValue: TxCodeValue, { let mut step = ScDeployStep::new() - .from(address_annotated(env, from)) + .from(address_annotated(env, &from)) .code(code_annotated(env, data.code_source)); for arg in data.arg_buffer.iter_buffers() { step.tx.arguments.push(arg.to_vec().into()); diff --git a/framework/scenario/src/scenario/tx_to_step/tx_to_step_query.rs b/framework/scenario/src/scenario/tx_to_step/tx_to_step_query.rs index 9cfbb5d39e..aaeb3b70c3 100644 --- a/framework/scenario/src/scenario/tx_to_step/tx_to_step_query.rs +++ b/framework/scenario/src/scenario/tx_to_step/tx_to_step_query.rs @@ -30,7 +30,7 @@ where To: TxToSpecified, { let mut step = ScQueryStep::new() - .to(address_annotated(env, to)) + .to(address_annotated(env, &to)) .function(data.function_name.to_string().as_str()); for arg in data.arg_buffer.iter_buffers() { step.tx.arguments.push(arg.to_vec().into()); diff --git a/framework/scenario/src/scenario/tx_to_step/tx_to_step_transfer.rs b/framework/scenario/src/scenario/tx_to_step/tx_to_step_transfer.rs index 637d840e4e..d2bf9636c9 100644 --- a/framework/scenario/src/scenario/tx_to_step/tx_to_step_transfer.rs +++ b/framework/scenario/src/scenario/tx_to_step/tx_to_step_transfer.rs @@ -40,8 +40,8 @@ where Gas: TxGas, { let mut step = TransferStep::new() - .from(address_annotated(env, from)) - .to(address_annotated(env, to)); + .from(address_annotated(env, &from)) + .to(address_annotated(env, &to)); step.tx.gas_limit = gas_annotated(env, gas); From ffcf2e665c71606171278e6142918af366307c25 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Tue, 23 Apr 2024 11:32:59 +0300 Subject: [PATCH 376/461] remove redundant balance set --- .../tests/rewards_distribution_blackbox_test.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs b/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs index a670ef91ca..9958a518ca 100644 --- a/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs +++ b/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs @@ -124,8 +124,7 @@ fn test_compute_brackets() { .account(REWARDS_DISTRIBUTION_ADDRESS_EXPR) .nonce(1) .owner(OWNER_ADDRESS_EXPR) - .code(rewards_distribution_code) - .balance("0"); + .code(rewards_distribution_code); state.world.whitebox_call( &state.rewards_distribution_whitebox, From 9037d847753ee324434145c1800f99c1fd535ee3 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 23 Apr 2024 15:55:45 +0300 Subject: [PATCH 377/461] sc 0.49.0-alpha.4, sdk 0.4.0-alpha.4 --- CHANGELOG.md | 4 ++++ 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 +- .../Cargo.toml | 2 +- .../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/nft-subscription/Cargo.toml | 6 +++--- .../examples/nft-subscription/meta/Cargo.toml | 2 +- .../examples/nft-subscription/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 +- .../wasm-alloc-mem-fail/Cargo.toml | 2 +- .../wasm-alloc-mem-leaking/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 | 4 ++-- .../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-legacy/Cargo.toml | 4 ++-- .../forwarder-legacy/meta/Cargo.toml | 2 +- .../forwarder-legacy/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 | 2 +- .../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 +- .../vault/wasm-vault-upgrade/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 +- .../exchange-features/Cargo.toml | 4 ++-- .../exchange-features/meta/Cargo.toml | 2 +- .../exchange-features/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 +- .../wasm/Cargo.toml | 2 +- .../rust-testing-framework-tester/Cargo.toml | 4 ++-- .../meta/Cargo.toml | 2 +- .../wasm/Cargo.toml | 2 +- .../feature-tests/scenario-tester/Cargo.toml | 4 ++-- .../scenario-tester/meta/Cargo.toml | 2 +- .../scenario-tester/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 ++-- framework/base/Cargo.toml | 4 ++-- framework/base/src/types/interaction/tx.rs | 3 ++- framework/derive/Cargo.toml | 2 +- framework/meta/Cargo.toml | 4 ++-- framework/scenario/Cargo.toml | 8 ++++---- framework/snippets/Cargo.toml | 6 +++--- framework/wasm-adapter/Cargo.toml | 4 ++-- sdk/core/Cargo.toml | 2 +- tools/mxpy-snippet-generator/Cargo.toml | 2 +- tools/rust-debugger/format-tests/Cargo.toml | 4 ++-- 271 files changed, 400 insertions(+), 395 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 32de5c4b7d..c936792ccb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,10 @@ They are: - `multiversx-chain-scenario-format`, in short `scenario-format`, scenario JSON serializer/deserializer, 1 crate. - `multiversx-sdk`, in short `sdk`, allows communication with the chain(s), 1 crate. + +## [sc 0.49.0-alpha.4, sdk 0.4.0-alpha.4] - 2024-04-23 +Fourth pre-release, contains many interactor improvements, including improved tx polling. + ## [sc 0.49.0-alpha.3] - 2024-04-13 Third pre-release of the unified syntax, includes backwards compatibility fixes and testing set state/check state. diff --git a/Cargo.lock b/Cargo.lock index 0b6d17acb1..4ecc1b6d04 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -1815,7 +1815,7 @@ checksum = "b59072fa0624b55ae5ae3fa6bfa91515bbeb4ac440214bc4a509e2c8806d6e9f" [[package]] name = "multiversx-price-aggregator-sc" -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" dependencies = [ "arrayvec", "getrandom 0.2.12", @@ -1836,7 +1836,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" dependencies = [ "bitflags 2.4.2", "hex-literal", @@ -1866,7 +1866,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -1877,7 +1877,7 @@ dependencies = [ [[package]] name = "multiversx-sc-meta" -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" dependencies = [ "clap", "colored", @@ -1903,14 +1903,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-scenario" -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" dependencies = [ "base64", "bech32", @@ -1936,7 +1936,7 @@ dependencies = [ [[package]] name = "multiversx-sc-snippets" -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" dependencies = [ "base64", "env_logger", @@ -1951,14 +1951,14 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sdk" -version = "0.3.2" +version = "0.4.0-alpha.4" dependencies = [ "anyhow", "base64", @@ -1982,7 +1982,7 @@ dependencies = [ [[package]] name = "multiversx-wegld-swap-sc" -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", "multiversx-sc-modules", diff --git a/contracts/benchmarks/large-storage/Cargo.toml b/contracts/benchmarks/large-storage/Cargo.toml index e937ae69a1..238cfc0286 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/large-storage/meta/Cargo.toml b/contracts/benchmarks/large-storage/meta/Cargo.toml index a8861c9cfc..5ab3b3f4ea 100644 --- a/contracts/benchmarks/large-storage/meta/Cargo.toml +++ b/contracts/benchmarks/large-storage/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/large-storage/wasm/Cargo.toml b/contracts/benchmarks/large-storage/wasm/Cargo.toml index c177dffe51..ee513468bf 100644 --- a/contracts/benchmarks/large-storage/wasm/Cargo.toml +++ b/contracts/benchmarks/large-storage/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/benchmark-common/Cargo.toml b/contracts/benchmarks/mappers/benchmark-common/Cargo.toml index 16074cce04..3143c4c059 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/linked-list-repeat/Cargo.toml b/contracts/benchmarks/mappers/linked-list-repeat/Cargo.toml index 92aa9e00a0..390e9c729a 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 67c262e06a..f719432fba 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/linked-list-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml index 225bb4bc46..5218df0664 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/map-repeat/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/Cargo.toml index f554b0b088..53a9c8cb30 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml index e5bf0384e1..b8d61cf474 100644 --- a/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml index a5ff1b5db3..6153f35d8f 100644 --- a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/queue-repeat/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/Cargo.toml index a04e9481a2..7eae0e8177 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml index 3add869333..ef5d420e27 100644 --- a/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml index ccbefcb68d..2ebeda1f2e 100644 --- a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/set-repeat/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/Cargo.toml index c1d4afd20a..ebf2958e90 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml index c93fb7908e..269df5be03 100644 --- a/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml index 4b90afe784..aa37b34c3e 100644 --- a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 2d8e92e82a..34e3426254 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 a125bba2c5..8487ef015b 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/single-value-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml index 411ec9a1ca..3ac2ae3b96 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/vec-repeat/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/Cargo.toml index d812225d87..8c7b4a9d8e 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml index cec4fc321f..fc6c8ebd33 100644 --- a/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml index f360097a23..8779eaa521 100644 --- a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/send-tx-repeat/Cargo.toml b/contracts/benchmarks/send-tx-repeat/Cargo.toml index 64789aa2d0..440bfa0946 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml b/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml index fca6291503..fb2c8f50cf 100644 --- a/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml index 62ea6206bf..f42955ebbd 100644 --- a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/str-repeat/Cargo.toml b/contracts/benchmarks/str-repeat/Cargo.toml index d000c531d5..0d46d631dd 100644 --- a/contracts/benchmarks/str-repeat/Cargo.toml +++ b/contracts/benchmarks/str-repeat/Cargo.toml @@ -12,10 +12,10 @@ path = "src/str_repeat.rs" managed-buffer-builder-cached = ["multiversx-sc/managed-buffer-builder-cached"] [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/str-repeat/meta/Cargo.toml b/contracts/benchmarks/str-repeat/meta/Cargo.toml index 4b7f1c6022..dbf074583d 100644 --- a/contracts/benchmarks/str-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/str-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml index 64863e4645..b840dd0a3b 100644 --- a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml +++ b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml index 36033c9f95..53db7f0b4a 100644 --- a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml +++ b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml @@ -26,7 +26,7 @@ path = ".." features = ["managed-buffer-builder-cached"] [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/str-repeat/wasm/Cargo.toml b/contracts/benchmarks/str-repeat/wasm/Cargo.toml index a62bedbaca..fa54772480 100644 --- a/contracts/benchmarks/str-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/str-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/core/price-aggregator/Cargo.toml b/contracts/core/price-aggregator/Cargo.toml index 5ac8cd49db..aad9c4ce9c 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.49.0-alpha.3" +version = "0.49.0-alpha.4" authors = [ "Claudiu-Marcel Bruda ", "MultiversX ", @@ -19,15 +19,15 @@ edition = "2021" path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" [dependencies] diff --git a/contracts/core/price-aggregator/meta/Cargo.toml b/contracts/core/price-aggregator/meta/Cargo.toml index 17751a1628..5b01eac017 100644 --- a/contracts/core/price-aggregator/meta/Cargo.toml +++ b/contracts/core/price-aggregator/meta/Cargo.toml @@ -8,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/core/price-aggregator/wasm/Cargo.toml b/contracts/core/price-aggregator/wasm/Cargo.toml index d402bd0d78..c4d502a4ca 100644 --- a/contracts/core/price-aggregator/wasm/Cargo.toml +++ b/contracts/core/price-aggregator/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/core/wegld-swap/Cargo.toml b/contracts/core/wegld-swap/Cargo.toml index f889200683..d61623cc64 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.49.0-alpha.3" +version = "0.49.0-alpha.4" authors = [ "Dorin Iancu ", @@ -20,13 +20,13 @@ edition = "2021" path = "src/wegld.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" diff --git a/contracts/core/wegld-swap/meta/Cargo.toml b/contracts/core/wegld-swap/meta/Cargo.toml index b4cd52cd9f..2956444fc8 100644 --- a/contracts/core/wegld-swap/meta/Cargo.toml +++ b/contracts/core/wegld-swap/meta/Cargo.toml @@ -11,10 +11,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/core/wegld-swap/wasm/Cargo.toml b/contracts/core/wegld-swap/wasm/Cargo.toml index b9fa10fa9f..f21e9e13cb 100644 --- a/contracts/core/wegld-swap/wasm/Cargo.toml +++ b/contracts/core/wegld-swap/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/adder/Cargo.toml b/contracts/examples/adder/Cargo.toml index e4bb857c31..489904d6d6 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" diff --git a/contracts/examples/adder/interact/Cargo.toml b/contracts/examples/adder/interact/Cargo.toml index d955f0bfb6..3cd72a5e2b 100644 --- a/contracts/examples/adder/interact/Cargo.toml +++ b/contracts/examples/adder/interact/Cargo.toml @@ -18,5 +18,5 @@ toml = "0.8.6" path = ".." [dependencies.multiversx-sc-snippets] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/snippets" diff --git a/contracts/examples/adder/meta/Cargo.toml b/contracts/examples/adder/meta/Cargo.toml index 1581fb0874..3e56ed66d7 100644 --- a/contracts/examples/adder/meta/Cargo.toml +++ b/contracts/examples/adder/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/adder/wasm/Cargo.toml b/contracts/examples/adder/wasm/Cargo.toml index 613d0060ce..a759e0edf8 100644 --- a/contracts/examples/adder/wasm/Cargo.toml +++ b/contracts/examples/adder/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/bonding-curve-contract/Cargo.toml b/contracts/examples/bonding-curve-contract/Cargo.toml index 03d2d06db9..4a9d90bddc 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" diff --git a/contracts/examples/bonding-curve-contract/meta/Cargo.toml b/contracts/examples/bonding-curve-contract/meta/Cargo.toml index 9678ba1852..dbcdbc57e0 100644 --- a/contracts/examples/bonding-curve-contract/meta/Cargo.toml +++ b/contracts/examples/bonding-curve-contract/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/bonding-curve-contract/wasm/Cargo.toml b/contracts/examples/bonding-curve-contract/wasm/Cargo.toml index c7487594f9..bf4f7f2d5b 100644 --- a/contracts/examples/bonding-curve-contract/wasm/Cargo.toml +++ b/contracts/examples/bonding-curve-contract/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/check-pause/Cargo.toml b/contracts/examples/check-pause/Cargo.toml index 1838cf3cd0..355224e160 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" [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" diff --git a/contracts/examples/check-pause/meta/Cargo.toml b/contracts/examples/check-pause/meta/Cargo.toml index 85b2e19f06..21465dc7ed 100644 --- a/contracts/examples/check-pause/meta/Cargo.toml +++ b/contracts/examples/check-pause/meta/Cargo.toml @@ -9,6 +9,6 @@ authors = ["Alin Cruceat "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/check-pause/wasm/Cargo.toml b/contracts/examples/check-pause/wasm/Cargo.toml index 7545ebf696..0602c3b653 100644 --- a/contracts/examples/check-pause/wasm/Cargo.toml +++ b/contracts/examples/check-pause/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crowdfunding-esdt/Cargo.toml b/contracts/examples/crowdfunding-esdt/Cargo.toml index 9a9f88f258..498b1999b6 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" [dev-dependencies] diff --git a/contracts/examples/crowdfunding-esdt/meta/Cargo.toml b/contracts/examples/crowdfunding-esdt/meta/Cargo.toml index 3fa9486d89..191c2d0a28 100644 --- a/contracts/examples/crowdfunding-esdt/meta/Cargo.toml +++ b/contracts/examples/crowdfunding-esdt/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml b/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml index 88e4c7b4c5..93c39e692f 100644 --- a/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml +++ b/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-bubbles/Cargo.toml b/contracts/examples/crypto-bubbles/Cargo.toml index 992a7df997..6e841be6b9 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" diff --git a/contracts/examples/crypto-bubbles/meta/Cargo.toml b/contracts/examples/crypto-bubbles/meta/Cargo.toml index 6966cd9bff..60b167f206 100644 --- a/contracts/examples/crypto-bubbles/meta/Cargo.toml +++ b/contracts/examples/crypto-bubbles/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-bubbles/wasm/Cargo.toml b/contracts/examples/crypto-bubbles/wasm/Cargo.toml index 7ed5a2fe05..cbfe399baf 100644 --- a/contracts/examples/crypto-bubbles/wasm/Cargo.toml +++ b/contracts/examples/crypto-bubbles/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 2f81bfefd2..d83a9fdd5d 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.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 1471748b18..bfab4a12d7 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/base" diff --git a/contracts/examples/crypto-kitties/kitty-auction/Cargo.toml b/contracts/examples/crypto-kitties/kitty-auction/Cargo.toml index f8481bac43..ce7971579f 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 07c6da37c1..938f83ffd6 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-auction/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml index 59dd92f035..5234956e51 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-kitties/kitty-genetic-alg/Cargo.toml b/contracts/examples/crypto-kitties/kitty-genetic-alg/Cargo.toml index 82976fe38b..3027dad875 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 662321fef8..c0e781f92f 100644 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false 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 e1b8fc8e9f..f4a92c4b71 100644 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-kitties/kitty-ownership/Cargo.toml b/contracts/examples/crypto-kitties/kitty-ownership/Cargo.toml index 1804881778..642afa1862 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 8c5c36e49e..8937e968d2 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-ownership/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml index 533db13539..def5af05df 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-zombies/Cargo.toml b/contracts/examples/crypto-zombies/Cargo.toml index d3ab2af074..3888d9ecb7 100644 --- a/contracts/examples/crypto-zombies/Cargo.toml +++ b/contracts/examples/crypto-zombies/Cargo.toml @@ -9,11 +9,11 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" [dependencies.kitty] diff --git a/contracts/examples/crypto-zombies/meta/Cargo.toml b/contracts/examples/crypto-zombies/meta/Cargo.toml index 8d208fd522..2d94d2d074 100644 --- a/contracts/examples/crypto-zombies/meta/Cargo.toml +++ b/contracts/examples/crypto-zombies/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-zombies/wasm/Cargo.toml b/contracts/examples/crypto-zombies/wasm/Cargo.toml index 12124bb027..d99df32433 100644 --- a/contracts/examples/crypto-zombies/wasm/Cargo.toml +++ b/contracts/examples/crypto-zombies/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/digital-cash/Cargo.toml b/contracts/examples/digital-cash/Cargo.toml index a38a59b831..05df36f381 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" diff --git a/contracts/examples/digital-cash/meta/Cargo.toml b/contracts/examples/digital-cash/meta/Cargo.toml index 42c42bdd13..a54b5f1ea3 100644 --- a/contracts/examples/digital-cash/meta/Cargo.toml +++ b/contracts/examples/digital-cash/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/digital-cash/wasm/Cargo.toml b/contracts/examples/digital-cash/wasm/Cargo.toml index f46d4873a3..fd23cf19e3 100644 --- a/contracts/examples/digital-cash/wasm/Cargo.toml +++ b/contracts/examples/digital-cash/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/empty/Cargo.toml b/contracts/examples/empty/Cargo.toml index 1ef8b5c4c2..ff22118a94 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" [dev-dependencies] diff --git a/contracts/examples/empty/meta/Cargo.toml b/contracts/examples/empty/meta/Cargo.toml index 4405415a13..80e2c84bdf 100644 --- a/contracts/examples/empty/meta/Cargo.toml +++ b/contracts/examples/empty/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/empty/wasm/Cargo.toml b/contracts/examples/empty/wasm/Cargo.toml index ac45db4841..61cf8db541 100644 --- a/contracts/examples/empty/wasm/Cargo.toml +++ b/contracts/examples/empty/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 05712405c8..10ef50f36c 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 3b7d671fa5..a40832325b 100644 --- a/contracts/examples/esdt-transfer-with-fee/meta/Cargo.toml +++ b/contracts/examples/esdt-transfer-with-fee/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml index 607cf21443..07cb085e0f 100644 --- a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml +++ b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/factorial/Cargo.toml b/contracts/examples/factorial/Cargo.toml index d58309586d..49724f1760 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" diff --git a/contracts/examples/factorial/meta/Cargo.toml b/contracts/examples/factorial/meta/Cargo.toml index 2ed75a17e5..2a5a7f7a8f 100644 --- a/contracts/examples/factorial/meta/Cargo.toml +++ b/contracts/examples/factorial/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/factorial/wasm/Cargo.toml b/contracts/examples/factorial/wasm/Cargo.toml index fe4e508dc9..4625a90cc9 100644 --- a/contracts/examples/factorial/wasm/Cargo.toml +++ b/contracts/examples/factorial/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/fractional-nfts/Cargo.toml b/contracts/examples/fractional-nfts/Cargo.toml index 8c11b19fdc..ec60d9d32a 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" diff --git a/contracts/examples/fractional-nfts/meta/Cargo.toml b/contracts/examples/fractional-nfts/meta/Cargo.toml index ecb2f5f2f1..d7a32ed9b1 100644 --- a/contracts/examples/fractional-nfts/meta/Cargo.toml +++ b/contracts/examples/fractional-nfts/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/fractional-nfts/wasm/Cargo.toml b/contracts/examples/fractional-nfts/wasm/Cargo.toml index f20930d2ad..47c9c4a88c 100644 --- a/contracts/examples/fractional-nfts/wasm/Cargo.toml +++ b/contracts/examples/fractional-nfts/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/lottery-esdt/Cargo.toml b/contracts/examples/lottery-esdt/Cargo.toml index e7eb4659ab..c4d7d29cd3 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" diff --git a/contracts/examples/lottery-esdt/meta/Cargo.toml b/contracts/examples/lottery-esdt/meta/Cargo.toml index 8233b7c512..b2cd28df5c 100644 --- a/contracts/examples/lottery-esdt/meta/Cargo.toml +++ b/contracts/examples/lottery-esdt/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/lottery-esdt/wasm/Cargo.toml b/contracts/examples/lottery-esdt/wasm/Cargo.toml index 69c7b818d5..5da7483f04 100644 --- a/contracts/examples/lottery-esdt/wasm/Cargo.toml +++ b/contracts/examples/lottery-esdt/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/multisig/Cargo.toml b/contracts/examples/multisig/Cargo.toml index bcce2fa6d0..035057ec58 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" [dev-dependencies.adder] @@ -27,7 +27,7 @@ path = "../adder" path = "../factorial" [dev-dependencies.multiversx-wegld-swap-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../core/wegld-swap" [dev-dependencies] diff --git a/contracts/examples/multisig/interact/Cargo.toml b/contracts/examples/multisig/interact/Cargo.toml index 2f1e91bbdd..32869be20c 100644 --- a/contracts/examples/multisig/interact/Cargo.toml +++ b/contracts/examples/multisig/interact/Cargo.toml @@ -18,13 +18,13 @@ toml = "0.8.6" path = ".." [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../contracts/modules" [dependencies.multiversx-sc-snippets] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/snippets" [dependencies.multiversx-sc-scenario] -version = "=0.49.0-alpha.3" +version = "=0.49.0-alpha.4" path = "../../../../framework/scenario" diff --git a/contracts/examples/multisig/meta/Cargo.toml b/contracts/examples/multisig/meta/Cargo.toml index 5c26bd8270..0e29c29265 100644 --- a/contracts/examples/multisig/meta/Cargo.toml +++ b/contracts/examples/multisig/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/multisig/wasm-multisig-full/Cargo.toml b/contracts/examples/multisig/wasm-multisig-full/Cargo.toml index 5f9c065231..a2d98375aa 100644 --- a/contracts/examples/multisig/wasm-multisig-full/Cargo.toml +++ b/contracts/examples/multisig/wasm-multisig-full/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 699aee56ba..2c6a48b470 100644 --- a/contracts/examples/multisig/wasm-multisig-view/Cargo.toml +++ b/contracts/examples/multisig/wasm-multisig-view/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/multisig/wasm/Cargo.toml b/contracts/examples/multisig/wasm/Cargo.toml index 6001a724d2..f2202ffdb1 100644 --- a/contracts/examples/multisig/wasm/Cargo.toml +++ b/contracts/examples/multisig/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-minter/Cargo.toml b/contracts/examples/nft-minter/Cargo.toml index c5918b6f7b..eb2ec96156 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-minter/meta/Cargo.toml b/contracts/examples/nft-minter/meta/Cargo.toml index 9b562d0350..cee7821359 100644 --- a/contracts/examples/nft-minter/meta/Cargo.toml +++ b/contracts/examples/nft-minter/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-minter/wasm/Cargo.toml b/contracts/examples/nft-minter/wasm/Cargo.toml index 1243696a1c..241a4215e2 100644 --- a/contracts/examples/nft-minter/wasm/Cargo.toml +++ b/contracts/examples/nft-minter/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-storage-prepay/Cargo.toml b/contracts/examples/nft-storage-prepay/Cargo.toml index 87521e853e..136281df96 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-storage-prepay/meta/Cargo.toml b/contracts/examples/nft-storage-prepay/meta/Cargo.toml index 5682886f56..c1ddf2adc1 100644 --- a/contracts/examples/nft-storage-prepay/meta/Cargo.toml +++ b/contracts/examples/nft-storage-prepay/meta/Cargo.toml @@ -11,6 +11,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-storage-prepay/wasm/Cargo.toml b/contracts/examples/nft-storage-prepay/wasm/Cargo.toml index 229c6a4717..99a5c3c1a6 100644 --- a/contracts/examples/nft-storage-prepay/wasm/Cargo.toml +++ b/contracts/examples/nft-storage-prepay/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-subscription/Cargo.toml b/contracts/examples/nft-subscription/Cargo.toml index b26f94c434..be7a39917e 100644 --- a/contracts/examples/nft-subscription/Cargo.toml +++ b/contracts/examples/nft-subscription/Cargo.toml @@ -9,13 +9,13 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-subscription/meta/Cargo.toml b/contracts/examples/nft-subscription/meta/Cargo.toml index 8b62235f45..d122df52df 100644 --- a/contracts/examples/nft-subscription/meta/Cargo.toml +++ b/contracts/examples/nft-subscription/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-subscription/wasm/Cargo.toml b/contracts/examples/nft-subscription/wasm/Cargo.toml index ca9a314ce2..532cc400e4 100644 --- a/contracts/examples/nft-subscription/wasm/Cargo.toml +++ b/contracts/examples/nft-subscription/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/order-book/factory/Cargo.toml b/contracts/examples/order-book/factory/Cargo.toml index 9fb1974147..9a4978df8a 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/scenario" diff --git a/contracts/examples/order-book/factory/meta/Cargo.toml b/contracts/examples/order-book/factory/meta/Cargo.toml index c5fe703a4a..3518de30d2 100644 --- a/contracts/examples/order-book/factory/meta/Cargo.toml +++ b/contracts/examples/order-book/factory/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/order-book/factory/wasm/Cargo.toml b/contracts/examples/order-book/factory/wasm/Cargo.toml index 06ae5207f1..1ee94f9d8e 100644 --- a/contracts/examples/order-book/factory/wasm/Cargo.toml +++ b/contracts/examples/order-book/factory/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/order-book/pair/Cargo.toml b/contracts/examples/order-book/pair/Cargo.toml index 3b5064a83b..a93917179a 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/scenario" diff --git a/contracts/examples/order-book/pair/meta/Cargo.toml b/contracts/examples/order-book/pair/meta/Cargo.toml index 99e08d3bf3..6f4ba52f4e 100644 --- a/contracts/examples/order-book/pair/meta/Cargo.toml +++ b/contracts/examples/order-book/pair/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/order-book/pair/wasm/Cargo.toml b/contracts/examples/order-book/pair/wasm/Cargo.toml index 61aef735af..dd343a9dfc 100644 --- a/contracts/examples/order-book/pair/wasm/Cargo.toml +++ b/contracts/examples/order-book/pair/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/ping-pong-egld/Cargo.toml b/contracts/examples/ping-pong-egld/Cargo.toml index 674b90d665..fc86298452 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" diff --git a/contracts/examples/ping-pong-egld/meta/Cargo.toml b/contracts/examples/ping-pong-egld/meta/Cargo.toml index 98bcbcba8c..a8bc467391 100644 --- a/contracts/examples/ping-pong-egld/meta/Cargo.toml +++ b/contracts/examples/ping-pong-egld/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/ping-pong-egld/wasm/Cargo.toml b/contracts/examples/ping-pong-egld/wasm/Cargo.toml index c7dcdf0380..8438778f1b 100644 --- a/contracts/examples/ping-pong-egld/wasm/Cargo.toml +++ b/contracts/examples/ping-pong-egld/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/proxy-pause/Cargo.toml b/contracts/examples/proxy-pause/Cargo.toml index 9accf4aeea..382dfd9f27 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 6dcc4e30ab..4be34a41ba 100644 --- a/contracts/examples/proxy-pause/meta/Cargo.toml +++ b/contracts/examples/proxy-pause/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = [ "you",] path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/proxy-pause/wasm/Cargo.toml b/contracts/examples/proxy-pause/wasm/Cargo.toml index ca38a58a94..939f828e70 100644 --- a/contracts/examples/proxy-pause/wasm/Cargo.toml +++ b/contracts/examples/proxy-pause/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/rewards-distribution/Cargo.toml b/contracts/examples/rewards-distribution/Cargo.toml index e52b38c28c..d518ea5586 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" diff --git a/contracts/examples/rewards-distribution/meta/Cargo.toml b/contracts/examples/rewards-distribution/meta/Cargo.toml index 746938fde8..bfddb43d6f 100644 --- a/contracts/examples/rewards-distribution/meta/Cargo.toml +++ b/contracts/examples/rewards-distribution/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = ["Claudiu-Marcel Bruda "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/rewards-distribution/wasm/Cargo.toml b/contracts/examples/rewards-distribution/wasm/Cargo.toml index 3cee3848c2..a62cac8525 100644 --- a/contracts/examples/rewards-distribution/wasm/Cargo.toml +++ b/contracts/examples/rewards-distribution/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/seed-nft-minter/Cargo.toml b/contracts/examples/seed-nft-minter/Cargo.toml index f1c0ccd1c5..a57db6b6dc 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" diff --git a/contracts/examples/seed-nft-minter/meta/Cargo.toml b/contracts/examples/seed-nft-minter/meta/Cargo.toml index b62a153697..af481426af 100644 --- a/contracts/examples/seed-nft-minter/meta/Cargo.toml +++ b/contracts/examples/seed-nft-minter/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = ["Claudiu-Marcel Bruda "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/seed-nft-minter/wasm/Cargo.toml b/contracts/examples/seed-nft-minter/wasm/Cargo.toml index ebf2f8df94..e6a61820c9 100644 --- a/contracts/examples/seed-nft-minter/wasm/Cargo.toml +++ b/contracts/examples/seed-nft-minter/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/token-release/Cargo.toml b/contracts/examples/token-release/Cargo.toml index 01ff068282..7c7c810787 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" diff --git a/contracts/examples/token-release/meta/Cargo.toml b/contracts/examples/token-release/meta/Cargo.toml index e2afb339ec..68be5330b2 100644 --- a/contracts/examples/token-release/meta/Cargo.toml +++ b/contracts/examples/token-release/meta/Cargo.toml @@ -10,7 +10,7 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/token-release/wasm/Cargo.toml b/contracts/examples/token-release/wasm/Cargo.toml index 064f98b3c8..bce00fce24 100644 --- a/contracts/examples/token-release/wasm/Cargo.toml +++ b/contracts/examples/token-release/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/abi-tester/Cargo.toml b/contracts/feature-tests/abi-tester/Cargo.toml index c19e464f3e..714c488750 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" [dev-dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 33e1e2787e..a9bcc8d151 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.49.0-alpha.3" + "version": "0.49.0-alpha.4" } }, "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 478b195d18..fcc5546404 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.49.0-alpha.3" + "version": "0.49.0-alpha.4" } }, "docs": [ diff --git a/contracts/feature-tests/abi-tester/meta/Cargo.toml b/contracts/feature-tests/abi-tester/meta/Cargo.toml index 9b7c4a08c9..7edae725e5 100644 --- a/contracts/feature-tests/abi-tester/meta/Cargo.toml +++ b/contracts/feature-tests/abi-tester/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false 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 8bfa480843..963ef8f870 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 65a7038c2b..f5700ad92e 100644 --- a/contracts/feature-tests/abi-tester/wasm/Cargo.toml +++ b/contracts/feature-tests/abi-tester/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/Cargo.toml b/contracts/feature-tests/alloc-features/Cargo.toml index 1b07610469..3dd34d56a7 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 c3ad60f909..3ed3b16104 100644 --- a/contracts/feature-tests/alloc-features/meta/Cargo.toml +++ b/contracts/feature-tests/alloc-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml index 59084bf018..130a20cf6e 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml index 7c0ebffec7..aa66bcb1cb 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/wasm/Cargo.toml b/contracts/feature-tests/alloc-features/wasm/Cargo.toml index 784dd52e8b..0a8f7e641a 100644 --- a/contracts/feature-tests/alloc-features/wasm/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/basic-features/Cargo.toml b/contracts/feature-tests/basic-features/Cargo.toml index c6ba72f9b7..f3633e8bd1 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 81e892886e..ef0209cab4 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.8.6" path = ".." [dependencies.multiversx-sc-snippets] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/snippets" diff --git a/contracts/feature-tests/basic-features/meta/Cargo.toml b/contracts/feature-tests/basic-features/meta/Cargo.toml index 30215e3488..670da00dbd 100644 --- a/contracts/feature-tests/basic-features/meta/Cargo.toml +++ b/contracts/feature-tests/basic-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false 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 bcbd853f58..7d1cc921f4 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 d348b58457..cf42ff107a 100644 --- a/contracts/feature-tests/basic-features/wasm/Cargo.toml +++ b/contracts/feature-tests/basic-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = true path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 7f39fd1c2b..ae27c92b74 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 07f567b2f3..603f584ece 100644 --- a/contracts/feature-tests/big-float-features/meta/Cargo.toml +++ b/contracts/feature-tests/big-float-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/big-float-features/wasm/Cargo.toml b/contracts/feature-tests/big-float-features/wasm/Cargo.toml index 04f16e8c5c..13c3fb8bdc 100644 --- a/contracts/feature-tests/big-float-features/wasm/Cargo.toml +++ b/contracts/feature-tests/big-float-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/Cargo.toml b/contracts/feature-tests/composability/Cargo.toml index d2c31be93d..5d372b4128 100644 --- a/contracts/feature-tests/composability/Cargo.toml +++ b/contracts/feature-tests/composability/Cargo.toml @@ -36,9 +36,9 @@ path = "recursive-caller" path = "vault" [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 988a74e311..58c9d24215 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 8809391c73..3c33b8d81d 100644 --- a/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false 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 6e67682cd7..63dbe95fcb 100644 --- a/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 cf497b77d8..63b7e46395 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 95b8bb3e7a..49c6e25659 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 @@ -9,10 +9,10 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 b688de7b7e..ccf10c89ad 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../../framework/meta" default-features = false 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 5eea19a304..57c15b6fe2 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 ee50706ffe..89fe5071b8 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 a2c8472890..8788acf4ac 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../../framework/meta" default-features = false 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 dccf91ee2d..aa93fcf9d7 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 6beeb65885..c90b451b29 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 7d56002e94..a084afe56c 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 2e59dd11f1..a1b68d9807 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../../framework/meta" default-features = false 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 111c39dc04..b9678d7c3e 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 3719359f0d..7fbc51b49a 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 @@ -9,10 +9,10 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 0f9b09b643..8e9105a3ad 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../../framework/meta" default-features = false 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 49cce44ba0..62fb2dc77c 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/forwarder-legacy/Cargo.toml b/contracts/feature-tests/composability/forwarder-legacy/Cargo.toml index b7be9a2b09..8d985f30c1 100644 --- a/contracts/feature-tests/composability/forwarder-legacy/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-legacy/Cargo.toml @@ -12,10 +12,10 @@ path = "src/forwarder_legacy_main.rs" path = "../vault" [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/forwarder-legacy/meta/Cargo.toml b/contracts/feature-tests/composability/forwarder-legacy/meta/Cargo.toml index de2b7deb4f..de74469420 100644 --- a/contracts/feature-tests/composability/forwarder-legacy/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-legacy/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/forwarder-legacy/wasm/Cargo.toml b/contracts/feature-tests/composability/forwarder-legacy/wasm/Cargo.toml index 58f24599a1..3ce5ef1de3 100644 --- a/contracts/feature-tests/composability/forwarder-legacy/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-legacy/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 807a48e584..accf0696e9 100644 --- a/contracts/feature-tests/composability/forwarder-queue/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/Cargo.toml @@ -9,14 +9,14 @@ publish = false path = "src/forwarder_queue.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" optional = true [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 3ccbf42df7..6347cdc858 100644 --- a/contracts/feature-tests/composability/forwarder-queue/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false 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 df35b3e625..ea15c56706 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 2caa94fdf6..ae6dab9b35 100644 --- a/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 4ff47c8dcc..98838bf0e4 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 7db4c8cc8b..221d44e4eb 100644 --- a/contracts/feature-tests/composability/forwarder-raw/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-raw/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false 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 0691deeb91..208dcd4d05 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 87467a5713..5b4c266c48 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 49a2aaccc5..63cfbfed3b 100644 --- a/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/forwarder/Cargo.toml b/contracts/feature-tests/composability/forwarder/Cargo.toml index 43287d2f99..6790cc028c 100644 --- a/contracts/feature-tests/composability/forwarder/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/Cargo.toml @@ -9,10 +9,10 @@ publish = false path = "src/forwarder_main.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/forwarder/meta/Cargo.toml b/contracts/feature-tests/composability/forwarder/meta/Cargo.toml index 373e719d27..a6b2ad50fa 100644 --- a/contracts/feature-tests/composability/forwarder/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml b/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml index 840717266b..2395849caf 100644 --- a/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/interact/Cargo.toml b/contracts/feature-tests/composability/interact/Cargo.toml index eee6ad38e7..97cd3f93f5 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../contracts/modules" [dependencies.multiversx-sc-snippets] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 f5d6597a04..b969ae9c8b 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 197d6d771a..d9aa379fde 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,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false 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 d5fa591652..89dfb08625 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 b36abd2473..d8f4c2ed7e 100644 --- a/contracts/feature-tests/composability/promises-features/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = "src/promises_main.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" diff --git a/contracts/feature-tests/composability/promises-features/meta/Cargo.toml b/contracts/feature-tests/composability/promises-features/meta/Cargo.toml index c74045ba74..16159a0190 100644 --- a/contracts/feature-tests/composability/promises-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml b/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml index 38a99b57d1..cdb0aa0d3e 100644 --- a/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 2ac10d9906..6a9fcceaaf 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.4.1" [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 de0d156d9a..02488e11e3 100644 --- a/contracts/feature-tests/composability/proxy-test-first/meta/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-first/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false 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 3288ee5579..88a44946b0 100644 --- a/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 be7e7245e3..d3d878969d 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 559e0ab0b2..dcfd56990b 100644 --- a/contracts/feature-tests/composability/proxy-test-second/meta/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-second/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false 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 99fb50fdae..b93eb8a20f 100644 --- a/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 5af4f6b07d..bd7b5fa4af 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 96bc818532..4b2f4f93b8 100644 --- a/contracts/feature-tests/composability/recursive-caller/meta/Cargo.toml +++ b/contracts/feature-tests/composability/recursive-caller/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml index a72b6b1e24..d12fc3c8c6 100644 --- a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 b79e8d56b0..9f1da71c0b 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 79476b840c..3100fcd04c 100644 --- a/contracts/feature-tests/composability/transfer-role-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/transfer-role-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false 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 ef7b1f1428..6a49bd9d5c 100644 --- a/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/vault/Cargo.toml b/contracts/feature-tests/composability/vault/Cargo.toml index e31b239684..58201feda6 100644 --- a/contracts/feature-tests/composability/vault/Cargo.toml +++ b/contracts/feature-tests/composability/vault/Cargo.toml @@ -10,9 +10,9 @@ path = "src/vault.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/vault/meta/Cargo.toml b/contracts/feature-tests/composability/vault/meta/Cargo.toml index 8d1b082bab..e7d99c51cc 100644 --- a/contracts/feature-tests/composability/vault/meta/Cargo.toml +++ b/contracts/feature-tests/composability/vault/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false 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 b09fa9bbe9..9d3799aedb 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml index 3014a523c9..d0e8dd308b 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 c298a50dbd..7b8ee74e2c 100644 --- a/contracts/feature-tests/composability/vault/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 3c19ea4d30..f3e9127598 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 1c7cafcd1d..fdee90fda9 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false 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 33abc78a59..20285a8b66 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 3ca5de7c09..630c24b5f2 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 df8110b562..64f519f9a3 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false 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 6a20d7350e..b4b0a71b4c 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 f9bfaf993c..27c5f2d2a6 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 6671d757bb..d662e3f8e9 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false 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 a7a481f28c..0af2d54c37 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 e9b17b91f2..1566019c49 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 cac8f568a7..8cad0e03b2 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false 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 76b0cf4614..6299d90bcb 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 83ed113938..8d12e823b9 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 359adb0799..0db234389f 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc20/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false 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 5dcd945afd..060cf6a1a1 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 a10fafd483..b0aff72a5c 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 1a13e5b8ac..05ee5b504e 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc721/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false 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 62f50069de..c18d25cd9b 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/wasm-adapter" [workspace] 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 044e9c98ee..3995505b5a 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 2325b11301..81e598d14e 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/meta" default-features = false 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 86bf125ffb..0bcd0316c2 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/esdt-system-sc-mock/Cargo.toml b/contracts/feature-tests/esdt-system-sc-mock/Cargo.toml index d6a741ce2a..8e8b693ebe 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 703b7a9353..425d3ee8eb 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/meta/Cargo.toml +++ b/contracts/feature-tests/esdt-system-sc-mock/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false 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 e95c73f7c7..690f09686b 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.toml +++ b/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/exchange-features/Cargo.toml b/contracts/feature-tests/exchange-features/Cargo.toml index d88b0bfe55..2963251bb9 100644 --- a/contracts/feature-tests/exchange-features/Cargo.toml +++ b/contracts/feature-tests/exchange-features/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/exchange_features.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/exchange-features/meta/Cargo.toml b/contracts/feature-tests/exchange-features/meta/Cargo.toml index a136b96009..a5bb2c339e 100644 --- a/contracts/feature-tests/exchange-features/meta/Cargo.toml +++ b/contracts/feature-tests/exchange-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/exchange-features/wasm/Cargo.toml b/contracts/feature-tests/exchange-features/wasm/Cargo.toml index b5faf4bc2a..9aed886551 100644 --- a/contracts/feature-tests/exchange-features/wasm/Cargo.toml +++ b/contracts/feature-tests/exchange-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 449928d8e1..3ae3030b5d 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 4a1af3ce58..1dbe41b175 100644 --- a/contracts/feature-tests/formatted-message-features/meta/Cargo.toml +++ b/contracts/feature-tests/formatted-message-features/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = [ "you",] path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml b/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml index ad6413abb0..8230ed884b 100644 --- a/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml +++ b/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/managed-map-features/Cargo.toml b/contracts/feature-tests/managed-map-features/Cargo.toml index 2d0005c680..552cbb84b0 100644 --- a/contracts/feature-tests/managed-map-features/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/Cargo.toml @@ -9,11 +9,11 @@ publish = false path = "src/mmap_features.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 58b74efc31..91c7eb646a 100644 --- a/contracts/feature-tests/managed-map-features/meta/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/managed-map-features/wasm/Cargo.toml b/contracts/feature-tests/managed-map-features/wasm/Cargo.toml index e9281f9976..5762a40856 100644 --- a/contracts/feature-tests/managed-map-features/wasm/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 ef65d67f43..213f19e779 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 6ebca90110..866bfa5da1 100644 --- a/contracts/feature-tests/multi-contract-features/meta/Cargo.toml +++ b/contracts/feature-tests/multi-contract-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false 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 e8162e6df5..1f77f836ed 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 bfa63ab7ea..f6ebe4edb9 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 @@ -26,7 +26,7 @@ path = ".." features = ["example_feature"] [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 82a1d0906f..28a8f95c7c 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 462466dc27..ba28d1f0d1 100644 --- a/contracts/feature-tests/multi-contract-features/wasm/Cargo.toml +++ b/contracts/feature-tests/multi-contract-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 5a51dbe4ab..11eb995356 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 6f1b4f7b20..7e1007837d 100644 --- a/contracts/feature-tests/panic-message-features/meta/Cargo.toml +++ b/contracts/feature-tests/panic-message-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/panic-message-features/wasm/Cargo.toml b/contracts/feature-tests/panic-message-features/wasm/Cargo.toml index a8bb519333..3b0455e096 100644 --- a/contracts/feature-tests/panic-message-features/wasm/Cargo.toml +++ b/contracts/feature-tests/panic-message-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/payable-features/Cargo.toml b/contracts/feature-tests/payable-features/Cargo.toml index f393b769a0..7973c85f03 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/payable-features/meta/Cargo.toml b/contracts/feature-tests/payable-features/meta/Cargo.toml index b0e53733be..bc934da0cf 100644 --- a/contracts/feature-tests/payable-features/meta/Cargo.toml +++ b/contracts/feature-tests/payable-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/payable-features/wasm/Cargo.toml b/contracts/feature-tests/payable-features/wasm/Cargo.toml index e8005d93c3..8cd5e49030 100644 --- a/contracts/feature-tests/payable-features/wasm/Cargo.toml +++ b/contracts/feature-tests/payable-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 25e0ba5e4d..4f4fb8ba56 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 654a8d30d2..c84332da38 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.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 dd54362752..5260217e43 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/meta/Cargo.toml +++ b/contracts/feature-tests/rust-snippets-generator-test/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false 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 6be0e2b462..38946bc17a 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.toml +++ b/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 83b382a1b6..aa9942a6d7 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" features = [ "alloc" ] @@ -17,7 +17,7 @@ path = "../../examples/adder" path = "../../feature-tests/basic-features" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 d8ebeebdfe..7e63f066fa 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/meta/Cargo.toml +++ b/contracts/feature-tests/rust-testing-framework-tester/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false 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 844da5b804..26a2d8d271 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.toml +++ b/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/scenario-tester/Cargo.toml b/contracts/feature-tests/scenario-tester/Cargo.toml index eb15243aa1..33c6f5cdcc 100644 --- a/contracts/feature-tests/scenario-tester/Cargo.toml +++ b/contracts/feature-tests/scenario-tester/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/scenario-tester/meta/Cargo.toml b/contracts/feature-tests/scenario-tester/meta/Cargo.toml index 551bd6efe7..2d689e8a13 100644 --- a/contracts/feature-tests/scenario-tester/meta/Cargo.toml +++ b/contracts/feature-tests/scenario-tester/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/scenario-tester/wasm/Cargo.toml b/contracts/feature-tests/scenario-tester/wasm/Cargo.toml index 026d4b7463..fc67b3c6dc 100644 --- a/contracts/feature-tests/scenario-tester/wasm/Cargo.toml +++ b/contracts/feature-tests/scenario-tester/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/use-module/Cargo.toml b/contracts/feature-tests/use-module/Cargo.toml index f55b44c58c..24efcdf34c 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../contracts/modules" [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/scenario" [dev-dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../framework/meta" diff --git a/contracts/feature-tests/use-module/meta/Cargo.toml b/contracts/feature-tests/use-module/meta/Cargo.toml index bfbc356ab4..bd6cec3fee 100644 --- a/contracts/feature-tests/use-module/meta/Cargo.toml +++ b/contracts/feature-tests/use-module/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/use-module/meta/abi/Cargo.toml b/contracts/feature-tests/use-module/meta/abi/Cargo.toml index f4a72800b6..7d3415622f 100644 --- a/contracts/feature-tests/use-module/meta/abi/Cargo.toml +++ b/contracts/feature-tests/use-module/meta/abi/Cargo.toml @@ -9,10 +9,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/meta" default-features = false 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 fedbb5c8c4..372d1ca170 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.49.0-alpha.3" + "version": "0.49.0-alpha.4" } }, "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 75b41e0f02..7b0ae08a4f 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.49.0-alpha.3" + "version": "0.49.0-alpha.4" } }, "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 a5c2d575ab..62a866a3e3 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" 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 f95cab10e3..f514309260 100644 --- a/contracts/feature-tests/use-module/wasm/Cargo.toml +++ b/contracts/feature-tests/use-module/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/modules/Cargo.toml b/contracts/modules/Cargo.toml index 338ab2ae7d..924bbab515 100644 --- a/contracts/modules/Cargo.toml +++ b/contracts/modules/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-modules" -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" edition = "2021" authors = ["MultiversX "] @@ -17,5 +17,5 @@ categories = ["no-std", "wasm", "cryptography::cryptocurrencies"] alloc = ["multiversx-sc/alloc"] [dependencies.multiversx-sc] -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../framework/base" diff --git a/framework/base/Cargo.toml b/framework/base/Cargo.toml index 9537ff48ee..ab11b368e2 100644 --- a/framework/base/Cargo.toml +++ b/framework/base/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc" -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" edition = "2021" authors = ["Andrei Marinica ", "MultiversX "] @@ -28,7 +28,7 @@ bitflags = "=2.4.2" num-traits = { version = "=0.2.17", default-features = false } [dependencies.multiversx-sc-derive] -version = "=0.49.0-alpha.3" +version = "=0.49.0-alpha.4" path = "../derive" [dependencies.multiversx-sc-codec] diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 075a78d50a..4b079db48e 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -3,7 +3,8 @@ use crate::{ types::{ BigUint, CodeMetadata, EgldOrEsdtTokenIdentifier, EgldOrEsdtTokenPayment, EgldOrEsdtTokenPaymentRefs, EgldOrMultiEsdtPayment, EsdtTokenPayment, EsdtTokenPaymentRefs, - ManagedBuffer, ManagedOption, ManagedVec, MultiEsdtPayment, TokenIdentifier, + ManagedAddress, ManagedBuffer, ManagedOption, ManagedVec, MultiEsdtPayment, + TokenIdentifier, }, }; diff --git a/framework/derive/Cargo.toml b/framework/derive/Cargo.toml index b15e244e7d..c9c1c4635c 100644 --- a/framework/derive/Cargo.toml +++ b/framework/derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-derive" -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" edition = "2021" authors = ["Andrei Marinica ", "MultiversX "] diff --git a/framework/meta/Cargo.toml b/framework/meta/Cargo.toml index f0c8b354f7..805f3e7942 100644 --- a/framework/meta/Cargo.toml +++ b/framework/meta/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-meta" -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" edition = "2021" authors = [ @@ -52,7 +52,7 @@ pathdiff = { version = "0.2.1", optional = true } common-path = { version = "1.0.0", optional = true } [dependencies.multiversx-sc] -version = "=0.49.0-alpha.3" +version = "=0.49.0-alpha.4" path = "../base" features = ["alloc", "num-bigint"] diff --git a/framework/scenario/Cargo.toml b/framework/scenario/Cargo.toml index 59aa246985..d946575a3c 100644 --- a/framework/scenario/Cargo.toml +++ b/framework/scenario/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-scenario" -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" edition = "2021" authors = [ @@ -40,12 +40,12 @@ path = "src/main.rs" run-go-tests = [] [dependencies.multiversx-sc] -version = "=0.49.0-alpha.3" +version = "=0.49.0-alpha.4" features = ["alloc", "num-bigint"] path = "../base" [dependencies.multiversx-sc-meta] -version = "=0.49.0-alpha.3" +version = "=0.49.0-alpha.4" path = "../meta" [dependencies.multiversx-chain-scenario-format] @@ -60,5 +60,5 @@ version = "=0.8.3" path = "../../vm" [dependencies.multiversx-sdk] -version = "=0.3.2" +version = "=0.4.0-alpha.4" path = "../../sdk/core" diff --git a/framework/snippets/Cargo.toml b/framework/snippets/Cargo.toml index 4a2476136f..954ebb2ea9 100644 --- a/framework/snippets/Cargo.toml +++ b/framework/snippets/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-snippets" -version = "0.49.0-alpha.3" +version = "0.49.0-alpha.4" edition = "2021" authors = ["MultiversX "] @@ -23,9 +23,9 @@ futures = "0.3" rand = "0.8.5" [dependencies.multiversx-sc-scenario] -version = "=0.49.0-alpha.3" +version = "=0.49.0-alpha.4" path = "../scenario" [dependencies.multiversx-sdk] -version = "=0.3.2" +version = "=0.4.0-alpha.4" path = "../../sdk/core" diff --git a/framework/wasm-adapter/Cargo.toml b/framework/wasm-adapter/Cargo.toml index 148d6d74ee..8db81d396e 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.49.0-alpha.3" +version = "0.49.0-alpha.4" edition = "2021" authors = [ @@ -22,5 +22,5 @@ categories = [ ] [dependencies.multiversx-sc] -version = "=0.49.0-alpha.3" +version = "=0.49.0-alpha.4" path = "../base" diff --git a/sdk/core/Cargo.toml b/sdk/core/Cargo.toml index c3f7aefd73..88b496cd3d 100644 --- a/sdk/core/Cargo.toml +++ b/sdk/core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sdk" -version = "0.3.2" +version = "0.4.0-alpha.4" edition = "2021" authors = [ diff --git a/tools/mxpy-snippet-generator/Cargo.toml b/tools/mxpy-snippet-generator/Cargo.toml index 029658ccf8..8390f16c01 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.49.0-alpha.3" +version = "0.49.0-alpha.4" path = "../../framework/base" [dependencies] diff --git a/tools/rust-debugger/format-tests/Cargo.toml b/tools/rust-debugger/format-tests/Cargo.toml index 3a6a5987c1..b44925e9d1 100644 --- a/tools/rust-debugger/format-tests/Cargo.toml +++ b/tools/rust-debugger/format-tests/Cargo.toml @@ -9,11 +9,11 @@ name = "format-tests" path = "src/format_tests.rs" [dependencies.multiversx-sc] -version = "=0.49.0-alpha.3" +version = "=0.49.0-alpha.4" path = "../../../framework/base" [dependencies.multiversx-sc-scenario] -version = "=0.49.0-alpha.3" +version = "=0.49.0-alpha.4" path = "../../../framework/scenario" [dependencies.multiversx-chain-vm] From 30d58a8d6e3cec01d09b9a9de0b83adcbf572d79 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 23 Apr 2024 16:12:57 +0300 Subject: [PATCH 378/461] Cargo.lock update --- .../benchmarks/large-storage/wasm/Cargo.lock | 6 +- .../linked-list-repeat/wasm/Cargo.lock | 6 +- .../mappers/map-repeat/wasm/Cargo.lock | 6 +- .../mappers/queue-repeat/wasm/Cargo.lock | 6 +- .../mappers/set-repeat/wasm/Cargo.lock | 6 +- .../single-value-repeat/wasm/Cargo.lock | 6 +- .../mappers/vec-repeat/wasm/Cargo.lock | 6 +- .../benchmarks/send-tx-repeat/wasm/Cargo.lock | 6 +- .../Cargo.lock | 6 +- .../Cargo.lock | 6 +- .../benchmarks/str-repeat/wasm/Cargo.lock | 6 +- .../core/price-aggregator/wasm/Cargo.lock | 10 +- contracts/examples/adder/wasm/Cargo.lock | 6 +- .../bonding-curve-contract/wasm/Cargo.lock | 8 +- .../examples/check-pause/wasm/Cargo.lock | 8 +- .../crowdfunding-esdt/wasm/Cargo.lock | 6 +- .../examples/crypto-bubbles/wasm/Cargo.lock | 6 +- .../kitty-auction/wasm/Cargo.lock | 6 +- .../kitty-genetic-alg/wasm/Cargo.lock | 6 +- .../kitty-ownership/wasm/Cargo.lock | 6 +- .../examples/crypto-zombies/wasm/Cargo.lock | 7 +- .../examples/digital-cash/wasm/Cargo.lock | 6 +- contracts/examples/empty/wasm/Cargo.lock | 6 +- .../esdt-transfer-with-fee/wasm/Cargo.lock | 6 +- contracts/examples/factorial/wasm/Cargo.lock | 6 +- .../examples/fractional-nfts/wasm/Cargo.lock | 8 +- .../examples/lottery-esdt/wasm/Cargo.lock | 6 +- .../multisig/wasm-multisig-full/Cargo.lock | 8 +- .../multisig/wasm-multisig-view/Cargo.lock | 8 +- contracts/examples/multisig/wasm/Cargo.lock | 8 +- contracts/examples/nft-minter/wasm/Cargo.lock | 6 +- .../nft-storage-prepay/wasm/Cargo.lock | 6 +- .../examples/nft-subscription/wasm/Cargo.lock | 8 +- .../order-book/factory/wasm/Cargo.lock | 6 +- .../examples/order-book/pair/wasm/Cargo.lock | 6 +- .../examples/ping-pong-egld/wasm/Cargo.lock | 6 +- .../examples/proxy-pause/wasm/Cargo.lock | 6 +- .../rewards-distribution/wasm/Cargo.lock | 8 +- .../examples/seed-nft-minter/wasm/Cargo.lock | 8 +- .../examples/token-release/wasm/Cargo.lock | 6 +- .../abi-tester/wasm-abi-tester-ev/Cargo.lock | 6 +- .../feature-tests/abi-tester/wasm/Cargo.lock | 6 +- .../wasm-alloc-mem-fail/Cargo.lock | 6 +- .../wasm-alloc-mem-leaking/Cargo.lock | 6 +- .../alloc-features/wasm/Cargo.lock | 6 +- .../Cargo.lock | 8 +- .../basic-features/wasm/Cargo.lock | 8 +- .../big-float-features/wasm/Cargo.lock | 6 +- .../builtin-func-features/wasm/Cargo.lock | 6 +- .../first-contract/wasm/Cargo.lock | 6 +- .../second-contract/wasm/Cargo.lock | 6 +- .../child/wasm/Cargo.lock | 6 +- .../parent/wasm/Cargo.lock | 14 +- .../forwarder-legacy/wasm/Cargo.lock | 178 ++++++++++++++++++ .../wasm-forwarder-queue-promises/Cargo.lock | 14 +- .../forwarder-queue/wasm/Cargo.lock | 14 +- .../Cargo.lock | 6 +- .../Cargo.lock | 6 +- .../forwarder-raw/wasm/Cargo.lock | 6 +- .../composability/forwarder/wasm/Cargo.lock | 14 +- .../local-esdt-and-nft/wasm/Cargo.lock | 6 +- .../promises-features/wasm/Cargo.lock | 14 +- .../proxy-test-first/wasm/Cargo.lock | 6 +- .../proxy-test-second/wasm/Cargo.lock | 6 +- .../recursive-caller/wasm/Cargo.lock | 6 +- .../transfer-role-features/wasm/Cargo.lock | 8 +- .../vault/wasm-vault-promises/Cargo.lock | 6 +- .../vault/wasm-vault-upgrade/Cargo.lock | 6 +- .../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 +- .../erc1155/wasm/Cargo.lock | 6 +- .../erc-style-contracts/erc20/wasm/Cargo.lock | 6 +- .../erc721/wasm/Cargo.lock | 6 +- .../lottery-erc20/wasm/Cargo.lock | 6 +- .../esdt-system-sc-mock/wasm/Cargo.lock | 6 +- .../exchange-features/wasm/Cargo.lock | 6 +- .../wasm/Cargo.lock | 6 +- .../managed-map-features/wasm/Cargo.lock | 6 +- .../wasm-multi-contract-alt-impl/Cargo.lock | 6 +- .../Cargo.lock | 6 +- .../Cargo.lock | 6 +- .../multi-contract-features/wasm/Cargo.lock | 6 +- .../panic-message-features/wasm/Cargo.lock | 6 +- .../payable-features/wasm/Cargo.lock | 6 +- .../wasm/Cargo.lock | 6 +- .../wasm/Cargo.lock | 6 +- .../scenario-tester/wasm/Cargo.lock | 6 +- .../wasm-use-module-view/Cargo.lock | 8 +- .../feature-tests/use-module/wasm/Cargo.lock | 8 +- 91 files changed, 464 insertions(+), 327 deletions(-) create mode 100644 contracts/feature-tests/composability/forwarder-legacy/wasm/Cargo.lock diff --git a/contracts/benchmarks/large-storage/wasm/Cargo.lock b/contracts/benchmarks/large-storage/wasm/Cargo.lock index cb13777edf..6708e4f729 100755 --- a/contracts/benchmarks/large-storage/wasm/Cargo.lock +++ b/contracts/benchmarks/large-storage/wasm/Cargo.lock @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 78ff5aef10..d31c788662 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.lock @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock index 3ee28394b7..9142220cb1 100644 --- a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock index 4df3ab54da..83c707f963 100644 --- a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock index 4f8e72b115..7ad0062925 100644 --- a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 fdfa32de28..03db275999 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.lock @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock index f51214f9f1..bd459c71c4 100644 --- a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock index 13533956e8..83d1d9a328 100755 --- a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.lock b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.lock index 4683a2b046..2196d6249d 100644 --- a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.lock +++ b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.lock b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.lock index f750a8d328..e25c06bd30 100644 --- a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.lock +++ b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/str-repeat/wasm/Cargo.lock b/contracts/benchmarks/str-repeat/wasm/Cargo.lock index e2b54817be..8df220c83a 100755 --- a/contracts/benchmarks/str-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/str-repeat/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/core/price-aggregator/wasm/Cargo.lock b/contracts/core/price-aggregator/wasm/Cargo.lock index 9e64d41b47..e8278c9e49 100644 --- a/contracts/core/price-aggregator/wasm/Cargo.lock +++ b/contracts/core/price-aggregator/wasm/Cargo.lock @@ -86,7 +86,7 @@ checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "multiversx-price-aggregator-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "arrayvec", "getrandom", @@ -105,7 +105,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -134,7 +134,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -145,14 +145,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/adder/wasm/Cargo.lock b/contracts/examples/adder/wasm/Cargo.lock index 1aea528c2d..94b2bd585c 100755 --- a/contracts/examples/adder/wasm/Cargo.lock +++ b/contracts/examples/adder/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/bonding-curve-contract/wasm/Cargo.lock b/contracts/examples/bonding-curve-contract/wasm/Cargo.lock index 0fa9693639..6091dfa920 100644 --- a/contracts/examples/bonding-curve-contract/wasm/Cargo.lock +++ b/contracts/examples/bonding-curve-contract/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/check-pause/wasm/Cargo.lock b/contracts/examples/check-pause/wasm/Cargo.lock index 1d886bba04..c1e288a067 100644 --- a/contracts/examples/check-pause/wasm/Cargo.lock +++ b/contracts/examples/check-pause/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock b/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock index 9a14efccc8..d2c12aee7e 100644 --- a/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock +++ b/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/crypto-bubbles/wasm/Cargo.lock b/contracts/examples/crypto-bubbles/wasm/Cargo.lock index 6af31b83b6..083af51877 100755 --- a/contracts/examples/crypto-bubbles/wasm/Cargo.lock +++ b/contracts/examples/crypto-bubbles/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 82fd08dc78..b9cc0ec1cf 100755 --- a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.lock +++ b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.lock @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -113,7 +113,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -124,7 +124,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 95368370cb..eb39c5f440 100755 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.lock +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.lock @@ -65,7 +65,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -94,7 +94,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -105,7 +105,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 d497d47054..99fec426ee 100755 --- a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.lock +++ b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.lock @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -104,7 +104,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -115,7 +115,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/crypto-zombies/wasm/Cargo.lock b/contracts/examples/crypto-zombies/wasm/Cargo.lock index 656ebf0e03..66258245b1 100755 --- a/contracts/examples/crypto-zombies/wasm/Cargo.lock +++ b/contracts/examples/crypto-zombies/wasm/Cargo.lock @@ -26,7 +26,6 @@ version = "0.0.0" dependencies = [ "kitty", "multiversx-sc", - "random", ] [[package]] @@ -65,7 +64,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -94,7 +93,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -105,7 +104,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/digital-cash/wasm/Cargo.lock b/contracts/examples/digital-cash/wasm/Cargo.lock index 602c7d856b..cfa4657a3c 100644 --- a/contracts/examples/digital-cash/wasm/Cargo.lock +++ b/contracts/examples/digital-cash/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/empty/wasm/Cargo.lock b/contracts/examples/empty/wasm/Cargo.lock index 5a87b422d2..e8fb6ec964 100755 --- a/contracts/examples/empty/wasm/Cargo.lock +++ b/contracts/examples/empty/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 cee7278178..87ca70552e 100644 --- a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.lock +++ b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/factorial/wasm/Cargo.lock b/contracts/examples/factorial/wasm/Cargo.lock index 4dff18babf..a60c60b3f9 100755 --- a/contracts/examples/factorial/wasm/Cargo.lock +++ b/contracts/examples/factorial/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/fractional-nfts/wasm/Cargo.lock b/contracts/examples/fractional-nfts/wasm/Cargo.lock index f95919526e..188bb02f09 100644 --- a/contracts/examples/fractional-nfts/wasm/Cargo.lock +++ b/contracts/examples/fractional-nfts/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/lottery-esdt/wasm/Cargo.lock b/contracts/examples/lottery-esdt/wasm/Cargo.lock index 6f1cace25d..fe712bd8bd 100755 --- a/contracts/examples/lottery-esdt/wasm/Cargo.lock +++ b/contracts/examples/lottery-esdt/wasm/Cargo.lock @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/multisig/wasm-multisig-full/Cargo.lock b/contracts/examples/multisig/wasm-multisig-full/Cargo.lock index 953a8551f3..124322c53e 100644 --- a/contracts/examples/multisig/wasm-multisig-full/Cargo.lock +++ b/contracts/examples/multisig/wasm-multisig-full/Cargo.lock @@ -56,7 +56,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/multisig/wasm-multisig-view/Cargo.lock b/contracts/examples/multisig/wasm-multisig-view/Cargo.lock index df77559d67..8e31c2566b 100644 --- a/contracts/examples/multisig/wasm-multisig-view/Cargo.lock +++ b/contracts/examples/multisig/wasm-multisig-view/Cargo.lock @@ -56,7 +56,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/multisig/wasm/Cargo.lock b/contracts/examples/multisig/wasm/Cargo.lock index d72aa67e30..0ec303cb70 100755 --- a/contracts/examples/multisig/wasm/Cargo.lock +++ b/contracts/examples/multisig/wasm/Cargo.lock @@ -56,7 +56,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/nft-minter/wasm/Cargo.lock b/contracts/examples/nft-minter/wasm/Cargo.lock index ce0b2650f9..47ea0d8306 100644 --- a/contracts/examples/nft-minter/wasm/Cargo.lock +++ b/contracts/examples/nft-minter/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/nft-storage-prepay/wasm/Cargo.lock b/contracts/examples/nft-storage-prepay/wasm/Cargo.lock index 319176681e..7513e4a0f6 100755 --- a/contracts/examples/nft-storage-prepay/wasm/Cargo.lock +++ b/contracts/examples/nft-storage-prepay/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/nft-subscription/wasm/Cargo.lock b/contracts/examples/nft-subscription/wasm/Cargo.lock index 2244415577..e89f4e2eb7 100644 --- a/contracts/examples/nft-subscription/wasm/Cargo.lock +++ b/contracts/examples/nft-subscription/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/order-book/factory/wasm/Cargo.lock b/contracts/examples/order-book/factory/wasm/Cargo.lock index 60c0b2cabd..8c1f3b9084 100644 --- a/contracts/examples/order-book/factory/wasm/Cargo.lock +++ b/contracts/examples/order-book/factory/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/order-book/pair/wasm/Cargo.lock b/contracts/examples/order-book/pair/wasm/Cargo.lock index 14b8551309..7a899b10a5 100644 --- a/contracts/examples/order-book/pair/wasm/Cargo.lock +++ b/contracts/examples/order-book/pair/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/ping-pong-egld/wasm/Cargo.lock b/contracts/examples/ping-pong-egld/wasm/Cargo.lock index a86f53d6dd..bae852197d 100755 --- a/contracts/examples/ping-pong-egld/wasm/Cargo.lock +++ b/contracts/examples/ping-pong-egld/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/proxy-pause/wasm/Cargo.lock b/contracts/examples/proxy-pause/wasm/Cargo.lock index 73d7607641..161bc13f68 100644 --- a/contracts/examples/proxy-pause/wasm/Cargo.lock +++ b/contracts/examples/proxy-pause/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/rewards-distribution/wasm/Cargo.lock b/contracts/examples/rewards-distribution/wasm/Cargo.lock index d5303f9494..886ab12580 100644 --- a/contracts/examples/rewards-distribution/wasm/Cargo.lock +++ b/contracts/examples/rewards-distribution/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/seed-nft-minter/wasm/Cargo.lock b/contracts/examples/seed-nft-minter/wasm/Cargo.lock index d322f26404..9241783954 100644 --- a/contracts/examples/seed-nft-minter/wasm/Cargo.lock +++ b/contracts/examples/seed-nft-minter/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/token-release/wasm/Cargo.lock b/contracts/examples/token-release/wasm/Cargo.lock index 0d4d728f3e..aa56882a90 100644 --- a/contracts/examples/token-release/wasm/Cargo.lock +++ b/contracts/examples/token-release/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 a99ecaccaf..99a94c03ec 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/abi-tester/wasm/Cargo.lock b/contracts/feature-tests/abi-tester/wasm/Cargo.lock index db59638442..e0be6b9819 100755 --- a/contracts/feature-tests/abi-tester/wasm/Cargo.lock +++ b/contracts/feature-tests/abi-tester/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock index 1a3bc7da70..7588f39311 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock index b32efb0d4a..c98821ddb9 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/alloc-features/wasm/Cargo.lock b/contracts/feature-tests/alloc-features/wasm/Cargo.lock index 6a0f3330d7..17c1644f6e 100644 --- a/contracts/feature-tests/alloc-features/wasm/Cargo.lock +++ b/contracts/feature-tests/alloc-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 f5d8794bb9..d78191614a 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 @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/basic-features/wasm/Cargo.lock b/contracts/feature-tests/basic-features/wasm/Cargo.lock index bfb8c41ea7..a87d0db4a0 100755 --- a/contracts/feature-tests/basic-features/wasm/Cargo.lock +++ b/contracts/feature-tests/basic-features/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 40beaf8d03..894e6a71d8 100644 --- a/contracts/feature-tests/big-float-features/wasm/Cargo.lock +++ b/contracts/feature-tests/big-float-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 bb57eeb64e..44ac5b066c 100644 --- a/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 a2c55964c7..a1a6b4e57c 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 99cd973235..b085b55d5a 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 @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 b7b7846eb2..fd4281c8c4 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 fd4d0794e8..1cc5525f78 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 @@ -20,13 +20,6 @@ version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" -[[package]] -name = "child" -version = "0.0.0" -dependencies = [ - "multiversx-sc", -] - [[package]] name = "endian-type" version = "0.1.2" @@ -47,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -87,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] @@ -114,7 +107,6 @@ dependencies = [ name = "parent" version = "0.0.0" dependencies = [ - "child", "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/forwarder-legacy/wasm/Cargo.lock b/contracts/feature-tests/composability/forwarder-legacy/wasm/Cargo.lock new file mode 100644 index 0000000000..6f2efbb4a7 --- /dev/null +++ b/contracts/feature-tests/composability/forwarder-legacy/wasm/Cargo.lock @@ -0,0 +1,178 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "autocfg" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" + +[[package]] +name = "bitflags" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" + +[[package]] +name = "endian-type" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" + +[[package]] +name = "forwarder-legacy" +version = "0.0.0" +dependencies = [ + "multiversx-sc", + "vault", +] + +[[package]] +name = "forwarder-legacy-wasm" +version = "0.0.0" +dependencies = [ + "forwarder-legacy", + "multiversx-sc-wasm-adapter", +] + +[[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.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "multiversx-sc" +version = "0.49.0-alpha.4" +dependencies = [ + "bitflags", + "hex-literal", + "multiversx-sc-codec", + "multiversx-sc-derive", + "num-traits", +] + +[[package]] +name = "multiversx-sc-codec" +version = "0.18.6" +dependencies = [ + "arrayvec", + "multiversx-sc-codec-derive", +] + +[[package]] +name = "multiversx-sc-codec-derive" +version = "0.18.6" +dependencies = [ + "hex", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "multiversx-sc-derive" +version = "0.49.0-alpha.4" +dependencies = [ + "hex", + "proc-macro2", + "quote", + "radix_trie", + "syn", +] + +[[package]] +name = "multiversx-sc-wasm-adapter" +version = "0.49.0-alpha.4" +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.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "proc-macro2" +version = "1.0.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +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.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "syn" +version = "2.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "vault" +version = "0.0.0" +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 9ce03493b3..0ae3a27158 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 @@ -31,7 +31,6 @@ name = "forwarder-queue" version = "0.0.0" dependencies = [ "multiversx-sc", - "vault", ] [[package]] @@ -56,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -96,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] @@ -169,10 +168,3 @@ name = "unicode-ident" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" - -[[package]] -name = "vault" -version = "0.0.0" -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 dbef7fe1c4..860461a0f0 100644 --- a/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.lock @@ -31,7 +31,6 @@ name = "forwarder-queue" version = "0.0.0" dependencies = [ "multiversx-sc", - "vault", ] [[package]] @@ -56,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -96,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] @@ -169,10 +168,3 @@ name = "unicode-ident" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" - -[[package]] -name = "vault" -version = "0.0.0" -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 1b3b56c133..8c45f982fd 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 dcb63c28ef..0dcd90a47b 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 4b56a477a5..9c2550453a 100755 --- a/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock b/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock index 14ba905f98..9394670d78 100755 --- a/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock @@ -31,7 +31,6 @@ name = "forwarder" version = "0.0.0" dependencies = [ "multiversx-sc", - "vault", ] [[package]] @@ -56,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -85,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -96,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] @@ -169,10 +168,3 @@ name = "unicode-ident" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" - -[[package]] -name = "vault" -version = "0.0.0" -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 cf8b7eaeb8..306d6ca1f6 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 @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 1cce0c20ac..dcfdbef311 100644 --- a/contracts/feature-tests/composability/promises-features/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/promises-features/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] @@ -117,7 +117,6 @@ name = "promises-features" version = "0.0.0" dependencies = [ "multiversx-sc", - "vault", ] [[package]] @@ -169,10 +168,3 @@ name = "unicode-ident" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" - -[[package]] -name = "vault" -version = "0.0.0" -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 2616a0e326..fe997fa86f 100755 --- a/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 cb41667a6d..a0b07ff2f6 100755 --- a/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 d2e41ac725..00977f8bbd 100755 --- a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 bbbb12c9f9..2bed78bf9a 100644 --- a/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 e86afd77c4..d710aceb72 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.lock +++ b/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock index 0b7112be8c..5e2cc3f66c 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock +++ b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/vault/wasm/Cargo.lock b/contracts/feature-tests/composability/vault/wasm/Cargo.lock index 6d0b58aed6..297c3796f0 100755 --- a/contracts/feature-tests/composability/vault/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/vault/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 ad10f006f4..0bc315e9fb 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 @@ -63,7 +63,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 0a96032377..dd889a0faa 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 @@ -63,7 +63,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 a6f053b5c8..3a434c71fb 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 90f97cfb61..7caccdf499 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 c7d25eb4e2..7982edf7d2 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 b91f78bb52..bd877a1118 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 36b9febca3..8990616f04 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 @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 d52e047711..7dd4fb648b 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.lock +++ b/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/exchange-features/wasm/Cargo.lock b/contracts/feature-tests/exchange-features/wasm/Cargo.lock index 09349d87e7..61605d1f7f 100644 --- a/contracts/feature-tests/exchange-features/wasm/Cargo.lock +++ b/contracts/feature-tests/exchange-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 9dbe2ad726..753027d794 100644 --- a/contracts/feature-tests/formatted-message-features/wasm/Cargo.lock +++ b/contracts/feature-tests/formatted-message-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 a555da68eb..cab5358a51 100644 --- a/contracts/feature-tests/managed-map-features/wasm/Cargo.lock +++ b/contracts/feature-tests/managed-map-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 3997752036..c9c7649dc8 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 @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 13230fc27c..76a09ced3b 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 @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 b1fa6d8b6b..93f165d078 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 @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 2815c003c8..615ffffd84 100755 --- a/contracts/feature-tests/multi-contract-features/wasm/Cargo.lock +++ b/contracts/feature-tests/multi-contract-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 ddf9332c59..dc78f4d79f 100755 --- a/contracts/feature-tests/panic-message-features/wasm/Cargo.lock +++ b/contracts/feature-tests/panic-message-features/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/payable-features/wasm/Cargo.lock b/contracts/feature-tests/payable-features/wasm/Cargo.lock index 3ffdf49ece..ef5d30915a 100755 --- a/contracts/feature-tests/payable-features/wasm/Cargo.lock +++ b/contracts/feature-tests/payable-features/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 b8d98314e7..6e9141b444 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.lock +++ b/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" 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 f95eb564c3..baaa27b189 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.lock +++ b/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/scenario-tester/wasm/Cargo.lock b/contracts/feature-tests/scenario-tester/wasm/Cargo.lock index dd7e298064..c92359d81b 100755 --- a/contracts/feature-tests/scenario-tester/wasm/Cargo.lock +++ b/contracts/feature-tests/scenario-tester/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.2" +version = "0.49.0-alpha.4" 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 969d71832f..eaf5904701 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 @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/use-module/wasm/Cargo.lock b/contracts/feature-tests/use-module/wasm/Cargo.lock index c97622bd31..5ff85f74d5 100644 --- a/contracts/feature-tests/use-module/wasm/Cargo.lock +++ b/contracts/feature-tests/use-module/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "bitflags", "hex-literal", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.49.0-alpha.4" dependencies = [ "multiversx-sc", ] From 50a269eba275e668453a9adf152b547003141a11 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Tue, 23 Apr 2024 20:27:12 +0300 Subject: [PATCH 379/461] impl tx_hash - data not stored --- .../rewards-distribution/src/proxy.rs | 233 ++++++++++++++++++ .../src/rewards_distribution.rs | 2 +- .../rewards_distribution_blackbox_test.rs | 25 +- framework/base/src/types/interaction/tx.rs | 32 ++- .../base/src/types/interaction/tx_env.rs | 6 + .../src/facade/world_tx/scenario_exec_call.rs | 14 +- .../src/facade/world_tx/scenario_tx_env.rs | 8 +- .../interactor_tx/interactor_prepare_async.rs | 1 + 8 files changed, 305 insertions(+), 16 deletions(-) create mode 100644 contracts/examples/rewards-distribution/src/proxy.rs diff --git a/contracts/examples/rewards-distribution/src/proxy.rs b/contracts/examples/rewards-distribution/src/proxy.rs new file mode 100644 index 0000000000..4a02c6c098 --- /dev/null +++ b/contracts/examples/rewards-distribution/src/proxy.rs @@ -0,0 +1,233 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(dead_code)] +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +pub struct RewardsDistributionProxy; + +impl TxProxyTrait for RewardsDistributionProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = RewardsDistributionProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + RewardsDistributionProxyMethods { wrapped_tx: tx } + } +} + +pub struct RewardsDistributionProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl RewardsDistributionProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + seed_nft_minter_address: Arg0, + brackets: Arg1, + ) -> TxProxyDeploy { + self.wrapped_tx + .raw_deploy() + .argument(&seed_nft_minter_address) + .argument(&brackets) + .original_result() + } +} + +#[rustfmt::skip] +impl RewardsDistributionProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn deposit_royalties( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("depositRoyalties") + .original_result() + } + + pub fn raffle( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("raffle") + .original_result() + } + + pub fn claim_rewards< + Arg0: CodecInto, + Arg1: CodecInto, + Arg2: CodecInto, u64>>>, + >( + self, + raffle_id_start: Arg0, + raffle_id_end: Arg1, + reward_tokens: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("claimRewards") + .argument(&raffle_id_start) + .argument(&raffle_id_end) + .argument(&reward_tokens) + .original_result() + } + + pub fn compute_claimable_amount< + Arg0: CodecInto, + Arg1: CodecInto>, + Arg2: CodecInto, + Arg3: CodecInto, + >( + self, + raffle_id: Arg0, + reward_token_id: Arg1, + reward_token_nonce: Arg2, + nft_nonce: Arg3, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call("computeClaimableAmount") + .argument(&raffle_id) + .argument(&reward_token_id) + .argument(&reward_token_nonce) + .argument(&nft_nonce) + .original_result() + } + + pub fn raffle_id( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("getRaffleId") + .original_result() + } + + pub fn completed_raffle_id_count( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("getCompletedRaffleIdCount") + .original_result() + } + + pub fn royalties< + Arg0: CodecInto, + Arg1: CodecInto>, + Arg2: CodecInto, + >( + self, + raffle_id: Arg0, + reward_token_id: Arg1, + reward_token_nonce: Arg2, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call("getRoyalties") + .argument(&raffle_id) + .argument(&reward_token_id) + .argument(&reward_token_nonce) + .original_result() + } + + pub fn nft_reward_percent< + Arg0: CodecInto, + Arg1: CodecInto, + >( + self, + raffle_id: Arg0, + nft_nonce: Arg1, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call("getNftRewardPercent") + .argument(&raffle_id) + .argument(&nft_nonce) + .original_result() + } + + pub fn was_claimed< + Arg0: CodecInto, + Arg1: CodecInto>, + Arg2: CodecInto, + Arg3: CodecInto, + >( + self, + raffle_id: Arg0, + reward_token_id: Arg1, + reward_token_nonce: Arg2, + nft_nonce: Arg3, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("getWasClaimed") + .argument(&raffle_id) + .argument(&reward_token_id) + .argument(&reward_token_nonce) + .argument(&nft_nonce) + .original_result() + } + + pub fn seed_nft_minter_address( + self, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call("getSeedNftMinterAddress") + .original_result() + } + + pub fn brackets( + self, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call("getBrackets") + .original_result() + } + + pub fn last_raffle_epoch( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("getLastRaffleEpoch") + .original_result() + } + + pub fn nft_token_id( + self, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call("getNftTokenId") + .original_result() + } +} + +#[derive(ManagedVecItem, NestedEncode, NestedDecode)] +pub struct Bracket { + pub index_percent: u64, + pub bracket_reward_percent: u64, +} diff --git a/contracts/examples/rewards-distribution/src/rewards_distribution.rs b/contracts/examples/rewards-distribution/src/rewards_distribution.rs index 880b4ed835..eb69173c62 100644 --- a/contracts/examples/rewards-distribution/src/rewards_distribution.rs +++ b/contracts/examples/rewards-distribution/src/rewards_distribution.rs @@ -5,8 +5,8 @@ use multiversx_sc_modules::ongoing_operation::{ CONTINUE_OP, DEFAULT_MIN_GAS_TO_SAVE_PROGRESS, STOP_OP, }; +pub mod proxy; pub mod seed_nft_minter_proxy; - type Epoch = u64; pub const EPOCHS_IN_WEEK: Epoch = 7; diff --git a/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs b/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs index 4380f0122f..e70f273015 100644 --- a/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs +++ b/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs @@ -6,18 +6,24 @@ use std::iter::zip; use crate::mock_seed_nft_minter::ProxyTrait as _; use rewards_distribution::{ - Bracket, ContractObj, ProxyTrait as _, RewardsDistribution, DIVISION_SAFETY_CONSTANT, + proxy, Bracket, ContractObj, ProxyTrait as _, RewardsDistribution, DIVISION_SAFETY_CONSTANT, }; const NFT_TOKEN_ID: &[u8] = b"NFT-123456"; const NFT_TOKEN_ID_EXPR: &str = "str:NFT-123456"; const ALICE_ADDRESS_EXPR: &str = "address:alice"; +const ALICE_ADDRESS_EXPR_REPL: AddressExpr = AddressExpr("alice"); const OWNER_ADDRESS_EXPR: &str = "address:owner"; const REWARDS_DISTRIBUTION_ADDRESS_EXPR: &str = "sc:rewards-distribution"; +const REWARDS_DISTRIBUTION_ADDRESS_EXPR_REPL: ScExpr = ScExpr("rewards-distribution"); const REWARDS_DISTRIBUTION_PATH_EXPR: &str = "mxsc:output/rewards-distribution.mxsc.json"; +const REWARDS_DISTRIBUTION_PATH_EXPR_REPL: MxscExpr = + MxscExpr("output/rewards-distribution.mxsc.json"); const SEED_NFT_MINTER_ADDRESS_EXPR: &str = "sc:seed-nft-minter"; const SEED_NFT_MINTER_PATH_EXPR: &str = "mxsc:../seed-nft-minter/output/seed-nft-minter.mxsc.json"; +const SEED_NFT_MINTER_PATH_EXPR_REPL: MxscExpr = + MxscExpr("../seed-nft-minter/output/seed-nft-minter.mxsc.json"); type RewardsDistributionContract = ContractInfo>; type SeedNFTMinterContract = ContractInfo>; @@ -216,14 +222,17 @@ fn test_raffle_and_claim() { .call(state.rewards_distribution_contract.deposit_royalties()), ); + let vect = &[0u8; 32]; // run the raffle - state.world.sc_call( - ScCallStep::new() - .from(ALICE_ADDRESS_EXPR) - .tx_hash(&[0u8; 32]) // blockchain rng is deterministic, so we can use a fixed hash - .call(state.rewards_distribution_contract.raffle()) - .expect_value(OperationCompletionStatus::Completed), - ); + state + .world + .tx() + .from(ALICE_ADDRESS_EXPR_REPL) + .to(REWARDS_DISTRIBUTION_ADDRESS_EXPR_REPL) + .typed(proxy::RewardsDistributionProxy) + .raffle() + .tx_hash(ManagedBuffer::from(vect)) + .run(); let mut rewards: Vec> = Vec::new(); // post-raffle reward amount frequency checksstate diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 075a78d50a..e5313ef198 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -3,7 +3,8 @@ use crate::{ types::{ BigUint, CodeMetadata, EgldOrEsdtTokenIdentifier, EgldOrEsdtTokenPayment, EgldOrEsdtTokenPaymentRefs, EgldOrMultiEsdtPayment, EsdtTokenPayment, EsdtTokenPaymentRefs, - ManagedBuffer, ManagedOption, ManagedVec, MultiEsdtPayment, TokenIdentifier, + ManagedAddress, ManagedBuffer, ManagedOption, ManagedVec, MultiEsdtPayment, + TokenIdentifier, }, }; @@ -14,9 +15,9 @@ use super::{ ContractCallNoPayment, ContractCallWithEgld, ContractDeploy, DeployCall, Egld, EgldPayment, ExplicitGas, FromSource, FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, TxCodeValue, TxData, - TxDataFunctionCall, TxEgldValue, TxEnv, TxEnvMockDeployAddress, TxFrom, TxFromSourceValue, - TxFromSpecified, TxGas, TxGasValue, TxPayment, TxPaymentEgldOnly, TxProxyTrait, - TxResultHandler, TxScEnv, TxTo, TxToSpecified, UpgradeCall, + TxDataFunctionCall, TxEgldValue, TxEnv, TxEnvMockDeployAddress, TxEnvWithTxHash, TxFrom, + TxFromSourceValue, TxFromSpecified, TxGas, TxGasValue, TxPayment, TxPaymentEgldOnly, + TxProxyTrait, TxResultHandler, TxScEnv, TxTo, TxToSpecified, UpgradeCall, }; #[must_use] @@ -844,6 +845,29 @@ where } } +impl Tx +where + Env: TxEnvWithTxHash, + From: TxFromSpecified, + To: TxTo, + Payment: TxPaymentEgldOnly, + Gas: TxGas, + Data: TxDataFunctionCall, + RH: TxResultHandler, +{ + /// Sets the new mock address to be used for the newly deployed contract. + /// + /// Only allowed in tests. + pub fn tx_hash(mut self, tx_hash: TH) -> Self + where + TH: AnnotatedValue>, + { + self.env.set_tx_hash(tx_hash); + let str = "str"; + self + } +} + impl Tx, RH> where diff --git a/framework/base/src/types/interaction/tx_env.rs b/framework/base/src/types/interaction/tx_env.rs index 11e7b91e6a..d8f82c4309 100644 --- a/framework/base/src/types/interaction/tx_env.rs +++ b/framework/base/src/types/interaction/tx_env.rs @@ -24,3 +24,9 @@ pub trait TxEnvMockDeployAddress: TxEnv { From: TxFromSpecified, NA: AnnotatedValue>; } + +pub trait TxEnvWithTxHash: TxEnv { + fn set_tx_hash(&mut self, tx_hash: TH) + where + TH: AnnotatedValue>; +} diff --git a/framework/scenario/src/facade/world_tx/scenario_exec_call.rs b/framework/scenario/src/facade/world_tx/scenario_exec_call.rs index dd258da3b4..159e065817 100644 --- a/framework/scenario/src/facade/world_tx/scenario_exec_call.rs +++ b/framework/scenario/src/facade/world_tx/scenario_exec_call.rs @@ -2,14 +2,14 @@ use multiversx_sc::{ tuple_util::NestedTupleFlatten, types::{ FunctionCall, ManagedAddress, ManagedBuffer, RHListExec, Tx, TxBaseWithEnv, TxEnv, - TxEnvMockDeployAddress, TxFromSpecified, TxGas, TxPayment, TxToSpecified, + TxEnvMockDeployAddress, TxEnvWithTxHash, TxFromSpecified, TxGas, TxPayment, TxToSpecified, }, }; use crate::{ api::StaticApi, scenario::tx_to_step::{address_annotated, TxToStep}, - scenario_model::{SetStateStep, TxExpect, TxResponse}, + scenario_model::{BytesValue, SetStateStep, TxExpect, TxResponse}, ScenarioTxEnv, ScenarioTxRun, ScenarioWorld, }; @@ -88,6 +88,16 @@ where } } +impl<'w> TxEnvWithTxHash for ScenarioEnvExec<'w> { + fn set_tx_hash(&mut self, tx_hash: TH) + where + TH: multiversx_sc::types::AnnotatedValue>, + { + let bytes_tx_hash = BytesValue::from(tx_hash.into_value(&self).to_vec()); + self.data.tx_hash = Some(bytes_tx_hash); + } +} + impl ScenarioWorld { pub fn tx(&mut self) -> TxBaseWithEnv> { let data = self.new_env_data(); diff --git a/framework/scenario/src/facade/world_tx/scenario_tx_env.rs b/framework/scenario/src/facade/world_tx/scenario_tx_env.rs index d195a7600d..33bd562ea6 100644 --- a/framework/scenario/src/facade/world_tx/scenario_tx_env.rs +++ b/framework/scenario/src/facade/world_tx/scenario_tx_env.rs @@ -2,7 +2,11 @@ use std::path::PathBuf; use multiversx_sc::types::{ManagedAddress, ManagedBuffer, TxEnv}; -use crate::{api::StaticApi, scenario_model::TxExpect, ScenarioWorld}; +use crate::{ + api::StaticApi, + scenario_model::{BytesValue, TxExpect}, + ScenarioWorld, +}; /// Designates a tx environment suitable for running scenarios locally. pub trait ScenarioTxEnv: TxEnv { @@ -13,6 +17,7 @@ pub trait ScenarioTxEnv: TxEnv { #[derive(Default, Debug, Clone)] pub struct ScenarioTxEnvData { pub context_path: PathBuf, + pub tx_hash: Option, } impl TxEnv for ScenarioTxEnvData { @@ -43,6 +48,7 @@ impl ScenarioWorld { pub(crate) fn new_env_data(&self) -> ScenarioTxEnvData { ScenarioTxEnvData { context_path: self.current_dir.clone(), + tx_hash: None, } } } diff --git a/framework/snippets/src/interactor_tx/interactor_prepare_async.rs b/framework/snippets/src/interactor_tx/interactor_prepare_async.rs index 167c7d9f27..43ca7c403c 100644 --- a/framework/snippets/src/interactor_tx/interactor_prepare_async.rs +++ b/framework/snippets/src/interactor_tx/interactor_prepare_async.rs @@ -6,6 +6,7 @@ impl Interactor { pub(crate) fn new_env_data(&self) -> ScenarioTxEnvData { ScenarioTxEnvData { context_path: self.current_dir.clone(), + tx_hash: None, } } } From 85903ebf37486641a46ba2bf88f2c3dc0cb1058f Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Tue, 23 Apr 2024 20:37:36 +0300 Subject: [PATCH 380/461] cleanup --- framework/base/src/types/interaction/tx.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index e5313ef198..3535222de0 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -863,7 +863,6 @@ where TH: AnnotatedValue>, { self.env.set_tx_hash(tx_hash); - let str = "str"; self } } From c40217625a223f42edb809115ffac0a431774670 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 23 Apr 2024 22:17:17 +0300 Subject: [PATCH 381/461] impl tx_hash --- framework/base/src/types/interaction/tx.rs | 12 ++++++------ framework/base/src/types/interaction/tx_env.rs | 6 ++---- .../src/facade/world_tx/scenario_exec_call.rs | 17 ++++++++--------- .../src/facade/world_tx/scenario_exec_deploy.rs | 1 + .../src/facade/world_tx/scenario_tx_env.rs | 10 +++------- 5 files changed, 20 insertions(+), 26 deletions(-) diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 3535222de0..36b9a27d77 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -1,7 +1,7 @@ use crate::{ api::CallTypeApi, types::{ - BigUint, CodeMetadata, EgldOrEsdtTokenIdentifier, EgldOrEsdtTokenPayment, + heap::H256, BigUint, CodeMetadata, EgldOrEsdtTokenIdentifier, EgldOrEsdtTokenPayment, EgldOrEsdtTokenPaymentRefs, EgldOrMultiEsdtPayment, EsdtTokenPayment, EsdtTokenPaymentRefs, ManagedAddress, ManagedBuffer, ManagedOption, ManagedVec, MultiEsdtPayment, TokenIdentifier, @@ -845,10 +845,10 @@ where } } -impl Tx +impl Tx where Env: TxEnvWithTxHash, - From: TxFromSpecified, + From_: TxFromSpecified, To: TxTo, Payment: TxPaymentEgldOnly, Gas: TxGas, @@ -858,11 +858,11 @@ where /// Sets the new mock address to be used for the newly deployed contract. /// /// Only allowed in tests. - pub fn tx_hash(mut self, tx_hash: TH) -> Self + pub fn tx_hash(mut self, tx_hash: H) -> Self where - TH: AnnotatedValue>, + H256: From, { - self.env.set_tx_hash(tx_hash); + self.env.set_tx_hash(H256::from(tx_hash)); self } } diff --git a/framework/base/src/types/interaction/tx_env.rs b/framework/base/src/types/interaction/tx_env.rs index d8f82c4309..37e18d7dec 100644 --- a/framework/base/src/types/interaction/tx_env.rs +++ b/framework/base/src/types/interaction/tx_env.rs @@ -1,6 +1,6 @@ use crate::{ api::CallTypeApi, - types::{ManagedAddress, ManagedBuffer}, + types::{heap::H256, ManagedAddress, ManagedBuffer}, }; use super::{AnnotatedValue, TxFromSpecified}; @@ -26,7 +26,5 @@ pub trait TxEnvMockDeployAddress: TxEnv { } pub trait TxEnvWithTxHash: TxEnv { - fn set_tx_hash(&mut self, tx_hash: TH) - where - TH: AnnotatedValue>; + fn set_tx_hash(&mut self, tx_hash: H256); } diff --git a/framework/scenario/src/facade/world_tx/scenario_exec_call.rs b/framework/scenario/src/facade/world_tx/scenario_exec_call.rs index 159e065817..42a29ef378 100644 --- a/framework/scenario/src/facade/world_tx/scenario_exec_call.rs +++ b/framework/scenario/src/facade/world_tx/scenario_exec_call.rs @@ -1,15 +1,16 @@ use multiversx_sc::{ tuple_util::NestedTupleFlatten, types::{ - FunctionCall, ManagedAddress, ManagedBuffer, RHListExec, Tx, TxBaseWithEnv, TxEnv, - TxEnvMockDeployAddress, TxEnvWithTxHash, TxFromSpecified, TxGas, TxPayment, TxToSpecified, + heap::H256, FunctionCall, ManagedAddress, ManagedBuffer, RHListExec, Tx, TxBaseWithEnv, + TxEnv, TxEnvMockDeployAddress, TxEnvWithTxHash, TxFromSpecified, TxGas, TxPayment, + TxToSpecified, }, }; use crate::{ api::StaticApi, scenario::tx_to_step::{address_annotated, TxToStep}, - scenario_model::{BytesValue, SetStateStep, TxExpect, TxResponse}, + scenario_model::{SetStateStep, TxExpect, TxResponse}, ScenarioTxEnv, ScenarioTxRun, ScenarioWorld, }; @@ -83,18 +84,16 @@ where fn run(self) -> Self::Returns { let mut step_wrapper = self.tx_to_step(); + step_wrapper.step.explicit_tx_hash = core::mem::take(&mut step_wrapper.env.data.tx_hash); step_wrapper.env.world.sc_call(&mut step_wrapper.step); step_wrapper.process_result() } } impl<'w> TxEnvWithTxHash for ScenarioEnvExec<'w> { - fn set_tx_hash(&mut self, tx_hash: TH) - where - TH: multiversx_sc::types::AnnotatedValue>, - { - let bytes_tx_hash = BytesValue::from(tx_hash.into_value(&self).to_vec()); - self.data.tx_hash = Some(bytes_tx_hash); + fn set_tx_hash(&mut self, tx_hash: H256) { + assert!(self.data.tx_hash.is_none(), "tx hash set twice"); + self.data.tx_hash = Some(tx_hash); } } diff --git a/framework/scenario/src/facade/world_tx/scenario_exec_deploy.rs b/framework/scenario/src/facade/world_tx/scenario_exec_deploy.rs index 866d4f562f..40fbbaa878 100644 --- a/framework/scenario/src/facade/world_tx/scenario_exec_deploy.rs +++ b/framework/scenario/src/facade/world_tx/scenario_exec_deploy.rs @@ -35,6 +35,7 @@ where fn run(self) -> Self::Returns { let mut step_wrapper = self.tx_to_step(); + step_wrapper.step.explicit_tx_hash = core::mem::take(&mut step_wrapper.env.data.tx_hash); step_wrapper.env.world.sc_deploy(&mut step_wrapper.step); step_wrapper.process_result() } diff --git a/framework/scenario/src/facade/world_tx/scenario_tx_env.rs b/framework/scenario/src/facade/world_tx/scenario_tx_env.rs index 33bd562ea6..7613f94116 100644 --- a/framework/scenario/src/facade/world_tx/scenario_tx_env.rs +++ b/framework/scenario/src/facade/world_tx/scenario_tx_env.rs @@ -1,12 +1,8 @@ use std::path::PathBuf; -use multiversx_sc::types::{ManagedAddress, ManagedBuffer, TxEnv}; +use multiversx_sc::types::{ManagedAddress, ManagedBuffer, TxEnv, H256}; -use crate::{ - api::StaticApi, - scenario_model::{BytesValue, TxExpect}, - ScenarioWorld, -}; +use crate::{api::StaticApi, scenario_model::TxExpect, ScenarioWorld}; /// Designates a tx environment suitable for running scenarios locally. pub trait ScenarioTxEnv: TxEnv { @@ -17,7 +13,7 @@ pub trait ScenarioTxEnv: TxEnv { #[derive(Default, Debug, Clone)] pub struct ScenarioTxEnvData { pub context_path: PathBuf, - pub tx_hash: Option, + pub tx_hash: Option, } impl TxEnv for ScenarioTxEnvData { From 551e3ef00810f312051a3d4c51bedeecfb448a52 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Tue, 23 Apr 2024 23:08:01 +0300 Subject: [PATCH 382/461] fix test --- .../tests/rewards_distribution_blackbox_test.rs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs b/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs index e70f273015..135af91f3f 100644 --- a/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs +++ b/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs @@ -18,12 +18,8 @@ const OWNER_ADDRESS_EXPR: &str = "address:owner"; const REWARDS_DISTRIBUTION_ADDRESS_EXPR: &str = "sc:rewards-distribution"; const REWARDS_DISTRIBUTION_ADDRESS_EXPR_REPL: ScExpr = ScExpr("rewards-distribution"); const REWARDS_DISTRIBUTION_PATH_EXPR: &str = "mxsc:output/rewards-distribution.mxsc.json"; -const REWARDS_DISTRIBUTION_PATH_EXPR_REPL: MxscExpr = - MxscExpr("output/rewards-distribution.mxsc.json"); const SEED_NFT_MINTER_ADDRESS_EXPR: &str = "sc:seed-nft-minter"; const SEED_NFT_MINTER_PATH_EXPR: &str = "mxsc:../seed-nft-minter/output/seed-nft-minter.mxsc.json"; -const SEED_NFT_MINTER_PATH_EXPR_REPL: MxscExpr = - MxscExpr("../seed-nft-minter/output/seed-nft-minter.mxsc.json"); type RewardsDistributionContract = ContractInfo>; type SeedNFTMinterContract = ContractInfo>; @@ -222,7 +218,6 @@ fn test_raffle_and_claim() { .call(state.rewards_distribution_contract.deposit_royalties()), ); - let vect = &[0u8; 32]; // run the raffle state .world @@ -231,7 +226,7 @@ fn test_raffle_and_claim() { .to(REWARDS_DISTRIBUTION_ADDRESS_EXPR_REPL) .typed(proxy::RewardsDistributionProxy) .raffle() - .tx_hash(ManagedBuffer::from(vect)) + .tx_hash(&[0u8; 32]) .run(); let mut rewards: Vec> = Vec::new(); From 776dd0579375e852619e1d105e424a88e035de24 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 24 Apr 2024 06:29:40 +0300 Subject: [PATCH 383/461] cleanup --- framework/base/src/types/interaction/tx.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 36b9a27d77..486e4ade83 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -845,22 +845,22 @@ where } } -impl Tx +impl Tx where Env: TxEnvWithTxHash, - From_: TxFromSpecified, + From: TxFromSpecified, To: TxTo, Payment: TxPaymentEgldOnly, Gas: TxGas, Data: TxDataFunctionCall, RH: TxResultHandler, { - /// Sets the new mock address to be used for the newly deployed contract. + /// Sets the mock transaction hash to be used in a test. /// /// Only allowed in tests. pub fn tx_hash(mut self, tx_hash: H) -> Self where - H256: From, + H256: core::convert::From, { self.env.set_tx_hash(H256::from(tx_hash)); self From 30e33686ddc8c76224097b1f0861a4c8445e2f97 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 24 Apr 2024 06:36:00 +0300 Subject: [PATCH 384/461] comment --- .../tests/rewards_distribution_blackbox_test.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs b/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs index 135af91f3f..e01c9dafcf 100644 --- a/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs +++ b/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs @@ -226,7 +226,7 @@ fn test_raffle_and_claim() { .to(REWARDS_DISTRIBUTION_ADDRESS_EXPR_REPL) .typed(proxy::RewardsDistributionProxy) .raffle() - .tx_hash(&[0u8; 32]) + .tx_hash([0u8; 32]) // blockchain rng is deterministic, so we can use a fixed hash .run(); let mut rewards: Vec> = Vec::new(); From 30c422f46525b7ba5ea2500e241702650b32426f Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 12 Apr 2024 15:55:23 +0300 Subject: [PATCH 385/461] moved legacy contract_deploy.rs --- .../src/types/interaction/contract_call_legacy.rs | 7 +++++++ .../contract_call_legacy/contract_call_exec.rs | 7 +------ .../contract_call_no_payment.rs | 5 ++--- .../{ => contract_call_legacy}/contract_deploy.rs | 12 +++++------- framework/base/src/types/interaction/mod.rs | 2 -- framework/base/src/types/interaction/tx.rs | 14 +++++++------- 6 files changed, 22 insertions(+), 25 deletions(-) rename framework/base/src/types/interaction/{ => contract_call_legacy}/contract_deploy.rs (93%) diff --git a/framework/base/src/types/interaction/contract_call_legacy.rs b/framework/base/src/types/interaction/contract_call_legacy.rs index d5ae5e04ed..22ebc84d7d 100644 --- a/framework/base/src/types/interaction/contract_call_legacy.rs +++ b/framework/base/src/types/interaction/contract_call_legacy.rs @@ -6,6 +6,7 @@ mod contract_call_with_any_payment; mod contract_call_with_egld; mod contract_call_with_egld_or_single_esdt; mod contract_call_with_multi_esdt; +mod contract_deploy; pub use contract_call_no_payment::ContractCallNoPayment; pub use contract_call_trait::{ContractCall, ContractCallBase}; @@ -13,3 +14,9 @@ pub use contract_call_with_any_payment::ContractCallWithAnyPayment; pub use contract_call_with_egld::ContractCallWithEgld; pub use contract_call_with_egld_or_single_esdt::ContractCallWithEgldOrSingleEsdt; pub use contract_call_with_multi_esdt::ContractCallWithMultiEsdt; +pub use contract_deploy::{new_contract_deploy, ContractDeploy}; + +/// Using max u64 to represent maximum possible gas, +/// so that the value zero is not reserved and can be specified explicitly. +/// Leaving the gas limit unspecified will replace it with `api.get_gas_left()`. +pub(crate) const UNSPECIFIED_GAS_LIMIT: u64 = u64::MAX; diff --git a/framework/base/src/types/interaction/contract_call_legacy/contract_call_exec.rs b/framework/base/src/types/interaction/contract_call_legacy/contract_call_exec.rs index 6ec1d82009..6928ee862b 100644 --- a/framework/base/src/types/interaction/contract_call_legacy/contract_call_exec.rs +++ b/framework/base/src/types/interaction/contract_call_legacy/contract_call_exec.rs @@ -9,14 +9,9 @@ use crate::{ }, }; -use super::{ContractCallNoPayment, ContractCallWithEgld}; +use super::{ContractCallNoPayment, ContractCallWithEgld, UNSPECIFIED_GAS_LIMIT}; use crate::api::managed_types::handles::HandleConstraints; -/// Using max u64 to represent maximum possible gas, -/// so that the value zero is not reserved and can be specified explicitly. -/// Leaving the gas limit unspecified will replace it with `api.get_gas_left()`. -pub(super) const UNSPECIFIED_GAS_LIMIT: u64 = u64::MAX; - impl ContractCallWithEgld where SA: CallTypeApi + 'static, diff --git a/framework/base/src/types/interaction/contract_call_legacy/contract_call_no_payment.rs b/framework/base/src/types/interaction/contract_call_legacy/contract_call_no_payment.rs index 2f39ff78f9..db5d0c8561 100644 --- a/framework/base/src/types/interaction/contract_call_legacy/contract_call_no_payment.rs +++ b/framework/base/src/types/interaction/contract_call_legacy/contract_call_no_payment.rs @@ -12,10 +12,9 @@ use crate::{ }; use super::{ - contract_call_exec::UNSPECIFIED_GAS_LIMIT, contract_call_trait::ContractCallBase, - contract_call_with_egld::ContractCallWithEgld, + contract_call_trait::ContractCallBase, contract_call_with_egld::ContractCallWithEgld, contract_call_with_multi_esdt::ContractCallWithMultiEsdt, ContractCall, - ContractCallWithAnyPayment, ContractCallWithEgldOrSingleEsdt, + ContractCallWithAnyPayment, ContractCallWithEgldOrSingleEsdt, UNSPECIFIED_GAS_LIMIT, }; /// Holds metadata for calling another contract, without payments. diff --git a/framework/base/src/types/interaction/contract_deploy.rs b/framework/base/src/types/interaction/contract_call_legacy/contract_deploy.rs similarity index 93% rename from framework/base/src/types/interaction/contract_deploy.rs rename to framework/base/src/types/interaction/contract_call_legacy/contract_deploy.rs index 1fbfa1f017..bdc15e5509 100644 --- a/framework/base/src/types/interaction/contract_deploy.rs +++ b/framework/base/src/types/interaction/contract_call_legacy/contract_deploy.rs @@ -7,15 +7,13 @@ use crate::{ contract_base::{ExitCodecErrorHandler, SendRawWrapper}, err_msg, io::{ArgErrorHandler, ArgId, ManagedResultArgLoader}, - types::{BigUint, CodeMetadata, ManagedAddress, ManagedBuffer, ManagedOption, ManagedVec}, + types::{ + BigUint, CodeMetadata, ManagedAddress, ManagedArgBuffer, ManagedBuffer, ManagedOption, + ManagedVec, + }, }; -use super::ManagedArgBuffer; - -/// Using max u64 to represent maximum possible gas, -/// so that the value zero is not reserved and can be specified explicitly. -/// Leaving the gas limit unspecified will replace it with `api.get_gas_left()`. -pub(crate) const UNSPECIFIED_GAS_LIMIT: u64 = u64::MAX; +use super::UNSPECIFIED_GAS_LIMIT; #[must_use] pub struct ContractDeploy diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index e05d420cdf..739e91a1ec 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -5,7 +5,6 @@ mod back_transfers; mod callback_closure; mod callback_selector_result; mod contract_call_legacy; -mod contract_deploy; mod deploy_call; mod expr; mod function_call; @@ -37,7 +36,6 @@ pub use callback_closure::{ }; pub use callback_selector_result::CallbackSelectorResult; pub use contract_call_legacy::*; -pub use contract_deploy::{new_contract_deploy, ContractDeploy}; pub use deploy_call::*; pub use expr::*; pub use function_call::FunctionCall; diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 486e4ade83..7fc12c896b 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -11,13 +11,13 @@ use crate::{ use multiversx_sc_codec::TopEncodeMulti; use super::{ - contract_deploy::UNSPECIFIED_GAS_LIMIT, AnnotatedValue, Code, ContractCallBase, - ContractCallNoPayment, ContractCallWithEgld, ContractDeploy, DeployCall, Egld, EgldPayment, - ExplicitGas, FromSource, FunctionCall, ManagedArgBuffer, OriginalResultMarker, RHList, - RHListAppendNoRet, RHListAppendRet, RHListItem, TxCodeSource, TxCodeValue, TxData, - TxDataFunctionCall, TxEgldValue, TxEnv, TxEnvMockDeployAddress, TxEnvWithTxHash, TxFrom, - TxFromSourceValue, TxFromSpecified, TxGas, TxGasValue, TxPayment, TxPaymentEgldOnly, - TxProxyTrait, TxResultHandler, TxScEnv, TxTo, TxToSpecified, UpgradeCall, + AnnotatedValue, Code, ContractCallBase, ContractCallNoPayment, ContractCallWithEgld, + ContractDeploy, DeployCall, Egld, EgldPayment, ExplicitGas, FromSource, FunctionCall, + ManagedArgBuffer, OriginalResultMarker, RHList, RHListAppendNoRet, RHListAppendRet, RHListItem, + TxCodeSource, TxCodeValue, TxData, TxDataFunctionCall, TxEgldValue, TxEnv, + TxEnvMockDeployAddress, TxEnvWithTxHash, TxFrom, TxFromSourceValue, TxFromSpecified, TxGas, + TxGasValue, TxPayment, TxPaymentEgldOnly, TxProxyTrait, TxResultHandler, TxScEnv, TxTo, + TxToSpecified, UpgradeCall, UNSPECIFIED_GAS_LIMIT, }; #[must_use] From 652732bc139dbdf274e99e7ee3d4336bd4d930b3 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 24 Apr 2024 07:20:41 +0300 Subject: [PATCH 386/461] moved legacy AsyncCall objects --- framework/base/src/types/interaction/contract_call_legacy.rs | 4 ++++ .../interaction/{ => contract_call_legacy}/async_call.rs | 4 +--- .../{ => contract_call_legacy}/async_call_promises.rs | 4 +--- framework/base/src/types/interaction/mod.rs | 4 ---- 4 files changed, 6 insertions(+), 10 deletions(-) rename framework/base/src/types/interaction/{ => contract_call_legacy}/async_call.rs (86%) rename framework/base/src/types/interaction/{ => contract_call_legacy}/async_call_promises.rs (95%) diff --git a/framework/base/src/types/interaction/contract_call_legacy.rs b/framework/base/src/types/interaction/contract_call_legacy.rs index 22ebc84d7d..5be09c0a36 100644 --- a/framework/base/src/types/interaction/contract_call_legacy.rs +++ b/framework/base/src/types/interaction/contract_call_legacy.rs @@ -1,3 +1,5 @@ +mod async_call; +mod async_call_promises; mod contract_call_convert; mod contract_call_exec; mod contract_call_no_payment; @@ -8,6 +10,8 @@ mod contract_call_with_egld_or_single_esdt; mod contract_call_with_multi_esdt; mod contract_deploy; +pub use async_call::AsyncCall; +pub use async_call_promises::AsyncCallPromises; pub use contract_call_no_payment::ContractCallNoPayment; pub use contract_call_trait::{ContractCall, ContractCallBase}; pub use contract_call_with_any_payment::ContractCallWithAnyPayment; diff --git a/framework/base/src/types/interaction/async_call.rs b/framework/base/src/types/interaction/contract_call_legacy/async_call.rs similarity index 86% rename from framework/base/src/types/interaction/async_call.rs rename to framework/base/src/types/interaction/contract_call_legacy/async_call.rs index 5c3b60a41f..62396de515 100644 --- a/framework/base/src/types/interaction/async_call.rs +++ b/framework/base/src/types/interaction/contract_call_legacy/async_call.rs @@ -1,10 +1,8 @@ use crate::{ api::{CallTypeApi, StorageWriteApi}, - types::{CallbackClosure, EgldPayment, ManagedAddress}, + types::{CallbackClosure, EgldPayment, FunctionCall, ManagedAddress, Tx, TxScEnv}, }; -use super::{FunctionCall, Tx, TxScEnv}; - pub type AsyncCall = Tx< TxScEnv, (), diff --git a/framework/base/src/types/interaction/async_call_promises.rs b/framework/base/src/types/interaction/contract_call_legacy/async_call_promises.rs similarity index 95% rename from framework/base/src/types/interaction/async_call_promises.rs rename to framework/base/src/types/interaction/contract_call_legacy/async_call_promises.rs index ea03c0e777..be22afd129 100644 --- a/framework/base/src/types/interaction/async_call_promises.rs +++ b/framework/base/src/types/interaction/contract_call_legacy/async_call_promises.rs @@ -1,11 +1,9 @@ use crate::{ api::CallTypeApi, contract_base::SendRawWrapper, - types::{BigUint, CallbackClosure, ManagedAddress, ManagedBuffer}, + types::{BigUint, CallbackClosure, FunctionCall, ManagedAddress, ManagedBuffer}, }; -use super::FunctionCall; - /// Will be renamed to `AsyncCall` and `AsyncCall` to `AsyncCallLegacy` when the promises end up on the mainnet. #[must_use] pub struct AsyncCallPromises diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index 739e91a1ec..b55bb02954 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -1,6 +1,4 @@ mod annotated; -mod async_call; -mod async_call_promises; mod back_transfers; mod callback_closure; mod callback_selector_result; @@ -28,8 +26,6 @@ mod typed_function_call; mod upgrade_call; pub use annotated::*; -pub use async_call::AsyncCall; -pub use async_call_promises::AsyncCallPromises; pub use back_transfers::BackTransfers; pub use callback_closure::{ new_callback_call, CallbackClosure, CallbackClosureForDeser, CallbackClosureMatcher, From a39cc62b984b4f5a4bd4e306e67b2c79234759e9 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 24 Apr 2024 07:26:17 +0300 Subject: [PATCH 387/461] deprecated TypedFunctionCall --- .../base/src/types/interaction/contract_call_legacy.rs | 2 ++ .../{ => contract_call_legacy}/typed_function_call.rs | 8 +++----- framework/base/src/types/interaction/mod.rs | 2 -- 3 files changed, 5 insertions(+), 7 deletions(-) rename framework/base/src/types/interaction/{ => contract_call_legacy}/typed_function_call.rs (73%) diff --git a/framework/base/src/types/interaction/contract_call_legacy.rs b/framework/base/src/types/interaction/contract_call_legacy.rs index 5be09c0a36..8532f6de09 100644 --- a/framework/base/src/types/interaction/contract_call_legacy.rs +++ b/framework/base/src/types/interaction/contract_call_legacy.rs @@ -9,6 +9,7 @@ mod contract_call_with_egld; mod contract_call_with_egld_or_single_esdt; mod contract_call_with_multi_esdt; mod contract_deploy; +mod typed_function_call; pub use async_call::AsyncCall; pub use async_call_promises::AsyncCallPromises; @@ -19,6 +20,7 @@ pub use contract_call_with_egld::ContractCallWithEgld; pub use contract_call_with_egld_or_single_esdt::ContractCallWithEgldOrSingleEsdt; pub use contract_call_with_multi_esdt::ContractCallWithMultiEsdt; pub use contract_deploy::{new_contract_deploy, ContractDeploy}; +pub use typed_function_call::TypedFunctionCall; /// Using max u64 to represent maximum possible gas, /// so that the value zero is not reserved and can be specified explicitly. diff --git a/framework/base/src/types/interaction/typed_function_call.rs b/framework/base/src/types/interaction/contract_call_legacy/typed_function_call.rs similarity index 73% rename from framework/base/src/types/interaction/typed_function_call.rs rename to framework/base/src/types/interaction/contract_call_legacy/typed_function_call.rs index 39679247fc..835ae8995b 100644 --- a/framework/base/src/types/interaction/typed_function_call.rs +++ b/framework/base/src/types/interaction/contract_call_legacy/typed_function_call.rs @@ -1,12 +1,10 @@ use core::marker::PhantomData; use crate::api::ManagedTypeApi; +use crate::types::FunctionCall; -use super::FunctionCall; - -/// Encodes a function call on the blockchain, together with the original result type. -/// -/// Can be used as a multi-argument, to embed a call within a call. +/// Old attempt at grouping FunctionCall + OriginalTypeMarker. +#[deprecated(since = "0.49.0", note = "Not clear if it still used anywhere, will delete soon.")] pub struct TypedFunctionCall where Api: ManagedTypeApi, diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index b55bb02954..2b0913a101 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -22,7 +22,6 @@ mod tx_result_handler; mod tx_rh_list; mod tx_rh_original_result; mod tx_to; -mod typed_function_call; mod upgrade_call; pub use annotated::*; @@ -50,7 +49,6 @@ pub use tx_result_handler::*; pub use tx_rh_list::*; pub use tx_rh_original_result::*; pub use tx_to::*; -pub use typed_function_call::*; pub use upgrade_call::*; pub type TxScBase = TxBaseWithEnv>; From 118d3780385b89bcd30647372bda18e0feac0d67 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 24 Apr 2024 09:39:52 +0300 Subject: [PATCH 388/461] tx_data dir --- .../contract_call_legacy/typed_function_call.rs | 8 +++++--- framework/base/src/types/interaction/mod.rs | 8 -------- framework/base/src/types/interaction/tx_data.rs | 12 +++++++++++- .../types/interaction/{ => tx_data}/deploy_call.rs | 4 ++-- .../types/interaction/{ => tx_data}/function_call.rs | 12 +++++------- .../interaction/{ => tx_data}/tx_code_source.rs | 4 +--- .../types/interaction/{ => tx_data}/upgrade_call.rs | 7 ++++--- 7 files changed, 28 insertions(+), 27 deletions(-) rename framework/base/src/types/interaction/{ => tx_data}/deploy_call.rs (93%) rename framework/base/src/types/interaction/{ => tx_data}/function_call.rs (93%) rename framework/base/src/types/interaction/{ => tx_data}/tx_code_source.rs (93%) rename framework/base/src/types/interaction/{ => tx_data}/upgrade_call.rs (93%) diff --git a/framework/base/src/types/interaction/contract_call_legacy/typed_function_call.rs b/framework/base/src/types/interaction/contract_call_legacy/typed_function_call.rs index 835ae8995b..8589a0dc28 100644 --- a/framework/base/src/types/interaction/contract_call_legacy/typed_function_call.rs +++ b/framework/base/src/types/interaction/contract_call_legacy/typed_function_call.rs @@ -1,10 +1,12 @@ use core::marker::PhantomData; -use crate::api::ManagedTypeApi; -use crate::types::FunctionCall; +use crate::{api::ManagedTypeApi, types::FunctionCall}; /// Old attempt at grouping FunctionCall + OriginalTypeMarker. -#[deprecated(since = "0.49.0", note = "Not clear if it still used anywhere, will delete soon.")] +#[deprecated( + since = "0.49.0", + note = "Not clear if it still used anywhere, will delete soon." +)] pub struct TypedFunctionCall where Api: ManagedTypeApi, diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index 2b0913a101..e36cac1edb 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -3,14 +3,11 @@ mod back_transfers; mod callback_closure; mod callback_selector_result; mod contract_call_legacy; -mod deploy_call; mod expr; -mod function_call; mod managed_arg_buffer; mod markers; pub mod system_proxy; mod tx; -mod tx_code_source; mod tx_data; mod tx_env; mod tx_exec; @@ -22,7 +19,6 @@ mod tx_result_handler; mod tx_rh_list; mod tx_rh_original_result; mod tx_to; -mod upgrade_call; pub use annotated::*; pub use back_transfers::BackTransfers; @@ -31,13 +27,10 @@ pub use callback_closure::{ }; pub use callback_selector_result::CallbackSelectorResult; pub use contract_call_legacy::*; -pub use deploy_call::*; pub use expr::*; -pub use function_call::FunctionCall; pub use managed_arg_buffer::ManagedArgBuffer; pub use markers::*; pub use tx::*; -pub use tx_code_source::*; pub use tx_data::*; pub use tx_env::*; pub use tx_exec::*; @@ -49,6 +42,5 @@ pub use tx_result_handler::*; pub use tx_rh_list::*; pub use tx_rh_original_result::*; pub use tx_to::*; -pub use upgrade_call::*; pub type TxScBase = TxBaseWithEnv>; diff --git a/framework/base/src/types/interaction/tx_data.rs b/framework/base/src/types/interaction/tx_data.rs index 7ea227deaa..dc6db88135 100644 --- a/framework/base/src/types/interaction/tx_data.rs +++ b/framework/base/src/types/interaction/tx_data.rs @@ -1,9 +1,19 @@ +mod deploy_call; +mod function_call; +mod tx_code_source; +mod upgrade_call; + +pub use deploy_call::DeployCall; +pub use function_call::FunctionCall; +pub use tx_code_source::*; +pub use upgrade_call::UpgradeCall; + use crate::{ formatter::SCLowerHex, types::{ManagedBuffer, ManagedBufferBuilder}, }; -use super::{FunctionCall, TxEnv}; +use super::TxEnv; pub trait TxData where diff --git a/framework/base/src/types/interaction/deploy_call.rs b/framework/base/src/types/interaction/tx_data/deploy_call.rs similarity index 93% rename from framework/base/src/types/interaction/deploy_call.rs rename to framework/base/src/types/interaction/tx_data/deploy_call.rs index ad087d34b8..a742901736 100644 --- a/framework/base/src/types/interaction/deploy_call.rs +++ b/framework/base/src/types/interaction/tx_data/deploy_call.rs @@ -1,8 +1,8 @@ use multiversx_sc_codec::TopEncodeMulti; -use crate::types::{CodeMetadata, ManagedBuffer, ManagedBufferCachedBuilder}; +use crate::types::{CodeMetadata, ManagedArgBuffer, ManagedBuffer, ManagedBufferCachedBuilder}; -use super::{ManagedArgBuffer, TxCodeSource, TxData, TxEnv}; +use super::{TxCodeSource, TxData, TxEnv}; /// Holds deploy data: code, code metadata, and arguments. pub struct DeployCall diff --git a/framework/base/src/types/interaction/function_call.rs b/framework/base/src/types/interaction/tx_data/function_call.rs similarity index 93% rename from framework/base/src/types/interaction/function_call.rs rename to framework/base/src/types/interaction/tx_data/function_call.rs index 1d78735a79..9242e141cf 100644 --- a/framework/base/src/types/interaction/function_call.rs +++ b/framework/base/src/types/interaction/tx_data/function_call.rs @@ -10,13 +10,11 @@ use crate::{ ESDT_TRANSFER_FUNC_NAME, }, types::{ - EsdtTokenPayment, EsdtTokenPaymentRefs, ManagedAddress, ManagedBuffer, ManagedVec, - MultiValueEncoded, + ContractCallNoPayment, EsdtTokenPayment, EsdtTokenPaymentRefs, ManagedAddress, + ManagedArgBuffer, ManagedBuffer, ManagedVec, MultiValueEncoded, TypedFunctionCall, }, }; -use super::{ContractCallNoPayment, ManagedArgBuffer, TypedFunctionCall}; - /// Encodes a function call on the blockchain, composed of a function name and its encoded arguments. /// /// Can be used as a multi-argument, to embed a call within a call. @@ -160,7 +158,7 @@ where Api: ManagedTypeApi, { /// Constructs `ESDTTransfer` builtin function call. - pub(super) fn convert_to_single_transfer_fungible_call( + pub(crate) fn convert_to_single_transfer_fungible_call( self, payment: EsdtTokenPaymentRefs<'_, Api>, ) -> FunctionCall { @@ -177,7 +175,7 @@ where /// arg1 - nonce /// arg2 - quantity to transfer /// arg3 - destination address - pub(super) fn convert_to_single_transfer_nft_call( + pub(crate) fn convert_to_single_transfer_nft_call( self, to: &ManagedAddress, payment: EsdtTokenPaymentRefs<'_, Api>, @@ -191,7 +189,7 @@ where } /// Constructs `MultiESDTNFTTransfer` builtin function call. - pub(super) fn convert_to_multi_transfer_esdt_call( + pub(crate) fn convert_to_multi_transfer_esdt_call( self, to: &ManagedAddress, payments: &ManagedVec>, diff --git a/framework/base/src/types/interaction/tx_code_source.rs b/framework/base/src/types/interaction/tx_data/tx_code_source.rs similarity index 93% rename from framework/base/src/types/interaction/tx_code_source.rs rename to framework/base/src/types/interaction/tx_data/tx_code_source.rs index d7013a9cde..e7bb0817ea 100644 --- a/framework/base/src/types/interaction/tx_code_source.rs +++ b/framework/base/src/types/interaction/tx_data/tx_code_source.rs @@ -1,6 +1,4 @@ -use crate::types::{ManagedAddress, ManagedBuffer}; - -use super::{AnnotatedValue, TxEnv}; +use crate::types::{AnnotatedValue, ManagedAddress, ManagedBuffer, TxEnv}; pub trait TxCodeSource where diff --git a/framework/base/src/types/interaction/upgrade_call.rs b/framework/base/src/types/interaction/tx_data/upgrade_call.rs similarity index 93% rename from framework/base/src/types/interaction/upgrade_call.rs rename to framework/base/src/types/interaction/tx_data/upgrade_call.rs index d69895f029..591e8accb5 100644 --- a/framework/base/src/types/interaction/upgrade_call.rs +++ b/framework/base/src/types/interaction/tx_data/upgrade_call.rs @@ -1,8 +1,9 @@ use multiversx_sc_codec::TopEncodeMulti; -use crate::types::{CodeMetadata, ManagedBuffer, ManagedBufferCachedBuilder}; - -use super::{ManagedArgBuffer, TxCodeSource, TxData, TxEnv}; +use crate::types::{ + CodeMetadata, ManagedArgBuffer, ManagedBuffer, ManagedBufferCachedBuilder, TxCodeSource, + TxData, TxEnv, +}; /// Holds deploy data: code, code metadata, and arguments. pub struct UpgradeCall From 8926fd81fa1c2c0cc82b28d20770ee0703f0112a Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 24 Apr 2024 09:43:15 +0300 Subject: [PATCH 389/461] result hadnlers reorg --- framework/base/src/types/interaction/mod.rs | 6 ++---- .../{tx_result_handler.rs => result_handlers.rs} | 0 .../{tx_result_handler => result_handlers}/returns_bt.rs | 0 .../returns_new_address.rs | 0 .../returns_new_managed_address.rs | 0 .../returns_raw_result.rs | 0 .../returns_result.rs | 0 .../returns_result_conv.rs | 0 .../with_new_address.rs | 0 .../with_raw_result.rs | 0 .../{tx_result_handler => result_handlers}/with_result.rs | 0 .../with_result_conv.rs | 0 framework/base/src/types/interaction/tx_rh_list.rs | 2 ++ .../interaction/{ => tx_rh_list}/tx_rh_original_result.rs | 2 +- 14 files changed, 5 insertions(+), 5 deletions(-) rename framework/base/src/types/interaction/{tx_result_handler.rs => result_handlers.rs} (100%) rename framework/base/src/types/interaction/{tx_result_handler => result_handlers}/returns_bt.rs (100%) rename framework/base/src/types/interaction/{tx_result_handler => result_handlers}/returns_new_address.rs (100%) rename framework/base/src/types/interaction/{tx_result_handler => result_handlers}/returns_new_managed_address.rs (100%) rename framework/base/src/types/interaction/{tx_result_handler => result_handlers}/returns_raw_result.rs (100%) rename framework/base/src/types/interaction/{tx_result_handler => result_handlers}/returns_result.rs (100%) rename framework/base/src/types/interaction/{tx_result_handler => result_handlers}/returns_result_conv.rs (100%) rename framework/base/src/types/interaction/{tx_result_handler => result_handlers}/with_new_address.rs (100%) rename framework/base/src/types/interaction/{tx_result_handler => result_handlers}/with_raw_result.rs (100%) rename framework/base/src/types/interaction/{tx_result_handler => result_handlers}/with_result.rs (100%) rename framework/base/src/types/interaction/{tx_result_handler => result_handlers}/with_result_conv.rs (100%) rename framework/base/src/types/interaction/{ => tx_rh_list}/tx_rh_original_result.rs (92%) diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction/mod.rs index e36cac1edb..e73cf9491b 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction/mod.rs @@ -6,6 +6,7 @@ mod contract_call_legacy; mod expr; mod managed_arg_buffer; mod markers; +mod result_handlers; pub mod system_proxy; mod tx; mod tx_data; @@ -15,9 +16,7 @@ mod tx_from; mod tx_gas; mod tx_payment; mod tx_proxy; -mod tx_result_handler; mod tx_rh_list; -mod tx_rh_original_result; mod tx_to; pub use annotated::*; @@ -30,6 +29,7 @@ pub use contract_call_legacy::*; pub use expr::*; pub use managed_arg_buffer::ManagedArgBuffer; pub use markers::*; +pub use result_handlers::*; pub use tx::*; pub use tx_data::*; pub use tx_env::*; @@ -38,9 +38,7 @@ pub use tx_from::*; pub use tx_gas::*; pub use tx_payment::*; pub use tx_proxy::*; -pub use tx_result_handler::*; pub use tx_rh_list::*; -pub use tx_rh_original_result::*; pub use tx_to::*; pub type TxScBase = TxBaseWithEnv>; diff --git a/framework/base/src/types/interaction/tx_result_handler.rs b/framework/base/src/types/interaction/result_handlers.rs similarity index 100% rename from framework/base/src/types/interaction/tx_result_handler.rs rename to framework/base/src/types/interaction/result_handlers.rs diff --git a/framework/base/src/types/interaction/tx_result_handler/returns_bt.rs b/framework/base/src/types/interaction/result_handlers/returns_bt.rs similarity index 100% rename from framework/base/src/types/interaction/tx_result_handler/returns_bt.rs rename to framework/base/src/types/interaction/result_handlers/returns_bt.rs diff --git a/framework/base/src/types/interaction/tx_result_handler/returns_new_address.rs b/framework/base/src/types/interaction/result_handlers/returns_new_address.rs similarity index 100% rename from framework/base/src/types/interaction/tx_result_handler/returns_new_address.rs rename to framework/base/src/types/interaction/result_handlers/returns_new_address.rs diff --git a/framework/base/src/types/interaction/tx_result_handler/returns_new_managed_address.rs b/framework/base/src/types/interaction/result_handlers/returns_new_managed_address.rs similarity index 100% rename from framework/base/src/types/interaction/tx_result_handler/returns_new_managed_address.rs rename to framework/base/src/types/interaction/result_handlers/returns_new_managed_address.rs diff --git a/framework/base/src/types/interaction/tx_result_handler/returns_raw_result.rs b/framework/base/src/types/interaction/result_handlers/returns_raw_result.rs similarity index 100% rename from framework/base/src/types/interaction/tx_result_handler/returns_raw_result.rs rename to framework/base/src/types/interaction/result_handlers/returns_raw_result.rs diff --git a/framework/base/src/types/interaction/tx_result_handler/returns_result.rs b/framework/base/src/types/interaction/result_handlers/returns_result.rs similarity index 100% rename from framework/base/src/types/interaction/tx_result_handler/returns_result.rs rename to framework/base/src/types/interaction/result_handlers/returns_result.rs diff --git a/framework/base/src/types/interaction/tx_result_handler/returns_result_conv.rs b/framework/base/src/types/interaction/result_handlers/returns_result_conv.rs similarity index 100% rename from framework/base/src/types/interaction/tx_result_handler/returns_result_conv.rs rename to framework/base/src/types/interaction/result_handlers/returns_result_conv.rs diff --git a/framework/base/src/types/interaction/tx_result_handler/with_new_address.rs b/framework/base/src/types/interaction/result_handlers/with_new_address.rs similarity index 100% rename from framework/base/src/types/interaction/tx_result_handler/with_new_address.rs rename to framework/base/src/types/interaction/result_handlers/with_new_address.rs diff --git a/framework/base/src/types/interaction/tx_result_handler/with_raw_result.rs b/framework/base/src/types/interaction/result_handlers/with_raw_result.rs similarity index 100% rename from framework/base/src/types/interaction/tx_result_handler/with_raw_result.rs rename to framework/base/src/types/interaction/result_handlers/with_raw_result.rs diff --git a/framework/base/src/types/interaction/tx_result_handler/with_result.rs b/framework/base/src/types/interaction/result_handlers/with_result.rs similarity index 100% rename from framework/base/src/types/interaction/tx_result_handler/with_result.rs rename to framework/base/src/types/interaction/result_handlers/with_result.rs diff --git a/framework/base/src/types/interaction/tx_result_handler/with_result_conv.rs b/framework/base/src/types/interaction/result_handlers/with_result_conv.rs similarity index 100% rename from framework/base/src/types/interaction/tx_result_handler/with_result_conv.rs rename to framework/base/src/types/interaction/result_handlers/with_result_conv.rs diff --git a/framework/base/src/types/interaction/tx_rh_list.rs b/framework/base/src/types/interaction/tx_rh_list.rs index b4ca45bc58..7c4ccf74bd 100644 --- a/framework/base/src/types/interaction/tx_rh_list.rs +++ b/framework/base/src/types/interaction/tx_rh_list.rs @@ -1,7 +1,9 @@ mod tx_rh_list_cons; mod tx_rh_list_exec; mod tx_rh_list_item; +mod tx_rh_original_result; pub use tx_rh_list_cons::*; pub use tx_rh_list_exec::*; pub use tx_rh_list_item::*; +pub use tx_rh_original_result::OriginalResultMarker; diff --git a/framework/base/src/types/interaction/tx_rh_original_result.rs b/framework/base/src/types/interaction/tx_rh_list/tx_rh_original_result.rs similarity index 92% rename from framework/base/src/types/interaction/tx_rh_original_result.rs rename to framework/base/src/types/interaction/tx_rh_list/tx_rh_original_result.rs index cfbe36aef8..175f5c6404 100644 --- a/framework/base/src/types/interaction/tx_rh_original_result.rs +++ b/framework/base/src/types/interaction/tx_rh_list/tx_rh_original_result.rs @@ -1,6 +1,6 @@ use core::marker::PhantomData; -use super::{TxEmptyResultHandler, TxEnv, TxResultHandler}; +use crate::types::{TxEmptyResultHandler, TxEnv, TxResultHandler}; /// Contains no data. /// From 48d81ea90c138d671e1b7d470f0a606edc0c7b0f Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Wed, 24 Apr 2024 11:32:52 +0300 Subject: [PATCH 390/461] cleanup --- .../rewards-distribution/src/proxy.rs | 233 ------------------ .../rewards_distribution_blackbox_test.rs | 15 +- 2 files changed, 4 insertions(+), 244 deletions(-) delete mode 100644 contracts/examples/rewards-distribution/src/proxy.rs diff --git a/contracts/examples/rewards-distribution/src/proxy.rs b/contracts/examples/rewards-distribution/src/proxy.rs deleted file mode 100644 index 4a02c6c098..0000000000 --- a/contracts/examples/rewards-distribution/src/proxy.rs +++ /dev/null @@ -1,233 +0,0 @@ -// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. - -//////////////////////////////////////////////////// -////////////////// AUTO-GENERATED ////////////////// -//////////////////////////////////////////////////// - -#![allow(dead_code)] -#![allow(clippy::all)] - -use multiversx_sc::proxy_imports::*; - -pub struct RewardsDistributionProxy; - -impl TxProxyTrait for RewardsDistributionProxy -where - Env: TxEnv, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ - type TxProxyMethods = RewardsDistributionProxyMethods; - - fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { - RewardsDistributionProxyMethods { wrapped_tx: tx } - } -} - -pub struct RewardsDistributionProxyMethods -where - Env: TxEnv, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ - wrapped_tx: Tx, -} - -#[rustfmt::skip] -impl RewardsDistributionProxyMethods -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - Gas: TxGas, -{ - pub fn init< - Arg0: CodecInto>, - Arg1: CodecInto>, - >( - self, - seed_nft_minter_address: Arg0, - brackets: Arg1, - ) -> TxProxyDeploy { - self.wrapped_tx - .raw_deploy() - .argument(&seed_nft_minter_address) - .argument(&brackets) - .original_result() - } -} - -#[rustfmt::skip] -impl RewardsDistributionProxyMethods -where - Env: TxEnv, - Env::Api: VMApi, - From: TxFrom, - To: TxTo, - Gas: TxGas, -{ - pub fn deposit_royalties( - self, - ) -> TxProxyCall { - self.wrapped_tx - .raw_call("depositRoyalties") - .original_result() - } - - pub fn raffle( - self, - ) -> TxProxyCall { - self.wrapped_tx - .raw_call("raffle") - .original_result() - } - - pub fn claim_rewards< - Arg0: CodecInto, - Arg1: CodecInto, - Arg2: CodecInto, u64>>>, - >( - self, - raffle_id_start: Arg0, - raffle_id_end: Arg1, - reward_tokens: Arg2, - ) -> TxProxyCall { - self.wrapped_tx - .raw_call("claimRewards") - .argument(&raffle_id_start) - .argument(&raffle_id_end) - .argument(&reward_tokens) - .original_result() - } - - pub fn compute_claimable_amount< - Arg0: CodecInto, - Arg1: CodecInto>, - Arg2: CodecInto, - Arg3: CodecInto, - >( - self, - raffle_id: Arg0, - reward_token_id: Arg1, - reward_token_nonce: Arg2, - nft_nonce: Arg3, - ) -> TxProxyCall> { - self.wrapped_tx - .raw_call("computeClaimableAmount") - .argument(&raffle_id) - .argument(&reward_token_id) - .argument(&reward_token_nonce) - .argument(&nft_nonce) - .original_result() - } - - pub fn raffle_id( - self, - ) -> TxProxyCall { - self.wrapped_tx - .raw_call("getRaffleId") - .original_result() - } - - pub fn completed_raffle_id_count( - self, - ) -> TxProxyCall { - self.wrapped_tx - .raw_call("getCompletedRaffleIdCount") - .original_result() - } - - pub fn royalties< - Arg0: CodecInto, - Arg1: CodecInto>, - Arg2: CodecInto, - >( - self, - raffle_id: Arg0, - reward_token_id: Arg1, - reward_token_nonce: Arg2, - ) -> TxProxyCall> { - self.wrapped_tx - .raw_call("getRoyalties") - .argument(&raffle_id) - .argument(&reward_token_id) - .argument(&reward_token_nonce) - .original_result() - } - - pub fn nft_reward_percent< - Arg0: CodecInto, - Arg1: CodecInto, - >( - self, - raffle_id: Arg0, - nft_nonce: Arg1, - ) -> TxProxyCall> { - self.wrapped_tx - .raw_call("getNftRewardPercent") - .argument(&raffle_id) - .argument(&nft_nonce) - .original_result() - } - - pub fn was_claimed< - Arg0: CodecInto, - Arg1: CodecInto>, - Arg2: CodecInto, - Arg3: CodecInto, - >( - self, - raffle_id: Arg0, - reward_token_id: Arg1, - reward_token_nonce: Arg2, - nft_nonce: Arg3, - ) -> TxProxyCall { - self.wrapped_tx - .raw_call("getWasClaimed") - .argument(&raffle_id) - .argument(&reward_token_id) - .argument(&reward_token_nonce) - .argument(&nft_nonce) - .original_result() - } - - pub fn seed_nft_minter_address( - self, - ) -> TxProxyCall> { - self.wrapped_tx - .raw_call("getSeedNftMinterAddress") - .original_result() - } - - pub fn brackets( - self, - ) -> TxProxyCall> { - self.wrapped_tx - .raw_call("getBrackets") - .original_result() - } - - pub fn last_raffle_epoch( - self, - ) -> TxProxyCall { - self.wrapped_tx - .raw_call("getLastRaffleEpoch") - .original_result() - } - - pub fn nft_token_id( - self, - ) -> TxProxyCall> { - self.wrapped_tx - .raw_call("getNftTokenId") - .original_result() - } -} - -#[derive(ManagedVecItem, NestedEncode, NestedDecode)] -pub struct Bracket { - pub index_percent: u64, - pub bracket_reward_percent: u64, -} diff --git a/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs b/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs index 919bf04f91..a375614dab 100644 --- a/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs +++ b/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs @@ -6,8 +6,7 @@ use multiversx_sc_scenario::imports::*; use std::iter::zip; use rewards_distribution::{ - rewards_distribution_proxy, ContractObj, ProxyTrait as _, RewardsDistribution, - DIVISION_SAFETY_CONSTANT, + rewards_distribution_proxy, ContractObj, RewardsDistribution, DIVISION_SAFETY_CONSTANT, }; const NFT_TOKEN_ID: &[u8] = b"NFT-123456"; @@ -21,8 +20,6 @@ const SEED_NFT_MINTER_ADDRESS_EXPR: ScExpr = ScExpr("seed-nft-minter"); const SEED_NFT_MINTER_PATH_EXPR: MxscExpr = MxscExpr("../seed-nft-minter/output/seed-nft-minter.mxsc.json"); -type RewardsDistributionContract = ContractInfo>; - fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); @@ -39,7 +36,6 @@ fn world() -> ScenarioWorld { struct RewardsDistributionTestState { world: ScenarioWorld, - rewards_distribution_contract: RewardsDistributionContract, rewards_distribution_whitebox: WhiteboxContract>, } @@ -49,8 +45,6 @@ impl RewardsDistributionTestState { world.account(OWNER_ADDRESS_EXPR).nonce(1); - let rewards_distribution_contract = - RewardsDistributionContract::new(REWARDS_DISTRIBUTION_ADDRESS_EXPR); let rewards_distribution_whitebox = WhiteboxContract::new( REWARDS_DISTRIBUTION_ADDRESS_EXPR, rewards_distribution::contract_obj, @@ -58,7 +52,6 @@ impl RewardsDistributionTestState { Self { world, - rewards_distribution_contract, rewards_distribution_whitebox, } } @@ -212,9 +205,9 @@ fn test_raffle_and_claim() { state .world .tx() - .from(ALICE_ADDRESS_EXPR_REPL) - .to(REWARDS_DISTRIBUTION_ADDRESS_EXPR_REPL) - .typed(proxy::RewardsDistributionProxy) + .from(ALICE_ADDRESS_EXPR) + .to(REWARDS_DISTRIBUTION_ADDRESS_EXPR) + .typed(rewards_distribution_proxy::RewardsDistributionProxy) .raffle() .tx_hash([0u8; 32]) // blockchain rng is deterministic, so we can use a fixed hash .run(); From 53dd069a1ee3c8621e84e8da01c4e7a6820c9948 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Wed, 24 Apr 2024 11:34:03 +0300 Subject: [PATCH 391/461] rename test --- ..._blackbox_test.rs => rewards_distribution_integration_test.rs} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename contracts/examples/rewards-distribution/tests/{rewards_distribution_blackbox_test.rs => rewards_distribution_integration_test.rs} (100%) diff --git a/contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs b/contracts/examples/rewards-distribution/tests/rewards_distribution_integration_test.rs similarity index 100% rename from contracts/examples/rewards-distribution/tests/rewards_distribution_blackbox_test.rs rename to contracts/examples/rewards-distribution/tests/rewards_distribution_integration_test.rs From b5ffe043d3c161254c2840a2a7dc455ced9606f9 Mon Sep 17 00:00:00 2001 From: Laurentiu Ciobanu Date: Wed, 24 Apr 2024 13:12:25 +0300 Subject: [PATCH 392/461] coverage renderer panics if we try to render a file that is not in root --- framework/meta/src/cmd/standalone/test_coverage/render.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/meta/src/cmd/standalone/test_coverage/render.rs b/framework/meta/src/cmd/standalone/test_coverage/render.rs index 3b0d8d1307..58d65adc06 100644 --- a/framework/meta/src/cmd/standalone/test_coverage/render.rs +++ b/framework/meta/src/cmd/standalone/test_coverage/render.rs @@ -70,7 +70,7 @@ fn render_files(output: &mut String, files: &[FileSummary], root: &str) { fn render_file(output: &mut String, file: &FileSummary, root: &str) { let summary = &file.summary; - let filename = file.filename.strip_prefix(root).unwrap(); + let filename = file.filename.strip_prefix(root).unwrap_or(&file.filename); writeln_output_str( output, From 95fa5c72c0be98fac1ed4714ad2514fef5962cfd Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Wed, 24 Apr 2024 15:45:23 +0300 Subject: [PATCH 393/461] impl create account raw and set egld balance --- .../src/facade/world_tx/scenario_set_state.rs | 14 +++++++++++++- .../scenario_set_state/scenario_set_account.rs | 8 ++++++++ .../src/whitebox_legacy/contract_obj_wrapper.rs | 4 ++-- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state.rs b/framework/scenario/src/facade/world_tx/scenario_set_state.rs index 9376050f58..87c2672538 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state.rs @@ -4,7 +4,7 @@ mod scenario_set_new_address; use crate::{ scenario::ScenarioRunner, - scenario_model::{AddressKey, AddressValue, NewAddress, SetStateStep, U64Value}, + scenario_model::{AddressKey, AddressValue, BigUintValue, NewAddress, SetStateStep, U64Value}, ScenarioWorld, }; @@ -42,6 +42,18 @@ impl ScenarioWorld { .new_address(creator_address_expr, creator_nonce_expr, new_address_expr) } + pub fn create_account_raw( + &mut self, + address: CA, + egld_balance: V, + ) -> SetStateBuilder<'_, AccountItem> + where + AddressKey: From, + BigUintValue: From, + { + self.empty_builder().account(address).balance(egld_balance) + } + pub fn current_block(&mut self) -> SetStateBuilder<'_, BlockItem> { self.empty_builder().current_block() } diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs index d985cbed66..70c5369659 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs @@ -179,4 +179,12 @@ impl<'w> SetStateBuilder<'w, AccountItem> { self.item.account.owner = Some(AddressValue::from(owner_expr)); self } + + pub fn set_egld_balance(mut self, balance: V) -> Self + where + BigUintValue: From, + { + self.item.account.balance = Some(BigUintValue::from(balance)); + self + } } diff --git a/framework/scenario/src/whitebox_legacy/contract_obj_wrapper.rs b/framework/scenario/src/whitebox_legacy/contract_obj_wrapper.rs index edb4f8f019..2091ce6b46 100644 --- a/framework/scenario/src/whitebox_legacy/contract_obj_wrapper.rs +++ b/framework/scenario/src/whitebox_legacy/contract_obj_wrapper.rs @@ -180,7 +180,7 @@ impl BlockchainStateWrapper { impl BlockchainStateWrapper { pub fn create_user_account(&mut self, egld_balance: &num_bigint::BigUint) -> Address { let address = self.address_factory.new_address(); - self.create_account_raw(&address, egld_balance, None, None, None); + self.world.create_account_raw(&address, egld_balance); address } @@ -190,7 +190,7 @@ impl BlockchainStateWrapper { address: &Address, egld_balance: &num_bigint::BigUint, ) { - self.create_account_raw(address, egld_balance, None, None, None); + self.world.create_account_raw(address, egld_balance); } pub fn create_sc_account( From d9d7b9f5d7d1f184c97853a708e4ffd696a07703 Mon Sep 17 00:00:00 2001 From: Fusee Date: Wed, 24 Apr 2024 18:06:12 +0200 Subject: [PATCH 394/461] added reset function on the StaticApi --- .../scenario/src/api/impl_vh/static_api.rs | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/framework/scenario/src/api/impl_vh/static_api.rs b/framework/scenario/src/api/impl_vh/static_api.rs index 7834227314..ca1d8602e5 100644 --- a/framework/scenario/src/api/impl_vh/static_api.rs +++ b/framework/scenario/src/api/impl_vh/static_api.rs @@ -1,3 +1,4 @@ +use std::sync::Mutex; use multiversx_chain_vm::{ executor::VMHooks, vm_hooks::{StaticApiVMHooksHandler, VMHooksDispatcher, VMHooksHandler}, @@ -14,9 +15,9 @@ fn new_static_api_vh() -> VMHooksDispatcher { } thread_local! { - static STATIC_API_VH_CELL: VMHooksDispatcher = new_static_api_vh(); + static STATIC_API_VH_CELL: Mutex = Mutex::new(new_static_api_vh()); - static STATIC_API_STATIC_CELL: StaticVarData = StaticVarData::default(); + static STATIC_API_STATIC_CELL: Mutex = Mutex::new(StaticVarData::default()); } #[derive(Clone)] @@ -29,14 +30,20 @@ impl VMHooksApiBackend for StaticApiBackend { where F: FnOnce(&dyn VMHooks) -> R, { - STATIC_API_VH_CELL.with(|vh| f(vh)) + STATIC_API_VH_CELL.with(|vh_mutex| { + let vh = vh_mutex.lock().unwrap(); + f(&*vh) + }) } fn with_static_data(f: F) -> R where F: FnOnce(&StaticVarData) -> R, { - STATIC_API_STATIC_CELL.with(|data| f(data)) + STATIC_API_STATIC_CELL.with(|data_mutex| { + let data = data_mutex.lock().unwrap(); + f(&data) + }) } } @@ -50,6 +57,18 @@ impl StaticApi { pub fn is_current_address_placeholder(address: &Address) -> bool { address.as_array() == StaticApiVMHooksHandler::CURRENT_ADDRESS_PLACEHOLDER.as_array() } + + pub fn reset() { + STATIC_API_VH_CELL.with(|vh_mutex| { + let mut vh = vh_mutex.lock().unwrap(); + *vh = new_static_api_vh() + }); + + STATIC_API_STATIC_CELL.with(|data_mutex| { + let mut data = data_mutex.lock().unwrap(); + *data = StaticVarData::default() + }) + } } impl std::fmt::Debug for StaticApi { From 19dac1826e461d68018e84634dca42500f49bcfe Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 25 Apr 2024 15:03:58 +0300 Subject: [PATCH 395/461] set nft properties --- .../src/facade/world_tx/scenario_set_state.rs | 83 ++++++++++++++++++- .../scenario_set_account.rs | 7 -- .../whitebox_legacy/contract_obj_wrapper.rs | 46 ++++------ 3 files changed, 95 insertions(+), 41 deletions(-) diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state.rs b/framework/scenario/src/facade/world_tx/scenario_set_state.rs index 87c2672538..83030e8d52 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state.rs @@ -8,6 +8,8 @@ use crate::{ ScenarioWorld, }; +use multiversx_chain_vm::world_mock::EsdtInstanceMetadata; +use multiversx_sc::codec::TopEncode; use scenario_set_account::AccountItem; use scenario_set_block::BlockItem; use scenario_set_new_address::NewAddressItem; @@ -42,18 +44,93 @@ impl ScenarioWorld { .new_address(creator_address_expr, creator_nonce_expr, new_address_expr) } - pub fn create_account_raw( + pub fn create_account_raw( &mut self, - address: CA, + address: A, egld_balance: V, ) -> SetStateBuilder<'_, AccountItem> where - AddressKey: From, + AddressKey: From, BigUintValue: From, { self.empty_builder().account(address).balance(egld_balance) } + pub fn set_egld_balance(&mut self, address: A, balance: V) + where + AddressKey: From, + BigUintValue: From, + { + let vm_address = AddressKey::from(address).to_vm_address(); + let accounts = &mut self.get_mut_state().accounts; + for (vm_address_key, account) in accounts.iter_mut() { + if vm_address_key == &vm_address { + account.egld_balance = BigUintValue::from(balance).value.clone(); + } + } + } + + pub fn set_esdt_balance(&mut self, address: A, token_id: &[u8], balance: V) + where + AddressKey: From, + BigUintValue: From, + { + // let token_id = BytesKey::from(token_id); + let accounts = &mut self.get_mut_state().accounts; + for (vm_address, account) in accounts.iter_mut() { + if vm_address == &AddressKey::from(address).to_vm_address() { + account.esdt.set_esdt_balance( + token_id.to_vec(), + 0, + &BigUintValue::from(balance).value.clone(), + EsdtInstanceMetadata::default(), + ) + } + } + } + + pub fn set_nft_balance_all_properties( + &mut self, + address: A, + token_id: &[u8], + nonce: NR, + balance: V, + attributes: &T, + royalties: NR, + creator: Option, + name: Option<&[u8]>, + hash: Option<&[u8]>, + uris: &[Vec], + ) where + AddressKey: From, + BigUintValue: From, + U64Value: From, + { + let mut esdt_attributes = Vec::new(); + let _ = attributes.top_encode(&mut esdt_attributes); + let accounts = &mut self.get_mut_state().accounts; + for (vm_address, account) in accounts.iter_mut() { + if vm_address == &AddressKey::from(address).to_vm_address() { + account.esdt.set_esdt_balance( + token_id.to_vec(), + U64Value::from(nonce).value, + &BigUintValue::from(balance).value.clone(), + EsdtInstanceMetadata { + creator: match creator { + Some(c) => Some(AddressKey::from(c).to_vm_address()), + None => None, + }, + attributes: esdt_attributes.clone(), + royalties: U64Value::from(royalties).value, + name: name.unwrap_or_default().to_vec(), + hash: hash.map(|h| h.to_vec()), + uri: uris.to_vec(), + }, + ) + } + } + } + pub fn current_block(&mut self) -> SetStateBuilder<'_, BlockItem> { self.empty_builder().current_block() } diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs index 70c5369659..a695fa155a 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs @@ -180,11 +180,4 @@ impl<'w> SetStateBuilder<'w, AccountItem> { self } - pub fn set_egld_balance(mut self, balance: V) -> Self - where - BigUintValue: From, - { - self.item.account.balance = Some(BigUintValue::from(balance)); - self - } } diff --git a/framework/scenario/src/whitebox_legacy/contract_obj_wrapper.rs b/framework/scenario/src/whitebox_legacy/contract_obj_wrapper.rs index 2091ce6b46..26edf73aed 100644 --- a/framework/scenario/src/whitebox_legacy/contract_obj_wrapper.rs +++ b/framework/scenario/src/whitebox_legacy/contract_obj_wrapper.rs @@ -344,19 +344,7 @@ impl BlockchainStateWrapper { } pub fn set_egld_balance(&mut self, address: &Address, balance: &num_bigint::BigUint) { - let vm_address = to_vm_address(address); - match self.world.get_mut_state().accounts.get_mut(&vm_address) { - Some(acc) => { - acc.egld_balance = balance.clone(); - - self.add_mandos_set_account(address); - }, - - None => panic!( - "set_egld_balance: Account {:?} does not exist", - address_to_hex(address) - ), - } + self.world.set_egld_balance(address, balance); } pub fn set_esdt_balance( @@ -365,23 +353,7 @@ impl BlockchainStateWrapper { token_id: &[u8], balance: &num_bigint::BigUint, ) { - let vm_address = to_vm_address(address); - match self.world.get_mut_state().accounts.get_mut(&vm_address) { - Some(acc) => { - acc.esdt.set_esdt_balance( - token_id.to_vec(), - 0, - balance, - EsdtInstanceMetadata::default(), - ); - - self.add_mandos_set_account(address); - }, - None => panic!( - "set_esdt_balance: Account {:?} does not exist", - address_to_hex(address) - ), - } + self.world.set_esdt_balance(address, token_id, balance); } pub fn set_nft_balance( @@ -392,7 +364,7 @@ impl BlockchainStateWrapper { balance: &num_bigint::BigUint, attributes: &T, ) { - self.set_nft_balance_all_properties( + self.world.set_nft_balance_all_properties( address, token_id, nonce, @@ -404,6 +376,18 @@ impl BlockchainStateWrapper { None, &[], ); + // self.set_nft_balance_all_properties( + // address, + // token_id, + // nonce, + // balance, + // attributes, + // 0, + // None, + // None, + // None, + // &[], + // ); } pub fn set_developer_rewards( From fbd49fcd745fb4dff55296be541ca807b5ab33dc Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Thu, 25 Apr 2024 17:54:52 +0300 Subject: [PATCH 396/461] impl set developer rewards --- .../src/facade/world_tx/scenario_set_state.rs | 25 +++++-- .../whitebox_legacy/contract_obj_wrapper.rs | 68 ++++--------------- 2 files changed, 31 insertions(+), 62 deletions(-) diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state.rs b/framework/scenario/src/facade/world_tx/scenario_set_state.rs index 83030e8d52..3a8e5d2b30 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state.rs @@ -4,7 +4,10 @@ mod scenario_set_new_address; use crate::{ scenario::ScenarioRunner, - scenario_model::{AddressKey, AddressValue, BigUintValue, NewAddress, SetStateStep, U64Value}, + scenario_model::{ + AddressKey, AddressValue, BigUintValue, BytesKey, BytesValue, NewAddress, SetStateStep, + U64Value, + }, ScenarioWorld, }; @@ -75,7 +78,6 @@ impl ScenarioWorld { AddressKey: From, BigUintValue: From, { - // let token_id = BytesKey::from(token_id); let accounts = &mut self.get_mut_state().accounts; for (vm_address, account) in accounts.iter_mut() { if vm_address == &AddressKey::from(address).to_vm_address() { @@ -89,6 +91,7 @@ impl ScenarioWorld { } } + #[allow(clippy::too_many_arguments)] pub fn set_nft_balance_all_properties( &mut self, address: A, @@ -116,10 +119,7 @@ impl ScenarioWorld { U64Value::from(nonce).value, &BigUintValue::from(balance).value.clone(), EsdtInstanceMetadata { - creator: match creator { - Some(c) => Some(AddressKey::from(c).to_vm_address()), - None => None, - }, + creator: creator.map(|c| AddressKey::from(c).to_vm_address()), attributes: esdt_attributes.clone(), royalties: U64Value::from(royalties).value, name: name.unwrap_or_default().to_vec(), @@ -131,6 +131,19 @@ impl ScenarioWorld { } } + pub fn set_developer_rewards(&mut self, address: A, developer_rewards: V) + where + AddressKey: From, + BigUintValue: From, + { + let accounts = &mut self.get_mut_state().accounts; + for (vm_address, account) in accounts.iter_mut() { + if vm_address == &AddressKey::from(address).to_vm_address() { + account.developer_rewards = BigUintValue::from(developer_rewards).value.clone(); + } + } + } + pub fn current_block(&mut self) -> SetStateBuilder<'_, BlockItem> { self.empty_builder().current_block() } diff --git a/framework/scenario/src/whitebox_legacy/contract_obj_wrapper.rs b/framework/scenario/src/whitebox_legacy/contract_obj_wrapper.rs index 26edf73aed..e7503cdcd6 100644 --- a/framework/scenario/src/whitebox_legacy/contract_obj_wrapper.rs +++ b/framework/scenario/src/whitebox_legacy/contract_obj_wrapper.rs @@ -16,7 +16,6 @@ use multiversx_chain_scenario_format::interpret_trait::InterpretableFrom; use multiversx_chain_vm::{ tx_mock::{TxContext, TxContextStack, TxFunctionName, TxResult}, types::VMAddress, - world_mock::EsdtInstanceMetadata, }; use multiversx_sc::types::H256; use num_traits::Zero; @@ -376,18 +375,6 @@ impl BlockchainStateWrapper { None, &[], ); - // self.set_nft_balance_all_properties( - // address, - // token_id, - // nonce, - // balance, - // attributes, - // 0, - // None, - // None, - // None, - // &[], - // ); } pub fn set_developer_rewards( @@ -395,18 +382,8 @@ impl BlockchainStateWrapper { address: &Address, developer_rewards: num_bigint::BigUint, ) { - let vm_address: VMAddress = to_vm_address(address); - match self.world.get_mut_state().accounts.get_mut(&vm_address) { - Some(acc) => { - acc.developer_rewards = developer_rewards; - - self.add_mandos_set_account(address); - }, - None => panic!( - "set_developer_rewards: Account {:?} does not exist", - address_to_hex(address) - ), - } + self.world + .set_developer_rewards(address, &developer_rewards); } #[allow(clippy::too_many_arguments)] @@ -423,30 +400,9 @@ impl BlockchainStateWrapper { hash: Option<&[u8]>, uris: &[Vec], ) { - let vm_address = to_vm_address(address); - match self.world.get_mut_state().accounts.get_mut(&vm_address) { - Some(acc) => { - acc.esdt.set_esdt_balance( - token_id.to_vec(), - nonce, - balance, - EsdtInstanceMetadata { - creator: creator.map(to_vm_address), - attributes: serialize_attributes(attributes), - royalties, - name: name.unwrap_or_default().to_vec(), - hash: hash.map(|h| h.to_vec()), - uri: uris.to_vec(), - }, - ); - - self.add_mandos_set_account(address); - }, - None => panic!( - "set_nft_balance: Account {:?} does not exist", - address_to_hex(address) - ), - } + self.world.set_nft_balance_all_properties( + address, token_id, nonce, balance, attributes, royalties, creator, name, hash, uris, + ); } pub fn set_esdt_local_roles( @@ -840,14 +796,14 @@ fn address_to_hex(address: &Address) -> String { hex::encode(address.as_bytes()) } -fn serialize_attributes(attributes: &T) -> Vec { - let mut serialized_attributes = Vec::new(); - if let Result::Err(err) = attributes.top_encode(&mut serialized_attributes) { - panic!("Failed to encode attributes: {err:?}") - } +// fn serialize_attributes(attributes: &T) -> Vec { +// let mut serialized_attributes = Vec::new(); +// if let Result::Err(err) = attributes.top_encode(&mut serialized_attributes) { +// panic!("Failed to encode attributes: {err:?}") +// } - serialized_attributes -} +// serialized_attributes +// } fn print_token_balance_raw( token_nonce: u64, From 050eb243985e567a1517e4f95d5cf544e2dfc4ad Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 25 Apr 2024 22:38:59 +0300 Subject: [PATCH 397/461] ScearioWorld register contract new file --- framework/scenario/src/facade.rs | 1 + .../scenario/src/facade/scenario_world.rs | 104 ----------------- .../src/facade/scenario_world_register.rs | 110 ++++++++++++++++++ 3 files changed, 111 insertions(+), 104 deletions(-) create mode 100644 framework/scenario/src/facade/scenario_world_register.rs diff --git a/framework/scenario/src/facade.rs b/framework/scenario/src/facade.rs index 77a00e4792..75a688a36a 100644 --- a/framework/scenario/src/facade.rs +++ b/framework/scenario/src/facade.rs @@ -3,6 +3,7 @@ mod debugger_backend; pub mod expr; pub mod result_handlers; mod scenario_world; +mod scenario_world_register; mod scenario_world_runner; mod scenario_world_steps; mod scenario_world_steps_deprecated; diff --git a/framework/scenario/src/facade/scenario_world.rs b/framework/scenario/src/facade/scenario_world.rs index d760c1743a..f5b05024bd 100644 --- a/framework/scenario/src/facade/scenario_world.rs +++ b/framework/scenario/src/facade/scenario_world.rs @@ -1,17 +1,7 @@ -use multiversx_chain_scenario_format::interpret_trait::InterpretableFrom; use multiversx_chain_vm::world_mock::BlockchainState; -use multiversx_sc_meta::cmd::contract::sc_config::ContractVariant; use crate::{ - api::DebugApi, - debug_executor::ContractContainer, - multiversx_sc::{ - api, - contract_base::{CallableContractBuilder, ContractAbiProvider}, - }, scenario::{run_trace::ScenarioTrace, run_vm::ScenarioVMRunner}, - scenario_format::{interpret_trait::InterpreterContext, value_interpreter::interpret_string}, - scenario_model::BytesValue, vm_go_tool::run_mx_scenario_go, }; use multiversx_sc_meta::find_workspace::find_current_workspace; @@ -126,100 +116,6 @@ impl ScenarioWorld { &self.current_dir } - pub fn interpreter_context(&self) -> InterpreterContext { - InterpreterContext::default() - .with_dir(self.current_dir.clone()) - .with_allowed_missing_files() - } - - /// Convenient way of creating a code expression based on the current context - /// (i.e. with the paths resolved, as configured). - pub fn code_expression(&self, path: &str) -> BytesValue { - BytesValue::interpret_from(path, &self.interpreter_context()) - } - - pub fn register_contract_container( - &mut self, - expression: &str, - contract_container: ContractContainer, - ) { - let contract_bytes = interpret_string(expression, &self.interpreter_context()); - self.get_mut_debugger_backend() - .vm_runner - .contract_map_ref - .lock() - .register_contract(contract_bytes, contract_container); - } - - /// Links a contract path in a test to a contract implementation. - pub fn register_contract( - &mut self, - expression: &str, - contract_builder: B, - ) { - self.register_contract_container( - expression, - ContractContainer::new(contract_builder.new_contract_obj::(), None, false), - ) - } - - #[deprecated( - since = "0.37.0", - note = "Got renamed to `register_contract`, but not completely removed, in order to ease test migration. Please replace with `register_contract`." - )] - pub fn register_contract_builder( - &mut self, - expression: &str, - contract_builder: B, - ) { - self.register_contract(expression, contract_builder) - } - - /// Links a contract path in a test to a multi-contract output. - /// - /// This simulates the effects of building such a contract with only part of the endpoints. - pub fn register_partial_contract( - &mut self, - expression: &str, - contract_builder: B, - sub_contract_name: &str, - ) where - Abi: ContractAbiProvider, - B: CallableContractBuilder, - { - let multi_contract_config = - multiversx_sc_meta::multi_contract_config::(self.current_dir.as_path()); - let contract_variant = multi_contract_config.find_contract(sub_contract_name); - self.register_contract_variant(expression, contract_builder, contract_variant); - } - - /// Links a contract path in a test to a multi-contract output. - /// - /// This simulates the effects of building such a contract with only part of the endpoints. - pub fn register_contract_variant( - &mut self, - expression: &str, - contract_builder: B, - contract_variant: &ContractVariant, - ) where - B: CallableContractBuilder, - { - let contract_obj = if contract_variant.settings.external_view { - contract_builder.new_contract_obj::>() - } else { - contract_builder.new_contract_obj::() - }; - - self.register_contract_container( - expression, - ContractContainer::new( - contract_obj, - Some(contract_variant.all_exported_function_names()), - contract_variant.settings.panic_message, - ), - ); - } - /// Exports current scenario to a JSON file, as created. pub fn write_scenario_trace>(&mut self, file_path: P) { if let Some(trace) = &mut self.get_mut_debugger_backend().trace { diff --git a/framework/scenario/src/facade/scenario_world_register.rs b/framework/scenario/src/facade/scenario_world_register.rs new file mode 100644 index 0000000000..9833cd7da1 --- /dev/null +++ b/framework/scenario/src/facade/scenario_world_register.rs @@ -0,0 +1,110 @@ +use crate::{ + api::DebugApi, + debug_executor::ContractContainer, + multiversx_sc::{ + api, + contract_base::{CallableContractBuilder, ContractAbiProvider}, + }, + scenario_format::{interpret_trait::InterpreterContext, value_interpreter::interpret_string}, + scenario_model::BytesValue, + ScenarioWorld, +}; +use multiversx_chain_scenario_format::interpret_trait::InterpretableFrom; + +use multiversx_sc_meta::cmd::contract::sc_config::ContractVariant; + +impl ScenarioWorld { + pub fn interpreter_context(&self) -> InterpreterContext { + InterpreterContext::default() + .with_dir(self.current_dir.clone()) + .with_allowed_missing_files() + } + + /// Convenient way of creating a code expression based on the current context + /// (i.e. with the paths resolved, as configured). + pub fn code_expression(&self, path: &str) -> BytesValue { + BytesValue::interpret_from(path, &self.interpreter_context()) + } + + pub fn register_contract_container( + &mut self, + expression: &str, + contract_container: ContractContainer, + ) { + let contract_bytes = interpret_string(expression, &self.interpreter_context()); + self.get_mut_debugger_backend() + .vm_runner + .contract_map_ref + .lock() + .register_contract(contract_bytes, contract_container); + } + + /// Links a contract path in a test to a contract implementation. + pub fn register_contract( + &mut self, + expression: &str, + contract_builder: B, + ) { + self.register_contract_container( + expression, + ContractContainer::new(contract_builder.new_contract_obj::(), None, false), + ) + } + + #[deprecated( + since = "0.37.0", + note = "Got renamed to `register_contract`, but not completely removed, in order to ease test migration. Please replace with `register_contract`." + )] + pub fn register_contract_builder( + &mut self, + expression: &str, + contract_builder: B, + ) { + self.register_contract(expression, contract_builder) + } + + /// Links a contract path in a test to a multi-contract output. + /// + /// This simulates the effects of building such a contract with only part of the endpoints. + pub fn register_partial_contract( + &mut self, + expression: &str, + contract_builder: B, + sub_contract_name: &str, + ) where + Abi: ContractAbiProvider, + B: CallableContractBuilder, + { + let multi_contract_config = + multiversx_sc_meta::multi_contract_config::(self.current_dir.as_path()); + let contract_variant = multi_contract_config.find_contract(sub_contract_name); + self.register_contract_variant(expression, contract_builder, contract_variant); + } + + /// Links a contract path in a test to a multi-contract output. + /// + /// This simulates the effects of building such a contract with only part of the endpoints. + pub fn register_contract_variant( + &mut self, + expression: &str, + contract_builder: B, + contract_variant: &ContractVariant, + ) where + B: CallableContractBuilder, + { + let contract_obj = if contract_variant.settings.external_view { + contract_builder.new_contract_obj::>() + } else { + contract_builder.new_contract_obj::() + }; + + self.register_contract_container( + expression, + ContractContainer::new( + contract_obj, + Some(contract_variant.all_exported_function_names()), + contract_variant.settings.panic_message, + ), + ); + } +} From 2cafacf0ae9675d28f640bd9abb4c2715c201870 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Thu, 25 Apr 2024 23:53:07 +0300 Subject: [PATCH 398/461] register_contract generic code source --- .../adder/tests/adder_blackbox_test.rs | 4 +- .../tests/crowdfunding_esdt_blackbox_test.rs | 21 ++-------- .../multisig/tests/multisig_blackbox_test.rs | 17 +++----- framework/scenario/src/facade/expr.rs | 2 + .../scenario/src/facade/expr/file_expr.rs | 42 ++++++++++++++----- .../scenario/src/facade/expr/mxsc_expr.rs | 31 ++++++++------ .../src/facade/expr/register_code_source.rs | 28 +++++++++++++ .../src/facade/scenario_world_register.rs | 14 ++++--- .../src/facade/world_tx/scenario_tx_env.rs | 9 ++++ 9 files changed, 107 insertions(+), 61 deletions(-) create mode 100644 framework/scenario/src/facade/expr/register_code_source.rs diff --git a/contracts/examples/adder/tests/adder_blackbox_test.rs b/contracts/examples/adder/tests/adder_blackbox_test.rs index 9ca51ccbeb..e5370fc61d 100644 --- a/contracts/examples/adder/tests/adder_blackbox_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_test.rs @@ -2,8 +2,6 @@ use multiversx_sc_scenario::imports::*; use adder::*; -const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; - const OWNER: AddressExpr = AddressExpr("owner"); const SC_ADDER: ScExpr = ScExpr("adder"); const CODE_EXPR: MxscExpr = MxscExpr("output/adder.mxsc.json"); @@ -12,7 +10,7 @@ fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); blockchain.set_current_dir_from_workspace("contracts/examples/adder"); - blockchain.register_contract(ADDER_PATH_EXPR, adder::ContractBuilder); + blockchain.register_contract(CODE_EXPR, adder::ContractBuilder); blockchain } diff --git a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs index 04ea60cf3e..7b5c5805a9 100644 --- a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs +++ b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs @@ -14,10 +14,7 @@ const SC_CROWDFUNDING_ESDT_EXPR: ScExpr = ScExpr("crowdfunding-esdt"); fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); - blockchain.register_contract( - CODE_EXPR.eval_to_expr().as_str(), - crowdfunding_esdt::ContractBuilder, - ); + blockchain.register_contract(CODE_EXPR, crowdfunding_esdt::ContractBuilder); blockchain } @@ -40,11 +37,7 @@ impl CrowdfundingESDTTestState { .nonce(1) .esdt_balance(CF_TOKEN_ID_EXPR, "1000"); - world.new_address( - OWNER_ADDRESS, - 1, - SC_CROWDFUNDING_ESDT_EXPR.eval_to_expr().as_str(), - ); + world.new_address(OWNER_ADDRESS, 1, SC_CROWDFUNDING_ESDT_EXPR); Self { world } } @@ -199,17 +192,11 @@ fn test_failed_cf() { state.deploy(); // first user fund - state.fund( - FIRST_USER_ADDRESS, //.eval_to_expr().as_str() - 300, - ); + state.fund(FIRST_USER_ADDRESS, 300); state.check_deposit(FIRST_USER_ADDRESS, 300u64); // second user fund - state.fund( - SECOND_USER_ADDRESS, //.eval_to_expr().as_str() - 600, - ); + state.fund(SECOND_USER_ADDRESS, 600); state.check_deposit(SECOND_USER_ADDRESS, 600u64); // set block timestamp after deadline diff --git a/contracts/examples/multisig/tests/multisig_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_blackbox_test.rs index 5be8e9d52b..d276fb8067 100644 --- a/contracts/examples/multisig/tests/multisig_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_blackbox_test.rs @@ -20,14 +20,8 @@ fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); blockchain.set_current_dir_from_workspace("contracts/examples/multisig"); - blockchain.register_contract( - MULTISIG_CODE_EXPR.eval_to_expr().as_str(), - multisig::ContractBuilder, - ); - blockchain.register_contract( - ADDER_CODE_EXPR.eval_to_expr().as_str(), - adder::ContractBuilder, - ); + blockchain.register_contract(MULTISIG_CODE_EXPR, multisig::ContractBuilder); + blockchain.register_contract(ADDER_CODE_EXPR, adder::ContractBuilder); blockchain } @@ -597,10 +591,9 @@ fn test_deploy_and_upgrade_from_source() { .world .code_expression(factorial_path_expr.eval_to_expr().as_str()); - state.world.register_contract( - factorial_path_expr.eval_to_expr().as_str(), - factorial::ContractBuilder, - ); + state + .world + .register_contract(factorial_path_expr, factorial::ContractBuilder); state .world diff --git a/framework/scenario/src/facade/expr.rs b/framework/scenario/src/facade/expr.rs index 6ea8595740..de36abef97 100644 --- a/framework/scenario/src/facade/expr.rs +++ b/framework/scenario/src/facade/expr.rs @@ -2,8 +2,10 @@ mod bech32_address; mod file_expr; mod mxsc_expr; mod num_expr; +mod register_code_source; pub use bech32_address::Bech32Address; pub use file_expr::FileExpr; pub use mxsc_expr::MxscExpr; pub use num_expr::NumExpr; +pub use register_code_source::RegisterCodeSource; diff --git a/framework/scenario/src/facade/expr/file_expr.rs b/framework/scenario/src/facade/expr/file_expr.rs index f197ce4e16..4430046a7c 100644 --- a/framework/scenario/src/facade/expr/file_expr.rs +++ b/framework/scenario/src/facade/expr/file_expr.rs @@ -1,25 +1,45 @@ use multiversx_chain_scenario_format::{ interpret_trait::InterpreterContext, value_interpreter::interpret_string, }; -use multiversx_sc::types::{AnnotatedValue, ManagedBuffer}; +use multiversx_sc::types::{AnnotatedValue, ManagedBuffer, TxCodeValue}; -use crate::{api::StaticApi, ScenarioTxEnvData}; +use crate::{ScenarioTxEnv, ScenarioTxEnvData}; + +use super::RegisterCodeSource; const FILE_PREFIX: &str = "file:"; #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub struct FileExpr<'a>(pub &'a str); -impl<'a> AnnotatedValue> for FileExpr<'a> { - fn annotation(&self, _env: &ScenarioTxEnvData) -> ManagedBuffer { - let mut result = ManagedBuffer::new_from_bytes(FILE_PREFIX.as_bytes()); - result.append_bytes(self.0.as_bytes()); - result +impl<'a> FileExpr<'a> { + pub fn eval_to_expr(&self) -> String { + format!("{FILE_PREFIX}{}", self.0) + } + + pub fn resolve_contents(&self, context: &InterpreterContext) -> Vec { + interpret_string(&format!("{FILE_PREFIX}{}", self.0), context) + } +} + +impl<'a, Env> AnnotatedValue> for FileExpr<'a> +where + Env: ScenarioTxEnv, +{ + fn annotation(&self, _env: &Env) -> ManagedBuffer { + self.eval_to_expr().into() + } + + fn to_value(&self, env: &Env) -> ManagedBuffer { + self.resolve_contents(&env.env_data().interpreter_context()) + .into() } +} + +impl<'a, Env> TxCodeValue for FileExpr<'a> where Env: ScenarioTxEnv {} - fn to_value(&self, env: &ScenarioTxEnvData) -> ManagedBuffer { - let context = InterpreterContext::new().with_dir(env.context_path.clone()); - let value = interpret_string(&format!("{FILE_PREFIX}{}", self.0), &context); - value.into() +impl<'a> RegisterCodeSource for FileExpr<'a> { + fn into_code(self, env_data: ScenarioTxEnvData) -> Vec { + self.resolve_contents(&env_data.interpreter_context()) } } diff --git a/framework/scenario/src/facade/expr/mxsc_expr.rs b/framework/scenario/src/facade/expr/mxsc_expr.rs index d130102600..886fb91503 100644 --- a/framework/scenario/src/facade/expr/mxsc_expr.rs +++ b/framework/scenario/src/facade/expr/mxsc_expr.rs @@ -3,37 +3,44 @@ use multiversx_chain_scenario_format::{ }; use multiversx_sc::types::{AnnotatedValue, ManagedBuffer, TxCodeValue}; -use crate::ScenarioTxEnv; +use crate::{ScenarioTxEnv, ScenarioTxEnvData}; + +use super::RegisterCodeSource; const MXSC_PREFIX: &str = "mxsc:"; #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub struct MxscExpr<'a>(pub &'a str); +impl<'a> MxscExpr<'a> { + pub fn eval_to_expr(&self) -> String { + format!("{MXSC_PREFIX}{}", self.0) + } + + pub fn resolve_contents(&self, context: &InterpreterContext) -> Vec { + interpret_string(&format!("{MXSC_PREFIX}{}", self.0), context) + } +} + impl<'a, Env> AnnotatedValue> for MxscExpr<'a> where Env: ScenarioTxEnv, { fn annotation(&self, _env: &Env) -> ManagedBuffer { - let mut result = ManagedBuffer::new_from_bytes(MXSC_PREFIX.as_bytes()); - result.append_bytes(self.0.as_bytes()); - result + self.eval_to_expr().into() } fn to_value(&self, env: &Env) -> ManagedBuffer { - let context = InterpreterContext::new() - .with_dir(env.env_data().context_path.clone()) - .with_allowed_missing_files(); - let value = interpret_string(&format!("{MXSC_PREFIX}{}", self.0), &context); - value.into() + self.resolve_contents(&env.env_data().interpreter_context()) + .into() } } impl<'a, Env> TxCodeValue for MxscExpr<'a> where Env: ScenarioTxEnv {} -impl<'a> MxscExpr<'a> { - pub fn eval_to_expr(&self) -> String { - format!("{MXSC_PREFIX}{}", self.0) +impl<'a> RegisterCodeSource for MxscExpr<'a> { + fn into_code(self, env_data: ScenarioTxEnvData) -> Vec { + self.resolve_contents(&env_data.interpreter_context()) } } diff --git a/framework/scenario/src/facade/expr/register_code_source.rs b/framework/scenario/src/facade/expr/register_code_source.rs new file mode 100644 index 0000000000..d586498a0f --- /dev/null +++ b/framework/scenario/src/facade/expr/register_code_source.rs @@ -0,0 +1,28 @@ +use multiversx_chain_scenario_format::value_interpreter::interpret_string; + +use crate::ScenarioTxEnvData; + +/// Used when registering a contract for debugging. +/// +/// Any type that implements this trait can be passed to the `register_contract` method, and to its variants. +pub trait RegisterCodeSource { + fn into_code(self, env_data: ScenarioTxEnvData) -> Vec; +} + +impl RegisterCodeSource for &str { + fn into_code(self, env_data: ScenarioTxEnvData) -> Vec { + interpret_string(self, &env_data.interpreter_context()) + } +} + +impl RegisterCodeSource for String { + fn into_code(self, env_data: ScenarioTxEnvData) -> Vec { + self.as_str().into_code(env_data) + } +} + +impl RegisterCodeSource for &String { + fn into_code(self, env_data: ScenarioTxEnvData) -> Vec { + self.as_str().into_code(env_data) + } +} diff --git a/framework/scenario/src/facade/scenario_world_register.rs b/framework/scenario/src/facade/scenario_world_register.rs index 9833cd7da1..4fccdec3e6 100644 --- a/framework/scenario/src/facade/scenario_world_register.rs +++ b/framework/scenario/src/facade/scenario_world_register.rs @@ -5,7 +5,7 @@ use crate::{ api, contract_base::{CallableContractBuilder, ContractAbiProvider}, }, - scenario_format::{interpret_trait::InterpreterContext, value_interpreter::interpret_string}, + scenario_format::interpret_trait::InterpreterContext, scenario_model::BytesValue, ScenarioWorld, }; @@ -13,6 +13,8 @@ use multiversx_chain_scenario_format::interpret_trait::InterpretableFrom; use multiversx_sc_meta::cmd::contract::sc_config::ContractVariant; +use super::expr::RegisterCodeSource; + impl ScenarioWorld { pub fn interpreter_context(&self) -> InterpreterContext { InterpreterContext::default() @@ -28,10 +30,10 @@ impl ScenarioWorld { pub fn register_contract_container( &mut self, - expression: &str, + expression: impl RegisterCodeSource, contract_container: ContractContainer, ) { - let contract_bytes = interpret_string(expression, &self.interpreter_context()); + let contract_bytes = expression.into_code(self.new_env_data()); self.get_mut_debugger_backend() .vm_runner .contract_map_ref @@ -42,7 +44,7 @@ impl ScenarioWorld { /// Links a contract path in a test to a contract implementation. pub fn register_contract( &mut self, - expression: &str, + expression: impl RegisterCodeSource, contract_builder: B, ) { self.register_contract_container( @@ -68,7 +70,7 @@ impl ScenarioWorld { /// This simulates the effects of building such a contract with only part of the endpoints. pub fn register_partial_contract( &mut self, - expression: &str, + expression: impl RegisterCodeSource, contract_builder: B, sub_contract_name: &str, ) where @@ -86,7 +88,7 @@ impl ScenarioWorld { /// This simulates the effects of building such a contract with only part of the endpoints. pub fn register_contract_variant( &mut self, - expression: &str, + expression: impl RegisterCodeSource, contract_builder: B, contract_variant: &ContractVariant, ) where diff --git a/framework/scenario/src/facade/world_tx/scenario_tx_env.rs b/framework/scenario/src/facade/world_tx/scenario_tx_env.rs index 7613f94116..91aa212fc3 100644 --- a/framework/scenario/src/facade/world_tx/scenario_tx_env.rs +++ b/framework/scenario/src/facade/world_tx/scenario_tx_env.rs @@ -1,5 +1,6 @@ use std::path::PathBuf; +use multiversx_chain_scenario_format::interpret_trait::InterpreterContext; use multiversx_sc::types::{ManagedAddress, ManagedBuffer, TxEnv, H256}; use crate::{api::StaticApi, scenario_model::TxExpect, ScenarioWorld}; @@ -34,6 +35,14 @@ impl TxEnv for ScenarioTxEnvData { } } +impl ScenarioTxEnvData { + pub fn interpreter_context(&self) -> InterpreterContext { + InterpreterContext::default() + .with_dir(self.context_path.clone()) + .with_allowed_missing_files() + } +} + impl ScenarioTxEnv for ScenarioTxEnvData { fn env_data(&self) -> &ScenarioTxEnvData { self From 9d85f0adc6910ef7cfe4b02efc75a253b1644802 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 26 Apr 2024 02:33:03 +0300 Subject: [PATCH 399/461] expr refactor: address --- .../tests/price_aggregator_blackbox_test.rs | 2 +- .../tests/price_aggregator_stress_blackbox.rs | 7 +- .../adder/tests/adder_blackbox_test.rs | 2 +- .../tests/crowdfunding_esdt_blackbox_test.rs | 6 +- .../multisig/tests/multisig_blackbox_test.rs | 16 ++--- .../tests/pmf_blackbox_test.rs | 2 +- .../tests/st_blackbox_chained_test.rs | 4 +- .../tests/st_blackbox_legacy_proxy_test.rs | 2 +- .../scenario-tester/tests/st_blackbox_test.rs | 4 +- framework/base/src/imports.rs | 1 + framework/base/src/macros.rs | 7 ++ .../types/interaction/expr/address_expr.rs | 66 +++++++++++-------- .../src/types/interaction/expr/sc_expr.rs | 4 ++ .../src/scenario/model/value/address_key.rs | 2 +- .../src/scenario/model/value/address_value.rs | 2 +- 15 files changed, 75 insertions(+), 52 deletions(-) diff --git a/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs b/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs index bd73790c0a..50b486210f 100644 --- a/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs +++ b/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs @@ -20,7 +20,7 @@ const SUBMISSION_COUNT: usize = 3; const USD_TICKER: &[u8] = b"USDC"; const PRICE_AGGREGATOR: ScExpr = ScExpr("price-aggregator"); -const OWNER: AddressExpr = AddressExpr("owner"); +const_address_expr!(OWNER = "owner"); fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); diff --git a/contracts/core/price-aggregator/tests/price_aggregator_stress_blackbox.rs b/contracts/core/price-aggregator/tests/price_aggregator_stress_blackbox.rs index 4c01ab175f..6d47282622 100644 --- a/contracts/core/price-aggregator/tests/price_aggregator_stress_blackbox.rs +++ b/contracts/core/price-aggregator/tests/price_aggregator_stress_blackbox.rs @@ -9,6 +9,7 @@ const DECIMALS: u8 = 0; const EGLD_TICKER: &[u8] = b"EGLD"; const NR_ORACLES: usize = 50; const OWNER_ADDRESS_EXPR: &str = "address:owner"; +const_address_expr!(OWNER = "owner"); const PRICE_AGGREGATOR_ADDRESS_EXPR: &str = "sc:price-aggregator"; const PRICE_AGGREGATOR_PATH_EXPR: &str = "mxsc:../output/multiversx-price-aggregator-sc.mxsc.json"; const SLASH_AMOUNT: u64 = 10; @@ -89,7 +90,7 @@ impl PriceAggregatorTestState { self.world .tx() - .from(AddressExpr("owner")) + .from(OWNER) .gas(120_000_000u64) .typed(price_aggregator_proxy::PriceAggregatorProxy) .init( @@ -121,7 +122,7 @@ impl PriceAggregatorTestState { fn set_pair_decimals(&mut self) { self.world .tx() - .from(AddressExpr("owner")) + .from(OWNER) .to(&self.price_aggregator_contract.to_address()) .typed(price_aggregator_proxy::PriceAggregatorProxy) .set_pair_decimals(EGLD_TICKER, USD_TICKER, DECIMALS) @@ -131,7 +132,7 @@ impl PriceAggregatorTestState { fn unpause_endpoint(&mut self) { self.world .tx() - .from(AddressExpr("owner")) + .from(OWNER) .to(&self.price_aggregator_contract.to_address()) .gas(5_000_000u64) .typed(price_aggregator_proxy::PriceAggregatorProxy) diff --git a/contracts/examples/adder/tests/adder_blackbox_test.rs b/contracts/examples/adder/tests/adder_blackbox_test.rs index e5370fc61d..d0d2a00103 100644 --- a/contracts/examples/adder/tests/adder_blackbox_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_test.rs @@ -2,7 +2,7 @@ use multiversx_sc_scenario::imports::*; use adder::*; -const OWNER: AddressExpr = AddressExpr("owner"); +const_address_expr!(OWNER = "owner"); const SC_ADDER: ScExpr = ScExpr("adder"); const CODE_EXPR: MxscExpr = MxscExpr("output/adder.mxsc.json"); diff --git a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs index 7b5c5805a9..ad198ad50e 100644 --- a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs +++ b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs @@ -5,9 +5,9 @@ use multiversx_sc_scenario::imports::*; const CF_DEADLINE: u64 = 7 * 24 * 60 * 60; // 1 week in seconds const CF_TOKEN_ID: &[u8] = b"CROWD-123456"; const CF_TOKEN_ID_EXPR: &str = "str:CROWD-123456"; -const FIRST_USER_ADDRESS: AddressExpr = AddressExpr("first-user"); -const OWNER_ADDRESS: AddressExpr = AddressExpr("owner"); -const SECOND_USER_ADDRESS: AddressExpr = AddressExpr("second-user"); +const_address_expr!(FIRST_USER_ADDRESS = "first-user"); +const_address_expr!(OWNER_ADDRESS = "owner"); +const_address_expr!(SECOND_USER_ADDRESS = "second-user"); const CODE_EXPR: MxscExpr = MxscExpr("output/crowdfunding-esdt.mxsc.json"); const SC_CROWDFUNDING_ESDT_EXPR: ScExpr = ScExpr("crowdfunding-esdt"); diff --git a/contracts/examples/multisig/tests/multisig_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_blackbox_test.rs index d276fb8067..fc1ab1fa52 100644 --- a/contracts/examples/multisig/tests/multisig_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_blackbox_test.rs @@ -6,13 +6,13 @@ use multisig::multisig_proxy; use num_bigint::BigUint; const SC_ADDER_EXPR: ScExpr = ScExpr("adder"); -const ADDER_OWNER_ADDRESS_EXPR: AddressExpr = AddressExpr("adder-owner"); +const_address_expr!(ADDER_OWNER_ADDRESS_EXPR = "adder-owner"); const ADDER_CODE_EXPR: MxscExpr = MxscExpr("test-contracts/adder.mxsc.json"); -const BOARD_MEMBER_ADDRESS_EXPR: AddressExpr = AddressExpr("board-member"); +const_address_expr!(BOARD_MEMBER_ADDRESS_EXPR = "board-member"); const SC_MULTISIG_EXPR: ScExpr = ScExpr("multisig"); const MULTISIG_CODE_EXPR: MxscExpr = MxscExpr("output/multisig.mxsc.json"); -const OWNER_ADDRESS_EXPR: AddressExpr = AddressExpr("owner"); -const PROPOSER_ADDRESS_EXPR: AddressExpr = AddressExpr("proposer"); +const_address_expr!(OWNER_ADDRESS_EXPR = "owner"); +const_address_expr!(PROPOSER_ADDRESS_EXPR = "proposer"); const PROPOSER_BALANCE_EXPR: &str = "100,000,000"; const QUORUM_SIZE: usize = 1; @@ -256,7 +256,7 @@ fn test_add_board_member() { let mut state = MultisigTestState::new(); state.deploy_multisig_contract(); - let new_board_member_expr: AddressExpr = AddressExpr("new-board-member"); + let new_board_member_expr: AddressExpr = AddressExpr::new("new-board-member"); state.world.account(new_board_member_expr).nonce(1); @@ -287,7 +287,7 @@ fn test_add_proposer() { let mut state = MultisigTestState::new(); state.deploy_multisig_contract(); - let new_proposer_address_expr: AddressExpr = AddressExpr("new-proposer"); + let new_proposer_address_expr = AddressExpr::new("new-proposer"); state.world.account(new_proposer_address_expr).nonce(1); @@ -404,7 +404,7 @@ fn test_change_quorum() { .run(); // add another board member - let new_board_member_address_expr: AddressExpr = AddressExpr("new-board-member"); + let new_board_member_address_expr = AddressExpr::new("new-board-member"); state.world.account(new_board_member_address_expr).nonce(1); @@ -423,7 +423,7 @@ fn test_transfer_execute_to_user() { let mut state = MultisigTestState::new(); state.deploy_multisig_contract(); - let new_user_address_expr: AddressExpr = AddressExpr("new-user"); + let new_user_address_expr = AddressExpr::new("new-user"); state.world.account(new_user_address_expr).nonce(1); let amount: u64 = 100; diff --git a/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs b/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs index 371bf0aeb3..a768279a71 100644 --- a/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs +++ b/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs @@ -2,7 +2,7 @@ mod pmf_proxy; use multiversx_sc_scenario::imports::*; -const OWNER: AddressExpr = AddressExpr("owner"); +const_address_expr!(OWNER = "owner"); const SC_PMF: ScExpr = ScExpr("pmf"); const CODE_EXPR: &str = "mxsc:output/panic-message-features.mxsc.json"; diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs index 165e4c62f3..94a330ebea 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs @@ -27,7 +27,7 @@ fn st_blackbox_chained() { .new_address(owner_address, 1, "sc:adder"), ) .chain_deploy(|tx| { - tx.from(AddressExpr("owner")) + tx.from(AddressExpr::new("owner")) .typed(scenario_tester_proxy::ScenarioTesterProxy) .init(5u32) .code(MxscExpr("output/scenario-tester.mxsc.json")) @@ -44,7 +44,7 @@ fn st_blackbox_chained() { })) }) .chain_call(|tx| { - tx.from(AddressExpr("owner")) + tx.from(AddressExpr::new("owner")) .to(ScExpr("adder")) .typed(scenario_tester_proxy::ScenarioTesterProxy) .add(3u32) diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_legacy_proxy_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_legacy_proxy_test.rs index 09e8e87c17..1fa7d00839 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_legacy_proxy_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_legacy_proxy_test.rs @@ -5,7 +5,7 @@ use scenario_tester::*; const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; -const OWNER: AddressExpr = AddressExpr("owner"); +const_address_expr!(OWNER = "owner"); const CODE_EXPR: MxscExpr = MxscExpr("output/adder.mxsc.json"); fn world() -> ScenarioWorld { diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs index 1af150a76f..c8a6044dde 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs @@ -5,8 +5,8 @@ use scenario_tester::*; const SC_SCENARIO_TESTER_PATH_EXPR: &str = "mxsc:output/scenario-tester.mxsc.json"; -const OWNER: AddressExpr = AddressExpr("owner"); -const OTHER: AddressExpr = AddressExpr("other"); +const_address_expr!(OWNER = "owner"); +const_address_expr!(OTHER = "other"); const SC_SCENARIO_TESTER: ScExpr = ScExpr("scenario-tester"); const CODE_EXPR: MxscExpr = MxscExpr("output/scenario-tester.mxsc.json"); diff --git a/framework/base/src/imports.rs b/framework/base/src/imports.rs index 016aa7bb4e..41677ee71e 100644 --- a/framework/base/src/imports.rs +++ b/framework/base/src/imports.rs @@ -6,6 +6,7 @@ pub use crate::{ multi_types::*, CodecFrom, CodecFromSelf, CodecInto, DecodeError, Empty, IntoMultiValue, NestedDecode, NestedEncode, TopDecode, TopEncode, }, + const_address_expr, contract_base::{ContractBase, ProxyObjBase, ProxyObjNew}, err_msg, io::*, diff --git a/framework/base/src/macros.rs b/framework/base/src/macros.rs index 55d023ad79..ddc9331f9f 100644 --- a/framework/base/src/macros.rs +++ b/framework/base/src/macros.rs @@ -210,3 +210,10 @@ macro_rules! extract_address { .unwrap_or_sc_panic(multiversx_sc::err_msg::RECIPIENT_ADDRESS_NOT_SET) }}; } + +#[macro_export] +macro_rules! const_address_expr { + ($const_name:ident = $name:expr) => { + const $const_name: AddressExpr = AddressExpr::new($name); + }; +} diff --git a/framework/base/src/types/interaction/expr/address_expr.rs b/framework/base/src/types/interaction/expr/address_expr.rs index dddfa5b53c..764c3ea3e3 100644 --- a/framework/base/src/types/interaction/expr/address_expr.rs +++ b/framework/base/src/types/interaction/expr/address_expr.rs @@ -7,16 +7,46 @@ use crate::types::{ const ADDRESS_PREFIX: &str = "address:"; +/// Encodes a dummy address, to be used for tests. +/// +/// It is designed to be usable from contracts (especiall test contracts), with a minimal footprint. +/// For this reason, its inner structure is subject to change. #[derive(Clone, Copy, Debug, PartialEq, Eq)] -pub struct AddressExpr(pub &'static str); +pub struct AddressExpr<'a> { + name: &'a str, +} + +impl<'a> AddressExpr<'a> { + pub const fn new(name: &'a str) -> Self { + AddressExpr { name } + } -impl AnnotatedValue> for AddressExpr + pub const fn eval_to_array(&self) -> [u8; 32] { + let result = [b'_'; 32]; + let expr_bytes = self.name.as_bytes(); + let mut len = expr_bytes.len(); + if len > 32 { + len = 32; + } + unsafe { + ptr::copy_nonoverlapping(expr_bytes.as_ptr(), result.as_ptr() as *mut u8, len); + } + result + } + + #[cfg(feature = "alloc")] + pub fn eval_to_expr(&self) -> alloc::string::String { + alloc::format!("{ADDRESS_PREFIX}{}", self.name) + } +} + +impl<'a, Env> AnnotatedValue> for AddressExpr<'a> where Env: TxEnv, { fn annotation(&self, _env: &Env) -> ManagedBuffer { let mut result = ManagedBuffer::new_from_bytes(ADDRESS_PREFIX.as_bytes()); - result.append_bytes(self.0.as_bytes()); + result.append_bytes(self.name.as_bytes()); result } @@ -26,7 +56,7 @@ where } } -impl TxFrom for AddressExpr +impl<'a, Env> TxFrom for AddressExpr<'a> where Env: TxEnv, { @@ -35,36 +65,16 @@ where expr.into() } } -impl TxFromSpecified for AddressExpr where Env: TxEnv {} -impl TxTo for AddressExpr where Env: TxEnv {} -impl TxToSpecified for AddressExpr where Env: TxEnv {} - -impl AddressExpr { - pub const fn eval_to_array(&self) -> [u8; 32] { - let result = [b'_'; 32]; - let expr_bytes = self.0.as_bytes(); - let mut len = expr_bytes.len(); - if len > 32 { - len = 32; - } - unsafe { - ptr::copy_nonoverlapping(expr_bytes.as_ptr(), result.as_ptr() as *mut u8, len); - } - result - } - - #[cfg(feature = "alloc")] - pub fn eval_to_expr(&self) -> alloc::string::String { - alloc::format!("{ADDRESS_PREFIX}{}", self.0) - } -} +impl<'a, Env> TxFromSpecified for AddressExpr<'a> where Env: TxEnv {} +impl<'a, Env> TxTo for AddressExpr<'a> where Env: TxEnv {} +impl<'a, Env> TxToSpecified for AddressExpr<'a> where Env: TxEnv {} #[cfg(test)] pub mod tests { use super::*; fn assert_eq_eval(expr: &'static str, expected: &[u8; 32]) { - assert_eq!(&AddressExpr(expr).eval_to_array(), expected); + assert_eq!(&AddressExpr::new(expr).eval_to_array(), expected); } #[test] diff --git a/framework/base/src/types/interaction/expr/sc_expr.rs b/framework/base/src/types/interaction/expr/sc_expr.rs index aa57b1af30..0c43ccddcc 100644 --- a/framework/base/src/types/interaction/expr/sc_expr.rs +++ b/framework/base/src/types/interaction/expr/sc_expr.rs @@ -9,6 +9,10 @@ const SC_PREFIX: &str = "sc:"; const VM_TYPE_LEN: usize = 2; const DEFAULT_VM_TYPE: &[u8] = &[5, 0]; +/// Encodes a dummy address, to be used for tests. +/// +/// It is designed to be usable from contracts (especiall test contracts), with a minimal footprint. +/// For this reason, its inner structure is subject to change. #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub struct ScExpr<'a>(pub &'a str); diff --git a/framework/scenario/src/scenario/model/value/address_key.rs b/framework/scenario/src/scenario/model/value/address_key.rs index d705439b1d..ddb6169a66 100644 --- a/framework/scenario/src/scenario/model/value/address_key.rs +++ b/framework/scenario/src/scenario/model/value/address_key.rs @@ -135,7 +135,7 @@ impl From for AddressKey { } } -impl From for AddressKey { +impl From> for AddressKey { fn from(from: AddressExpr) -> Self { AddressKey { value: from.eval_to_array().into(), diff --git a/framework/scenario/src/scenario/model/value/address_value.rs b/framework/scenario/src/scenario/model/value/address_value.rs index 8564bb6e47..57499a8463 100644 --- a/framework/scenario/src/scenario/model/value/address_value.rs +++ b/framework/scenario/src/scenario/model/value/address_value.rs @@ -138,7 +138,7 @@ impl From<&str> for AddressValue { } } -impl From for AddressValue { +impl From> for AddressValue { fn from(from: AddressExpr) -> Self { AddressValue { value: from.eval_to_array().into(), From 65208e1e3b1cd3d15283ff6596cbf4de36509f00 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 26 Apr 2024 02:33:56 +0300 Subject: [PATCH 400/461] expr refactor: sc --- .../tests/price_aggregator_blackbox_test.rs | 2 +- .../adder/tests/adder_blackbox_test.rs | 2 +- .../tests/crowdfunding_esdt_blackbox_test.rs | 2 +- .../multisig/tests/multisig_blackbox_test.rs | 8 +++---- .../tests/pmf_blackbox_test.rs | 2 +- .../tests/st_blackbox_chained_test.rs | 4 ++-- .../scenario-tester/tests/st_blackbox_test.rs | 2 +- framework/base/src/imports.rs | 2 +- framework/base/src/macros.rs | 14 +++++++++++++ .../types/interaction/expr/address_expr.rs | 2 +- .../src/types/interaction/expr/sc_expr.rs | 21 +++++++++++++------ 11 files changed, 42 insertions(+), 19 deletions(-) diff --git a/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs b/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs index 50b486210f..e65bf545ea 100644 --- a/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs +++ b/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs @@ -19,7 +19,7 @@ const STAKE_AMOUNT: u64 = 20; const SUBMISSION_COUNT: usize = 3; const USD_TICKER: &[u8] = b"USDC"; -const PRICE_AGGREGATOR: ScExpr = ScExpr("price-aggregator"); +const_sc_expr!(PRICE_AGGREGATOR = "price-aggregator"); const_address_expr!(OWNER = "owner"); fn world() -> ScenarioWorld { diff --git a/contracts/examples/adder/tests/adder_blackbox_test.rs b/contracts/examples/adder/tests/adder_blackbox_test.rs index d0d2a00103..d1a754bf87 100644 --- a/contracts/examples/adder/tests/adder_blackbox_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_test.rs @@ -3,7 +3,7 @@ use multiversx_sc_scenario::imports::*; use adder::*; const_address_expr!(OWNER = "owner"); -const SC_ADDER: ScExpr = ScExpr("adder"); +const_sc_expr!(SC_ADDER = "adder"); const CODE_EXPR: MxscExpr = MxscExpr("output/adder.mxsc.json"); fn world() -> ScenarioWorld { diff --git a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs index ad198ad50e..79144f716a 100644 --- a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs +++ b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs @@ -9,7 +9,7 @@ const_address_expr!(FIRST_USER_ADDRESS = "first-user"); const_address_expr!(OWNER_ADDRESS = "owner"); const_address_expr!(SECOND_USER_ADDRESS = "second-user"); const CODE_EXPR: MxscExpr = MxscExpr("output/crowdfunding-esdt.mxsc.json"); -const SC_CROWDFUNDING_ESDT_EXPR: ScExpr = ScExpr("crowdfunding-esdt"); +const_sc_expr!(SC_CROWDFUNDING_ESDT_EXPR = "crowdfunding-esdt"); fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); diff --git a/contracts/examples/multisig/tests/multisig_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_blackbox_test.rs index fc1ab1fa52..79dde417ac 100644 --- a/contracts/examples/multisig/tests/multisig_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_blackbox_test.rs @@ -5,11 +5,11 @@ use adder::adder_proxy; use multisig::multisig_proxy; use num_bigint::BigUint; -const SC_ADDER_EXPR: ScExpr = ScExpr("adder"); +const_sc_expr!(SC_ADDER_EXPR = "adder"); const_address_expr!(ADDER_OWNER_ADDRESS_EXPR = "adder-owner"); const ADDER_CODE_EXPR: MxscExpr = MxscExpr("test-contracts/adder.mxsc.json"); const_address_expr!(BOARD_MEMBER_ADDRESS_EXPR = "board-member"); -const SC_MULTISIG_EXPR: ScExpr = ScExpr("multisig"); +const_sc_expr!(SC_MULTISIG_EXPR = "multisig"); const MULTISIG_CODE_EXPR: MxscExpr = MxscExpr("output/multisig.mxsc.json"); const_address_expr!(OWNER_ADDRESS_EXPR = "owner"); const_address_expr!(PROPOSER_ADDRESS_EXPR = "proposer"); @@ -538,7 +538,7 @@ fn test_deploy_and_upgrade_from_source() { let mut state = MultisigTestState::new(); state.deploy_multisig_contract().deploy_adder_contract(); - let new_adder_address_expr: ScExpr = ScExpr("new-adder"); + let new_adder_address_expr = ScExpr::new("new-adder"); state .world @@ -584,7 +584,7 @@ fn test_deploy_and_upgrade_from_source() { .returns(ExpectValue(BigUint::from(10u64))) .run(); - let factorial_address_expr: ScExpr = ScExpr("factorial"); + let factorial_address_expr: ScExpr = ScExpr::new("factorial"); let factorial_path_expr: MxscExpr = MxscExpr("test-contracts/factorial.mxsc.json"); let factorial_code = state diff --git a/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs b/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs index a768279a71..f18abeb9e2 100644 --- a/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs +++ b/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs @@ -3,7 +3,7 @@ mod pmf_proxy; use multiversx_sc_scenario::imports::*; const_address_expr!(OWNER = "owner"); -const SC_PMF: ScExpr = ScExpr("pmf"); +const_sc_expr!(SC_PMF = "pmf"); const CODE_EXPR: &str = "mxsc:output/panic-message-features.mxsc.json"; fn world() -> ScenarioWorld { diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs index 94a330ebea..d2fdfdae22 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs @@ -36,7 +36,7 @@ fn st_blackbox_chained() { })) }) .chain_query(|tx| { - tx.to(ScExpr("adder")) + tx.to(ScExpr::new("adder")) .typed(scenario_tester_proxy::ScenarioTesterProxy) .sum() .with_result(WithResultConv::new(|value: BigUint| { @@ -45,7 +45,7 @@ fn st_blackbox_chained() { }) .chain_call(|tx| { tx.from(AddressExpr::new("owner")) - .to(ScExpr("adder")) + .to(ScExpr::new("adder")) .typed(scenario_tester_proxy::ScenarioTesterProxy) .add(3u32) .with_result(WithRawTxResponse(|response| { diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs index c8a6044dde..f7b303944b 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs @@ -7,7 +7,7 @@ const SC_SCENARIO_TESTER_PATH_EXPR: &str = "mxsc:output/scenario-tester.mxsc.jso const_address_expr!(OWNER = "owner"); const_address_expr!(OTHER = "other"); -const SC_SCENARIO_TESTER: ScExpr = ScExpr("scenario-tester"); +const_sc_expr!(SC_SCENARIO_TESTER = "scenario-tester"); const CODE_EXPR: MxscExpr = MxscExpr("output/scenario-tester.mxsc.json"); fn world() -> ScenarioWorld { diff --git a/framework/base/src/imports.rs b/framework/base/src/imports.rs index 41677ee71e..6bd58a66ac 100644 --- a/framework/base/src/imports.rs +++ b/framework/base/src/imports.rs @@ -6,7 +6,7 @@ pub use crate::{ multi_types::*, CodecFrom, CodecFromSelf, CodecInto, DecodeError, Empty, IntoMultiValue, NestedDecode, NestedEncode, TopDecode, TopEncode, }, - const_address_expr, + const_address_expr, const_sc_expr, contract_base::{ContractBase, ProxyObjBase, ProxyObjNew}, err_msg, io::*, diff --git a/framework/base/src/macros.rs b/framework/base/src/macros.rs index ddc9331f9f..d8f11d945f 100644 --- a/framework/base/src/macros.rs +++ b/framework/base/src/macros.rs @@ -217,3 +217,17 @@ macro_rules! const_address_expr { const $const_name: AddressExpr = AddressExpr::new($name); }; } + +#[macro_export] +macro_rules! const_sc_expr { + ($const_name:ident = $name:expr) => { + const $const_name: ScExpr = ScExpr::new($name); + }; +} + +#[macro_export] +macro_rules! const_expr { + ($const_name:ident = address $name:expr) => { + const $const_name: ScExpr = ScExpr::new($name); + }; +} diff --git a/framework/base/src/types/interaction/expr/address_expr.rs b/framework/base/src/types/interaction/expr/address_expr.rs index 764c3ea3e3..5310809d2c 100644 --- a/framework/base/src/types/interaction/expr/address_expr.rs +++ b/framework/base/src/types/interaction/expr/address_expr.rs @@ -8,7 +8,7 @@ use crate::types::{ const ADDRESS_PREFIX: &str = "address:"; /// Encodes a dummy address, to be used for tests. -/// +/// /// It is designed to be usable from contracts (especiall test contracts), with a minimal footprint. /// For this reason, its inner structure is subject to change. #[derive(Clone, Copy, Debug, PartialEq, Eq)] diff --git a/framework/base/src/types/interaction/expr/sc_expr.rs b/framework/base/src/types/interaction/expr/sc_expr.rs index 0c43ccddcc..0a9579e379 100644 --- a/framework/base/src/types/interaction/expr/sc_expr.rs +++ b/framework/base/src/types/interaction/expr/sc_expr.rs @@ -9,12 +9,21 @@ const SC_PREFIX: &str = "sc:"; const VM_TYPE_LEN: usize = 2; const DEFAULT_VM_TYPE: &[u8] = &[5, 0]; -/// Encodes a dummy address, to be used for tests. +/// Encodes a dummy SC address, to be used for tests. /// /// It is designed to be usable from contracts (especiall test contracts), with a minimal footprint. /// For this reason, its inner structure is subject to change. #[derive(Clone, Copy, Debug, PartialEq, Eq)] -pub struct ScExpr<'a>(pub &'a str); + +pub struct ScExpr<'a> { + name: &'a str, +} + +impl<'a> ScExpr<'a> { + pub const fn new(name: &'a str) -> Self { + ScExpr { name } + } +} impl<'a, Env> AnnotatedValue> for ScExpr<'a> where @@ -22,7 +31,7 @@ where { fn annotation(&self, _env: &Env) -> ManagedBuffer { let mut result = ManagedBuffer::new_from_bytes(SC_PREFIX.as_bytes()); - result.append_bytes(self.0.as_bytes()); + result.append_bytes(self.name.as_bytes()); result } @@ -55,7 +64,7 @@ impl<'a, Env> TxToSpecified for ScExpr<'a> where Env: TxEnv {} impl<'a> ScExpr<'a> { pub const fn eval_to_array(&self) -> [u8; 32] { let result = *b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00______________________"; - let expr_bytes = self.0.as_bytes(); + let expr_bytes = self.name.as_bytes(); let mut len = expr_bytes.len(); if len > 22 { len = 22; @@ -77,7 +86,7 @@ impl<'a> ScExpr<'a> { #[cfg(feature = "alloc")] pub fn eval_to_expr(&self) -> alloc::string::String { - alloc::format!("{SC_PREFIX}{}", self.0) + alloc::format!("{SC_PREFIX}{}", self.name) } } @@ -86,7 +95,7 @@ pub mod tests { use super::*; fn assert_eq_eval(expr: &'static str, expected: &[u8; 32]) { - assert_eq!(&ScExpr(expr).eval_to_array(), expected); + assert_eq!(&ScExpr::new(expr).eval_to_array(), expected); } #[test] From c3d1a30a1637033a00b17e783d9692a5cd5a7caf Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 26 Apr 2024 02:43:47 +0300 Subject: [PATCH 401/461] expr refactor: mxsc --- .../examples/adder/tests/adder_blackbox_test.rs | 2 +- .../tests/crowdfunding_esdt_blackbox_test.rs | 2 +- .../multisig/tests/multisig_blackbox_test.rs | 6 +++--- .../tests/st_blackbox_chained_test.rs | 2 +- .../tests/st_blackbox_legacy_proxy_test.rs | 2 +- .../scenario-tester/tests/st_blackbox_test.rs | 2 +- framework/base/src/imports.rs | 2 +- framework/base/src/macros.rs | 6 +++--- .../base/src/types/interaction/expr/sc_expr.rs | 1 - framework/scenario/src/facade/expr/mxsc_expr.rs | 16 ++++++++++++---- 10 files changed, 24 insertions(+), 17 deletions(-) diff --git a/contracts/examples/adder/tests/adder_blackbox_test.rs b/contracts/examples/adder/tests/adder_blackbox_test.rs index d1a754bf87..b4afcff8c8 100644 --- a/contracts/examples/adder/tests/adder_blackbox_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_test.rs @@ -4,7 +4,7 @@ use adder::*; const_address_expr!(OWNER = "owner"); const_sc_expr!(SC_ADDER = "adder"); -const CODE_EXPR: MxscExpr = MxscExpr("output/adder.mxsc.json"); +const_mxsc_expr!(CODE_EXPR = "output/adder.mxsc.json"); fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); diff --git a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs index 79144f716a..22359032e7 100644 --- a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs +++ b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs @@ -8,7 +8,7 @@ const CF_TOKEN_ID_EXPR: &str = "str:CROWD-123456"; const_address_expr!(FIRST_USER_ADDRESS = "first-user"); const_address_expr!(OWNER_ADDRESS = "owner"); const_address_expr!(SECOND_USER_ADDRESS = "second-user"); -const CODE_EXPR: MxscExpr = MxscExpr("output/crowdfunding-esdt.mxsc.json"); +const_mxsc_expr!(CODE_EXPR = "output/crowdfunding-esdt.mxsc.json"); const_sc_expr!(SC_CROWDFUNDING_ESDT_EXPR = "crowdfunding-esdt"); fn world() -> ScenarioWorld { diff --git a/contracts/examples/multisig/tests/multisig_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_blackbox_test.rs index 79dde417ac..32457bcbec 100644 --- a/contracts/examples/multisig/tests/multisig_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_blackbox_test.rs @@ -7,10 +7,10 @@ use num_bigint::BigUint; const_sc_expr!(SC_ADDER_EXPR = "adder"); const_address_expr!(ADDER_OWNER_ADDRESS_EXPR = "adder-owner"); -const ADDER_CODE_EXPR: MxscExpr = MxscExpr("test-contracts/adder.mxsc.json"); +const_mxsc_expr!(ADDER_CODE_EXPR = "test-contracts/adder.mxsc.json"); const_address_expr!(BOARD_MEMBER_ADDRESS_EXPR = "board-member"); const_sc_expr!(SC_MULTISIG_EXPR = "multisig"); -const MULTISIG_CODE_EXPR: MxscExpr = MxscExpr("output/multisig.mxsc.json"); +const_mxsc_expr!(MULTISIG_CODE_EXPR = "output/multisig.mxsc.json"); const_address_expr!(OWNER_ADDRESS_EXPR = "owner"); const_address_expr!(PROPOSER_ADDRESS_EXPR = "proposer"); const PROPOSER_BALANCE_EXPR: &str = "100,000,000"; @@ -585,7 +585,7 @@ fn test_deploy_and_upgrade_from_source() { .run(); let factorial_address_expr: ScExpr = ScExpr::new("factorial"); - let factorial_path_expr: MxscExpr = MxscExpr("test-contracts/factorial.mxsc.json"); + let factorial_path_expr: MxscExpr = MxscExpr::new("test-contracts/factorial.mxsc.json"); let factorial_code = state .world diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs index d2fdfdae22..4587e96fd5 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs @@ -30,7 +30,7 @@ fn st_blackbox_chained() { tx.from(AddressExpr::new("owner")) .typed(scenario_tester_proxy::ScenarioTesterProxy) .init(5u32) - .code(MxscExpr("output/scenario-tester.mxsc.json")) + .code(MxscExpr::new("output/scenario-tester.mxsc.json")) .with_result(WithNewAddress::new(|new_address| { assert_eq!(new_address.to_address(), st_contract.to_address()); })) diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_legacy_proxy_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_legacy_proxy_test.rs index 1fa7d00839..9dda2aa2d1 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_legacy_proxy_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_legacy_proxy_test.rs @@ -6,7 +6,7 @@ use scenario_tester::*; const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; const_address_expr!(OWNER = "owner"); -const CODE_EXPR: MxscExpr = MxscExpr("output/adder.mxsc.json"); +const_mxsc_expr!(CODE_EXPR = "output/adder.mxsc.json"); fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs index f7b303944b..70e291d4a2 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs @@ -8,7 +8,7 @@ const SC_SCENARIO_TESTER_PATH_EXPR: &str = "mxsc:output/scenario-tester.mxsc.jso const_address_expr!(OWNER = "owner"); const_address_expr!(OTHER = "other"); const_sc_expr!(SC_SCENARIO_TESTER = "scenario-tester"); -const CODE_EXPR: MxscExpr = MxscExpr("output/scenario-tester.mxsc.json"); +const_mxsc_expr!(CODE_EXPR = "output/scenario-tester.mxsc.json"); fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); diff --git a/framework/base/src/imports.rs b/framework/base/src/imports.rs index 6bd58a66ac..ef16187edf 100644 --- a/framework/base/src/imports.rs +++ b/framework/base/src/imports.rs @@ -6,7 +6,7 @@ pub use crate::{ multi_types::*, CodecFrom, CodecFromSelf, CodecInto, DecodeError, Empty, IntoMultiValue, NestedDecode, NestedEncode, TopDecode, TopEncode, }, - const_address_expr, const_sc_expr, + const_address_expr, const_mxsc_expr, const_sc_expr, contract_base::{ContractBase, ProxyObjBase, ProxyObjNew}, err_msg, io::*, diff --git a/framework/base/src/macros.rs b/framework/base/src/macros.rs index d8f11d945f..8e20d6b459 100644 --- a/framework/base/src/macros.rs +++ b/framework/base/src/macros.rs @@ -226,8 +226,8 @@ macro_rules! const_sc_expr { } #[macro_export] -macro_rules! const_expr { - ($const_name:ident = address $name:expr) => { - const $const_name: ScExpr = ScExpr::new($name); +macro_rules! const_mxsc_expr { + ($const_name:ident = $name:expr) => { + const $const_name: MxscExpr = MxscExpr::new($name); }; } diff --git a/framework/base/src/types/interaction/expr/sc_expr.rs b/framework/base/src/types/interaction/expr/sc_expr.rs index 0a9579e379..c4d48351ee 100644 --- a/framework/base/src/types/interaction/expr/sc_expr.rs +++ b/framework/base/src/types/interaction/expr/sc_expr.rs @@ -14,7 +14,6 @@ const DEFAULT_VM_TYPE: &[u8] = &[5, 0]; /// It is designed to be usable from contracts (especiall test contracts), with a minimal footprint. /// For this reason, its inner structure is subject to change. #[derive(Clone, Copy, Debug, PartialEq, Eq)] - pub struct ScExpr<'a> { name: &'a str, } diff --git a/framework/scenario/src/facade/expr/mxsc_expr.rs b/framework/scenario/src/facade/expr/mxsc_expr.rs index 886fb91503..0f4be9f05d 100644 --- a/framework/scenario/src/facade/expr/mxsc_expr.rs +++ b/framework/scenario/src/facade/expr/mxsc_expr.rs @@ -10,15 +10,23 @@ use super::RegisterCodeSource; const MXSC_PREFIX: &str = "mxsc:"; #[derive(Clone, Copy, Debug, PartialEq, Eq)] -pub struct MxscExpr<'a>(pub &'a str); +pub struct MxscExpr<'a> { + path: &'a str, +} + +impl<'a> MxscExpr<'a> { + pub const fn new(path: &'a str) -> Self { + MxscExpr { path } + } +} impl<'a> MxscExpr<'a> { pub fn eval_to_expr(&self) -> String { - format!("{MXSC_PREFIX}{}", self.0) + format!("{MXSC_PREFIX}{}", self.path) } pub fn resolve_contents(&self, context: &InterpreterContext) -> Vec { - interpret_string(&format!("{MXSC_PREFIX}{}", self.0), context) + interpret_string(&format!("{MXSC_PREFIX}{}", self.path), context) } } @@ -49,7 +57,7 @@ pub mod tests { use crate::imports::MxscExpr; fn assert_eq_eval(expr: &'static str, expected: &str) { - assert_eq!(&MxscExpr(expr).eval_to_expr(), expected); + assert_eq!(&MxscExpr::new(expr).eval_to_expr(), expected); } #[test] From 6055b7cb2f566f1624e7f54202abba8ba754d261 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 26 Apr 2024 14:13:51 +0300 Subject: [PATCH 402/461] expr refactor: rename, reverted macros --- .../tests/price_aggregator_blackbox_test.rs | 4 +- .../tests/price_aggregator_stress_blackbox.rs | 2 +- .../adder/tests/adder_blackbox_test.rs | 6 +-- .../tests/crowdfunding_esdt_blackbox_test.rs | 18 +++---- .../multisig/tests/multisig_blackbox_test.rs | 48 +++++++++---------- .../rewards_distribution_integration_test.rs | 15 +++--- .../tests/pmf_blackbox_test.rs | 4 +- .../tests/st_blackbox_chained_test.rs | 10 ++-- .../tests/st_blackbox_legacy_proxy_test.rs | 4 +- .../scenario-tester/tests/st_blackbox_test.rs | 8 ++-- framework/base/src/imports.rs | 1 - framework/base/src/macros.rs | 21 -------- framework/base/src/types/interaction/expr.rs | 8 ++-- .../expr/{address_expr.rs => test_address.rs} | 18 +++---- .../expr/{sc_expr.rs => test_sc_address.rs} | 22 ++++----- framework/scenario/src/facade/expr.rs | 8 ++-- .../expr/{file_expr.rs => file_path.rs} | 10 ++-- .../expr/{mxsc_expr.rs => mxsc_path.rs} | 18 +++---- .../src/scenario/model/value/address_key.rs | 10 ++-- .../src/scenario/model/value/address_value.rs | 10 ++-- 20 files changed, 112 insertions(+), 133 deletions(-) rename framework/base/src/types/interaction/expr/{address_expr.rs => test_address.rs} (85%) rename framework/base/src/types/interaction/expr/{sc_expr.rs => test_sc_address.rs} (84%) rename framework/scenario/src/facade/expr/{file_expr.rs => file_path.rs} (85%) rename framework/scenario/src/facade/expr/{mxsc_expr.rs => mxsc_path.rs} (81%) diff --git a/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs b/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs index e65bf545ea..c1d8056769 100644 --- a/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs +++ b/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs @@ -19,8 +19,8 @@ const STAKE_AMOUNT: u64 = 20; const SUBMISSION_COUNT: usize = 3; const USD_TICKER: &[u8] = b"USDC"; -const_sc_expr!(PRICE_AGGREGATOR = "price-aggregator"); -const_address_expr!(OWNER = "owner"); +const PRICE_AGGREGATOR: TestScAddress = TestScAddress::new("price-aggregator"); +const OWNER: TestAddress = TestAddress::new("owner"); fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); diff --git a/contracts/core/price-aggregator/tests/price_aggregator_stress_blackbox.rs b/contracts/core/price-aggregator/tests/price_aggregator_stress_blackbox.rs index 6d47282622..46ddf296d3 100644 --- a/contracts/core/price-aggregator/tests/price_aggregator_stress_blackbox.rs +++ b/contracts/core/price-aggregator/tests/price_aggregator_stress_blackbox.rs @@ -9,7 +9,7 @@ const DECIMALS: u8 = 0; const EGLD_TICKER: &[u8] = b"EGLD"; const NR_ORACLES: usize = 50; const OWNER_ADDRESS_EXPR: &str = "address:owner"; -const_address_expr!(OWNER = "owner"); +const OWNER: TestAddress = TestAddress::new("owner"); const PRICE_AGGREGATOR_ADDRESS_EXPR: &str = "sc:price-aggregator"; const PRICE_AGGREGATOR_PATH_EXPR: &str = "mxsc:../output/multiversx-price-aggregator-sc.mxsc.json"; const SLASH_AMOUNT: u64 = 10; diff --git a/contracts/examples/adder/tests/adder_blackbox_test.rs b/contracts/examples/adder/tests/adder_blackbox_test.rs index b4afcff8c8..59b47ba405 100644 --- a/contracts/examples/adder/tests/adder_blackbox_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_test.rs @@ -2,9 +2,9 @@ use multiversx_sc_scenario::imports::*; use adder::*; -const_address_expr!(OWNER = "owner"); -const_sc_expr!(SC_ADDER = "adder"); -const_mxsc_expr!(CODE_EXPR = "output/adder.mxsc.json"); +const OWNER: TestAddress = TestAddress::new("owner"); +const SC_ADDER: TestScAddress = TestScAddress::new("adder"); +const CODE_EXPR: MxscPath = MxscPath::new("output/adder.mxsc.json"); fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); diff --git a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs index 22359032e7..d44541751d 100644 --- a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs +++ b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs @@ -5,11 +5,11 @@ use multiversx_sc_scenario::imports::*; const CF_DEADLINE: u64 = 7 * 24 * 60 * 60; // 1 week in seconds const CF_TOKEN_ID: &[u8] = b"CROWD-123456"; const CF_TOKEN_ID_EXPR: &str = "str:CROWD-123456"; -const_address_expr!(FIRST_USER_ADDRESS = "first-user"); -const_address_expr!(OWNER_ADDRESS = "owner"); -const_address_expr!(SECOND_USER_ADDRESS = "second-user"); -const_mxsc_expr!(CODE_EXPR = "output/crowdfunding-esdt.mxsc.json"); -const_sc_expr!(SC_CROWDFUNDING_ESDT_EXPR = "crowdfunding-esdt"); +const FIRST_USER_ADDRESS: TestAddress = TestAddress::new("first-user"); +const OWNER_ADDRESS: TestAddress = TestAddress::new("owner"); +const SECOND_USER_ADDRESS: TestAddress = TestAddress::new("second-user"); +const CODE_EXPR: MxscPath = MxscPath::new("output/crowdfunding-esdt.mxsc.json"); +const SC_CROWDFUNDING_ESDT_EXPR: TestScAddress = TestScAddress::new("crowdfunding-esdt"); fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); @@ -56,7 +56,7 @@ impl CrowdfundingESDTTestState { .run(); } - fn fund(&mut self, address: AddressExpr, amount: u64) { + fn fund(&mut self, address: TestAddress, amount: u64) { self.world .tx() .from(address) @@ -71,7 +71,7 @@ impl CrowdfundingESDTTestState { .run(); } - fn check_deposit(&mut self, donor: AddressExpr, amount: u64) { + fn check_deposit(&mut self, donor: TestAddress, amount: u64) { self.world .query() .to(SC_CROWDFUNDING_ESDT_EXPR) @@ -91,7 +91,7 @@ impl CrowdfundingESDTTestState { .run(); } - fn claim(&mut self, address: AddressExpr) { + fn claim(&mut self, address: TestAddress) { self.world .tx() .from(address) @@ -101,7 +101,7 @@ impl CrowdfundingESDTTestState { .run(); } - fn check_esdt_balance(&mut self, address: AddressExpr, balance_expr: &str) { + fn check_esdt_balance(&mut self, address: TestAddress, balance_expr: &str) { self.world .check_account(address) .esdt_balance(CF_TOKEN_ID_EXPR, balance_expr); diff --git a/contracts/examples/multisig/tests/multisig_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_blackbox_test.rs index 32457bcbec..05d8171bff 100644 --- a/contracts/examples/multisig/tests/multisig_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_blackbox_test.rs @@ -5,14 +5,14 @@ use adder::adder_proxy; use multisig::multisig_proxy; use num_bigint::BigUint; -const_sc_expr!(SC_ADDER_EXPR = "adder"); -const_address_expr!(ADDER_OWNER_ADDRESS_EXPR = "adder-owner"); -const_mxsc_expr!(ADDER_CODE_EXPR = "test-contracts/adder.mxsc.json"); -const_address_expr!(BOARD_MEMBER_ADDRESS_EXPR = "board-member"); -const_sc_expr!(SC_MULTISIG_EXPR = "multisig"); -const_mxsc_expr!(MULTISIG_CODE_EXPR = "output/multisig.mxsc.json"); -const_address_expr!(OWNER_ADDRESS_EXPR = "owner"); -const_address_expr!(PROPOSER_ADDRESS_EXPR = "proposer"); +const SC_ADDER_EXPR: TestScAddress = TestScAddress::new("adder"); +const ADDER_OWNER_ADDRESS_EXPR: TestAddress = TestAddress::new("adder-owner"); +const ADDER_CODE_EXPR: MxscPath = MxscPath::new("test-contracts/adder.mxsc.json"); +const BOARD_MEMBER_ADDRESS_EXPR: TestAddress = TestAddress::new("board-member"); +const SC_MULTISIG_EXPR: TestScAddress = TestScAddress::new("multisig"); +const MULTISIG_CODE_EXPR: MxscPath = MxscPath::new("output/multisig.mxsc.json"); +const OWNER_ADDRESS_EXPR: TestAddress = TestAddress::new("owner"); +const PROPOSER_ADDRESS_EXPR: TestAddress = TestAddress::new("proposer"); const PROPOSER_BALANCE_EXPR: &str = "100,000,000"; const QUORUM_SIZE: usize = 1; @@ -88,7 +88,7 @@ impl MultisigTestState { .run(); } - fn propose_add_board_member(&mut self, board_member_address: AddressExpr) -> usize { + fn propose_add_board_member(&mut self, board_member_address: TestAddress) -> usize { self.world .tx() .from(PROPOSER_ADDRESS_EXPR) @@ -99,7 +99,7 @@ impl MultisigTestState { .run() } - fn propose_add_proposer(&mut self, proposer_address: AddressExpr) -> usize { + fn propose_add_proposer(&mut self, proposer_address: TestAddress) -> usize { self.world .tx() .from(PROPOSER_ADDRESS_EXPR) @@ -123,7 +123,7 @@ impl MultisigTestState { fn propose_transfer_execute( &mut self, - to: ScExpr, + to: TestScAddress, egld_amount: u64, contract_call: FunctionCall, ) -> usize { @@ -139,7 +139,7 @@ impl MultisigTestState { fn propose_async_call( &mut self, - to: ScExpr, + to: TestScAddress, egld_amount: u64, contract_call: FunctionCall, ) -> usize { @@ -153,7 +153,7 @@ impl MultisigTestState { .run() } - fn propose_remove_user(&mut self, user_address: AddressExpr) -> usize { + fn propose_remove_user(&mut self, user_address: TestAddress) -> usize { self.world .tx() .from(PROPOSER_ADDRESS_EXPR) @@ -167,7 +167,7 @@ impl MultisigTestState { fn propose_sc_deploy_from_source( &mut self, amount: u64, - source: ScExpr, + source: TestScAddress, code_metadata: CodeMetadata, arguments: MultiValueVec>, ) -> usize { @@ -183,9 +183,9 @@ impl MultisigTestState { fn propose_sc_upgrade_from_source( &mut self, - sc_address: ScExpr, + sc_address: TestScAddress, amount: u64, - source: ScExpr, + source: TestScAddress, code_metadata: CodeMetadata, arguments: MultiValueVec>, ) -> usize { @@ -238,7 +238,7 @@ impl MultisigTestState { fn expect_user_role( &mut self, - user: AddressExpr, + user: TestAddress, expected_user_role: multisig_proxy::UserRole, ) { self.world @@ -256,7 +256,7 @@ fn test_add_board_member() { let mut state = MultisigTestState::new(); state.deploy_multisig_contract(); - let new_board_member_expr: AddressExpr = AddressExpr::new("new-board-member"); + let new_board_member_expr: TestAddress = TestAddress::new("new-board-member"); state.world.account(new_board_member_expr).nonce(1); @@ -287,7 +287,7 @@ fn test_add_proposer() { let mut state = MultisigTestState::new(); state.deploy_multisig_contract(); - let new_proposer_address_expr = AddressExpr::new("new-proposer"); + let new_proposer_address_expr = TestAddress::new("new-proposer"); state.world.account(new_proposer_address_expr).nonce(1); @@ -404,7 +404,7 @@ fn test_change_quorum() { .run(); // add another board member - let new_board_member_address_expr = AddressExpr::new("new-board-member"); + let new_board_member_address_expr = TestAddress::new("new-board-member"); state.world.account(new_board_member_address_expr).nonce(1); @@ -423,7 +423,7 @@ fn test_transfer_execute_to_user() { let mut state = MultisigTestState::new(); state.deploy_multisig_contract(); - let new_user_address_expr = AddressExpr::new("new-user"); + let new_user_address_expr = TestAddress::new("new-user"); state.world.account(new_user_address_expr).nonce(1); let amount: u64 = 100; @@ -538,7 +538,7 @@ fn test_deploy_and_upgrade_from_source() { let mut state = MultisigTestState::new(); state.deploy_multisig_contract().deploy_adder_contract(); - let new_adder_address_expr = ScExpr::new("new-adder"); + let new_adder_address_expr = TestScAddress::new("new-adder"); state .world @@ -584,8 +584,8 @@ fn test_deploy_and_upgrade_from_source() { .returns(ExpectValue(BigUint::from(10u64))) .run(); - let factorial_address_expr: ScExpr = ScExpr::new("factorial"); - let factorial_path_expr: MxscExpr = MxscExpr::new("test-contracts/factorial.mxsc.json"); + let factorial_address_expr: TestScAddress = TestScAddress::new("factorial"); + let factorial_path_expr: MxscPath = MxscPath::new("test-contracts/factorial.mxsc.json"); let factorial_code = state .world diff --git a/contracts/examples/rewards-distribution/tests/rewards_distribution_integration_test.rs b/contracts/examples/rewards-distribution/tests/rewards_distribution_integration_test.rs index a375614dab..4843386494 100644 --- a/contracts/examples/rewards-distribution/tests/rewards_distribution_integration_test.rs +++ b/contracts/examples/rewards-distribution/tests/rewards_distribution_integration_test.rs @@ -12,13 +12,14 @@ use rewards_distribution::{ const NFT_TOKEN_ID: &[u8] = b"NFT-123456"; const NFT_TOKEN_ID_EXPR: &str = "str:NFT-123456"; -const ALICE_ADDRESS_EXPR: AddressExpr = AddressExpr("alice"); -const OWNER_ADDRESS_EXPR: AddressExpr = AddressExpr("owner"); -const REWARDS_DISTRIBUTION_ADDRESS_EXPR: ScExpr = ScExpr("rewards-distribution"); -const REWARDS_DISTRIBUTION_PATH_EXPR: MxscExpr = MxscExpr("output/rewards-distribution.mxsc.json"); -const SEED_NFT_MINTER_ADDRESS_EXPR: ScExpr = ScExpr("seed-nft-minter"); -const SEED_NFT_MINTER_PATH_EXPR: MxscExpr = - MxscExpr("../seed-nft-minter/output/seed-nft-minter.mxsc.json"); +const ALICE_ADDRESS_EXPR: TestAddress = TestAddress::new("alice"); +const OWNER_ADDRESS_EXPR: TestAddress = TestAddress::new("owner"); +const REWARDS_DISTRIBUTION_ADDRESS_EXPR: TestScAddress = TestScAddress::new("rewards-distribution"); +const REWARDS_DISTRIBUTION_PATH_EXPR: MxscPath = + MxscPath::new("output/rewards-distribution.mxsc.json"); +const SEED_NFT_MINTER_ADDRESS_EXPR: TestScAddress = TestScAddress::new("seed-nft-minter"); +const SEED_NFT_MINTER_PATH_EXPR: MxscPath = + MxscPath::new("../seed-nft-minter/output/seed-nft-minter.mxsc.json"); fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); diff --git a/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs b/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs index f18abeb9e2..550679fff4 100644 --- a/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs +++ b/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs @@ -2,8 +2,8 @@ mod pmf_proxy; use multiversx_sc_scenario::imports::*; -const_address_expr!(OWNER = "owner"); -const_sc_expr!(SC_PMF = "pmf"); +const OWNER: TestAddress = TestAddress::new("owner"); +const SC_PMF: TestScAddress = TestScAddress::new("pmf"); const CODE_EXPR: &str = "mxsc:output/panic-message-features.mxsc.json"; fn world() -> ScenarioWorld { diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs index 4587e96fd5..5183d72923 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs @@ -27,16 +27,16 @@ fn st_blackbox_chained() { .new_address(owner_address, 1, "sc:adder"), ) .chain_deploy(|tx| { - tx.from(AddressExpr::new("owner")) + tx.from(TestAddress::new("owner")) .typed(scenario_tester_proxy::ScenarioTesterProxy) .init(5u32) - .code(MxscExpr::new("output/scenario-tester.mxsc.json")) + .code(MxscPath::new("output/scenario-tester.mxsc.json")) .with_result(WithNewAddress::new(|new_address| { assert_eq!(new_address.to_address(), st_contract.to_address()); })) }) .chain_query(|tx| { - tx.to(ScExpr::new("adder")) + tx.to(TestScAddress::new("adder")) .typed(scenario_tester_proxy::ScenarioTesterProxy) .sum() .with_result(WithResultConv::new(|value: BigUint| { @@ -44,8 +44,8 @@ fn st_blackbox_chained() { })) }) .chain_call(|tx| { - tx.from(AddressExpr::new("owner")) - .to(ScExpr::new("adder")) + tx.from(TestAddress::new("owner")) + .to(TestScAddress::new("adder")) .typed(scenario_tester_proxy::ScenarioTesterProxy) .add(3u32) .with_result(WithRawTxResponse(|response| { diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_legacy_proxy_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_legacy_proxy_test.rs index 9dda2aa2d1..7dfd815d55 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_legacy_proxy_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_legacy_proxy_test.rs @@ -5,8 +5,8 @@ use scenario_tester::*; const ADDER_PATH_EXPR: &str = "mxsc:output/adder.mxsc.json"; -const_address_expr!(OWNER = "owner"); -const_mxsc_expr!(CODE_EXPR = "output/adder.mxsc.json"); +const OWNER: TestAddress = TestAddress::new("owner"); +const CODE_EXPR: MxscPath = MxscPath::new("output/adder.mxsc.json"); fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs index 70e291d4a2..203868331f 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs @@ -5,10 +5,10 @@ use scenario_tester::*; const SC_SCENARIO_TESTER_PATH_EXPR: &str = "mxsc:output/scenario-tester.mxsc.json"; -const_address_expr!(OWNER = "owner"); -const_address_expr!(OTHER = "other"); -const_sc_expr!(SC_SCENARIO_TESTER = "scenario-tester"); -const_mxsc_expr!(CODE_EXPR = "output/scenario-tester.mxsc.json"); +const OWNER: TestAddress = TestAddress::new("owner"); +const OTHER: TestAddress = TestAddress::new("other"); +const SC_SCENARIO_TESTER: TestScAddress = TestScAddress::new("scenario-tester"); +const CODE_EXPR: MxscPath = MxscPath::new("output/scenario-tester.mxsc.json"); fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); diff --git a/framework/base/src/imports.rs b/framework/base/src/imports.rs index ef16187edf..016aa7bb4e 100644 --- a/framework/base/src/imports.rs +++ b/framework/base/src/imports.rs @@ -6,7 +6,6 @@ pub use crate::{ multi_types::*, CodecFrom, CodecFromSelf, CodecInto, DecodeError, Empty, IntoMultiValue, NestedDecode, NestedEncode, TopDecode, TopEncode, }, - const_address_expr, const_mxsc_expr, const_sc_expr, contract_base::{ContractBase, ProxyObjBase, ProxyObjNew}, err_msg, io::*, diff --git a/framework/base/src/macros.rs b/framework/base/src/macros.rs index 8e20d6b459..55d023ad79 100644 --- a/framework/base/src/macros.rs +++ b/framework/base/src/macros.rs @@ -210,24 +210,3 @@ macro_rules! extract_address { .unwrap_or_sc_panic(multiversx_sc::err_msg::RECIPIENT_ADDRESS_NOT_SET) }}; } - -#[macro_export] -macro_rules! const_address_expr { - ($const_name:ident = $name:expr) => { - const $const_name: AddressExpr = AddressExpr::new($name); - }; -} - -#[macro_export] -macro_rules! const_sc_expr { - ($const_name:ident = $name:expr) => { - const $const_name: ScExpr = ScExpr::new($name); - }; -} - -#[macro_export] -macro_rules! const_mxsc_expr { - ($const_name:ident = $name:expr) => { - const $const_name: MxscExpr = MxscExpr::new($name); - }; -} diff --git a/framework/base/src/types/interaction/expr.rs b/framework/base/src/types/interaction/expr.rs index c43da390f9..48939cbf00 100644 --- a/framework/base/src/types/interaction/expr.rs +++ b/framework/base/src/types/interaction/expr.rs @@ -1,5 +1,5 @@ -mod address_expr; -mod sc_expr; +mod test_address; +mod test_sc_address; -pub use address_expr::AddressExpr; -pub use sc_expr::ScExpr; +pub use test_address::TestAddress; +pub use test_sc_address::TestScAddress; diff --git a/framework/base/src/types/interaction/expr/address_expr.rs b/framework/base/src/types/interaction/expr/test_address.rs similarity index 85% rename from framework/base/src/types/interaction/expr/address_expr.rs rename to framework/base/src/types/interaction/expr/test_address.rs index 5310809d2c..0d3278c67c 100644 --- a/framework/base/src/types/interaction/expr/address_expr.rs +++ b/framework/base/src/types/interaction/expr/test_address.rs @@ -12,13 +12,13 @@ const ADDRESS_PREFIX: &str = "address:"; /// It is designed to be usable from contracts (especiall test contracts), with a minimal footprint. /// For this reason, its inner structure is subject to change. #[derive(Clone, Copy, Debug, PartialEq, Eq)] -pub struct AddressExpr<'a> { +pub struct TestAddress<'a> { name: &'a str, } -impl<'a> AddressExpr<'a> { +impl<'a> TestAddress<'a> { pub const fn new(name: &'a str) -> Self { - AddressExpr { name } + TestAddress { name } } pub const fn eval_to_array(&self) -> [u8; 32] { @@ -40,7 +40,7 @@ impl<'a> AddressExpr<'a> { } } -impl<'a, Env> AnnotatedValue> for AddressExpr<'a> +impl<'a, Env> AnnotatedValue> for TestAddress<'a> where Env: TxEnv, { @@ -56,7 +56,7 @@ where } } -impl<'a, Env> TxFrom for AddressExpr<'a> +impl<'a, Env> TxFrom for TestAddress<'a> where Env: TxEnv, { @@ -65,16 +65,16 @@ where expr.into() } } -impl<'a, Env> TxFromSpecified for AddressExpr<'a> where Env: TxEnv {} -impl<'a, Env> TxTo for AddressExpr<'a> where Env: TxEnv {} -impl<'a, Env> TxToSpecified for AddressExpr<'a> where Env: TxEnv {} +impl<'a, Env> TxFromSpecified for TestAddress<'a> where Env: TxEnv {} +impl<'a, Env> TxTo for TestAddress<'a> where Env: TxEnv {} +impl<'a, Env> TxToSpecified for TestAddress<'a> where Env: TxEnv {} #[cfg(test)] pub mod tests { use super::*; fn assert_eq_eval(expr: &'static str, expected: &[u8; 32]) { - assert_eq!(&AddressExpr::new(expr).eval_to_array(), expected); + assert_eq!(&TestAddress::new(expr).eval_to_array(), expected); } #[test] diff --git a/framework/base/src/types/interaction/expr/sc_expr.rs b/framework/base/src/types/interaction/expr/test_sc_address.rs similarity index 84% rename from framework/base/src/types/interaction/expr/sc_expr.rs rename to framework/base/src/types/interaction/expr/test_sc_address.rs index c4d48351ee..4c93024420 100644 --- a/framework/base/src/types/interaction/expr/sc_expr.rs +++ b/framework/base/src/types/interaction/expr/test_sc_address.rs @@ -14,17 +14,17 @@ const DEFAULT_VM_TYPE: &[u8] = &[5, 0]; /// It is designed to be usable from contracts (especiall test contracts), with a minimal footprint. /// For this reason, its inner structure is subject to change. #[derive(Clone, Copy, Debug, PartialEq, Eq)] -pub struct ScExpr<'a> { +pub struct TestScAddress<'a> { name: &'a str, } -impl<'a> ScExpr<'a> { +impl<'a> TestScAddress<'a> { pub const fn new(name: &'a str) -> Self { - ScExpr { name } + TestScAddress { name } } } -impl<'a, Env> AnnotatedValue> for ScExpr<'a> +impl<'a, Env> AnnotatedValue> for TestScAddress<'a> where Env: TxEnv, { @@ -40,14 +40,14 @@ where } } -impl<'a> ScExpr<'a> { +impl<'a> TestScAddress<'a> { pub fn to_address(&self) -> Address { let expr: [u8; 32] = self.eval_to_array(); expr.into() } } -impl<'a, Env> TxFrom for ScExpr<'a> +impl<'a, Env> TxFrom for TestScAddress<'a> where Env: TxEnv, { @@ -56,11 +56,11 @@ where expr.into() } } -impl<'a, Env> TxFromSpecified for ScExpr<'a> where Env: TxEnv {} -impl<'a, Env> TxTo for ScExpr<'a> where Env: TxEnv {} -impl<'a, Env> TxToSpecified for ScExpr<'a> where Env: TxEnv {} +impl<'a, Env> TxFromSpecified for TestScAddress<'a> where Env: TxEnv {} +impl<'a, Env> TxTo for TestScAddress<'a> where Env: TxEnv {} +impl<'a, Env> TxToSpecified for TestScAddress<'a> where Env: TxEnv {} -impl<'a> ScExpr<'a> { +impl<'a> TestScAddress<'a> { pub const fn eval_to_array(&self) -> [u8; 32] { let result = *b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00______________________"; let expr_bytes = self.name.as_bytes(); @@ -94,7 +94,7 @@ pub mod tests { use super::*; fn assert_eq_eval(expr: &'static str, expected: &[u8; 32]) { - assert_eq!(&ScExpr::new(expr).eval_to_array(), expected); + assert_eq!(&TestScAddress::new(expr).eval_to_array(), expected); } #[test] diff --git a/framework/scenario/src/facade/expr.rs b/framework/scenario/src/facade/expr.rs index de36abef97..2ca60a5192 100644 --- a/framework/scenario/src/facade/expr.rs +++ b/framework/scenario/src/facade/expr.rs @@ -1,11 +1,11 @@ mod bech32_address; -mod file_expr; -mod mxsc_expr; +mod file_path; +mod mxsc_path; mod num_expr; mod register_code_source; pub use bech32_address::Bech32Address; -pub use file_expr::FileExpr; -pub use mxsc_expr::MxscExpr; +pub use file_path::FilePath; +pub use mxsc_path::MxscPath; pub use num_expr::NumExpr; pub use register_code_source::RegisterCodeSource; diff --git a/framework/scenario/src/facade/expr/file_expr.rs b/framework/scenario/src/facade/expr/file_path.rs similarity index 85% rename from framework/scenario/src/facade/expr/file_expr.rs rename to framework/scenario/src/facade/expr/file_path.rs index 4430046a7c..8d779a6fd1 100644 --- a/framework/scenario/src/facade/expr/file_expr.rs +++ b/framework/scenario/src/facade/expr/file_path.rs @@ -10,9 +10,9 @@ use super::RegisterCodeSource; const FILE_PREFIX: &str = "file:"; #[derive(Clone, Copy, Debug, PartialEq, Eq)] -pub struct FileExpr<'a>(pub &'a str); +pub struct FilePath<'a>(pub &'a str); -impl<'a> FileExpr<'a> { +impl<'a> FilePath<'a> { pub fn eval_to_expr(&self) -> String { format!("{FILE_PREFIX}{}", self.0) } @@ -22,7 +22,7 @@ impl<'a> FileExpr<'a> { } } -impl<'a, Env> AnnotatedValue> for FileExpr<'a> +impl<'a, Env> AnnotatedValue> for FilePath<'a> where Env: ScenarioTxEnv, { @@ -36,9 +36,9 @@ where } } -impl<'a, Env> TxCodeValue for FileExpr<'a> where Env: ScenarioTxEnv {} +impl<'a, Env> TxCodeValue for FilePath<'a> where Env: ScenarioTxEnv {} -impl<'a> RegisterCodeSource for FileExpr<'a> { +impl<'a> RegisterCodeSource for FilePath<'a> { fn into_code(self, env_data: ScenarioTxEnvData) -> Vec { self.resolve_contents(&env_data.interpreter_context()) } diff --git a/framework/scenario/src/facade/expr/mxsc_expr.rs b/framework/scenario/src/facade/expr/mxsc_path.rs similarity index 81% rename from framework/scenario/src/facade/expr/mxsc_expr.rs rename to framework/scenario/src/facade/expr/mxsc_path.rs index 0f4be9f05d..465eb5f097 100644 --- a/framework/scenario/src/facade/expr/mxsc_expr.rs +++ b/framework/scenario/src/facade/expr/mxsc_path.rs @@ -10,17 +10,17 @@ use super::RegisterCodeSource; const MXSC_PREFIX: &str = "mxsc:"; #[derive(Clone, Copy, Debug, PartialEq, Eq)] -pub struct MxscExpr<'a> { +pub struct MxscPath<'a> { path: &'a str, } -impl<'a> MxscExpr<'a> { +impl<'a> MxscPath<'a> { pub const fn new(path: &'a str) -> Self { - MxscExpr { path } + MxscPath { path } } } -impl<'a> MxscExpr<'a> { +impl<'a> MxscPath<'a> { pub fn eval_to_expr(&self) -> String { format!("{MXSC_PREFIX}{}", self.path) } @@ -30,7 +30,7 @@ impl<'a> MxscExpr<'a> { } } -impl<'a, Env> AnnotatedValue> for MxscExpr<'a> +impl<'a, Env> AnnotatedValue> for MxscPath<'a> where Env: ScenarioTxEnv, { @@ -44,9 +44,9 @@ where } } -impl<'a, Env> TxCodeValue for MxscExpr<'a> where Env: ScenarioTxEnv {} +impl<'a, Env> TxCodeValue for MxscPath<'a> where Env: ScenarioTxEnv {} -impl<'a> RegisterCodeSource for MxscExpr<'a> { +impl<'a> RegisterCodeSource for MxscPath<'a> { fn into_code(self, env_data: ScenarioTxEnvData) -> Vec { self.resolve_contents(&env_data.interpreter_context()) } @@ -54,10 +54,10 @@ impl<'a> RegisterCodeSource for MxscExpr<'a> { #[cfg(test)] pub mod tests { - use crate::imports::MxscExpr; + use crate::imports::MxscPath; fn assert_eq_eval(expr: &'static str, expected: &str) { - assert_eq!(&MxscExpr::new(expr).eval_to_expr(), expected); + assert_eq!(&MxscPath::new(expr).eval_to_expr(), expected); } #[test] diff --git a/framework/scenario/src/scenario/model/value/address_key.rs b/framework/scenario/src/scenario/model/value/address_key.rs index ddb6169a66..b5308e87a1 100644 --- a/framework/scenario/src/scenario/model/value/address_key.rs +++ b/framework/scenario/src/scenario/model/value/address_key.rs @@ -1,4 +1,4 @@ -use multiversx_sc::types::{Address, AddressExpr, ScExpr}; +use multiversx_sc::types::{Address, TestAddress, TestScAddress}; use super::{value_from_slice, AddressValue}; use crate::{ @@ -135,8 +135,8 @@ impl From for AddressKey { } } -impl From> for AddressKey { - fn from(from: AddressExpr) -> Self { +impl From> for AddressKey { + fn from(from: TestAddress) -> Self { AddressKey { value: from.eval_to_array().into(), original: from.eval_to_expr(), @@ -144,8 +144,8 @@ impl From> for AddressKey { } } -impl From> for AddressKey { - fn from(from: ScExpr) -> Self { +impl From> for AddressKey { + fn from(from: TestScAddress) -> Self { AddressKey { value: from.eval_to_array().into(), original: from.eval_to_expr(), diff --git a/framework/scenario/src/scenario/model/value/address_value.rs b/framework/scenario/src/scenario/model/value/address_value.rs index 57499a8463..831574c26b 100644 --- a/framework/scenario/src/scenario/model/value/address_value.rs +++ b/framework/scenario/src/scenario/model/value/address_value.rs @@ -4,7 +4,7 @@ use multiversx_sc::{ }; use std::fmt; -use crate::multiversx_sc::types::{Address, AddressExpr, ScExpr}; +use crate::multiversx_sc::types::{Address, TestAddress, TestScAddress}; use crate::{ facade::expr::Bech32Address, @@ -138,8 +138,8 @@ impl From<&str> for AddressValue { } } -impl From> for AddressValue { - fn from(from: AddressExpr) -> Self { +impl From> for AddressValue { + fn from(from: TestAddress) -> Self { AddressValue { value: from.eval_to_array().into(), original: ValueSubTree::Str(from.eval_to_expr()), @@ -147,8 +147,8 @@ impl From> for AddressValue { } } -impl From> for AddressValue { - fn from(from: ScExpr) -> Self { +impl From> for AddressValue { + fn from(from: TestScAddress) -> Self { AddressValue { value: from.eval_to_array().into(), original: ValueSubTree::Str(from.eval_to_expr()), From b47133cf476dbcd858b35cdfec19db0acaa65af1 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 26 Apr 2024 14:22:23 +0300 Subject: [PATCH 403/461] expr refactor: rename --- .../tests/price_aggregator_blackbox_test.rs | 2 +- .../adder/tests/adder_blackbox_test.rs | 2 +- .../tests/crowdfunding_esdt_blackbox_test.rs | 2 +- .../multisig/tests/multisig_blackbox_test.rs | 18 +++++++-------- .../rewards_distribution_integration_test.rs | 4 ++-- .../tests/pmf_blackbox_test.rs | 2 +- .../tests/st_blackbox_chained_test.rs | 4 ++-- .../scenario-tester/tests/st_blackbox_test.rs | 2 +- framework/base/src/types/interaction/expr.rs | 2 +- .../types/interaction/expr/test_sc_address.rs | 22 +++++++++---------- .../src/scenario/model/value/address_key.rs | 6 ++--- .../src/scenario/model/value/address_value.rs | 6 ++--- 12 files changed, 36 insertions(+), 36 deletions(-) diff --git a/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs b/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs index c1d8056769..00a997399a 100644 --- a/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs +++ b/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs @@ -19,7 +19,7 @@ const STAKE_AMOUNT: u64 = 20; const SUBMISSION_COUNT: usize = 3; const USD_TICKER: &[u8] = b"USDC"; -const PRICE_AGGREGATOR: TestScAddress = TestScAddress::new("price-aggregator"); +const PRICE_AGGREGATOR: TestSCAddress = TestSCAddress::new("price-aggregator"); const OWNER: TestAddress = TestAddress::new("owner"); fn world() -> ScenarioWorld { diff --git a/contracts/examples/adder/tests/adder_blackbox_test.rs b/contracts/examples/adder/tests/adder_blackbox_test.rs index 59b47ba405..61daec8c25 100644 --- a/contracts/examples/adder/tests/adder_blackbox_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_test.rs @@ -3,7 +3,7 @@ use multiversx_sc_scenario::imports::*; use adder::*; const OWNER: TestAddress = TestAddress::new("owner"); -const SC_ADDER: TestScAddress = TestScAddress::new("adder"); +const SC_ADDER: TestSCAddress = TestSCAddress::new("adder"); const CODE_EXPR: MxscPath = MxscPath::new("output/adder.mxsc.json"); fn world() -> ScenarioWorld { diff --git a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs index d44541751d..0109329c4c 100644 --- a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs +++ b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs @@ -9,7 +9,7 @@ const FIRST_USER_ADDRESS: TestAddress = TestAddress::new("first-user"); const OWNER_ADDRESS: TestAddress = TestAddress::new("owner"); const SECOND_USER_ADDRESS: TestAddress = TestAddress::new("second-user"); const CODE_EXPR: MxscPath = MxscPath::new("output/crowdfunding-esdt.mxsc.json"); -const SC_CROWDFUNDING_ESDT_EXPR: TestScAddress = TestScAddress::new("crowdfunding-esdt"); +const SC_CROWDFUNDING_ESDT_EXPR: TestSCAddress = TestSCAddress::new("crowdfunding-esdt"); fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); diff --git a/contracts/examples/multisig/tests/multisig_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_blackbox_test.rs index 05d8171bff..8d1e81f6cf 100644 --- a/contracts/examples/multisig/tests/multisig_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_blackbox_test.rs @@ -5,11 +5,11 @@ use adder::adder_proxy; use multisig::multisig_proxy; use num_bigint::BigUint; -const SC_ADDER_EXPR: TestScAddress = TestScAddress::new("adder"); +const SC_ADDER_EXPR: TestSCAddress = TestSCAddress::new("adder"); const ADDER_OWNER_ADDRESS_EXPR: TestAddress = TestAddress::new("adder-owner"); const ADDER_CODE_EXPR: MxscPath = MxscPath::new("test-contracts/adder.mxsc.json"); const BOARD_MEMBER_ADDRESS_EXPR: TestAddress = TestAddress::new("board-member"); -const SC_MULTISIG_EXPR: TestScAddress = TestScAddress::new("multisig"); +const SC_MULTISIG_EXPR: TestSCAddress = TestSCAddress::new("multisig"); const MULTISIG_CODE_EXPR: MxscPath = MxscPath::new("output/multisig.mxsc.json"); const OWNER_ADDRESS_EXPR: TestAddress = TestAddress::new("owner"); const PROPOSER_ADDRESS_EXPR: TestAddress = TestAddress::new("proposer"); @@ -123,7 +123,7 @@ impl MultisigTestState { fn propose_transfer_execute( &mut self, - to: TestScAddress, + to: TestSCAddress, egld_amount: u64, contract_call: FunctionCall, ) -> usize { @@ -139,7 +139,7 @@ impl MultisigTestState { fn propose_async_call( &mut self, - to: TestScAddress, + to: TestSCAddress, egld_amount: u64, contract_call: FunctionCall, ) -> usize { @@ -167,7 +167,7 @@ impl MultisigTestState { fn propose_sc_deploy_from_source( &mut self, amount: u64, - source: TestScAddress, + source: TestSCAddress, code_metadata: CodeMetadata, arguments: MultiValueVec>, ) -> usize { @@ -183,9 +183,9 @@ impl MultisigTestState { fn propose_sc_upgrade_from_source( &mut self, - sc_address: TestScAddress, + sc_address: TestSCAddress, amount: u64, - source: TestScAddress, + source: TestSCAddress, code_metadata: CodeMetadata, arguments: MultiValueVec>, ) -> usize { @@ -538,7 +538,7 @@ fn test_deploy_and_upgrade_from_source() { let mut state = MultisigTestState::new(); state.deploy_multisig_contract().deploy_adder_contract(); - let new_adder_address_expr = TestScAddress::new("new-adder"); + let new_adder_address_expr = TestSCAddress::new("new-adder"); state .world @@ -584,7 +584,7 @@ fn test_deploy_and_upgrade_from_source() { .returns(ExpectValue(BigUint::from(10u64))) .run(); - let factorial_address_expr: TestScAddress = TestScAddress::new("factorial"); + let factorial_address_expr: TestSCAddress = TestSCAddress::new("factorial"); let factorial_path_expr: MxscPath = MxscPath::new("test-contracts/factorial.mxsc.json"); let factorial_code = state diff --git a/contracts/examples/rewards-distribution/tests/rewards_distribution_integration_test.rs b/contracts/examples/rewards-distribution/tests/rewards_distribution_integration_test.rs index 4843386494..d540805eaf 100644 --- a/contracts/examples/rewards-distribution/tests/rewards_distribution_integration_test.rs +++ b/contracts/examples/rewards-distribution/tests/rewards_distribution_integration_test.rs @@ -14,10 +14,10 @@ const NFT_TOKEN_ID_EXPR: &str = "str:NFT-123456"; const ALICE_ADDRESS_EXPR: TestAddress = TestAddress::new("alice"); const OWNER_ADDRESS_EXPR: TestAddress = TestAddress::new("owner"); -const REWARDS_DISTRIBUTION_ADDRESS_EXPR: TestScAddress = TestScAddress::new("rewards-distribution"); +const REWARDS_DISTRIBUTION_ADDRESS_EXPR: TestSCAddress = TestSCAddress::new("rewards-distribution"); const REWARDS_DISTRIBUTION_PATH_EXPR: MxscPath = MxscPath::new("output/rewards-distribution.mxsc.json"); -const SEED_NFT_MINTER_ADDRESS_EXPR: TestScAddress = TestScAddress::new("seed-nft-minter"); +const SEED_NFT_MINTER_ADDRESS_EXPR: TestSCAddress = TestSCAddress::new("seed-nft-minter"); const SEED_NFT_MINTER_PATH_EXPR: MxscPath = MxscPath::new("../seed-nft-minter/output/seed-nft-minter.mxsc.json"); diff --git a/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs b/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs index 550679fff4..5dbd41fc01 100644 --- a/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs +++ b/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs @@ -3,7 +3,7 @@ mod pmf_proxy; use multiversx_sc_scenario::imports::*; const OWNER: TestAddress = TestAddress::new("owner"); -const SC_PMF: TestScAddress = TestScAddress::new("pmf"); +const SC_PMF: TestSCAddress = TestSCAddress::new("pmf"); const CODE_EXPR: &str = "mxsc:output/panic-message-features.mxsc.json"; fn world() -> ScenarioWorld { diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs index 5183d72923..439dc586de 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs @@ -36,7 +36,7 @@ fn st_blackbox_chained() { })) }) .chain_query(|tx| { - tx.to(TestScAddress::new("adder")) + tx.to(TestSCAddress::new("adder")) .typed(scenario_tester_proxy::ScenarioTesterProxy) .sum() .with_result(WithResultConv::new(|value: BigUint| { @@ -45,7 +45,7 @@ fn st_blackbox_chained() { }) .chain_call(|tx| { tx.from(TestAddress::new("owner")) - .to(TestScAddress::new("adder")) + .to(TestSCAddress::new("adder")) .typed(scenario_tester_proxy::ScenarioTesterProxy) .add(3u32) .with_result(WithRawTxResponse(|response| { diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs index 203868331f..db1e011dcc 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs @@ -7,7 +7,7 @@ const SC_SCENARIO_TESTER_PATH_EXPR: &str = "mxsc:output/scenario-tester.mxsc.jso const OWNER: TestAddress = TestAddress::new("owner"); const OTHER: TestAddress = TestAddress::new("other"); -const SC_SCENARIO_TESTER: TestScAddress = TestScAddress::new("scenario-tester"); +const SC_SCENARIO_TESTER: TestSCAddress = TestSCAddress::new("scenario-tester"); const CODE_EXPR: MxscPath = MxscPath::new("output/scenario-tester.mxsc.json"); fn world() -> ScenarioWorld { diff --git a/framework/base/src/types/interaction/expr.rs b/framework/base/src/types/interaction/expr.rs index 48939cbf00..ca1e1c44b1 100644 --- a/framework/base/src/types/interaction/expr.rs +++ b/framework/base/src/types/interaction/expr.rs @@ -2,4 +2,4 @@ mod test_address; mod test_sc_address; pub use test_address::TestAddress; -pub use test_sc_address::TestScAddress; +pub use test_sc_address::TestSCAddress; diff --git a/framework/base/src/types/interaction/expr/test_sc_address.rs b/framework/base/src/types/interaction/expr/test_sc_address.rs index 4c93024420..3f603160b1 100644 --- a/framework/base/src/types/interaction/expr/test_sc_address.rs +++ b/framework/base/src/types/interaction/expr/test_sc_address.rs @@ -14,17 +14,17 @@ const DEFAULT_VM_TYPE: &[u8] = &[5, 0]; /// It is designed to be usable from contracts (especiall test contracts), with a minimal footprint. /// For this reason, its inner structure is subject to change. #[derive(Clone, Copy, Debug, PartialEq, Eq)] -pub struct TestScAddress<'a> { +pub struct TestSCAddress<'a> { name: &'a str, } -impl<'a> TestScAddress<'a> { +impl<'a> TestSCAddress<'a> { pub const fn new(name: &'a str) -> Self { - TestScAddress { name } + TestSCAddress { name } } } -impl<'a, Env> AnnotatedValue> for TestScAddress<'a> +impl<'a, Env> AnnotatedValue> for TestSCAddress<'a> where Env: TxEnv, { @@ -40,14 +40,14 @@ where } } -impl<'a> TestScAddress<'a> { +impl<'a> TestSCAddress<'a> { pub fn to_address(&self) -> Address { let expr: [u8; 32] = self.eval_to_array(); expr.into() } } -impl<'a, Env> TxFrom for TestScAddress<'a> +impl<'a, Env> TxFrom for TestSCAddress<'a> where Env: TxEnv, { @@ -56,11 +56,11 @@ where expr.into() } } -impl<'a, Env> TxFromSpecified for TestScAddress<'a> where Env: TxEnv {} -impl<'a, Env> TxTo for TestScAddress<'a> where Env: TxEnv {} -impl<'a, Env> TxToSpecified for TestScAddress<'a> where Env: TxEnv {} +impl<'a, Env> TxFromSpecified for TestSCAddress<'a> where Env: TxEnv {} +impl<'a, Env> TxTo for TestSCAddress<'a> where Env: TxEnv {} +impl<'a, Env> TxToSpecified for TestSCAddress<'a> where Env: TxEnv {} -impl<'a> TestScAddress<'a> { +impl<'a> TestSCAddress<'a> { pub const fn eval_to_array(&self) -> [u8; 32] { let result = *b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00______________________"; let expr_bytes = self.name.as_bytes(); @@ -94,7 +94,7 @@ pub mod tests { use super::*; fn assert_eq_eval(expr: &'static str, expected: &[u8; 32]) { - assert_eq!(&TestScAddress::new(expr).eval_to_array(), expected); + assert_eq!(&TestSCAddress::new(expr).eval_to_array(), expected); } #[test] diff --git a/framework/scenario/src/scenario/model/value/address_key.rs b/framework/scenario/src/scenario/model/value/address_key.rs index b5308e87a1..f54e05b2f3 100644 --- a/framework/scenario/src/scenario/model/value/address_key.rs +++ b/framework/scenario/src/scenario/model/value/address_key.rs @@ -1,4 +1,4 @@ -use multiversx_sc::types::{Address, TestAddress, TestScAddress}; +use multiversx_sc::types::{Address, TestAddress, TestSCAddress}; use super::{value_from_slice, AddressValue}; use crate::{ @@ -144,8 +144,8 @@ impl From> for AddressKey { } } -impl From> for AddressKey { - fn from(from: TestScAddress) -> Self { +impl From> for AddressKey { + fn from(from: TestSCAddress) -> Self { AddressKey { value: from.eval_to_array().into(), original: from.eval_to_expr(), diff --git a/framework/scenario/src/scenario/model/value/address_value.rs b/framework/scenario/src/scenario/model/value/address_value.rs index 831574c26b..fdde631ede 100644 --- a/framework/scenario/src/scenario/model/value/address_value.rs +++ b/framework/scenario/src/scenario/model/value/address_value.rs @@ -4,7 +4,7 @@ use multiversx_sc::{ }; use std::fmt; -use crate::multiversx_sc::types::{Address, TestAddress, TestScAddress}; +use crate::multiversx_sc::types::{Address, TestAddress, TestSCAddress}; use crate::{ facade::expr::Bech32Address, @@ -147,8 +147,8 @@ impl From> for AddressValue { } } -impl From> for AddressValue { - fn from(from: TestScAddress) -> Self { +impl From> for AddressValue { + fn from(from: TestSCAddress) -> Self { AddressValue { value: from.eval_to_array().into(), original: ValueSubTree::Str(from.eval_to_expr()), From 3b81210db4192dc9e2c301a163b20e118cc83815 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 26 Apr 2024 14:31:08 +0300 Subject: [PATCH 404/461] expr refactor: rename in tests --- .../tests/price_aggregator_blackbox_test.rs | 26 +-- .../adder/tests/adder_blackbox_test.rs | 32 ++-- .../tests/crowdfunding_esdt_blackbox_test.rs | 22 +-- .../multisig/tests/multisig_blackbox_test.rs | 180 +++++++++--------- .../rewards_distribution_integration_test.rs | 79 ++++---- .../tests/pmf_blackbox_test.rs | 8 +- .../scenario-tester/tests/st_blackbox_test.rs | 22 +-- 7 files changed, 185 insertions(+), 184 deletions(-) diff --git a/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs b/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs index 00a997399a..5eca754439 100644 --- a/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs +++ b/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs @@ -19,8 +19,8 @@ const STAKE_AMOUNT: u64 = 20; const SUBMISSION_COUNT: usize = 3; const USD_TICKER: &[u8] = b"USDC"; -const PRICE_AGGREGATOR: TestSCAddress = TestSCAddress::new("price-aggregator"); -const OWNER: TestAddress = TestAddress::new("owner"); +const PRICE_AGGREGATOR_ADDRESS: TestSCAddress = TestSCAddress::new("price-aggregator"); +const OWNER_ADDRESS: TestAddress = TestAddress::new("owner"); fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); @@ -44,7 +44,7 @@ impl PriceAggregatorTestState { fn new() -> Self { let mut world = world(); - world.account(OWNER).nonce(1); + world.account(OWNER_ADDRESS).nonce(1); world.current_block().block_timestamp(100); world.set_state_step(SetStateStep::new()).new_address( @@ -86,7 +86,7 @@ impl PriceAggregatorTestState { self.world .tx() - .from(OWNER) + .from(OWNER_ADDRESS) .typed(price_aggregator_proxy::PriceAggregatorProxy) .init( EgldOrEsdtTokenIdentifier::egld(), @@ -103,7 +103,7 @@ impl PriceAggregatorTestState { self.world .tx() .from(address) - .to(PRICE_AGGREGATOR) + .to(PRICE_AGGREGATOR_ADDRESS) .typed(price_aggregator_proxy::PriceAggregatorProxy) .stake() .egld(STAKE_AMOUNT) @@ -116,8 +116,8 @@ impl PriceAggregatorTestState { fn set_pair_decimals(&mut self) { self.world .tx() - .from(OWNER) - .to(PRICE_AGGREGATOR) + .from(OWNER_ADDRESS) + .to(PRICE_AGGREGATOR_ADDRESS) .typed(price_aggregator_proxy::PriceAggregatorProxy) .set_pair_decimals(EGLD_TICKER, USD_TICKER, DECIMALS) .run(); @@ -126,8 +126,8 @@ impl PriceAggregatorTestState { fn unpause_endpoint(&mut self) { self.world .tx() - .from(OWNER) - .to(PRICE_AGGREGATOR) + .from(OWNER_ADDRESS) + .to(PRICE_AGGREGATOR_ADDRESS) .typed(price_aggregator_proxy::PriceAggregatorProxy) .unpause_endpoint() .run(); @@ -137,7 +137,7 @@ impl PriceAggregatorTestState { self.world .tx() .from(from) - .to(PRICE_AGGREGATOR) + .to(PRICE_AGGREGATOR_ADDRESS) .typed(price_aggregator_proxy::PriceAggregatorProxy) .submit( EGLD_TICKER, @@ -159,7 +159,7 @@ impl PriceAggregatorTestState { self.world .tx() .from(from) - .to(PRICE_AGGREGATOR) + .to(PRICE_AGGREGATOR_ADDRESS) .typed(price_aggregator_proxy::PriceAggregatorProxy) .submit( EGLD_TICKER, @@ -177,7 +177,7 @@ impl PriceAggregatorTestState { self.world .tx() .from(from) - .to(PRICE_AGGREGATOR) + .to(PRICE_AGGREGATOR_ADDRESS) .typed(price_aggregator_proxy::PriceAggregatorProxy) .vote_slash_member(member_to_slash) .run(); @@ -379,7 +379,7 @@ fn test_price_aggregator_slashing() { .world .tx() .from(&state.oracles[0]) - .to(PRICE_AGGREGATOR) + .to(PRICE_AGGREGATOR_ADDRESS) .typed(price_aggregator_proxy::PriceAggregatorProxy) .slash_member(state.oracles[1].to_address()) .run(); diff --git a/contracts/examples/adder/tests/adder_blackbox_test.rs b/contracts/examples/adder/tests/adder_blackbox_test.rs index 61daec8c25..a0064a65d0 100644 --- a/contracts/examples/adder/tests/adder_blackbox_test.rs +++ b/contracts/examples/adder/tests/adder_blackbox_test.rs @@ -2,15 +2,15 @@ use multiversx_sc_scenario::imports::*; use adder::*; -const OWNER: TestAddress = TestAddress::new("owner"); -const SC_ADDER: TestSCAddress = TestSCAddress::new("adder"); -const CODE_EXPR: MxscPath = MxscPath::new("output/adder.mxsc.json"); +const OWNER_ADDRESS: TestAddress = TestAddress::new("owner"); +const ADDER_ADDRESS: TestSCAddress = TestSCAddress::new("adder"); +const CODE_PATH: MxscPath = MxscPath::new("output/adder.mxsc.json"); fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); blockchain.set_current_dir_from_workspace("contracts/examples/adder"); - blockchain.register_contract(CODE_EXPR, adder::ContractBuilder); + blockchain.register_contract(CODE_PATH, adder::ContractBuilder); blockchain } @@ -20,23 +20,23 @@ fn adder_blackbox() { world.start_trace(); - world.account(OWNER).nonce(1); + world.account(OWNER_ADDRESS).nonce(1); let new_address = world .tx() - .from(OWNER) + .from(OWNER_ADDRESS) .typed(adder_proxy::AdderProxy) .init(5u32) - .code(CODE_EXPR) - .new_address(SC_ADDER) + .code(CODE_PATH) + .new_address(ADDER_ADDRESS) .returns(ReturnsNewAddress) .run(); - assert_eq!(new_address, SC_ADDER.to_address()); + assert_eq!(new_address, ADDER_ADDRESS.to_address()); world .query() - .to(SC_ADDER) + .to(ADDER_ADDRESS) .typed(adder_proxy::AdderProxy) .sum() .returns(ExpectValue(5u32)) @@ -44,23 +44,25 @@ fn adder_blackbox() { world .tx() - .from(OWNER) - .to(SC_ADDER) + .from(OWNER_ADDRESS) + .to(ADDER_ADDRESS) .typed(adder_proxy::AdderProxy) .add(1u32) .run(); world .query() - .to(SC_ADDER) + .to(ADDER_ADDRESS) .typed(adder_proxy::AdderProxy) .sum() .returns(ExpectValue(6u32)) .run(); - world.check_account(OWNER); + world.check_account(OWNER_ADDRESS); - world.check_account(SC_ADDER).check_storage("str:sum", "6"); + world + .check_account(ADDER_ADDRESS) + .check_storage("str:sum", "6"); world.write_scenario_trace("trace1.scen.json"); } diff --git a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs index 0109329c4c..b46225a396 100644 --- a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs +++ b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs @@ -8,13 +8,13 @@ const CF_TOKEN_ID_EXPR: &str = "str:CROWD-123456"; const FIRST_USER_ADDRESS: TestAddress = TestAddress::new("first-user"); const OWNER_ADDRESS: TestAddress = TestAddress::new("owner"); const SECOND_USER_ADDRESS: TestAddress = TestAddress::new("second-user"); -const CODE_EXPR: MxscPath = MxscPath::new("output/crowdfunding-esdt.mxsc.json"); -const SC_CROWDFUNDING_ESDT_EXPR: TestSCAddress = TestSCAddress::new("crowdfunding-esdt"); +const CODE_PATH: MxscPath = MxscPath::new("output/crowdfunding-esdt.mxsc.json"); +const CROWDFUNDING_ADDRESS: TestSCAddress = TestSCAddress::new("crowdfunding-esdt"); fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); - blockchain.register_contract(CODE_EXPR, crowdfunding_esdt::ContractBuilder); + blockchain.register_contract(CODE_PATH, crowdfunding_esdt::ContractBuilder); blockchain } @@ -37,7 +37,7 @@ impl CrowdfundingESDTTestState { .nonce(1) .esdt_balance(CF_TOKEN_ID_EXPR, "1000"); - world.new_address(OWNER_ADDRESS, 1, SC_CROWDFUNDING_ESDT_EXPR); + world.new_address(OWNER_ADDRESS, 1, CROWDFUNDING_ADDRESS); Self { world } } @@ -52,7 +52,7 @@ impl CrowdfundingESDTTestState { CF_DEADLINE, EgldOrEsdtTokenIdentifier::esdt(CF_TOKEN_ID), ) - .code(CODE_EXPR) + .code(CODE_PATH) .run(); } @@ -60,7 +60,7 @@ impl CrowdfundingESDTTestState { self.world .tx() .from(address) - .to(SC_CROWDFUNDING_ESDT_EXPR) + .to(CROWDFUNDING_ADDRESS) .typed(crowdfunding_esdt_proxy::CrowdfundingProxy) .fund() .egld_or_single_esdt( @@ -74,7 +74,7 @@ impl CrowdfundingESDTTestState { fn check_deposit(&mut self, donor: TestAddress, amount: u64) { self.world .query() - .to(SC_CROWDFUNDING_ESDT_EXPR) + .to(CROWDFUNDING_ADDRESS) .typed(crowdfunding_esdt_proxy::CrowdfundingProxy) .deposit(donor.eval_to_array()) .returns(ExpectValue(amount)) @@ -84,7 +84,7 @@ impl CrowdfundingESDTTestState { fn check_status(&mut self, expected_value: crowdfunding_esdt_proxy::Status) { self.world .query() - .to(SC_CROWDFUNDING_ESDT_EXPR) + .to(CROWDFUNDING_ADDRESS) .typed(crowdfunding_esdt_proxy::CrowdfundingProxy) .status() .returns(ExpectValue(expected_value)) @@ -95,7 +95,7 @@ impl CrowdfundingESDTTestState { self.world .tx() .from(address) - .to(SC_CROWDFUNDING_ESDT_EXPR) + .to(CROWDFUNDING_ADDRESS) .typed(crowdfunding_esdt_proxy::CrowdfundingProxy) .claim() .run(); @@ -139,7 +139,7 @@ fn test_sc_error() { .world .tx() .from(FIRST_USER_ADDRESS) - .to(SC_CROWDFUNDING_ESDT_EXPR) + .to(CROWDFUNDING_ADDRESS) .typed(crowdfunding_esdt_proxy::CrowdfundingProxy) .fund() .egld(1000) @@ -172,7 +172,7 @@ fn test_successful_cf() { .world .tx() .from(FIRST_USER_ADDRESS) - .to(SC_CROWDFUNDING_ESDT_EXPR) + .to(CROWDFUNDING_ADDRESS) .typed(crowdfunding_esdt_proxy::CrowdfundingProxy) .claim() .with_result(ExpectError(4, "only owner can claim successful funding")) diff --git a/contracts/examples/multisig/tests/multisig_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_blackbox_test.rs index 8d1e81f6cf..7444700e31 100644 --- a/contracts/examples/multisig/tests/multisig_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_blackbox_test.rs @@ -5,14 +5,14 @@ use adder::adder_proxy; use multisig::multisig_proxy; use num_bigint::BigUint; -const SC_ADDER_EXPR: TestSCAddress = TestSCAddress::new("adder"); -const ADDER_OWNER_ADDRESS_EXPR: TestAddress = TestAddress::new("adder-owner"); -const ADDER_CODE_EXPR: MxscPath = MxscPath::new("test-contracts/adder.mxsc.json"); -const BOARD_MEMBER_ADDRESS_EXPR: TestAddress = TestAddress::new("board-member"); -const SC_MULTISIG_EXPR: TestSCAddress = TestSCAddress::new("multisig"); -const MULTISIG_CODE_EXPR: MxscPath = MxscPath::new("output/multisig.mxsc.json"); -const OWNER_ADDRESS_EXPR: TestAddress = TestAddress::new("owner"); -const PROPOSER_ADDRESS_EXPR: TestAddress = TestAddress::new("proposer"); +const ADDER_ADDRESS: TestSCAddress = TestSCAddress::new("adder"); +const ADDER_OWNER_ADDRESS: TestAddress = TestAddress::new("adder-owner"); +const ADDER_CODE_PATH: MxscPath = MxscPath::new("test-contracts/adder.mxsc.json"); +const BOARD_MEMBER_ADDRESS: TestAddress = TestAddress::new("board-member"); +const MULTISIG_ADDRESS: TestSCAddress = TestSCAddress::new("multisig"); +const MULTISIG_CODE_PATH: MxscPath = MxscPath::new("output/multisig.mxsc.json"); +const OWNER_ADDRESS: TestAddress = TestAddress::new("owner"); +const PROPOSER_ADDRESS: TestAddress = TestAddress::new("proposer"); const PROPOSER_BALANCE_EXPR: &str = "100,000,000"; const QUORUM_SIZE: usize = 1; @@ -20,8 +20,8 @@ fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); blockchain.set_current_dir_from_workspace("contracts/examples/multisig"); - blockchain.register_contract(MULTISIG_CODE_EXPR, multisig::ContractBuilder); - blockchain.register_contract(ADDER_CODE_EXPR, adder::ContractBuilder); + blockchain.register_contract(MULTISIG_CODE_PATH, multisig::ContractBuilder); + blockchain.register_contract(ADDER_CODE_PATH, adder::ContractBuilder); blockchain } @@ -34,45 +34,45 @@ impl MultisigTestState { let mut world = world(); world - .account(OWNER_ADDRESS_EXPR) + .account(OWNER_ADDRESS) .nonce(1) - .account(PROPOSER_ADDRESS_EXPR) + .account(PROPOSER_ADDRESS) .nonce(1) .balance(PROPOSER_BALANCE_EXPR) - .account(BOARD_MEMBER_ADDRESS_EXPR) + .account(BOARD_MEMBER_ADDRESS) .nonce(1) - .account(ADDER_OWNER_ADDRESS_EXPR) + .account(ADDER_OWNER_ADDRESS) .nonce(1); Self { world } } fn deploy_multisig_contract(&mut self) -> &mut Self { - let board_members = MultiValueVec::from(vec![BOARD_MEMBER_ADDRESS_EXPR.eval_to_array()]); + let board_members = MultiValueVec::from(vec![BOARD_MEMBER_ADDRESS.eval_to_array()]); self.world .tx() - .from(OWNER_ADDRESS_EXPR) + .from(OWNER_ADDRESS) .typed(multisig_proxy::MultisigProxy) .init(QUORUM_SIZE, board_members) - .code(MULTISIG_CODE_EXPR) - .new_address(SC_MULTISIG_EXPR) + .code(MULTISIG_CODE_PATH) + .new_address(MULTISIG_ADDRESS) .run(); let action_id: usize = self .world .tx() - .from(BOARD_MEMBER_ADDRESS_EXPR) - .to(SC_MULTISIG_EXPR) + .from(BOARD_MEMBER_ADDRESS) + .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) - .propose_add_proposer(PROPOSER_ADDRESS_EXPR.eval_to_array()) + .propose_add_proposer(PROPOSER_ADDRESS.eval_to_array()) .returns(ReturnsResult) .run(); self.sign(action_id); self.perform(action_id); - self.expect_user_role(PROPOSER_ADDRESS_EXPR, multisig_proxy::UserRole::Proposer); + self.expect_user_role(PROPOSER_ADDRESS, multisig_proxy::UserRole::Proposer); self } @@ -80,19 +80,19 @@ impl MultisigTestState { fn deploy_adder_contract(&mut self) { self.world .tx() - .from(ADDER_OWNER_ADDRESS_EXPR) + .from(ADDER_OWNER_ADDRESS) .typed(adder_proxy::AdderProxy) .init(5u64) - .code(ADDER_CODE_EXPR) - .new_address(SC_ADDER_EXPR) + .code(ADDER_CODE_PATH) + .new_address(ADDER_ADDRESS) .run(); } fn propose_add_board_member(&mut self, board_member_address: TestAddress) -> usize { self.world .tx() - .from(PROPOSER_ADDRESS_EXPR) - .to(SC_MULTISIG_EXPR) + .from(PROPOSER_ADDRESS) + .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) .propose_add_board_member(board_member_address.eval_to_array()) .returns(ReturnsResult) @@ -102,8 +102,8 @@ impl MultisigTestState { fn propose_add_proposer(&mut self, proposer_address: TestAddress) -> usize { self.world .tx() - .from(PROPOSER_ADDRESS_EXPR) - .to(SC_MULTISIG_EXPR) + .from(PROPOSER_ADDRESS) + .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) .propose_add_proposer(proposer_address.eval_to_array()) .returns(ReturnsResult) @@ -113,8 +113,8 @@ impl MultisigTestState { fn propose_change_quorum(&mut self, new_quorum: usize) -> usize { self.world .tx() - .from(PROPOSER_ADDRESS_EXPR) - .to(SC_MULTISIG_EXPR) + .from(PROPOSER_ADDRESS) + .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) .propose_change_quorum(new_quorum) .returns(ReturnsResult) @@ -129,8 +129,8 @@ impl MultisigTestState { ) -> usize { self.world .tx() - .from(PROPOSER_ADDRESS_EXPR) - .to(SC_MULTISIG_EXPR) + .from(PROPOSER_ADDRESS) + .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) .propose_transfer_execute(to.eval_to_array(), egld_amount, contract_call) .returns(ReturnsResult) @@ -145,8 +145,8 @@ impl MultisigTestState { ) -> usize { self.world .tx() - .from(PROPOSER_ADDRESS_EXPR) - .to(SC_MULTISIG_EXPR) + .from(PROPOSER_ADDRESS) + .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) .propose_async_call(to.eval_to_array(), egld_amount, contract_call) .returns(ReturnsResult) @@ -156,8 +156,8 @@ impl MultisigTestState { fn propose_remove_user(&mut self, user_address: TestAddress) -> usize { self.world .tx() - .from(PROPOSER_ADDRESS_EXPR) - .to(SC_MULTISIG_EXPR) + .from(PROPOSER_ADDRESS) + .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) .propose_remove_user(user_address.eval_to_array()) .returns(ReturnsResult) @@ -173,8 +173,8 @@ impl MultisigTestState { ) -> usize { self.world .tx() - .from(PROPOSER_ADDRESS_EXPR) - .to(SC_MULTISIG_EXPR) + .from(PROPOSER_ADDRESS) + .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) .propose_sc_deploy_from_source(amount, source.eval_to_array(), code_metadata, arguments) .returns(ReturnsResult) @@ -191,8 +191,8 @@ impl MultisigTestState { ) -> usize { self.world .tx() - .from(PROPOSER_ADDRESS_EXPR) - .to(SC_MULTISIG_EXPR) + .from(PROPOSER_ADDRESS) + .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) .propose_sc_upgrade_from_source( sc_address.eval_to_array(), @@ -208,8 +208,8 @@ impl MultisigTestState { fn perform(&mut self, action_id: usize) { self.world .tx() - .from(BOARD_MEMBER_ADDRESS_EXPR) - .to(SC_MULTISIG_EXPR) + .from(BOARD_MEMBER_ADDRESS) + .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) .perform_action_endpoint(action_id) .run(); @@ -218,8 +218,8 @@ impl MultisigTestState { fn perform_and_expect_err(&mut self, action_id: usize, err_message: &str) { self.world .tx() - .from(BOARD_MEMBER_ADDRESS_EXPR) - .to(SC_MULTISIG_EXPR) + .from(BOARD_MEMBER_ADDRESS) + .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) .perform_action_endpoint(action_id) .with_result(ExpectError(4, err_message)) @@ -229,8 +229,8 @@ impl MultisigTestState { fn sign(&mut self, action_id: usize) { self.world .tx() - .from(BOARD_MEMBER_ADDRESS_EXPR) - .to(SC_MULTISIG_EXPR) + .from(BOARD_MEMBER_ADDRESS) + .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) .sign(action_id) .run(); @@ -243,7 +243,7 @@ impl MultisigTestState { ) { self.world .query() - .to(SC_MULTISIG_EXPR) + .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) .user_role(user.eval_to_array()) .returns(ExpectValue(expected_user_role)) @@ -267,7 +267,7 @@ fn test_add_board_member() { state.perform(action_id); let expected_value = MultiValueVec::from(vec![ - BOARD_MEMBER_ADDRESS_EXPR.eval_to_array(), + BOARD_MEMBER_ADDRESS.eval_to_array(), new_board_member_expr.eval_to_array(), ]); @@ -275,7 +275,7 @@ fn test_add_board_member() { state .world .query() - .to(SC_MULTISIG_EXPR) + .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) .get_all_board_members() .returns(ExpectValue(expected_value)) @@ -303,13 +303,13 @@ fn test_add_proposer() { ); let expected_value = MultiValueVec::from(vec![ - PROPOSER_ADDRESS_EXPR.eval_to_array(), + PROPOSER_ADDRESS.eval_to_array(), new_proposer_address_expr.eval_to_array(), ]); state .world .query() - .to(SC_MULTISIG_EXPR) + .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) .get_all_proposers() .returns(ExpectValue(expected_value)) @@ -321,17 +321,17 @@ fn test_remove_proposer() { let mut state = MultisigTestState::new(); state.deploy_multisig_contract(); - state.expect_user_role(PROPOSER_ADDRESS_EXPR, multisig_proxy::UserRole::Proposer); + state.expect_user_role(PROPOSER_ADDRESS, multisig_proxy::UserRole::Proposer); - let action_id = state.propose_remove_user(PROPOSER_ADDRESS_EXPR); + let action_id = state.propose_remove_user(PROPOSER_ADDRESS); state.sign(action_id); state.perform(action_id); - state.expect_user_role(PROPOSER_ADDRESS_EXPR, multisig_proxy::UserRole::None); + state.expect_user_role(PROPOSER_ADDRESS, multisig_proxy::UserRole::None); state .world .query() - .to(SC_MULTISIG_EXPR) + .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) .get_all_proposers() .returns(ExpectValue(MultiValueVec::
::new())) @@ -343,7 +343,7 @@ fn test_try_remove_all_board_members() { let mut state = MultisigTestState::new(); state.deploy_multisig_contract(); - let action_id = state.propose_remove_user(BOARD_MEMBER_ADDRESS_EXPR); + let action_id = state.propose_remove_user(BOARD_MEMBER_ADDRESS); state.sign(action_id); state.perform_and_expect_err(action_id, "quorum cannot exceed board size") } @@ -363,8 +363,8 @@ fn test_change_quorum() { state .world .tx() - .from(BOARD_MEMBER_ADDRESS_EXPR) - .to(SC_MULTISIG_EXPR) + .from(BOARD_MEMBER_ADDRESS) + .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) .discard_action(action_id) .with_result(ExpectError( @@ -377,8 +377,8 @@ fn test_change_quorum() { state .world .tx() - .from(BOARD_MEMBER_ADDRESS_EXPR) - .to(SC_MULTISIG_EXPR) + .from(BOARD_MEMBER_ADDRESS) + .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) .unsign(action_id) .run(); @@ -386,8 +386,8 @@ fn test_change_quorum() { state .world .tx() - .from(BOARD_MEMBER_ADDRESS_EXPR) - .to(SC_MULTISIG_EXPR) + .from(BOARD_MEMBER_ADDRESS) + .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) .discard_action(action_id) .run(); @@ -396,8 +396,8 @@ fn test_change_quorum() { state .world .tx() - .from(BOARD_MEMBER_ADDRESS_EXPR) - .to(SC_MULTISIG_EXPR) + .from(BOARD_MEMBER_ADDRESS) + .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) .sign(action_id) .with_result(ExpectError(4, "action does not exist")) @@ -431,8 +431,8 @@ fn test_transfer_execute_to_user() { state .world .tx() - .from(PROPOSER_ADDRESS_EXPR) - .to(SC_MULTISIG_EXPR) + .from(PROPOSER_ADDRESS) + .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) .deposit() .egld(amount) @@ -440,15 +440,15 @@ fn test_transfer_execute_to_user() { state .world - .check_account(SC_MULTISIG_EXPR) + .check_account(MULTISIG_ADDRESS) .balance(amount.to_string().as_str()); // failed attempt state .world .tx() - .from(PROPOSER_ADDRESS_EXPR) - .to(SC_MULTISIG_EXPR) + .from(PROPOSER_ADDRESS) + .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) .propose_transfer_execute( new_user_address_expr.eval_to_array(), @@ -462,8 +462,8 @@ fn test_transfer_execute_to_user() { let action_id = state .world .tx() - .from(PROPOSER_ADDRESS_EXPR) - .to(SC_MULTISIG_EXPR) + .from(PROPOSER_ADDRESS) + .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) .propose_transfer_execute( new_user_address_expr.eval_to_array(), @@ -493,14 +493,14 @@ fn test_transfer_execute_sc_all() { .add(5u64) .into_function_call(); - let action_id = state.propose_transfer_execute(SC_ADDER_EXPR, 0u64, adder_call); + let action_id = state.propose_transfer_execute(ADDER_ADDRESS, 0u64, adder_call); state.sign(action_id); state.perform(action_id); state .world .query() - .to(SC_ADDER_EXPR) + .to(ADDER_ADDRESS) .typed(adder_proxy::AdderProxy) .sum() .with_result(ExpectValue(BigUint::from(10u64))) @@ -519,14 +519,14 @@ fn test_async_call_to_sc() { .add(5u64) .into_function_call(); - let action_id = state.propose_async_call(SC_ADDER_EXPR, 0u64, adder_call); + let action_id = state.propose_async_call(ADDER_ADDRESS, 0u64, adder_call); state.sign(action_id); state.perform(action_id); state .world .query() - .to(SC_ADDER_EXPR) + .to(ADDER_ADDRESS) .typed(adder_proxy::AdderProxy) .sum() .returns(ExpectValue(10u64)) @@ -542,11 +542,11 @@ fn test_deploy_and_upgrade_from_source() { state .world - .new_address(SC_MULTISIG_EXPR, 0, new_adder_address_expr); + .new_address(MULTISIG_ADDRESS, 0, new_adder_address_expr); let action_id = state.propose_sc_deploy_from_source( 0u64, - SC_ADDER_EXPR, + ADDER_ADDRESS, CodeMetadata::all(), MultiValueVec::from([top_encode_to_vec_u8_or_panic(&5u64)]), ); @@ -554,8 +554,8 @@ fn test_deploy_and_upgrade_from_source() { state .world .tx() - .from(BOARD_MEMBER_ADDRESS_EXPR) - .to(SC_MULTISIG_EXPR) + .from(BOARD_MEMBER_ADDRESS) + .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) .perform_action_endpoint(action_id) .returns(ExpectValue(OptionalValue::Some( @@ -566,7 +566,7 @@ fn test_deploy_and_upgrade_from_source() { let adder_call = state .world .tx() - .to(SC_ADDER_EXPR) + .to(ADDER_ADDRESS) .typed(adder_proxy::AdderProxy) .add(5u64) .into_function_call(); @@ -584,26 +584,26 @@ fn test_deploy_and_upgrade_from_source() { .returns(ExpectValue(BigUint::from(10u64))) .run(); - let factorial_address_expr: TestSCAddress = TestSCAddress::new("factorial"); - let factorial_path_expr: MxscPath = MxscPath::new("test-contracts/factorial.mxsc.json"); + let factorial_address: TestSCAddress = TestSCAddress::new("factorial"); + let factorial_path: MxscPath = MxscPath::new("test-contracts/factorial.mxsc.json"); let factorial_code = state .world - .code_expression(factorial_path_expr.eval_to_expr().as_str()); + .code_expression(factorial_path.eval_to_expr().as_str()); state .world - .register_contract(factorial_path_expr, factorial::ContractBuilder); + .register_contract(factorial_path, factorial::ContractBuilder); state .world - .account(factorial_address_expr) + .account(factorial_address) .code(factorial_code.clone()); let action_id = state.propose_sc_upgrade_from_source( - SC_ADDER_EXPR, + ADDER_ADDRESS, 0u64, - factorial_address_expr, + factorial_address, CodeMetadata::all(), MultiValueVec::new(), ); @@ -612,6 +612,6 @@ fn test_deploy_and_upgrade_from_source() { state .world - .check_account(SC_ADDER_EXPR) - .code(factorial_path_expr.eval_to_expr().as_str()); + .check_account(ADDER_ADDRESS) + .code(factorial_path.eval_to_expr().as_str()); } diff --git a/contracts/examples/rewards-distribution/tests/rewards_distribution_integration_test.rs b/contracts/examples/rewards-distribution/tests/rewards_distribution_integration_test.rs index d540805eaf..8acc4bada8 100644 --- a/contracts/examples/rewards-distribution/tests/rewards_distribution_integration_test.rs +++ b/contracts/examples/rewards-distribution/tests/rewards_distribution_integration_test.rs @@ -12,24 +12,23 @@ use rewards_distribution::{ const NFT_TOKEN_ID: &[u8] = b"NFT-123456"; const NFT_TOKEN_ID_EXPR: &str = "str:NFT-123456"; -const ALICE_ADDRESS_EXPR: TestAddress = TestAddress::new("alice"); -const OWNER_ADDRESS_EXPR: TestAddress = TestAddress::new("owner"); -const REWARDS_DISTRIBUTION_ADDRESS_EXPR: TestSCAddress = TestSCAddress::new("rewards-distribution"); -const REWARDS_DISTRIBUTION_PATH_EXPR: MxscPath = - MxscPath::new("output/rewards-distribution.mxsc.json"); -const SEED_NFT_MINTER_ADDRESS_EXPR: TestSCAddress = TestSCAddress::new("seed-nft-minter"); -const SEED_NFT_MINTER_PATH_EXPR: MxscPath = +const ALICE_ADDRESS: TestAddress = TestAddress::new("alice"); +const OWNER_ADDRESS: TestAddress = TestAddress::new("owner"); +const REWARDS_DISTRIBUTION_ADDRESS: TestSCAddress = TestSCAddress::new("rewards-distribution"); +const REWARDS_DISTRIBUTION_PATH: MxscPath = MxscPath::new("output/rewards-distribution.mxsc.json"); +const SEED_NFT_MINTER_ADDRESS: TestSCAddress = TestSCAddress::new("seed-nft-minter"); +const SEED_NFT_MINTER_PATH: MxscPath = MxscPath::new("../seed-nft-minter/output/seed-nft-minter.mxsc.json"); fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); blockchain.register_contract( - REWARDS_DISTRIBUTION_PATH_EXPR.eval_to_expr().as_str(), + REWARDS_DISTRIBUTION_PATH.eval_to_expr().as_str(), rewards_distribution::ContractBuilder, ); blockchain.register_contract( - SEED_NFT_MINTER_PATH_EXPR.eval_to_expr().as_str(), + SEED_NFT_MINTER_PATH.eval_to_expr().as_str(), mock_seed_nft_minter::ContractBuilder, ); blockchain @@ -44,10 +43,10 @@ impl RewardsDistributionTestState { fn new() -> Self { let mut world = world(); - world.account(OWNER_ADDRESS_EXPR).nonce(1); + world.account(OWNER_ADDRESS).nonce(1); let rewards_distribution_whitebox = WhiteboxContract::new( - REWARDS_DISTRIBUTION_ADDRESS_EXPR, + REWARDS_DISTRIBUTION_ADDRESS, rewards_distribution::contract_obj, ); @@ -60,16 +59,16 @@ impl RewardsDistributionTestState { fn deploy_seed_nft_minter_contract(&mut self) -> &mut Self { self.world .tx() - .from(OWNER_ADDRESS_EXPR) + .from(OWNER_ADDRESS) .typed(mock_seed_nft_minter_proxy::MockSeedNftMinterProxy) .init(TokenIdentifier::from_esdt_bytes(NFT_TOKEN_ID)) - .code(SEED_NFT_MINTER_PATH_EXPR) + .code(SEED_NFT_MINTER_PATH) .run(); self.world .tx() - .from(OWNER_ADDRESS_EXPR) - .to(SEED_NFT_MINTER_ADDRESS_EXPR) + .from(OWNER_ADDRESS) + .to(SEED_NFT_MINTER_ADDRESS) .typed(mock_seed_nft_minter_proxy::MockSeedNftMinterProxy) .set_nft_count(10_000u64) .run(); @@ -95,10 +94,10 @@ impl RewardsDistributionTestState { } self.world .tx() - .from(OWNER_ADDRESS_EXPR) + .from(OWNER_ADDRESS) .typed(rewards_distribution_proxy::RewardsDistributionProxy) - .init(SEED_NFT_MINTER_ADDRESS_EXPR.to_address(), brackets) - .code(REWARDS_DISTRIBUTION_PATH_EXPR) + .init(SEED_NFT_MINTER_ADDRESS.to_address(), brackets) + .code(REWARDS_DISTRIBUTION_PATH) .run(); self @@ -111,18 +110,18 @@ fn test_compute_brackets() { let rewards_distribution_code = state .world - .code_expression(REWARDS_DISTRIBUTION_PATH_EXPR.eval_to_expr().as_str()); + .code_expression(REWARDS_DISTRIBUTION_PATH.eval_to_expr().as_str()); state .world - .account(REWARDS_DISTRIBUTION_ADDRESS_EXPR) + .account(REWARDS_DISTRIBUTION_ADDRESS) .nonce(1) - .owner(OWNER_ADDRESS_EXPR) + .owner(OWNER_ADDRESS) .code(rewards_distribution_code); state.world.whitebox_call( &state.rewards_distribution_whitebox, - ScCallStep::new().from(OWNER_ADDRESS_EXPR), + ScCallStep::new().from(OWNER_ADDRESS), |sc| { let brackets = utils::to_brackets(&[ (10, 2_000), @@ -168,7 +167,7 @@ fn test_raffle_and_claim() { { let mut account_setter = state .world - .account(ALICE_ADDRESS_EXPR) + .account(ALICE_ADDRESS) .nonce(1) .balance("2_070_000_000"); for nft_nonce in nft_nonces { @@ -183,8 +182,8 @@ fn test_raffle_and_claim() { state.world.set_state_step( SetStateStep::new() - .new_address(OWNER_ADDRESS_EXPR, 1, SEED_NFT_MINTER_ADDRESS_EXPR) - .new_address(OWNER_ADDRESS_EXPR, 3, REWARDS_DISTRIBUTION_ADDRESS_EXPR), + .new_address(OWNER_ADDRESS, 1, SEED_NFT_MINTER_ADDRESS) + .new_address(OWNER_ADDRESS, 3, REWARDS_DISTRIBUTION_ADDRESS), ); state @@ -195,8 +194,8 @@ fn test_raffle_and_claim() { state .world .tx() - .from(ALICE_ADDRESS_EXPR) - .to(REWARDS_DISTRIBUTION_ADDRESS_EXPR) + .from(ALICE_ADDRESS) + .to(REWARDS_DISTRIBUTION_ADDRESS) .typed(rewards_distribution_proxy::RewardsDistributionProxy) .deposit_royalties() .egld(2_070_000_000) @@ -206,8 +205,8 @@ fn test_raffle_and_claim() { state .world .tx() - .from(ALICE_ADDRESS_EXPR) - .to(REWARDS_DISTRIBUTION_ADDRESS_EXPR) + .from(ALICE_ADDRESS) + .to(REWARDS_DISTRIBUTION_ADDRESS) .typed(rewards_distribution_proxy::RewardsDistributionProxy) .raffle() .tx_hash([0u8; 32]) // blockchain rng is deterministic, so we can use a fixed hash @@ -219,8 +218,8 @@ fn test_raffle_and_claim() { let reward = state .world .tx() - .from(ALICE_ADDRESS_EXPR) - .to(REWARDS_DISTRIBUTION_ADDRESS_EXPR) + .from(ALICE_ADDRESS) + .to(REWARDS_DISTRIBUTION_ADDRESS) .typed(rewards_distribution_proxy::RewardsDistributionProxy) .compute_claimable_amount(0u64, &EgldOrEsdtTokenIdentifier::egld(), 0u64, nonce) .returns(ReturnsResult) @@ -260,8 +259,8 @@ fn test_raffle_and_claim() { state .world .tx() - .from(ALICE_ADDRESS_EXPR) - .to(REWARDS_DISTRIBUTION_ADDRESS_EXPR) + .from(ALICE_ADDRESS) + .to(REWARDS_DISTRIBUTION_ADDRESS) .typed(rewards_distribution_proxy::RewardsDistributionProxy) .compute_claimable_amount(0u64, &EgldOrEsdtTokenIdentifier::egld(), 0u64, nonce) .returns(ExpectValue(expected_reward)) @@ -277,8 +276,8 @@ fn test_raffle_and_claim() { state .world .tx() - .from(ALICE_ADDRESS_EXPR) - .to(REWARDS_DISTRIBUTION_ADDRESS_EXPR) + .from(ALICE_ADDRESS) + .to(REWARDS_DISTRIBUTION_ADDRESS) .typed(rewards_distribution_proxy::RewardsDistributionProxy) .claim_rewards(0u64, 0u64, reward_tokens) .with_multi_token_transfer(nft_payments.clone()) @@ -289,7 +288,7 @@ fn test_raffle_and_claim() { state .world .query() - .to(REWARDS_DISTRIBUTION_ADDRESS_EXPR) + .to(REWARDS_DISTRIBUTION_ADDRESS) .typed(rewards_distribution_proxy::RewardsDistributionProxy) .was_claimed(0u64, &EgldOrEsdtTokenIdentifier::egld(), 0u64, nonce) .returns(ExpectValue(true)) @@ -302,7 +301,7 @@ fn test_raffle_and_claim() { state .world - .check_account(ALICE_ADDRESS_EXPR) + .check_account(ALICE_ADDRESS) .balance(balance_expr); // a second claim with the same nfts should succeed, but return no more rewards @@ -314,8 +313,8 @@ fn test_raffle_and_claim() { state .world .tx() - .from(ALICE_ADDRESS_EXPR) - .to(REWARDS_DISTRIBUTION_ADDRESS_EXPR) + .from(ALICE_ADDRESS) + .to(REWARDS_DISTRIBUTION_ADDRESS) .typed(rewards_distribution_proxy::RewardsDistributionProxy) .claim_rewards(0u64, 0u64, reward_tokens) .with_multi_token_transfer(nft_payments) @@ -323,6 +322,6 @@ fn test_raffle_and_claim() { state .world - .check_account(ALICE_ADDRESS_EXPR) + .check_account(ALICE_ADDRESS) .balance(balance_expr); } diff --git a/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs b/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs index 5dbd41fc01..e8ad3c2a33 100644 --- a/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs +++ b/contracts/feature-tests/panic-message-features/tests/pmf_blackbox_test.rs @@ -2,7 +2,7 @@ mod pmf_proxy; use multiversx_sc_scenario::imports::*; -const OWNER: TestAddress = TestAddress::new("owner"); +const OWNER_ADDRESS: TestAddress = TestAddress::new("owner"); const SC_PMF: TestSCAddress = TestSCAddress::new("pmf"); const CODE_EXPR: &str = "mxsc:output/panic-message-features.mxsc.json"; @@ -20,7 +20,7 @@ fn setup() -> ScenarioWorld { world.set_state_step( SetStateStep::new() - .put_account(OWNER, Account::new().nonce(1)) + .put_account(OWNER_ADDRESS, Account::new().nonce(1)) .put_account(SC_PMF, Account::new().code(code)), ); @@ -34,7 +34,7 @@ fn tx_returns_error_test() { let (status, message) = world .tx() - .from(OWNER) + .from(OWNER_ADDRESS) .to(SC_PMF) .typed(pmf_proxy::PanicMessageFeaturesProxy) .sc_panic() @@ -69,7 +69,7 @@ fn tx_expect_error_test() { world .tx() - .from(OWNER) + .from(OWNER_ADDRESS) .to(SC_PMF) .typed(pmf_proxy::PanicMessageFeaturesProxy) .sc_panic() diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs index db1e011dcc..0c62e96110 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs @@ -5,10 +5,10 @@ use scenario_tester::*; const SC_SCENARIO_TESTER_PATH_EXPR: &str = "mxsc:output/scenario-tester.mxsc.json"; -const OWNER: TestAddress = TestAddress::new("owner"); -const OTHER: TestAddress = TestAddress::new("other"); -const SC_SCENARIO_TESTER: TestSCAddress = TestSCAddress::new("scenario-tester"); -const CODE_EXPR: MxscPath = MxscPath::new("output/scenario-tester.mxsc.json"); +const OWNER_ADDRESS: TestAddress = TestAddress::new("owner"); +const OTHER_ADDRESS: TestAddress = TestAddress::new("other"); +const SC_SCENARIO_TESTER_ADDRESS: TestSCAddress = TestSCAddress::new("scenario-tester"); +const CODE_PATH: MxscPath = MxscPath::new("output/scenario-tester.mxsc.json"); fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); @@ -55,17 +55,17 @@ fn st_blackbox() { let new_address = world .tx() - .from(OWNER) + .from(OWNER_ADDRESS) .typed(scenario_tester_proxy::ScenarioTesterProxy) .init(5u32) - .code(CODE_EXPR) + .code(CODE_PATH) .returns(ReturnsNewAddress) .run(); assert_eq!(new_address, st_contract.to_address()); let value = world .query() - .to(SC_SCENARIO_TESTER) + .to(SC_SCENARIO_TESTER_ADDRESS) .typed(scenario_tester_proxy::ScenarioTesterProxy) .sum() .returns(ReturnsResultConv::::new()) @@ -74,8 +74,8 @@ fn st_blackbox() { world .tx() - .from(OWNER) - .to(SC_SCENARIO_TESTER) + .from(OWNER_ADDRESS) + .to(SC_SCENARIO_TESTER_ADDRESS) .typed(scenario_tester_proxy::ScenarioTesterProxy) .add(1u32) .run(); @@ -90,8 +90,8 @@ fn st_blackbox() { world .tx() - .from(OTHER) - .to(SC_SCENARIO_TESTER) + .from(OTHER_ADDRESS) + .to(SC_SCENARIO_TESTER_ADDRESS) .typed(scenario_tester_proxy::ScenarioTesterProxy) .add(1u32) .run(); From 796af0984d69aa0100af336ac59e762677ec7f31 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Fri, 26 Apr 2024 18:24:17 +0300 Subject: [PATCH 405/461] set local roles --- .../src/facade/world_tx/scenario_set_state.rs | 29 ++++++++++++--- .../scenario_set_account.rs | 1 - .../whitebox_legacy/contract_obj_wrapper.rs | 36 ++----------------- 3 files changed, 26 insertions(+), 40 deletions(-) diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state.rs b/framework/scenario/src/facade/world_tx/scenario_set_state.rs index 3a8e5d2b30..3c9575ad5c 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state.rs @@ -4,15 +4,12 @@ mod scenario_set_new_address; use crate::{ scenario::ScenarioRunner, - scenario_model::{ - AddressKey, AddressValue, BigUintValue, BytesKey, BytesValue, NewAddress, SetStateStep, - U64Value, - }, + scenario_model::{AddressKey, AddressValue, BigUintValue, NewAddress, SetStateStep, U64Value}, ScenarioWorld, }; use multiversx_chain_vm::world_mock::EsdtInstanceMetadata; -use multiversx_sc::codec::TopEncode; +use multiversx_sc::{codec::TopEncode, types::EsdtLocalRole}; use scenario_set_account::AccountItem; use scenario_set_block::BlockItem; use scenario_set_new_address::NewAddressItem; @@ -144,6 +141,28 @@ impl ScenarioWorld { } } + pub fn set_esdt_local_roles( + &mut self, + address: A, + token_id: &[u8], + roles: &[EsdtLocalRole], + ) where + AddressKey: From, + { + let accounts = &mut self.get_mut_state().accounts; + for (vm_address, account) in accounts.iter_mut() { + if vm_address == &AddressKey::from(address).to_vm_address() { + account.esdt.set_roles( + token_id.to_vec(), + roles + .iter() + .map(|role| role.as_role_name().to_vec()) + .collect(), + ); + } + } + } + pub fn current_block(&mut self) -> SetStateBuilder<'_, BlockItem> { self.empty_builder().current_block() } diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs index a695fa155a..d985cbed66 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs @@ -179,5 +179,4 @@ impl<'w> SetStateBuilder<'w, AccountItem> { self.item.account.owner = Some(AddressValue::from(owner_expr)); self } - } diff --git a/framework/scenario/src/whitebox_legacy/contract_obj_wrapper.rs b/framework/scenario/src/whitebox_legacy/contract_obj_wrapper.rs index e7503cdcd6..26ee6bc1d4 100644 --- a/framework/scenario/src/whitebox_legacy/contract_obj_wrapper.rs +++ b/framework/scenario/src/whitebox_legacy/contract_obj_wrapper.rs @@ -287,15 +287,7 @@ impl BlockchainStateWrapper { _sc_identifier: Option>, _sc_mandos_path_expr: Option>, ) { - let vm_address = to_vm_address(address); - if self.world.get_state().account_exists(&vm_address) { - panic!("Address already used: {:?}", address_to_hex(address)); - } - - let account = Account::new().balance(egld_balance); - - self.world - .set_state_step(SetStateStep::new().put_account(address, account)); + self.world.create_account_raw(address, egld_balance); } // Has to be used before perfoming a deploy from a SC @@ -411,22 +403,7 @@ impl BlockchainStateWrapper { token_id: &[u8], roles: &[EsdtLocalRole], ) { - let vm_address = to_vm_address(address); - match self.world.get_mut_state().accounts.get_mut(&vm_address) { - Some(acc) => { - let mut roles_raw = Vec::new(); - for role in roles { - roles_raw.push(role.as_role_name().to_vec()); - } - acc.esdt.set_roles(token_id.to_vec(), roles_raw); - - self.add_mandos_set_account(address); - }, - None => panic!( - "set_esdt_local_roles: Account {:?} does not exist", - address_to_hex(address) - ), - } + self.world.set_esdt_local_roles(address, token_id, roles); } pub fn set_block_epoch(&mut self, block_epoch: u64) { @@ -796,15 +773,6 @@ fn address_to_hex(address: &Address) -> String { hex::encode(address.as_bytes()) } -// fn serialize_attributes(attributes: &T) -> Vec { -// let mut serialized_attributes = Vec::new(); -// if let Result::Err(err) = attributes.top_encode(&mut serialized_attributes) { -// panic!("Failed to encode attributes: {err:?}") -// } - -// serialized_attributes -// } - fn print_token_balance_raw( token_nonce: u64, token_balance: &num_bigint::BigUint, From 5a2cae8355985af209b55fae08b4293b35c7384e Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 26 Apr 2024 18:57:40 +0300 Subject: [PATCH 406/461] set state via AnnotatedValue - account address --- .../tests/price_aggregator_blackbox_test.rs | 24 +++++------ .../scenario-tester/tests/st_blackbox_test.rs | 40 +++++++++---------- .../facade/world_tx/scenario_check_state.rs | 24 +++++++---- .../src/facade/world_tx/scenario_set_state.rs | 38 +++++++++++------- .../scenario/tx_to_step/step_annotation.rs | 12 ++++++ 5 files changed, 80 insertions(+), 58 deletions(-) diff --git a/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs b/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs index 5eca754439..05c9b161f7 100644 --- a/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs +++ b/contracts/core/price-aggregator/tests/price_aggregator_blackbox_test.rs @@ -10,9 +10,6 @@ mod price_aggregator_proxy; 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 = "mxsc:output/multiversx-price-aggregator-sc.mxsc.json"; const SLASH_AMOUNT: u64 = 10; const SLASH_QUORUM: usize = 3; const STAKE_AMOUNT: u64 = 20; @@ -21,13 +18,15 @@ const USD_TICKER: &[u8] = b"USDC"; const PRICE_AGGREGATOR_ADDRESS: TestSCAddress = TestSCAddress::new("price-aggregator"); const OWNER_ADDRESS: TestAddress = TestAddress::new("owner"); +const PRICE_AGGREGATOR_PATH: MxscPath = + MxscPath::new("output/multiversx-price-aggregator-sc.mxsc.json"); 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, + PRICE_AGGREGATOR_PATH, multiversx_price_aggregator_sc::ContractBuilder, ); @@ -48,22 +47,23 @@ impl PriceAggregatorTestState { world.current_block().block_timestamp(100); world.set_state_step(SetStateStep::new()).new_address( - OWNER_ADDRESS_EXPR, + OWNER_ADDRESS, 1, - PRICE_AGGREGATOR_ADDRESS_EXPR, + PRICE_AGGREGATOR_ADDRESS, ); 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()); + let address_name = format!("oracle{i}"); + let address = TestAddress::new(&address_name); + let address_value = AddressValue::from(address); - world.account(address_expr).nonce(1).balance(STAKE_AMOUNT); + world.account(address).nonce(1).balance(STAKE_AMOUNT); oracles.push(address_value); } let price_aggregator_whitebox = WhiteboxContract::new( - PRICE_AGGREGATOR_ADDRESS_EXPR, + PRICE_AGGREGATOR_ADDRESS, multiversx_price_aggregator_sc::contract_obj, ); @@ -75,8 +75,6 @@ impl PriceAggregatorTestState { } 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() @@ -96,7 +94,7 @@ impl PriceAggregatorTestState { SUBMISSION_COUNT, oracles, ) - .code(price_aggregator_code) + .code(PRICE_AGGREGATOR_PATH) .run(); for address in self.oracles.iter() { diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs index 0c62e96110..fc2dc44fde 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs @@ -7,7 +7,7 @@ const SC_SCENARIO_TESTER_PATH_EXPR: &str = "mxsc:output/scenario-tester.mxsc.jso const OWNER_ADDRESS: TestAddress = TestAddress::new("owner"); const OTHER_ADDRESS: TestAddress = TestAddress::new("other"); -const SC_SCENARIO_TESTER_ADDRESS: TestSCAddress = TestSCAddress::new("scenario-tester"); +const ST_ADDRESS: TestSCAddress = TestSCAddress::new("scenario-tester"); const CODE_PATH: MxscPath = MxscPath::new("output/scenario-tester.mxsc.json"); fn world() -> ScenarioWorld { @@ -24,34 +24,30 @@ fn world() -> ScenarioWorld { #[test] fn st_blackbox() { let mut world = world(); - let owner_address = "address:owner"; - let other_address = "address:other"; - - let st_contract = ContractInfo::>::new("sc:scenario-tester"); world.start_trace(); world - .account(owner_address) + .account(OWNER_ADDRESS) .nonce(1) .balance("100") - .account(other_address) + .account(OTHER_ADDRESS) .nonce(2) .balance("300") .esdt_balance("str:TOKEN-123456", "500") .commit(); world - .check_account(owner_address) + .check_account(OWNER_ADDRESS) .nonce("1") .balance("100") - .check_account(other_address) + .check_account(OTHER_ADDRESS) .nonce("2") .balance("300") .esdt_balance("str:TOKEN-123456", "500") .commit(); - world.new_address(owner_address, 1, "sc:scenario-tester"); + world.new_address(OWNER_ADDRESS, 1, ST_ADDRESS); let new_address = world .tx() @@ -61,11 +57,11 @@ fn st_blackbox() { .code(CODE_PATH) .returns(ReturnsNewAddress) .run(); - assert_eq!(new_address, st_contract.to_address()); + assert_eq!(new_address, ST_ADDRESS.to_address()); let value = world .query() - .to(SC_SCENARIO_TESTER_ADDRESS) + .to(ST_ADDRESS) .typed(scenario_tester_proxy::ScenarioTesterProxy) .sum() .returns(ReturnsResultConv::::new()) @@ -75,23 +71,23 @@ fn st_blackbox() { world .tx() .from(OWNER_ADDRESS) - .to(SC_SCENARIO_TESTER_ADDRESS) + .to(ST_ADDRESS) .typed(scenario_tester_proxy::ScenarioTesterProxy) .add(1u32) .run(); world - .check_account(owner_address) + .check_account(OWNER_ADDRESS) .nonce("3") .balance("100") - .check_account(st_contract) + .check_account(ST_ADDRESS) .check_storage("str:sum", "6") .commit(); world .tx() .from(OTHER_ADDRESS) - .to(SC_SCENARIO_TESTER_ADDRESS) + .to(ST_ADDRESS) .typed(scenario_tester_proxy::ScenarioTesterProxy) .add(1u32) .run(); @@ -102,12 +98,12 @@ fn st_blackbox() { #[test] fn set_state_test() { let mut world = world(); - let first = "address:first"; - let second = "address:second"; - let third = "address:third"; - let fourth = "address:fourth"; - let fifth = "address:fifth"; - let sixth = "address:sixth"; + let first = TestAddress::new("first"); + let second = TestAddress::new("second"); + let third = TestAddress::new("third"); + let fourth = TestAddress::new("fourth"); + let fifth = TestAddress::new("fifth"); + let sixth = TestAddress::new("sixth"); world.start_trace(); diff --git a/framework/scenario/src/facade/world_tx/scenario_check_state.rs b/framework/scenario/src/facade/world_tx/scenario_check_state.rs index ffb4a2754b..7c63ddd0b6 100644 --- a/framework/scenario/src/facade/world_tx/scenario_check_state.rs +++ b/framework/scenario/src/facade/world_tx/scenario_check_state.rs @@ -1,24 +1,30 @@ use std::collections::{btree_map::Entry, BTreeMap}; use multiversx_chain_scenario_format::interpret_trait::{InterpretableFrom, InterpreterContext}; -use multiversx_sc::{codec::test_util::top_encode_to_vec_u8_or_panic, proxy_imports::TopEncode}; +use multiversx_sc::{ + codec::test_util::top_encode_to_vec_u8_or_panic, + proxy_imports::TopEncode, + types::{AnnotatedValue, ManagedAddress}, +}; use crate::{ - scenario::ScenarioRunner, + api::StaticApi, + scenario::{tx_to_step::address_annotated, ScenarioRunner}, scenario_model::{ AddressKey, BigUintValue, BytesKey, BytesValue, CheckAccount, CheckEsdt, CheckEsdtData, CheckEsdtInstances, CheckEsdtMap, CheckEsdtMapContents, CheckStateStep, CheckStorage, CheckStorageDetails, CheckValue, U64Value, }, - ScenarioWorld, + ScenarioTxEnvData, ScenarioWorld, }; impl ScenarioWorld { pub fn check_account(&mut self, address: A) -> CheckStateBuilder<'_> where - AddressKey: From, + A: AnnotatedValue>, { - CheckStateBuilder::new(self, address.into()) + let address_value = address_annotated(&self.new_env_data(), &address); + CheckStateBuilder::new(self, address_value.into()) } } @@ -42,12 +48,14 @@ impl<'w> CheckStateBuilder<'w> { } /// Starts building of a new account. - pub fn check_account(mut self, address_expr: A) -> Self + pub fn check_account(mut self, address: A) -> Self where - AddressKey: From, + A: AnnotatedValue>, { self.add_current_acount(); - self.reset_account(address_expr.into()); + let env = self.world.new_env_data(); + let address_value = address_annotated(&env, &address); + self.reset_account(address_value.into()); self } diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state.rs b/framework/scenario/src/facade/world_tx/scenario_set_state.rs index 9376050f58..8bfccc3a43 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state.rs @@ -3,11 +3,16 @@ mod scenario_set_block; mod scenario_set_new_address; use crate::{ - scenario::ScenarioRunner, - scenario_model::{AddressKey, AddressValue, NewAddress, SetStateStep, U64Value}, - ScenarioWorld, + imports::StaticApi, + scenario::{ + tx_to_step::{address_annotated, u64_annotated}, + ScenarioRunner, + }, + scenario_model::{AddressKey, NewAddress, SetStateStep}, + ScenarioTxEnvData, ScenarioWorld, }; +use multiversx_sc::types::{AnnotatedValue, ManagedAddress}; use scenario_set_account::AccountItem; use scenario_set_block::BlockItem; use scenario_set_new_address::NewAddressItem; @@ -22,7 +27,7 @@ impl ScenarioWorld { pub fn account(&mut self, address_expr: A) -> SetStateBuilder<'_, AccountItem> where - AddressKey: From, + A: AnnotatedValue>, { self.empty_builder().account(address_expr) } @@ -34,9 +39,9 @@ impl ScenarioWorld { new_address_expr: NA, ) -> SetStateBuilder<'_, NewAddressItem> where - AddressValue: From, - U64Value: From, - AddressValue: From, + CA: AnnotatedValue>, + CN: AnnotatedValue, + NA: AnnotatedValue>, { self.empty_builder() .new_address(creator_address_expr, creator_nonce_expr, new_address_expr) @@ -105,11 +110,13 @@ where /// Starts building of a new account. pub fn account(mut self, address_expr: A) -> SetStateBuilder<'w, AccountItem> where - AddressKey: From, + A: AnnotatedValue>, { let mut base = core::mem::take(&mut self.base).unwrap(); + let env = base.world.new_env_data(); + let address_value = address_annotated(&env, &address_expr); self.item.commit_to_step(&mut base.set_state_step); - let item = base.start_account(address_expr.into()); + let item = base.start_account(address_value.into()); SetStateBuilder { base: Some(base), item, @@ -123,19 +130,20 @@ where new_address_expr: NA, ) -> SetStateBuilder<'w, NewAddressItem> where - AddressValue: From, - U64Value: From, - AddressValue: From, + CA: AnnotatedValue>, + CN: AnnotatedValue, + NA: AnnotatedValue>, { let mut base = core::mem::take(&mut self.base).unwrap(); self.item.commit_to_step(&mut base.set_state_step); + let env = base.world.new_env_data(); SetStateBuilder { base: Some(base), item: NewAddressItem { new_address: NewAddress { - creator_address: AddressValue::from(creator_address_expr), - creator_nonce: U64Value::from(creator_nonce_expr), - new_address: AddressValue::from(new_address_expr), + creator_address: address_annotated(&env, &creator_address_expr), + creator_nonce: u64_annotated(&env, &creator_nonce_expr), + new_address: address_annotated(&env, &new_address_expr), }, }, } diff --git a/framework/scenario/src/scenario/tx_to_step/step_annotation.rs b/framework/scenario/src/scenario/tx_to_step/step_annotation.rs index c341427ab7..3e0901b838 100644 --- a/framework/scenario/src/scenario/tx_to_step/step_annotation.rs +++ b/framework/scenario/src/scenario/tx_to_step/step_annotation.rs @@ -15,6 +15,18 @@ where } } +pub fn u64_annotated(env: &Env, from: &Num) -> U64Value +where + Env: TxEnv, + Num: AnnotatedValue, +{ + let annotation = from.annotation(env).to_string(); + U64Value { + value: from.to_value(env), + original: ValueSubTree::Str(annotation), + } +} + pub fn code_annotated(env: &Env, code: Code) -> BytesValue where Env: TxEnv, From 1276f1756b83c211cf5b5f20cb89a1b14ef00cf8 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 26 Apr 2024 20:22:18 +0300 Subject: [PATCH 407/461] set state via AnnotatedValue - balance, nonce --- .../tests/crowdfunding_esdt_blackbox_test.rs | 2 +- .../multisig/tests/multisig_blackbox_test.rs | 11 ++--- .../rewards_distribution_integration_test.rs | 7 ++-- .../scenario-tester/tests/st_blackbox_test.rs | 40 +++++++++---------- .../annotated/annotated_impl_big_uint.rs | 13 ++++++ .../facade/world_tx/scenario_check_state.rs | 31 +++++++------- .../src/facade/world_tx/scenario_set_state.rs | 4 ++ .../scenario_set_account.rs | 23 +++++++---- .../scenario/tx_to_step/step_annotation.rs | 38 ++++++++++++++---- 9 files changed, 108 insertions(+), 61 deletions(-) diff --git a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs index b46225a396..318c2f020b 100644 --- a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs +++ b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs @@ -31,7 +31,7 @@ impl CrowdfundingESDTTestState { .nonce(1) .account(FIRST_USER_ADDRESS) .nonce(1) - .balance("1000") + .balance(1000) .esdt_balance(CF_TOKEN_ID_EXPR, "1000") .account(SECOND_USER_ADDRESS) .nonce(1) diff --git a/contracts/examples/multisig/tests/multisig_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_blackbox_test.rs index 7444700e31..714adf2f9e 100644 --- a/contracts/examples/multisig/tests/multisig_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_blackbox_test.rs @@ -13,7 +13,7 @@ const MULTISIG_ADDRESS: TestSCAddress = TestSCAddress::new("multisig"); const MULTISIG_CODE_PATH: MxscPath = MxscPath::new("output/multisig.mxsc.json"); const OWNER_ADDRESS: TestAddress = TestAddress::new("owner"); const PROPOSER_ADDRESS: TestAddress = TestAddress::new("proposer"); -const PROPOSER_BALANCE_EXPR: &str = "100,000,000"; +const PROPOSER_BALANCE: u64 = 100_000_000; const QUORUM_SIZE: usize = 1; fn world() -> ScenarioWorld { @@ -38,7 +38,7 @@ impl MultisigTestState { .nonce(1) .account(PROPOSER_ADDRESS) .nonce(1) - .balance(PROPOSER_BALANCE_EXPR) + .balance(PROPOSER_BALANCE) .account(BOARD_MEMBER_ADDRESS) .nonce(1) .account(ADDER_OWNER_ADDRESS) @@ -438,10 +438,7 @@ fn test_transfer_execute_to_user() { .egld(amount) .run(); - state - .world - .check_account(MULTISIG_ADDRESS) - .balance(amount.to_string().as_str()); + state.world.check_account(MULTISIG_ADDRESS).balance(amount); // failed attempt state @@ -478,7 +475,7 @@ fn test_transfer_execute_to_user() { state .world .check_account(new_user_address_expr) - .balance(amount.to_string().as_str()); + .balance(amount); } #[test] diff --git a/contracts/examples/rewards-distribution/tests/rewards_distribution_integration_test.rs b/contracts/examples/rewards-distribution/tests/rewards_distribution_integration_test.rs index 8acc4bada8..a99ecf7559 100644 --- a/contracts/examples/rewards-distribution/tests/rewards_distribution_integration_test.rs +++ b/contracts/examples/rewards-distribution/tests/rewards_distribution_integration_test.rs @@ -169,7 +169,7 @@ fn test_raffle_and_claim() { .world .account(ALICE_ADDRESS) .nonce(1) - .balance("2_070_000_000"); + .balance(2_070_000_000); for nft_nonce in nft_nonces { account_setter = account_setter.esdt_nft_balance( NFT_TOKEN_ID_EXPR, @@ -297,12 +297,11 @@ fn test_raffle_and_claim() { // confirm the received amount matches the sum of the queried rewards let alice_balance_after_claim: u64 = expected_rewards.iter().sum(); - let balance_expr: &str = &alice_balance_after_claim.to_string(); state .world .check_account(ALICE_ADDRESS) - .balance(balance_expr); + .balance(alice_balance_after_claim); // a second claim with the same nfts should succeed, but return no more rewards let mut reward_tokens: MultiValueEncoded< @@ -323,5 +322,5 @@ fn test_raffle_and_claim() { state .world .check_account(ALICE_ADDRESS) - .balance(balance_expr); + .balance(alice_balance_after_claim); } diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs index fc2dc44fde..ca32c471e4 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs @@ -30,20 +30,20 @@ fn st_blackbox() { world .account(OWNER_ADDRESS) .nonce(1) - .balance("100") + .balance(100) .account(OTHER_ADDRESS) .nonce(2) - .balance("300") + .balance(300) .esdt_balance("str:TOKEN-123456", "500") .commit(); world .check_account(OWNER_ADDRESS) - .nonce("1") - .balance("100") + .nonce(1) + .balance(100) .check_account(OTHER_ADDRESS) - .nonce("2") - .balance("300") + .nonce(2) + .balance(300) .esdt_balance("str:TOKEN-123456", "500") .commit(); @@ -78,8 +78,8 @@ fn st_blackbox() { world .check_account(OWNER_ADDRESS) - .nonce("3") - .balance("100") + .nonce(3) + .balance(100) .check_account(ST_ADDRESS) .check_storage("str:sum", "6") .commit(); @@ -110,34 +110,34 @@ fn set_state_test() { world .account(first) .nonce(1) - .balance("100") + .balance(100) .account(second) .nonce(2) - .balance("300") + .balance(300) .esdt_balance("str:TOKEN-123456", "500") .commit(); world .check_account(first) .nonce(1) - .balance("100") + .balance(100) .check_account(second) .nonce(2) - .balance("300") + .balance(300) .esdt_balance("str:TOKEN-123456", "500") .commit(); world .account(third) .nonce(3) - .balance("50") + .balance(50) .esdt_nft_balance("str:NFT-123456", "2", "1", Some(Vec::::new())) .commit(); world .check_account(third) .nonce(3) - .balance("50") + .balance(50) .esdt_nft_balance_and_attributes("str:NFT-123456", "2", "1", Some(Vec::::new())) .commit(); @@ -145,30 +145,30 @@ fn set_state_test() { world .account(fourth) .nonce(4) - .balance("400") + .balance(400) .account(fifth) .nonce(5) - .balance("250") + .balance(250) .esdt_balance("str:TOKEN-123456", "2"); world .check_account(fourth) .nonce(4) - .balance("400") + .balance(400) .check_account(fifth) .nonce(5) - .balance("250") + .balance(250) .esdt_balance("str:TOKEN-123456", "2"); world .account(sixth) .nonce(6) - .balance("600") + .balance(600) .esdt_balance("str:TOKEN-123456", "60"); world .check_account(sixth) .nonce(6) - .balance("600") + .balance(600) .esdt_balance("str:TOKEN-123456", "60"); } diff --git a/framework/base/src/types/interaction/annotated/annotated_impl_big_uint.rs b/framework/base/src/types/interaction/annotated/annotated_impl_big_uint.rs index ea2250399d..685af7fdb3 100644 --- a/framework/base/src/types/interaction/annotated/annotated_impl_big_uint.rs +++ b/framework/base/src/types/interaction/annotated/annotated_impl_big_uint.rs @@ -87,6 +87,19 @@ where } } +impl AnnotatedValue> for i32 +where + Env: TxEnv, +{ + fn annotation(&self, _env: &Env) -> ManagedBuffer { + BigUint::from(*self as u64).to_display() + } + + fn to_value(&self, _env: &Env) -> BigUint { + BigUint::from(*self as u64) + } +} + impl AnnotatedValue> for () where Env: TxEnv, diff --git a/framework/scenario/src/facade/world_tx/scenario_check_state.rs b/framework/scenario/src/facade/world_tx/scenario_check_state.rs index 7c63ddd0b6..fd7d640e10 100644 --- a/framework/scenario/src/facade/world_tx/scenario_check_state.rs +++ b/framework/scenario/src/facade/world_tx/scenario_check_state.rs @@ -4,12 +4,15 @@ use multiversx_chain_scenario_format::interpret_trait::{InterpretableFrom, Inter use multiversx_sc::{ codec::test_util::top_encode_to_vec_u8_or_panic, proxy_imports::TopEncode, - types::{AnnotatedValue, ManagedAddress}, + types::{AnnotatedValue, BigUint, ManagedAddress}, }; use crate::{ api::StaticApi, - scenario::{tx_to_step::address_annotated, ScenarioRunner}, + scenario::{ + tx_to_step::{address_annotated, big_uint_annotated, u64_annotated}, + ScenarioRunner, + }, scenario_model::{ AddressKey, BigUintValue, BytesKey, BytesValue, CheckAccount, CheckEsdt, CheckEsdtData, CheckEsdtInstances, CheckEsdtMap, CheckEsdtMapContents, CheckStateStep, CheckStorage, @@ -47,13 +50,17 @@ impl<'w> CheckStateBuilder<'w> { builder } + fn new_env_data(&self) -> ScenarioTxEnvData { + self.world.new_env_data() + } + /// Starts building of a new account. pub fn check_account(mut self, address: A) -> Self where A: AnnotatedValue>, { self.add_current_acount(); - let env = self.world.new_env_data(); + let env = self.new_env_data(); let address_value = address_annotated(&env, &address); self.reset_account(address_value.into()); self @@ -86,23 +93,19 @@ impl<'w> CheckStateBuilder<'w> { pub fn nonce(mut self, nonce: V) -> Self where - U64Value: InterpretableFrom, + V: AnnotatedValue, { - self.current_account.nonce = CheckValue::Equal(U64Value::interpret_from( - nonce, - &InterpreterContext::default(), - )); + let env = self.new_env_data(); + self.current_account.nonce = CheckValue::Equal(u64_annotated(&env, &nonce)); self } - pub fn balance(mut self, balance_expr: V) -> Self + pub fn balance(mut self, balance: V) -> Self where - BigUintValue: InterpretableFrom, + V: AnnotatedValue>, { - self.current_account.balance = CheckValue::Equal(BigUintValue::interpret_from( - balance_expr, - &InterpreterContext::default(), - )); + let env = self.new_env_data(); + self.current_account.balance = CheckValue::Equal(big_uint_annotated(&env, &balance)); self } diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state.rs b/framework/scenario/src/facade/world_tx/scenario_set_state.rs index 8bfccc3a43..b4c3fc6681 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state.rs @@ -107,6 +107,10 @@ impl<'w, Item> SetStateBuilder<'w, Item> where Item: SetStateBuilderItem, { + fn new_env_data(&self) -> ScenarioTxEnvData { + self.base.as_ref().unwrap().world.new_env_data() + } + /// Starts building of a new account. pub fn account(mut self, address_expr: A) -> SetStateBuilder<'w, AccountItem> where diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs index d985cbed66..e817b09c57 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs @@ -1,8 +1,15 @@ use std::collections::btree_map::Entry; -use crate::scenario_model::{ - Account, AddressKey, AddressValue, BigUintValue, BytesKey, BytesValue, Esdt, EsdtObject, - SetStateStep, U64Value, +use multiversx_sc::types::{AnnotatedValue, BigUint}; + +use crate::{ + imports::StaticApi, + scenario::tx_to_step::{big_uint_annotated, u64_annotated}, + scenario_model::{ + Account, AddressKey, AddressValue, BigUintValue, BytesKey, BytesValue, Esdt, EsdtObject, + SetStateStep, U64Value, + }, + ScenarioTxEnvData, }; use super::{SetStateBuilder, SetStateBuilderItem}; @@ -32,17 +39,19 @@ impl SetStateBuilderItem for AccountItem { impl<'w> SetStateBuilder<'w, AccountItem> { pub fn nonce(mut self, nonce: V) -> Self where - U64Value: From, + V: AnnotatedValue, { - self.item.account.nonce = Some(U64Value::from(nonce)); + let env = self.new_env_data(); + self.item.account.nonce = Some(u64_annotated(&env, &nonce)); self } pub fn balance(mut self, balance_expr: V) -> Self where - BigUintValue: From, + V: AnnotatedValue>, { - self.item.account.balance = Some(BigUintValue::from(balance_expr)); + let env = self.new_env_data(); + self.item.account.balance = Some(big_uint_annotated(&env, &balance_expr)); self } diff --git a/framework/scenario/src/scenario/tx_to_step/step_annotation.rs b/framework/scenario/src/scenario/tx_to_step/step_annotation.rs index 3e0901b838..186d835344 100644 --- a/framework/scenario/src/scenario/tx_to_step/step_annotation.rs +++ b/framework/scenario/src/scenario/tx_to_step/step_annotation.rs @@ -1,7 +1,9 @@ use multiversx_chain_scenario_format::serde_raw::ValueSubTree; -use multiversx_sc::types::{AnnotatedValue, Code, ManagedAddress, TxCodeValue, TxEnv, TxGas}; +use multiversx_sc::types::{ + AnnotatedValue, BigUint, Code, ManagedAddress, ManagedBuffer, TxCodeValue, TxEnv, TxGas, +}; -use crate::scenario_model::{AddressValue, BytesValue, U64Value}; +use crate::scenario_model::{AddressValue, BigUintValue, BytesValue, U64Value}; pub fn address_annotated(env: &Env, from: &Addr) -> AddressValue where @@ -15,10 +17,10 @@ where } } -pub fn u64_annotated(env: &Env, from: &Num) -> U64Value +pub fn u64_annotated(env: &Env, from: &T) -> U64Value where Env: TxEnv, - Num: AnnotatedValue, + T: AnnotatedValue, { let annotation = from.annotation(env).to_string(); U64Value { @@ -27,18 +29,38 @@ where } } -pub fn code_annotated(env: &Env, code: Code) -> BytesValue +pub fn big_uint_annotated(env: &Env, from: &T) -> BigUintValue where Env: TxEnv, - CodeValue: TxCodeValue, + T: AnnotatedValue>, { - let annotation = code.0.annotation(env).to_string(); + let annotation = from.annotation(env).to_string(); + BigUintValue { + value: from.to_value(env).to_alloc(), + original: ValueSubTree::Str(annotation), + } +} + +pub fn bytes_annotated(env: &Env, value: T) -> BytesValue +where + Env: TxEnv, + T: AnnotatedValue>, +{ + let annotation = value.annotation(env).to_string(); BytesValue { - value: code.0.into_value(env).to_vec(), + value: value.into_value(env).to_vec(), original: ValueSubTree::Str(annotation), } } +pub fn code_annotated(env: &Env, code: Code) -> BytesValue +where + Env: TxEnv, + CodeValue: TxCodeValue, +{ + bytes_annotated(env, code.0) +} + pub fn gas_annotated(env: &Env, gas: Gas) -> U64Value where Env: TxEnv, From 88fb5535319864452c74639178ea296711c1fd0c Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sat, 27 Apr 2024 13:09:33 +0300 Subject: [PATCH 408/461] simplified small number nested encode/decode --- data/codec/src/impl_for_types/impl_num_signed.rs | 15 ++++++++++++--- .../codec/src/impl_for_types/impl_num_unsigned.rs | 15 ++++++++++++--- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/data/codec/src/impl_for_types/impl_num_signed.rs b/data/codec/src/impl_for_types/impl_num_signed.rs index 50cb85614e..f7901fc599 100644 --- a/data/codec/src/impl_for_types/impl_num_signed.rs +++ b/data/codec/src/impl_for_types/impl_num_signed.rs @@ -1,5 +1,5 @@ use crate::{ - dep_encode_num_mimic, num_conv::universal_decode_number, DecodeError, DecodeErrorHandler, + dep_encode_num_mimic, DecodeError, DecodeErrorHandler, EncodeErrorHandler, NestedDecode, NestedDecodeInput, NestedEncode, NestedEncodeOutput, TopDecode, TopDecodeInput, TopEncode, TopEncodeOutput, }; @@ -42,7 +42,7 @@ macro_rules! dep_decode_num_signed { { let mut bytes = [0u8; $num_bytes]; input.read_into(&mut bytes[..], h)?; - let num = universal_decode_number(&bytes[..], true) as $ty; + let num = <$ty>::from_be_bytes(bytes); Ok(num) } } @@ -52,9 +52,18 @@ macro_rules! dep_decode_num_signed { dep_decode_num_signed!(i8, 1); dep_decode_num_signed!(i16, 2); dep_decode_num_signed!(i32, 4); -dep_decode_num_signed!(isize, 4); dep_decode_num_signed!(i64, 8); +impl NestedDecode for isize { + fn dep_decode_or_handle_err(input: &mut I, h: H) -> Result + where + I: NestedDecodeInput, + H: DecodeErrorHandler, + { + i32::dep_decode_or_handle_err(input, h).map(|num| num as isize) + } +} + macro_rules! top_decode_num_signed { ($ty:ty, $bounds_ty:ty) => { impl TopDecode for $ty { diff --git a/data/codec/src/impl_for_types/impl_num_unsigned.rs b/data/codec/src/impl_for_types/impl_num_unsigned.rs index b9e98051fc..b6515d6e36 100644 --- a/data/codec/src/impl_for_types/impl_num_unsigned.rs +++ b/data/codec/src/impl_for_types/impl_num_unsigned.rs @@ -1,5 +1,5 @@ use crate::{ - dep_encode_num_mimic, num_conv::universal_decode_number, DecodeError, DecodeErrorHandler, + dep_encode_num_mimic, DecodeError, DecodeErrorHandler, EncodeErrorHandler, NestedDecode, NestedDecodeInput, NestedEncode, NestedEncodeOutput, TopDecode, TopDecodeInput, TopEncode, TopEncodeOutput, }; @@ -102,7 +102,7 @@ macro_rules! dep_decode_num_unsigned { { let mut bytes = [0u8; $num_bytes]; input.read_into(&mut bytes[..], h)?; - let num = universal_decode_number(&bytes[..], false) as $ty; + let num = <$ty>::from_be_bytes(bytes); Ok(num) } } @@ -111,9 +111,18 @@ macro_rules! dep_decode_num_unsigned { dep_decode_num_unsigned!(u16, 2); dep_decode_num_unsigned!(u32, 4); -dep_decode_num_unsigned!(usize, 4); dep_decode_num_unsigned!(u64, 8); +impl NestedDecode for usize { + fn dep_decode_or_handle_err(input: &mut I, h: H) -> Result + where + I: NestedDecodeInput, + H: DecodeErrorHandler, + { + u32::dep_decode_or_handle_err(input, h).map(|num| num as usize) + } +} + macro_rules! top_decode_num_unsigned { ($ty:ty, $bounds_ty:ty) => { impl TopDecode for $ty { From 04a10d98b598081fb2f33f20bc49a8ad93b327c2 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sun, 28 Apr 2024 01:31:39 +0300 Subject: [PATCH 409/461] abi fix - OperationCompletionStatus --- .../abi_tester_expected_main.abi.json | 27 +++++++++++++++++++ .../abi_tester_expected_view.abi.json | 17 ++++++++++++ .../feature-tests/abi-tester/src/abi_proxy.rs | 18 +++++++++++-- .../abi-tester/src/abi_tester.rs | 5 ++++ .../feature-tests/abi-tester/wasm/src/lib.rs | 5 ++-- .../types/io/operation_completion_status.rs | 4 +++ 6 files changed, 72 insertions(+), 4 deletions(-) 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 a9bcc8d151..77d8423bfb 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 @@ -379,6 +379,16 @@ } ] }, + { + "name": "operation_completion_status", + "mutability": "readonly", + "inputs": [], + "outputs": [ + { + "type": "OperationCompletionStatus" + } + ] + }, { "name": "payable_egld", "mutability": "mutable", @@ -926,6 +936,23 @@ "type": "OnlyShowsUpAsNested10" } ] + }, + "OperationCompletionStatus": { + "type": "explicit-enum", + "variants": [ + { + "docs": [ + "indicates that operation was completed" + ], + "name": "completed" + }, + { + "docs": [ + "indicates that operation was interrupted prematurely, due to low gas" + ], + "name": "interrupted" + } + ] } } } 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 fcc5546404..f678f60c87 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 @@ -587,6 +587,23 @@ "type": "OnlyShowsUpAsNested10" } ] + }, + "OperationCompletionStatus": { + "type": "explicit-enum", + "variants": [ + { + "docs": [ + "indicates that operation was completed" + ], + "name": "completed" + }, + { + "docs": [ + "indicates that operation was interrupted prematurely, due to low gas" + ], + "name": "interrupted" + } + ] } } } diff --git a/contracts/feature-tests/abi-tester/src/abi_proxy.rs b/contracts/feature-tests/abi-tester/src/abi_proxy.rs index 66548a21d8..feea268d49 100644 --- a/contracts/feature-tests/abi-tester/src/abi_proxy.rs +++ b/contracts/feature-tests/abi-tester/src/abi_proxy.rs @@ -340,6 +340,14 @@ where .original_result() } + pub fn operation_completion_status( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("operation_completion_status") + .original_result() + } + pub fn payable_egld( self, ) -> TxProxyCall { @@ -415,7 +423,10 @@ pub enum AbiEnum { Nothing, Something(i32), SomethingMore(u8, OnlyShowsUpAsNested08), - SomeStruct { a: u16, b: OnlyShowsUpAsNested09 }, + SomeStruct { + a: u16, + b: OnlyShowsUpAsNested09, + }, } #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] @@ -506,5 +517,8 @@ pub enum ExplicitDiscriminantMixed { Unit, Tuple(u16), Five, - Struct { a: u8, b: u16 }, + Struct { + a: u8, + b: u16, + }, } diff --git a/contracts/feature-tests/abi-tester/src/abi_tester.rs b/contracts/feature-tests/abi-tester/src/abi_tester.rs index 1d7226c0f9..22b4c2e26d 100644 --- a/contracts/feature-tests/abi-tester/src/abi_tester.rs +++ b/contracts/feature-tests/abi-tester/src/abi_tester.rs @@ -165,6 +165,11 @@ pub trait AbiTester { None } + #[view] + fn operation_completion_status(&self) -> OperationCompletionStatus { + OperationCompletionStatus::Completed + } + #[endpoint] #[payable("EGLD")] fn payable_egld(&self) {} diff --git a/contracts/feature-tests/abi-tester/wasm/src/lib.rs b/contracts/feature-tests/abi-tester/wasm/src/lib.rs index b8183ee1af..cf9aa68978 100644 --- a/contracts/feature-tests/abi-tester/wasm/src/lib.rs +++ b/contracts/feature-tests/abi-tester/wasm/src/lib.rs @@ -6,9 +6,9 @@ // Init: 1 // Upgrade: 1 -// Endpoints: 27 +// Endpoints: 28 // Async Callback (empty): 1 -// Total number of exported functions: 30 +// Total number of exported functions: 31 #![no_std] #![allow(internal_features)] @@ -46,6 +46,7 @@ multiversx_sc_wasm_adapter::endpoints! { item_for_ref => item_for_ref item_for_slice => item_for_slice item_for_option => item_for_option + operation_completion_status => operation_completion_status payable_egld => payable_egld payable_some_token => payable_some_token payable_any_token => payable_any_token diff --git a/framework/base/src/types/io/operation_completion_status.rs b/framework/base/src/types/io/operation_completion_status.rs index b69af9624a..7e8327f392 100644 --- a/framework/base/src/types/io/operation_completion_status.rs +++ b/framework/base/src/types/io/operation_completion_status.rs @@ -80,6 +80,10 @@ impl TypeAbi for OperationCompletionStatus { TypeName::from("OperationCompletionStatus") } + fn type_name_rust() -> TypeName { + TypeName::from("OperationCompletionStatus") + } + fn provide_type_descriptions(accumulator: &mut TDC) { let type_names = Self::type_names(); From c8dfdbe3ebd01c3ae5280f3e07ff933f1606ad35 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sun, 28 Apr 2024 02:37:42 +0300 Subject: [PATCH 410/461] set state via AnnotatedValue - fungible ESDT --- .../tests/crowdfunding_esdt_blackbox_test.rs | 32 +++++------ .../scenario-tester/tests/st_blackbox_test.rs | 17 +++--- .../base/src/types/interaction/annotated.rs | 1 + .../annotated_impl_token_identifier.rs | 56 +++++++++++++++++++ framework/base/src/types/interaction/expr.rs | 2 + .../interaction/expr/test_token_identifier.rs | 50 +++++++++++++++++ .../facade/world_tx/scenario_check_state.rs | 25 +++++---- .../scenario_set_account.rs | 23 ++++---- .../scenario/tx_to_step/step_annotation.rs | 17 +++++- 9 files changed, 176 insertions(+), 47 deletions(-) create mode 100644 framework/base/src/types/interaction/annotated/annotated_impl_token_identifier.rs create mode 100644 framework/base/src/types/interaction/expr/test_token_identifier.rs diff --git a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs index 318c2f020b..8b895e42a3 100644 --- a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs +++ b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs @@ -3,8 +3,7 @@ use crowdfunding_esdt::crowdfunding_esdt_proxy; use multiversx_sc_scenario::imports::*; const CF_DEADLINE: u64 = 7 * 24 * 60 * 60; // 1 week in seconds -const CF_TOKEN_ID: &[u8] = b"CROWD-123456"; -const CF_TOKEN_ID_EXPR: &str = "str:CROWD-123456"; +const CF_TOKEN_ID: TestTokenIdentifier = TestTokenIdentifier::new("CROWD-123456"); const FIRST_USER_ADDRESS: TestAddress = TestAddress::new("first-user"); const OWNER_ADDRESS: TestAddress = TestAddress::new("owner"); const SECOND_USER_ADDRESS: TestAddress = TestAddress::new("second-user"); @@ -26,18 +25,18 @@ impl CrowdfundingESDTTestState { fn new() -> Self { let mut world = world(); + world.account(OWNER_ADDRESS).nonce(1); + world - .account(OWNER_ADDRESS) - .nonce(1) .account(FIRST_USER_ADDRESS) .nonce(1) .balance(1000) - .esdt_balance(CF_TOKEN_ID_EXPR, "1000") + .esdt_balance(CF_TOKEN_ID, 1000); + + world .account(SECOND_USER_ADDRESS) .nonce(1) - .esdt_balance(CF_TOKEN_ID_EXPR, "1000"); - - world.new_address(OWNER_ADDRESS, 1, CROWDFUNDING_ADDRESS); + .esdt_balance(CF_TOKEN_ID, 1000); Self { world } } @@ -53,6 +52,7 @@ impl CrowdfundingESDTTestState { EgldOrEsdtTokenIdentifier::esdt(CF_TOKEN_ID), ) .code(CODE_PATH) + .new_address(CROWDFUNDING_ADDRESS) .run(); } @@ -101,10 +101,10 @@ impl CrowdfundingESDTTestState { .run(); } - fn check_esdt_balance(&mut self, address: TestAddress, balance_expr: &str) { + fn check_esdt_balance(&mut self, address: TestAddress, balance: u64) { self.world .check_account(address) - .esdt_balance(CF_TOKEN_ID_EXPR, balance_expr); + .esdt_balance(CF_TOKEN_ID, balance); } fn set_block_timestamp(&mut self, block_timestamp_expr: u64) { @@ -181,9 +181,9 @@ fn test_successful_cf() { // owner claim state.claim(OWNER_ADDRESS); - state.check_esdt_balance(OWNER_ADDRESS, "2_000"); - state.check_esdt_balance(FIRST_USER_ADDRESS, "0"); - state.check_esdt_balance(SECOND_USER_ADDRESS, "0"); + state.check_esdt_balance(OWNER_ADDRESS, 2000); + state.check_esdt_balance(FIRST_USER_ADDRESS, 0); + state.check_esdt_balance(SECOND_USER_ADDRESS, 0); } #[test] @@ -211,7 +211,7 @@ fn test_failed_cf() { // second user claim state.claim(SECOND_USER_ADDRESS); - state.check_esdt_balance(OWNER_ADDRESS, "0"); - state.check_esdt_balance(FIRST_USER_ADDRESS, "1_000"); - state.check_esdt_balance(SECOND_USER_ADDRESS, "1_000"); + state.check_esdt_balance(OWNER_ADDRESS, 0); + state.check_esdt_balance(FIRST_USER_ADDRESS, 1000); + state.check_esdt_balance(SECOND_USER_ADDRESS, 1000); } diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs index ca32c471e4..62630a0289 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs @@ -9,6 +9,7 @@ const OWNER_ADDRESS: TestAddress = TestAddress::new("owner"); const OTHER_ADDRESS: TestAddress = TestAddress::new("other"); const ST_ADDRESS: TestSCAddress = TestSCAddress::new("scenario-tester"); const CODE_PATH: MxscPath = MxscPath::new("output/scenario-tester.mxsc.json"); +const TOKEN_ID: TestTokenIdentifier = TestTokenIdentifier::new("TOKEN-123456"); fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); @@ -34,7 +35,7 @@ fn st_blackbox() { .account(OTHER_ADDRESS) .nonce(2) .balance(300) - .esdt_balance("str:TOKEN-123456", "500") + .esdt_balance(TOKEN_ID, 500) .commit(); world @@ -44,7 +45,7 @@ fn st_blackbox() { .check_account(OTHER_ADDRESS) .nonce(2) .balance(300) - .esdt_balance("str:TOKEN-123456", "500") + .esdt_balance(TOKEN_ID, 500) .commit(); world.new_address(OWNER_ADDRESS, 1, ST_ADDRESS); @@ -114,7 +115,7 @@ fn set_state_test() { .account(second) .nonce(2) .balance(300) - .esdt_balance("str:TOKEN-123456", "500") + .esdt_balance(TOKEN_ID, 500) .commit(); world @@ -124,7 +125,7 @@ fn set_state_test() { .check_account(second) .nonce(2) .balance(300) - .esdt_balance("str:TOKEN-123456", "500") + .esdt_balance(TOKEN_ID, 500) .commit(); world @@ -149,7 +150,7 @@ fn set_state_test() { .account(fifth) .nonce(5) .balance(250) - .esdt_balance("str:TOKEN-123456", "2"); + .esdt_balance(TOKEN_ID, 2); world .check_account(fourth) @@ -158,17 +159,17 @@ fn set_state_test() { .check_account(fifth) .nonce(5) .balance(250) - .esdt_balance("str:TOKEN-123456", "2"); + .esdt_balance(TOKEN_ID, 2); world .account(sixth) .nonce(6) .balance(600) - .esdt_balance("str:TOKEN-123456", "60"); + .esdt_balance(TOKEN_ID, 60); world .check_account(sixth) .nonce(6) .balance(600) - .esdt_balance("str:TOKEN-123456", "60"); + .esdt_balance(TOKEN_ID, 60); } diff --git a/framework/base/src/types/interaction/annotated.rs b/framework/base/src/types/interaction/annotated.rs index 5586168651..015aa4e648 100644 --- a/framework/base/src/types/interaction/annotated.rs +++ b/framework/base/src/types/interaction/annotated.rs @@ -1,6 +1,7 @@ mod annotated_impl_big_uint; mod annotated_impl_managed_address; mod annotated_impl_managed_buffer; +mod annotated_impl_token_identifier; mod annotated_impl_u64; use crate::{ diff --git a/framework/base/src/types/interaction/annotated/annotated_impl_token_identifier.rs b/framework/base/src/types/interaction/annotated/annotated_impl_token_identifier.rs new file mode 100644 index 0000000000..c689024632 --- /dev/null +++ b/framework/base/src/types/interaction/annotated/annotated_impl_token_identifier.rs @@ -0,0 +1,56 @@ +use crate::{ + proxy_imports::ManagedBufferBuilder, + types::{ManagedBuffer, TokenIdentifier}, +}; + +use super::{AnnotatedValue, TxEnv}; + +impl AnnotatedValue> for TokenIdentifier +where + Env: TxEnv, +{ + fn annotation(&self, env: &Env) -> ManagedBuffer { + (&self).annotation(env) + } + + fn to_value(&self, _env: &Env) -> TokenIdentifier { + self.clone() + } + + fn into_value(self, _env: &Env) -> TokenIdentifier { + self + } + + fn with_value_ref(&self, _env: &Env, f: F) -> R + where + F: FnOnce(&TokenIdentifier) -> R, + { + f(self) + } +} + +impl AnnotatedValue> for &TokenIdentifier +where + Env: TxEnv, +{ + fn annotation(&self, _env: &Env) -> ManagedBuffer { + let mut annot = ManagedBufferBuilder::::new_from_slice("str:".as_bytes()); + annot.append_managed_buffer(self.as_managed_buffer()); + annot.into_managed_buffer() + } + + fn to_value(&self, _env: &Env) -> TokenIdentifier { + (*self).clone() + } + + fn into_value(self, _env: &Env) -> TokenIdentifier { + (*self).clone() + } + + fn with_value_ref(&self, _env: &Env, f: F) -> R + where + F: FnOnce(&TokenIdentifier) -> R, + { + f(self) + } +} diff --git a/framework/base/src/types/interaction/expr.rs b/framework/base/src/types/interaction/expr.rs index ca1e1c44b1..9ecbd18112 100644 --- a/framework/base/src/types/interaction/expr.rs +++ b/framework/base/src/types/interaction/expr.rs @@ -1,5 +1,7 @@ mod test_address; mod test_sc_address; +mod test_token_identifier; pub use test_address::TestAddress; pub use test_sc_address::TestSCAddress; +pub use test_token_identifier::TestTokenIdentifier; diff --git a/framework/base/src/types/interaction/expr/test_token_identifier.rs b/framework/base/src/types/interaction/expr/test_token_identifier.rs new file mode 100644 index 0000000000..62c03d8177 --- /dev/null +++ b/framework/base/src/types/interaction/expr/test_token_identifier.rs @@ -0,0 +1,50 @@ +use crate::{ + api::ManagedTypeApi, + types::{AnnotatedValue, ManagedBuffer, TokenIdentifier, TxEnv}, +}; + +const STR_PREFIX: &str = "str:"; + +/// Encodes a dummy address, to be used for tests. +/// +/// It is designed to be usable from contracts (especiall test contracts), with a minimal footprint. +/// For this reason, its inner structure is subject to change. +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub struct TestTokenIdentifier<'a> { + name: &'a str, +} + +impl<'a> TestTokenIdentifier<'a> { + pub const fn new(name: &'a str) -> Self { + TestTokenIdentifier { name } + } + + #[cfg(feature = "alloc")] + pub fn eval_to_expr(&self) -> alloc::string::String { + alloc::format!("{STR_PREFIX}{}", self.name) + } +} + +impl<'a, Env> AnnotatedValue> for TestTokenIdentifier<'a> +where + Env: TxEnv, +{ + fn annotation(&self, _env: &Env) -> ManagedBuffer { + let mut result = ManagedBuffer::new_from_bytes(STR_PREFIX.as_bytes()); + result.append_bytes(self.name.as_bytes()); + result + } + + fn to_value(&self, _env: &Env) -> TokenIdentifier { + self.name.into() + } +} + +impl<'a, Api> From> for TokenIdentifier +where + Api: ManagedTypeApi, +{ + fn from(value: TestTokenIdentifier<'a>) -> Self { + TokenIdentifier::from_esdt_bytes(value.name) + } +} diff --git a/framework/scenario/src/facade/world_tx/scenario_check_state.rs b/framework/scenario/src/facade/world_tx/scenario_check_state.rs index fd7d640e10..011aca29b3 100644 --- a/framework/scenario/src/facade/world_tx/scenario_check_state.rs +++ b/framework/scenario/src/facade/world_tx/scenario_check_state.rs @@ -4,13 +4,15 @@ use multiversx_chain_scenario_format::interpret_trait::{InterpretableFrom, Inter use multiversx_sc::{ codec::test_util::top_encode_to_vec_u8_or_panic, proxy_imports::TopEncode, - types::{AnnotatedValue, BigUint, ManagedAddress}, + types::{AnnotatedValue, BigUint, ManagedAddress, TokenIdentifier}, }; use crate::{ api::StaticApi, scenario::{ - tx_to_step::{address_annotated, big_uint_annotated, u64_annotated}, + tx_to_step::{ + address_annotated, big_uint_annotated, token_identifier_annotated, u64_annotated, + }, ScenarioRunner, }, scenario_model::{ @@ -131,18 +133,19 @@ impl<'w> CheckStateBuilder<'w> { self } - pub fn esdt_balance(mut self, token_id_expr: K, balance_expr: V) -> Self + pub fn esdt_balance(mut self, token_id: K, balance: V) -> Self where - BytesKey: From, - BigUintValue: From, + K: AnnotatedValue>, + V: AnnotatedValue>, { - let token_id = BytesKey::from(token_id_expr); - let balance = BigUintValue::from(balance_expr); + let env = self.new_env_data(); + let token_id_key = token_identifier_annotated(&env, token_id); + let balance_value = big_uint_annotated(&env, &balance); match &mut self.current_account.esdt { CheckEsdtMap::Unspecified | CheckEsdtMap::Star => { let mut new_esdt_map = BTreeMap::new(); - let _ = new_esdt_map.insert(token_id, CheckEsdt::Short(balance)); + let _ = new_esdt_map.insert(token_id_key, CheckEsdt::Short(balance_value)); let new_check_esdt_map = CheckEsdtMapContents { contents: new_esdt_map, @@ -152,10 +155,10 @@ impl<'w> CheckStateBuilder<'w> { self.current_account.esdt = CheckEsdtMap::Equal(new_check_esdt_map); }, CheckEsdtMap::Equal(check_esdt_map) => { - if check_esdt_map.contents.contains_key(&token_id) { - let prev_entry = check_esdt_map.contents.get_mut(&token_id).unwrap(); + if check_esdt_map.contents.contains_key(&token_id_key) { + let prev_entry = check_esdt_map.contents.get_mut(&token_id_key).unwrap(); match prev_entry { - CheckEsdt::Short(prev_balance_check) => *prev_balance_check = balance, + CheckEsdt::Short(prev_balance_check) => *prev_balance_check = balance_value, CheckEsdt::Full(prev_esdt_check) => match prev_esdt_check.instances { CheckEsdtInstances::Star => todo!(), CheckEsdtInstances::Equal(_) => todo!(), diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs index e817b09c57..ecba63090e 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs @@ -1,10 +1,10 @@ use std::collections::btree_map::Entry; -use multiversx_sc::types::{AnnotatedValue, BigUint}; +use multiversx_sc::types::{AnnotatedValue, BigUint, TokenIdentifier}; use crate::{ imports::StaticApi, - scenario::tx_to_step::{big_uint_annotated, u64_annotated}, + scenario::tx_to_step::{big_uint_annotated, token_identifier_annotated, u64_annotated}, scenario_model::{ Account, AddressKey, AddressValue, BigUintValue, BytesKey, BytesValue, Esdt, EsdtObject, SetStateStep, U64Value, @@ -46,23 +46,26 @@ impl<'w> SetStateBuilder<'w, AccountItem> { self } - pub fn balance(mut self, balance_expr: V) -> Self + pub fn balance(mut self, balance: V) -> Self where V: AnnotatedValue>, { let env = self.new_env_data(); - self.item.account.balance = Some(big_uint_annotated(&env, &balance_expr)); + self.item.account.balance = Some(big_uint_annotated(&env, &balance)); self } - pub fn esdt_balance(mut self, token_id_expr: K, balance_expr: V) -> Self + pub fn esdt_balance(mut self, token_id: K, balance: V) -> Self where - BytesKey: From, - BigUintValue: From, + K: AnnotatedValue>, + V: AnnotatedValue>, { - let token_id = BytesKey::from(token_id_expr); - let esdt_data_ref = self.get_esdt_data_or_create(&token_id); - esdt_data_ref.set_balance(0u64, balance_expr); + let env = self.new_env_data(); + let token_id_key = token_identifier_annotated(&env, token_id); + let balance_value = big_uint_annotated(&env, &balance); + + let esdt_data_ref = self.get_esdt_data_or_create(&token_id_key); + esdt_data_ref.set_balance(0u64, balance_value); self } diff --git a/framework/scenario/src/scenario/tx_to_step/step_annotation.rs b/framework/scenario/src/scenario/tx_to_step/step_annotation.rs index 186d835344..2a5a2dac51 100644 --- a/framework/scenario/src/scenario/tx_to_step/step_annotation.rs +++ b/framework/scenario/src/scenario/tx_to_step/step_annotation.rs @@ -1,9 +1,10 @@ use multiversx_chain_scenario_format::serde_raw::ValueSubTree; use multiversx_sc::types::{ - AnnotatedValue, BigUint, Code, ManagedAddress, ManagedBuffer, TxCodeValue, TxEnv, TxGas, + AnnotatedValue, BigUint, Code, ManagedAddress, ManagedBuffer, TokenIdentifier, TxCodeValue, + TxEnv, TxGas, }; -use crate::scenario_model::{AddressValue, BigUintValue, BytesValue, U64Value}; +use crate::scenario_model::{AddressValue, BigUintValue, BytesKey, BytesValue, U64Value}; pub fn address_annotated(env: &Env, from: &Addr) -> AddressValue where @@ -53,6 +54,18 @@ where } } +pub fn token_identifier_annotated(env: &Env, value: T) -> BytesKey +where + Env: TxEnv, + T: AnnotatedValue>, +{ + let annotation = value.annotation(env).to_string(); + BytesKey { + value: value.into_value(env).into_managed_buffer().to_vec(), + original: annotation, + } +} + pub fn code_annotated(env: &Env, code: Code) -> BytesValue where Env: TxEnv, From 04707803afd27d5426f385a8a8d0566b2a925237 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sun, 28 Apr 2024 17:13:10 +0300 Subject: [PATCH 411/461] set state via AnnotatedValue - esdt_nft_balance --- .../rewards_distribution_integration_test.rs | 13 ++---- .../scenario-tester/tests/st_blackbox_test.rs | 3 +- .../annotated_impl_managed_buffer.rs | 13 ++++++ .../types/interaction/expr/test_address.rs | 23 +++++++++-- .../types/interaction/expr/test_sc_address.rs | 23 +++++++++-- .../interaction/expr/test_token_identifier.rs | 14 +++++++ .../scenario_set_account.rs | 41 ++++++++++--------- 7 files changed, 94 insertions(+), 36 deletions(-) diff --git a/contracts/examples/rewards-distribution/tests/rewards_distribution_integration_test.rs b/contracts/examples/rewards-distribution/tests/rewards_distribution_integration_test.rs index a99ecf7559..03ef580983 100644 --- a/contracts/examples/rewards-distribution/tests/rewards_distribution_integration_test.rs +++ b/contracts/examples/rewards-distribution/tests/rewards_distribution_integration_test.rs @@ -9,9 +9,6 @@ use rewards_distribution::{ rewards_distribution_proxy, ContractObj, RewardsDistribution, DIVISION_SAFETY_CONSTANT, }; -const NFT_TOKEN_ID: &[u8] = b"NFT-123456"; -const NFT_TOKEN_ID_EXPR: &str = "str:NFT-123456"; - const ALICE_ADDRESS: TestAddress = TestAddress::new("alice"); const OWNER_ADDRESS: TestAddress = TestAddress::new("owner"); const REWARDS_DISTRIBUTION_ADDRESS: TestSCAddress = TestSCAddress::new("rewards-distribution"); @@ -19,6 +16,7 @@ const REWARDS_DISTRIBUTION_PATH: MxscPath = MxscPath::new("output/rewards-distri const SEED_NFT_MINTER_ADDRESS: TestSCAddress = TestSCAddress::new("seed-nft-minter"); const SEED_NFT_MINTER_PATH: MxscPath = MxscPath::new("../seed-nft-minter/output/seed-nft-minter.mxsc.json"); +const NFT_TOKEN_ID: TestTokenIdentifier = TestTokenIdentifier::new("NFT-123456"); fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); @@ -61,7 +59,7 @@ impl RewardsDistributionTestState { .tx() .from(OWNER_ADDRESS) .typed(mock_seed_nft_minter_proxy::MockSeedNftMinterProxy) - .init(TokenIdentifier::from_esdt_bytes(NFT_TOKEN_ID)) + .init(NFT_TOKEN_ID) .code(SEED_NFT_MINTER_PATH) .run(); @@ -171,12 +169,7 @@ fn test_raffle_and_claim() { .nonce(1) .balance(2_070_000_000); for nft_nonce in nft_nonces { - account_setter = account_setter.esdt_nft_balance( - NFT_TOKEN_ID_EXPR, - nft_nonce, - "1", - Option::<&[u8]>::None, - ); + account_setter = account_setter.esdt_nft_balance(NFT_TOKEN_ID, nft_nonce, 1, ()); } } diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs index 62630a0289..0eecb8682c 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs @@ -10,6 +10,7 @@ const OTHER_ADDRESS: TestAddress = TestAddress::new("other"); const ST_ADDRESS: TestSCAddress = TestSCAddress::new("scenario-tester"); const CODE_PATH: MxscPath = MxscPath::new("output/scenario-tester.mxsc.json"); const TOKEN_ID: TestTokenIdentifier = TestTokenIdentifier::new("TOKEN-123456"); +const NFT_ID: TestTokenIdentifier = TestTokenIdentifier::new("NFT-123456"); fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); @@ -132,7 +133,7 @@ fn set_state_test() { .account(third) .nonce(3) .balance(50) - .esdt_nft_balance("str:NFT-123456", "2", "1", Some(Vec::::new())) + .esdt_nft_balance(NFT_ID, 2, 1, ()) .commit(); world diff --git a/framework/base/src/types/interaction/annotated/annotated_impl_managed_buffer.rs b/framework/base/src/types/interaction/annotated/annotated_impl_managed_buffer.rs index b8d4fc8fd7..547e88fefb 100644 --- a/framework/base/src/types/interaction/annotated/annotated_impl_managed_buffer.rs +++ b/framework/base/src/types/interaction/annotated/annotated_impl_managed_buffer.rs @@ -25,3 +25,16 @@ where f(self) } } + +impl AnnotatedValue> for () +where + Env: TxEnv, +{ + fn annotation(&self, _env: &Env) -> ManagedBuffer { + ManagedBuffer::new() + } + + fn to_value(&self, _env: &Env) -> ManagedBuffer { + ManagedBuffer::new() + } +} diff --git a/framework/base/src/types/interaction/expr/test_address.rs b/framework/base/src/types/interaction/expr/test_address.rs index 0d3278c67c..b01840ce06 100644 --- a/framework/base/src/types/interaction/expr/test_address.rs +++ b/framework/base/src/types/interaction/expr/test_address.rs @@ -1,8 +1,13 @@ use core::ptr; -use crate::types::{ - AnnotatedValue, ManagedAddress, ManagedBuffer, TxEnv, TxFrom, TxFromSpecified, TxTo, - TxToSpecified, +use multiversx_sc_codec::{CodecFrom, EncodeErrorHandler, TopEncode, TopEncodeOutput}; + +use crate::{ + api::ManagedTypeApi, + types::{ + AnnotatedValue, ManagedAddress, ManagedBuffer, TxEnv, TxFrom, TxFromSpecified, TxTo, + TxToSpecified, + }, }; const ADDRESS_PREFIX: &str = "address:"; @@ -69,6 +74,18 @@ impl<'a, Env> TxFromSpecified for TestAddress<'a> where Env: TxEnv {} impl<'a, Env> TxTo for TestAddress<'a> where Env: TxEnv {} impl<'a, Env> TxToSpecified for TestAddress<'a> where Env: TxEnv {} +impl<'a> TopEncode for TestAddress<'a> { + fn top_encode_or_handle_err(&self, output: O, h: H) -> Result<(), H::HandledErr> + where + O: TopEncodeOutput, + H: EncodeErrorHandler, + { + self.eval_to_array().top_encode_or_handle_err(output, h) + } +} + +impl<'a, Api> CodecFrom> for ManagedAddress where Api: ManagedTypeApi {} + #[cfg(test)] pub mod tests { use super::*; diff --git a/framework/base/src/types/interaction/expr/test_sc_address.rs b/framework/base/src/types/interaction/expr/test_sc_address.rs index 3f603160b1..973ab80d92 100644 --- a/framework/base/src/types/interaction/expr/test_sc_address.rs +++ b/framework/base/src/types/interaction/expr/test_sc_address.rs @@ -1,8 +1,13 @@ use core::ptr; -use crate::types::{ - heap::Address, AnnotatedValue, ManagedAddress, ManagedBuffer, TxEnv, TxFrom, TxFromSpecified, - TxTo, TxToSpecified, +use multiversx_sc_codec::{CodecFrom, EncodeErrorHandler, TopEncode, TopEncodeOutput}; + +use crate::{ + api::ManagedTypeApi, + types::{ + heap::Address, AnnotatedValue, ManagedAddress, ManagedBuffer, TxEnv, TxFrom, + TxFromSpecified, TxTo, TxToSpecified, + }, }; const SC_PREFIX: &str = "sc:"; @@ -89,6 +94,18 @@ impl<'a> TestSCAddress<'a> { } } +impl<'a> TopEncode for TestSCAddress<'a> { + fn top_encode_or_handle_err(&self, output: O, h: H) -> Result<(), H::HandledErr> + where + O: TopEncodeOutput, + H: EncodeErrorHandler, + { + self.eval_to_array().top_encode_or_handle_err(output, h) + } +} + +impl<'a, Api> CodecFrom> for ManagedAddress where Api: ManagedTypeApi {} + #[cfg(test)] pub mod tests { use super::*; diff --git a/framework/base/src/types/interaction/expr/test_token_identifier.rs b/framework/base/src/types/interaction/expr/test_token_identifier.rs index 62c03d8177..b22854b507 100644 --- a/framework/base/src/types/interaction/expr/test_token_identifier.rs +++ b/framework/base/src/types/interaction/expr/test_token_identifier.rs @@ -1,3 +1,5 @@ +use multiversx_sc_codec::{CodecFrom, EncodeErrorHandler, TopEncode, TopEncodeOutput}; + use crate::{ api::ManagedTypeApi, types::{AnnotatedValue, ManagedBuffer, TokenIdentifier, TxEnv}, @@ -48,3 +50,15 @@ where TokenIdentifier::from_esdt_bytes(value.name) } } + +impl<'a> TopEncode for TestTokenIdentifier<'a> { + fn top_encode_or_handle_err(&self, output: O, h: H) -> Result<(), H::HandledErr> + where + O: TopEncodeOutput, + H: EncodeErrorHandler, + { + self.name.top_encode_or_handle_err(output, h) + } +} + +impl<'a, Api> CodecFrom> for TokenIdentifier where Api: ManagedTypeApi {} diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs index ecba63090e..82c64ba988 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs @@ -1,10 +1,12 @@ use std::collections::btree_map::Entry; -use multiversx_sc::types::{AnnotatedValue, BigUint, TokenIdentifier}; +use multiversx_sc::types::{AnnotatedValue, BigUint, ManagedBuffer, TokenIdentifier}; use crate::{ imports::StaticApi, - scenario::tx_to_step::{big_uint_annotated, token_identifier_annotated, u64_annotated}, + scenario::tx_to_step::{ + big_uint_annotated, bytes_annotated, token_identifier_annotated, u64_annotated, + }, scenario_model::{ Account, AddressKey, AddressValue, BigUintValue, BytesKey, BytesValue, Esdt, EsdtObject, SetStateStep, U64Value, @@ -37,9 +39,9 @@ impl SetStateBuilderItem for AccountItem { } impl<'w> SetStateBuilder<'w, AccountItem> { - pub fn nonce(mut self, nonce: V) -> Self + pub fn nonce(mut self, nonce: N) -> Self where - V: AnnotatedValue, + N: AnnotatedValue, { let env = self.new_env_data(); self.item.account.nonce = Some(u64_annotated(&env, &nonce)); @@ -72,28 +74,29 @@ impl<'w> SetStateBuilder<'w, AccountItem> { pub fn esdt_nft_balance( mut self, - token_id_expr: K, - nonce_expr: N, - balance_expr: V, - opt_attributes_expr: Option, + token_id: K, + nonce: N, + balance: V, + attributes_expr: T, ) -> Self where - N: Clone, - BytesKey: From, - U64Value: From, - BigUintValue: From, - BytesValue: From, + K: AnnotatedValue>, + N: AnnotatedValue, + V: AnnotatedValue>, + T: AnnotatedValue>, { - let token_id = BytesKey::from(token_id_expr); + let env = self.new_env_data(); + let token_id_key = token_identifier_annotated(&env, token_id); + let nonce_value = u64_annotated(&env, &nonce); + let balance_value = big_uint_annotated(&env, &balance); let esdt_obj_ref = self - .get_esdt_data_or_create(&token_id) + .get_esdt_data_or_create(&token_id_key) .get_mut_esdt_object(); - esdt_obj_ref.set_balance(nonce_expr.clone(), balance_expr); + esdt_obj_ref.set_balance(nonce_value.clone(), balance_value); - if let Some(attributes_expr) = opt_attributes_expr { - esdt_obj_ref.set_token_attributes(nonce_expr, attributes_expr); - } + let attributes_value = bytes_annotated(&env, attributes_expr); + esdt_obj_ref.set_token_attributes(nonce_value, attributes_value); self } From 2799dcddea0a2ae4380d20d0d148a48beab00e2f Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sun, 28 Apr 2024 17:24:33 +0300 Subject: [PATCH 412/461] set state via AnnotatedValue - esdt_nft_balance_and_attributes --- .../scenario-tester/tests/st_blackbox_test.rs | 2 +- .../facade/world_tx/scenario_check_state.rs | 55 +++++++++---------- .../scenario_set_account.rs | 4 +- 3 files changed, 28 insertions(+), 33 deletions(-) diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs index 0eecb8682c..9f0b9091d3 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs @@ -140,7 +140,7 @@ fn set_state_test() { .check_account(third) .nonce(3) .balance(50) - .esdt_nft_balance_and_attributes("str:NFT-123456", "2", "1", Some(Vec::::new())) + .esdt_nft_balance_and_attributes(NFT_ID, 2, 1, ()) .commit(); // using no commit should drop the value naturally diff --git a/framework/scenario/src/facade/world_tx/scenario_check_state.rs b/framework/scenario/src/facade/world_tx/scenario_check_state.rs index 011aca29b3..047ea428a4 100644 --- a/framework/scenario/src/facade/world_tx/scenario_check_state.rs +++ b/framework/scenario/src/facade/world_tx/scenario_check_state.rs @@ -1,24 +1,23 @@ use std::collections::{btree_map::Entry, BTreeMap}; use multiversx_chain_scenario_format::interpret_trait::{InterpretableFrom, InterpreterContext}; -use multiversx_sc::{ - codec::test_util::top_encode_to_vec_u8_or_panic, - proxy_imports::TopEncode, - types::{AnnotatedValue, BigUint, ManagedAddress, TokenIdentifier}, +use multiversx_sc::types::{ + AnnotatedValue, BigUint, ManagedAddress, ManagedBuffer, TokenIdentifier, }; use crate::{ api::StaticApi, scenario::{ tx_to_step::{ - address_annotated, big_uint_annotated, token_identifier_annotated, u64_annotated, + address_annotated, big_uint_annotated, bytes_annotated, token_identifier_annotated, + u64_annotated, }, ScenarioRunner, }, scenario_model::{ - AddressKey, BigUintValue, BytesKey, BytesValue, CheckAccount, CheckEsdt, CheckEsdtData, + AddressKey, BytesKey, BytesValue, CheckAccount, CheckEsdt, CheckEsdtData, CheckEsdtInstances, CheckEsdtMap, CheckEsdtMapContents, CheckStateStep, CheckStorage, - CheckStorageDetails, CheckValue, U64Value, + CheckStorageDetails, CheckValue, }, ScenarioTxEnvData, ScenarioWorld, }; @@ -173,38 +172,34 @@ impl<'w> CheckStateBuilder<'w> { pub fn esdt_nft_balance_and_attributes( mut self, - token_id_expr: K, - nonce_expr: N, - balance_expr: V, - attributes_expr: Option, + token_id: K, + nonce: N, + balance: V, + attributes: T, ) -> Self where - BytesKey: From, - U64Value: From, - BigUintValue: From, - T: TopEncode, + K: AnnotatedValue>, + N: AnnotatedValue, + V: AnnotatedValue>, + T: AnnotatedValue>, { - let token_id = BytesKey::from(token_id_expr); + let env = self.new_env_data(); + let token_id_key = token_identifier_annotated(&env, token_id); + let nonce_value = u64_annotated(&env, &nonce); + let balance_value = big_uint_annotated(&env, &balance); + let attributes_value = bytes_annotated(&env, attributes); if let CheckEsdtMap::Unspecified = &self.current_account.esdt { let mut check_esdt = CheckEsdt::Full(CheckEsdtData::default()); - if let Some(attributes_expr) = attributes_expr { - check_esdt.add_balance_and_attributes_check( - nonce_expr, - balance_expr, - top_encode_to_vec_u8_or_panic(&attributes_expr), - ); - } else { - check_esdt.add_balance_and_attributes_check( - nonce_expr, - balance_expr, - Vec::::new(), - ); - } + check_esdt.add_balance_and_attributes_check( + nonce_value, + balance_value, + attributes_value, + ); let mut new_esdt_map = BTreeMap::new(); - let _ = new_esdt_map.insert(token_id, check_esdt); + let _ = new_esdt_map.insert(token_id_key, check_esdt); let new_check_esdt_map = CheckEsdtMapContents { contents: new_esdt_map, diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs index 82c64ba988..e61dcd1052 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs @@ -77,7 +77,7 @@ impl<'w> SetStateBuilder<'w, AccountItem> { token_id: K, nonce: N, balance: V, - attributes_expr: T, + attributes: T, ) -> Self where K: AnnotatedValue>, @@ -89,13 +89,13 @@ impl<'w> SetStateBuilder<'w, AccountItem> { let token_id_key = token_identifier_annotated(&env, token_id); let nonce_value = u64_annotated(&env, &nonce); let balance_value = big_uint_annotated(&env, &balance); + let attributes_value = bytes_annotated(&env, attributes); let esdt_obj_ref = self .get_esdt_data_or_create(&token_id_key) .get_mut_esdt_object(); esdt_obj_ref.set_balance(nonce_value.clone(), balance_value); - let attributes_value = bytes_annotated(&env, attributes_expr); esdt_obj_ref.set_token_attributes(nonce_value, attributes_value); self From e066ac9baf87d9407b684de5add6e885b312bbca Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sun, 28 Apr 2024 17:41:42 +0300 Subject: [PATCH 413/461] set state via AnnotatedValue - code, owner --- .../scenario_set_account.rs | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs index e61dcd1052..ce238d34b9 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs @@ -1,15 +1,18 @@ use std::collections::btree_map::Entry; -use multiversx_sc::types::{AnnotatedValue, BigUint, ManagedBuffer, TokenIdentifier}; +use multiversx_sc::types::{ + AnnotatedValue, BigUint, ManagedAddress, ManagedBuffer, TokenIdentifier, +}; use crate::{ imports::StaticApi, scenario::tx_to_step::{ - big_uint_annotated, bytes_annotated, token_identifier_annotated, u64_annotated, + address_annotated, big_uint_annotated, bytes_annotated, token_identifier_annotated, + u64_annotated, }, scenario_model::{ - Account, AddressKey, AddressValue, BigUintValue, BytesKey, BytesValue, Esdt, EsdtObject, - SetStateStep, U64Value, + Account, AddressKey, BigUintValue, BytesKey, BytesValue, Esdt, EsdtObject, SetStateStep, + U64Value, }, ScenarioTxEnvData, }; @@ -179,19 +182,23 @@ impl<'w> SetStateBuilder<'w, AccountItem> { self.item.account.esdt.get_mut(token_id).unwrap() } - pub fn code(mut self, code_expr: V) -> Self + pub fn code(mut self, code: C) -> Self where - BytesValue: From, + C: AnnotatedValue>, { - self.item.account.code = Some(BytesValue::from(code_expr)); + let env = self.new_env_data(); + let code_value = bytes_annotated(&env, code); + self.item.account.code = Some(code_value); self } - pub fn owner(mut self, owner_expr: V) -> Self + pub fn owner(mut self, owner: V) -> Self where - AddressValue: From, + V: AnnotatedValue>, { - self.item.account.owner = Some(AddressValue::from(owner_expr)); + let env = self.new_env_data(); + let owner_value = address_annotated(&env, &owner); + self.item.account.owner = Some(owner_value); self } } From 352ec3de9bf1fe7c24d947662e03a4d23b29e228 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Mon, 29 Apr 2024 13:00:03 +0300 Subject: [PATCH 414/461] set state via AnnotatedValue - esdt_nft_all_properties, esdt_nft_last_nonce, esdt_roles --- .../scenario_set_account.rs | 82 +++++++++++-------- 1 file changed, 47 insertions(+), 35 deletions(-) diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs index ce238d34b9..0c14dc6b16 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs @@ -10,10 +10,7 @@ use crate::{ address_annotated, big_uint_annotated, bytes_annotated, token_identifier_annotated, u64_annotated, }, - scenario_model::{ - Account, AddressKey, BigUintValue, BytesKey, BytesValue, Esdt, EsdtObject, SetStateStep, - U64Value, - }, + scenario_model::{Account, AddressKey, BytesKey, Esdt, EsdtObject, SetStateStep}, ScenarioTxEnvData, }; @@ -107,64 +104,79 @@ impl<'w> SetStateBuilder<'w, AccountItem> { #[allow(clippy::too_many_arguments)] pub fn esdt_nft_all_properties( mut self, - token_id_expr: K, - nonce_expr: N, - balance_expr: V, - opt_attributes_expr: Option, - royalties_expr: N, - creator_expr: Option, - hash_expr: Option, - uris_expr: Vec, + token_id: K, + nonce: N, + balance: V, + attributes: T, + royalties: N, + creator: T, + hash: T, + uris: Vec, ) -> Self where - BytesKey: From, - U64Value: From, - BigUintValue: From, - BytesValue: From, + K: AnnotatedValue>, + N: AnnotatedValue, + V: AnnotatedValue>, + T: AnnotatedValue>, { - let token_id = BytesKey::from(token_id_expr); + let env = self.new_env_data(); + let token_id_key = token_identifier_annotated(&env, token_id); + let nonce_value = u64_annotated(&env, &nonce); + let royalties_value = u64_annotated(&env, &royalties); + let balance_value = big_uint_annotated(&env, &balance); + let attributes_value = bytes_annotated(&env, attributes); + let creator_value = bytes_annotated(&env, creator); + let hash_value = bytes_annotated(&env, hash); + let mut uris_value = Vec::new(); + for uri in uris { + let uri_value = bytes_annotated(&env, uri); + uris_value.push(uri_value); + } let esdt_obj_ref = self - .get_esdt_data_or_create(&token_id) + .get_esdt_data_or_create(&token_id_key) .get_mut_esdt_object(); esdt_obj_ref.set_token_all_properties( - nonce_expr, - balance_expr, - opt_attributes_expr, - royalties_expr, - creator_expr, - hash_expr, - uris_expr, + nonce_value, + balance_value, + Some(attributes_value), + royalties_value, + Some(creator_value), + Some(hash_value), + uris_value, ); self } - pub fn esdt_nft_last_nonce(mut self, token_id_expr: K, last_nonce_expr: N) -> Self + pub fn esdt_nft_last_nonce(mut self, token_id: K, last_nonce: N) -> Self where - BytesKey: From, - U64Value: From, + K: AnnotatedValue>, + N: AnnotatedValue, { - let token_id = BytesKey::from(token_id_expr); + let env = self.new_env_data(); + let token_id_key = token_identifier_annotated(&env, token_id); + let nonce_value = u64_annotated(&env, &last_nonce); let esdt_obj_ref = self - .get_esdt_data_or_create(&token_id) + .get_esdt_data_or_create(&token_id_key) .get_mut_esdt_object(); - esdt_obj_ref.set_last_nonce(last_nonce_expr); + esdt_obj_ref.set_last_nonce(nonce_value); self } // TODO: Find a better way to pass roles - pub fn esdt_roles(mut self, token_id_expr: K, roles: Vec) -> Self + pub fn esdt_roles(mut self, token_id: K, roles: Vec) -> Self where - BytesKey: From, + K: AnnotatedValue>, { - let token_id = BytesKey::from(token_id_expr); + let env = self.new_env_data(); + let token_id_key = token_identifier_annotated(&env, token_id); let esdt_obj_ref = self - .get_esdt_data_or_create(&token_id) + .get_esdt_data_or_create(&token_id_key) .get_mut_esdt_object(); esdt_obj_ref.set_roles(roles); From f18b36ec7947ed36a4e375408e4feef4473cc69e Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Mon, 29 Apr 2024 13:03:35 +0300 Subject: [PATCH 415/461] set block via AnnotatedValue - block_epoch, block_nonce, block_round, block_timestamp, block_random_seed --- .../scenario_set_state/scenario_set_block.rs | 54 +++++++++++-------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_block.rs b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_block.rs index 9b487859e4..3ef0d06cca 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_block.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_block.rs @@ -1,4 +1,11 @@ -use crate::scenario_model::{BlockInfo, BytesValue, SetStateStep, U64Value}; +use multiversx_sc::types::{AnnotatedValue, ManagedBuffer}; + +use crate::{ + imports::StaticApi, + scenario::tx_to_step::{bytes_annotated, u64_annotated}, + scenario_model::{BlockInfo, SetStateStep}, + ScenarioTxEnvData, +}; use super::{SetStateBuilder, SetStateBuilderItem}; @@ -43,53 +50,58 @@ impl SetStateBuilderItem for BlockItem { } impl<'w> SetStateBuilder<'w, BlockItem> { - pub fn block_epoch(mut self, block_epoch_expr: N) -> Self + pub fn block_epoch(mut self, block_epoch: N) -> Self where - U64Value: From, + N: AnnotatedValue, { - let block_epoch = U64Value::from(block_epoch_expr); + let env = self.new_env_data(); + let block_epoch_value = u64_annotated(&env, &block_epoch); - self.item.block_info.block_epoch = Some(block_epoch); + self.item.block_info.block_epoch = Some(block_epoch_value); self } - pub fn block_nonce(mut self, block_nonce_expr: N) -> Self + pub fn block_nonce(mut self, block_nonce: N) -> Self where - U64Value: From, + N: AnnotatedValue, { - let block_nonce = U64Value::from(block_nonce_expr); + let env = self.new_env_data(); + let block_nonce_value = u64_annotated(&env, &block_nonce); - self.item.block_info.block_nonce = Some(block_nonce); + self.item.block_info.block_nonce = Some(block_nonce_value); self } - pub fn block_round(mut self, block_round_expr: N) -> Self + pub fn block_round(mut self, block_round: N) -> Self where - U64Value: From, + N: AnnotatedValue, { - let block_round = U64Value::from(block_round_expr); + let env = self.new_env_data(); + let block_round_value = u64_annotated(&env, &block_round); - self.item.block_info.block_round = Some(block_round); + self.item.block_info.block_round = Some(block_round_value); self } - pub fn block_timestamp(mut self, block_timestamp_expr: N) -> Self + pub fn block_timestamp(mut self, block_timestamp: N) -> Self where - U64Value: From, + N: AnnotatedValue, { - let block_timestamp = U64Value::from(block_timestamp_expr); + let env = self.new_env_data(); + let block_timestamp_value = u64_annotated(&env, &block_timestamp); - self.item.block_info.block_timestamp = Some(block_timestamp); + self.item.block_info.block_timestamp = Some(block_timestamp_value); self } - pub fn block_random_seed(mut self, block_random_seed_expr: B) -> Self + pub fn block_random_seed(mut self, block_random_seed: B) -> Self where - BytesValue: From, + B: AnnotatedValue>, { - let block_random_seed = BytesValue::from(block_random_seed_expr); + let env = self.new_env_data(); + let block_random_seed_value = bytes_annotated(&env, block_random_seed); - self.item.block_info.block_random_seed = Some(block_random_seed); + self.item.block_info.block_random_seed = Some(block_random_seed_value); self } } From c8bda97430318b4a4e0b1b09a4da252949c21585 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Mon, 29 Apr 2024 13:04:14 +0300 Subject: [PATCH 416/461] check state via AnnotatedValue - code --- .../multisig/tests/multisig_blackbox_test.rs | 2 +- .../src/facade/world_tx/scenario_check_state.rs | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/contracts/examples/multisig/tests/multisig_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_blackbox_test.rs index 714adf2f9e..7d439a00fc 100644 --- a/contracts/examples/multisig/tests/multisig_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_blackbox_test.rs @@ -610,5 +610,5 @@ fn test_deploy_and_upgrade_from_source() { state .world .check_account(ADDER_ADDRESS) - .code(factorial_path.eval_to_expr().as_str()); + .code(factorial_path); } diff --git a/framework/scenario/src/facade/world_tx/scenario_check_state.rs b/framework/scenario/src/facade/world_tx/scenario_check_state.rs index 047ea428a4..e79756ad1d 100644 --- a/framework/scenario/src/facade/world_tx/scenario_check_state.rs +++ b/framework/scenario/src/facade/world_tx/scenario_check_state.rs @@ -110,14 +110,14 @@ impl<'w> CheckStateBuilder<'w> { self } - pub fn code(mut self, code_expr: V) -> Self + pub fn code(mut self, code: V) -> Self where - BytesValue: InterpretableFrom, + V: AnnotatedValue>, { - self.current_account.code = CheckValue::Equal(BytesValue::interpret_from( - code_expr, - &InterpreterContext::default(), - )); + let env = self.new_env_data(); + let code_value = bytes_annotated(&env, code); + + self.current_account.code = CheckValue::Equal(code_value); self } From 64cfb775ff7fc36602f5c0cb37c54eb1799141c5 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Mon, 29 Apr 2024 13:10:24 +0200 Subject: [PATCH 417/461] api fetch optimization, test reorg and unit test --- .../scenario/model/transaction/tx_response.rs | 2380 --------------- framework/scenario/tests/tx_response_tests.rs | 2661 +++++++++++++++++ framework/snippets/src/interactor_retrieve.rs | 25 +- 3 files changed, 2682 insertions(+), 2384 deletions(-) create mode 100644 framework/scenario/tests/tx_response_tests.rs diff --git a/framework/scenario/src/scenario/model/transaction/tx_response.rs b/framework/scenario/src/scenario/model/transaction/tx_response.rs index d4171c6590..1465885476 100644 --- a/framework/scenario/src/scenario/model/transaction/tx_response.rs +++ b/framework/scenario/src/scenario/model/transaction/tx_response.rs @@ -254,2383 +254,3 @@ impl TxResponse { } } } - -#[cfg(test)] -mod tests { - use crate::scenario_model::TxResponse; - use multiversx_sc::types::Address; - use multiversx_sdk::data::transaction::{TransactionInfo, TransactionOnNetwork}; - - #[test] - fn test_deployed_address() { - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "SCDeployment", - "processingTypeOnDestination": "SCDeployment", - "hash": "07a176d1734d1901d396be344f97e1d80f076269e9559f9b2110f6f11c4f74de", - "nonce": 427, - "round": 2190715, - "epoch": 887, - "value": "0", - "receiver": "erd1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq6gq4hu", - "sender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", - "gasPrice": 1000000000, - "gasLimit": 600000000, - "data": "MDA2MTczNmQwMTAwMDAwMDAxOTgwMTE5NjAwMjdmN2YwMDYwMDE3ZjAxN2Y2MDAwMDA2MDAwMDE3ZjYwMDI3ZjdmMDE3ZjYwMDM3ZjdmN2YwMDYwMDE3ZjAwNjAwNDdmN2Y3ZjdmMDA2MDA1N2Y3ZjdmN2Y3ZjAwNjAwMzdmN2Y3ZjAxN2Y2MDA0N2Y3ZjdmN2YwMTdmNjAwMjdmN2UwMDYwMDE3ZjAxN2U2MDAyN2Y3ZjAxN2U2MDA1N2Y3ZjdlN2Y3ZjAxN2Y2MDA2N2U3ZjdmN2Y3ZjdmMDE3ZjYwMDE3ZTAwNjAwMDAxN2U2MDAxN2UwMTdmNjAwNDdmN2Y3ZTdmMDA2MDA1N2U3ZjdmN2Y3ZjAxN2Y2MDA0N2Y3ZjdmN2UwMDYwMDE3ZTAxN2U2MDA0N2Y3ZTdmN2YwMDYwMDI3ZTdmMDAwMmMxMDcyOTAzNjU2ZTc2MTI2ZDYxNmU2MTY3NjU2NDUzNjk2NzZlNjE2YzQ1NzI3MjZmNzIwMDA2MDM2NTZlNzYwZTYyNjk2NzQ5NmU3NDUzNjU3NDQ5NmU3NDM2MzQwMDBiMDM2NTZlNzYwOTYyNjk2NzQ5NmU3NDQxNjQ2NDAwMDUwMzY1NmU3NjBiNzM2OTY3NmU2MTZjNDU3MjcyNmY3MjAwMDAwMzY1NmU3NjBhNmQ0Mjc1NjY2NjY1NzI0ZTY1NzcwMDAzMDM2NTZlNzYwZDZkNDI3NTY2NjY2NTcyNDE3MDcwNjU2ZTY0MDAwNDAzNjU2ZTc2MDk2ZDQyNzU2NjY2NjU3MjQ1NzEwMDA0MDM2NTZlNzYwZDZkNDI3NTY2NjY2NTcyNDY2OTZlNjk3MzY4MDAwMTAzNjU2ZTc2MjI2ZDYxNmU2MTY3NjU2NDRkNzU2Yzc0Njk1NDcyNjE2ZTczNjY2NTcyNDU1MzQ0NTQ0ZTQ2NTQ0NTc4NjU2Mzc1NzQ2NTAwMGUwMzY1NmU3NjFiNmQ2MTZlNjE2NzY1NjQ0NTc4NjU2Mzc1NzQ2NTRmNmU0NDY1NzM3NDQzNmY2ZTc0NjU3ODc0MDAwZjAzNjU2ZTc2MGQ2ZDYxNmU2MTY3NjU2NDQzNjE2YzZjNjU3MjAwMDYwMzY1NmU3NjEwNmQ2MTZlNjE2NzY1NjQ1MzQzNDE2NDY0NzI2NTczNzMwMDA2MDM2NTZlNzYxMzZkNjE2ZTYxNjc2NTY0NGY3NzZlNjU3MjQxNjQ2NDcyNjU3MzczMDAwNjAzNjU2ZTc2MWM2ZDYxNmU2MTY3NjU2NDQ3NjU3NDRkNzU2Yzc0Njk0NTUzNDQ1NDQzNjE2YzZjNTY2MTZjNzU2NTAwMDYwMzY1NmU3NjEyNmQ0Mjc1NjY2NjY1NzI0NzY1NzQ0MTcyNjc3NTZkNjU2ZTc0MDAwNDAzNjU2ZTc2MTI2ZDQyNzU2NjY2NjU3MjQxNzA3MDY1NmU2NDQyNzk3NDY1NzMwMDA5MDM2NTZlNzYxOTYyNjk2NzQ5NmU3NDQ3NjU3NDU1NmU3MzY5Njc2ZTY1NjQ0MTcyNjc3NTZkNjU2ZTc0MDAwMDAzNjU2ZTc2MWI3MzZkNjE2YzZjNDk2ZTc0NDc2NTc0NTU2ZTczNjk2NzZlNjU2NDQxNzI2Nzc1NmQ2NTZlNzQwMDBjMDM2NTZlNzYxMDZkNDI3NTY2NjY2NTcyNDc2NTc0NGM2NTZlNjc3NDY4MDAwMTAzNjU2ZTc2MGY2NzY1NzQ0ZTc1NmQ0MTcyNjc3NTZkNjU2ZTc0NzMwMDAzMDM2NTZlNzYxNjczNmQ2MTZjNmM0OTZlNzQ0NjY5NmU2OTczNjg1NTZlNzM2OTY3NmU2NTY0MDAxMDAzNjU2ZTc2MDk2MjY5Njc0OTZlNzQ1Mzc1NjIwMDA1MDM2NTZlNzYwYTY3NjU3NDQ3NjE3MzRjNjU2Njc0MDAxMTAzNjU2ZTc2MGY2MzZjNjU2MTZlNTI2NTc0NzU3MjZlNDQ2MTc0NjEwMDAyMDM2NTZlNzYwZjZkNDI3NTY2NjY2NTcyNTM2NTc0NDI3OTc0NjU3MzAwMDkwMzY1NmU3NjA5NjI2OTY3NDk2ZTc0NDM2ZDcwMDAwNDAzNjU2ZTc2MGE2MjY5Njc0OTZlNzQ1NDQ0Njk3NjAwMDUwMzY1NmU3NjA5NjI2OTY3NDk2ZTc0NGQ3NTZjMDAwNTAzNjU2ZTc2MTk2ZDQyNzU2NjY2NjU3MjQ2NzI2ZjZkNDI2OTY3NDk2ZTc0NTU2ZTczNjk2NzZlNjU2NDAwMDQwMzY1NmU3NjE3NmQ0Mjc1NjY2NjY1NzI1NDZmNDI2OTY3NDk2ZTc0NTU2ZTczNjk2NzZlNjU2NDAwMDQwMzY1NmU3NjA5NjI2OTY3NDk2ZTc0NTA2Zjc3MDAwNTAzNjU2ZTc2MTQ2ZDQyNzU2NjY2NjU3MjQzNmY3MDc5NDI3OTc0NjU1MzZjNjk2MzY1MDAwYTAzNjU2ZTc2MTI2ZDQyNzU2NjY2NjU3MjUzNzQ2ZjcyNjE2NzY1NGM2ZjYxNjQwMDA0MDM2NTZlNzYxMzZkNDI3NTY2NjY2NTcyNTM3NDZmNzI2MTY3NjU1Mzc0NmY3MjY1MDAwNDAzNjU2ZTc2MGU2MzY4NjU2MzZiNGU2ZjUwNjE3OTZkNjU2ZTc0MDAwMjAzNjU2ZTc2MTc2ZDYxNmU2MTY3NjU2NDQ3NjU3NDQyNjE2MzZiNTQ3MjYxNmU3MzY2NjU3MjczMDAwMDAzNjU2ZTc2MGY2ZDYxNmU2MTY3NjU2NDU3NzI2OTc0NjU0YzZmNjcwMDAwMDM2NTZlNzYxNDYyNjk2NzQ5NmU3NDQ2Njk2ZTY5NzM2ODU1NmU3MzY5Njc2ZTY1NjQwMDA2MDM2NTZlNzYwNjY2Njk2ZTY5NzM2ODAwMDAwMzY1NmU3NjBhNjI2OTY3NDk2ZTc0NTM2OTY3NmUwMDAxMDM2NTZlNzYxMzZkNDI3NTY2NjY2NTcyNDc2NTc0NDI3OTc0NjU1MzZjNjk2MzY1MDAwYTAzZDMwMWQxMDEwMTAzMDgwMjAxMTIwMTA0MDAwMTA3MDYwNjA2MDAwNDAxMDkwMTAwMDEwMDAwMDAwMDEzMDMwMDE0MDMwMzAzMDIwMzAxMDcwNDAwMDMwOTAxMDkwOTA5MDAwNzA3MDEwMDA2MDYwMTA2MDYwYzA1MDEwODA1MDAwMTBiMDAwODA3MTUwNzA4MDgwMDBhMDAxNjAxMDEwNjAxMDAwMDAwMDUwMDAwMDEwMzAwMDYwMTAwMTcwNTA1MGEwNzA0MDAwNDBhMDAwNDA0MDQwMDA0MDQwNDA0MDQwMTAxMDAwNDBkMDcwNzA3MDgwYTAwMDUwMTAxMDUwNTA2MDEwMTAwMGIwYjAxMDEwMTAxMDEwNTBkMDEwNTAwMDAwMDA1MDUwMDAwMDAwMDAwMGMwNzA3MDcwNzAwMDAwODE4MDMwMzAzMDAwMzAzMDAwMTA0MDcwMzAzMDMwMzAxMDEwMzAzMDMwMzAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwODA4MDUwMzAxMDAwMzA2MTYwMzdmMDE0MTgwODAwODBiN2YwMDQxZTlkYjA4MGI3ZjAwNDFmMGRiMDgwYjA3YzcwNTIwMDY2ZDY1NmQ2ZjcyNzkwMjAwMDQ2OTZlNjk3NDAwZGIwMTA3NzU3MDY3NzI2MTY0NjUwMGRjMDEwNzY0NjU3MDZmNzM2OTc0MDBkZDAxMDg3NzY5NzQ2ODY0NzI2MTc3MDBkZTAxMDg2MzZmNmQ3MDZmNzU2ZTY0MDBkZjAxMGU2NzY1NzQ1NDZmNzQ2MTZjNDE3MzczNjU3NDczMDBlMDAxMGY2NzY1NzQ1NjYxNzU2Yzc0NDE2NDY0NzI2NTczNzMwMGUxMDExNzY3NjU3NDQxNzM3MzY1NzQ1NDZmNmI2NTZlNDk2NDY1NmU3NDY5NjY2OTY1NzIwMGUyMDExZDY3NjU3NDRkNmY2ZTY1Nzk0ZDYxNzI2YjY1NzQ1NDZmNmI2NTZlNDk2NDY1NmU3NDY5NjY2OTY1NzIwMGUzMDEyMjY3NjU3NDRkNmY2ZTY1Nzk0ZDYxNzI2YjY1NzQ1NTZlNjQ2NTcyNmM3OTY5NmU2NzQ5NjQ2NTZlNzQ2OTY2Njk2NTcyMDBlNDAxMWY2NzY1NzQ0MjZmNmY3Mzc0NjU3MjUzNzQ2MTZiNjU2NDU0NmY2YjY1NmU0OTY0NjU2ZTc0Njk2NjY5NjU3MjAwZTUwMTE0Njc2NTc0NDM2ZjZlNzQ3MjZmNmM2YzY1NzI0MTY0NjQ3MjY1NzM3MzAwZTYwMTE1Njc2NTc0NGQ2ZjZlNjU3OTRkNjE3MjZiNjU3NDQxNjQ2NDcyNjU3MzczMDBlNzAxMWQ2NzY1NzQ1NzcyNjE3MDcwNjU2NDQ1Njc2YzY0NDM2ZjZlNzQ3MjYxNjM3NDQxNjQ2NDcyNjU3MzczMDBlODAxMWQ2NzY1NzQ1NzcyNjE3MDcwNjU2NDQ1Njc2YzY0NTQ2ZjZiNjU2ZTQ5NjQ2NTZlNzQ2OTY2Njk2NTcyMDBlOTAxMTE2NzY1NzQ0MjZmNmY3Mzc0NjU3MjQxNjQ2NDcyNjU3MzczMDBlYTAxMTk2NzY1NzQ0MzZmNmQ3MDZmNzU2ZTY0NTg0NTc4NjM2ODYxNmU2NzY1NTM3NzYxNzA3MzAwZWIwMTE3Njc2NTc0NDM2ZjZkNzA2Zjc1NmU2NDQxNzM2ODczNzc2MTcwNTM3NzYxNzA3MzAwZWMwMTE2Njc2NTc0NDM2ZjZkNzA2Zjc1NmU2NDQ2NjU2NTczNTA2NTcyNjM2NTZlNzQwMGVkMDExOTY3NjU3NDUwNjU3MjY2NmY3MjZkNjE2ZTYzNjU0NjY1NjU3MzUwNjU3MjYzNjU2ZTc0MDBlZTAxMGU3Mzc0NjE2YjY1NDk2ZTQyNmY2ZjczNzQ2NTcyMDBlZjAxMWI3MjY1NjI2MTZjNjE2ZTYzNjU1MDZmNzI3NDY2NmY2YzY5NmY0OTZlNDI2ZjZmNzM3NDY1NzIwMGYwMDExMjc1NmU3Mzc0NjE2YjY1NDY3MjZmNmQ0MjZmNmY3Mzc0NjU3MjAwZjEwMTE4NjM2YzYxNjk2ZDRkNzU2Yzc0Njk3MDZjNjU0NjcyNmY2ZDQyNmY2ZjczNzQ2NTcyMDBmMjAxMTk3MzY1NzQ1MDY1NzI2NjZmNzI2ZDYxNmU2MzY1NDY2NTY1NzM1MDY1NzI2MzY1NmU3NDAwZjMwMTE2NzM2NTc0NDM2ZjZkNzA2Zjc1NmU2NDQ2NjU2NTczNTA2NTcyNjM2NTZlNzQwMGY0MDExMDczNjU3NDQzNmY2ZDcwNmY3NTZlNjQ1Mzc3NjE3MDczMDBmNTAxMGQ2NzY1NzQ0ZTYxNzQ3NTcyNjE2YzQxNTA1OTAwZjYwMTA4NjM2MTZjNmM0MjYxNjM2YjAwZjcwMTBhNWY1ZjY0NjE3NDYxNWY2NTZlNjQwMzAxMGI1ZjVmNjg2NTYxNzA1ZjYyNjE3MzY1MDMwMjBhOWFhOTAxZDEwMTE2MDEwMTdmMTAyYTIyMDE0MjAwMTAwMTIwMDEyMDAxMjAwMDEwMDIyMDAxMGIxOTAxMDE3ZjQxYzg4ZDA4NDFjODhkMDgyODAyMDA0MTAxNmIyMjAwMzYwMjAwMjAwMDBiMmUwMDAyNDAyMDAxMjAwMjRkMDQ0MDIwMDIyMDA0NGQwZDAxMTAyYzAwMGIxMDJjMDAwYjIwMDAyMDAyMjAwMTZiMzYwMjA0MjAwMDIwMDEyMDAzNmEzNjAyMDAwYjBiMDA0MWI4OGQwODQxMGUxMDAzMDAwYjEzMDEwMTdmMTAyYTIyMDEyMDAwYWQ0MmZmMDE4MzEwMDEyMDAxMGIyMTAxMDE3ZjEwMmEyMTAxMjAwMDQyMDA1MzA0NDA0MWIyODUwODQxMTExMDAzMDAwYjIwMDEyMDAwMTAwMTIwMDEwYjBmMDEwMTdmMTAwNDIyMDEyMDAwMTAwNTFhMjAwMTBiMGIwMDIwMDAyMDAxMTAwNjQxMDA0YTBiMmQwMTAxN2YyMzAwNDEyMDZiMjIwMjI0MDAyMDAyMjAwMDEwMzI0MWMwODAwODQxMDgxMDMzMjAwMjIwMDEzNjAyMTgyMDAyMTAzNDIwMDI0MTIwNmEyNDAwMGIxOTAwMjAwMDQxZmVmZmZmZmYwNzQ2MDQ0MDQxYzg4MDA4NDExOTEwMDMwMDBiMjAwMDBiMmEwMDIwMDIyMDAzMTA0ZDIxMDIxMDQzMjEwMzIwMDA0MjdmMzcwMzA4MjAwMDIwMDMzNjAyMDQyMDAwMjAwMjM2MDIwMDIwMDAyMDAxMzYwMjEwMGI3ZDAxMDM3ZjIzMDA0MTEwNmIyMjAxMjQwMDIwMDAyOTAzMDgxMDcxMjAwMDI4MDIxMDIwMDAyODAyMTgyMDAwMjgwMjAwMjAwMDI4MDIwNDEwNDUyMTAyMTAxNzQxMDAyMTAwMjAwMjEwMTIyMTAzMjAwMTQxMDAzNjAyMGMyMDAxMjAwMjM2MDIwNDIwMDEyMDAzNDEwMjc2MjIwMjM2MDIwODAzNDAyMDAwMjAwMjRmNDUwNDQwMjAwMTQxMDQ2YTEwNzUxYTIwMDEyODAyMDgyMTAyMjAwMTI4MDIwYzIxMDAwYzAxMGIwYjIwMDE0MTEwNmEyNDAwMGIzNjAxMDI3ZjIzMDA0MTEwNmIyMjAxMjQwMDIwMDE0MTA4NmExMDM2MjAwMTI4MDIwODIxMDIyMDAwMjAwMTJkMDAwYzQxMDE3MTNhMDAwNDIwMDAyMDAyMzYwMjAwMjAwMTQxMTA2YTI0MDAwYjZkMDEwMjdmMjMwMDQxMTA2YjIyMDEyNDAwMjAwMDAyN2Y0MWUwZGIwODJkMDAwMDIyMDI0NTA0NDA0MWUwZGIwODQxMDEzYTAwMDA0MWRjZGIwODQxMDAzNjAyMDAyMDAxNDEwODZhNDEwMDEwOWYwMTIwMDEyODAyMDgyMDAxMjgwMjBjNDFiODhkMDg0MTAwMTA1NzEwNDMwYzAxMGI0MWI4OGQwODQxMDAxMDRkMGIzNjAyMDAyMDAwMjAwMjQxMDE3MzNhMDAwNDIwMDE0MTEwNmEyNDAwMGIwYjAwMjAwMDIwMDExMDM4MTAwNzFhMGI0OTAxMDE3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDIyMDAxM2EwMDBjMjAwMjIwMDAzNjAyMDgyMDAyNDEwODZhMTBhNTAxMjAwMjI4MDIwODIwMDIyZDAwMGMwNDQwNDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGIyMDAyNDExMDZhMjQwMDBiMGUwMDIwMDA0MThhODUwODQxMGIxMDNhMTAzYjBiMTMwMDIwMDAyMDAwMjAwMTIwMDIxMDUyMjAwMTIwMDIxMDg1MDEwYjBkMDAyMDAwMTAyYTIyMDAxMDFkMWEyMDAwMGIwYTAwMjAwMDEwM2QyMDAxMTAzZTBiMGYwMTAxN2YxMDJhMjIwMTIwMDAxMDFjMWEyMDAxMGI1MTAxMDI3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDIyMDAwMTAxMjIyMDM0MTE4NzQyMDAzNDE4MGZlMDM3MTQxMDg3NDcyMjAwMzQxMDg3NjQxODBmZTAzNzEyMDAzNDExODc2NzI3MjM2MDIwYzIwMDEyMDAyNDEwYzZhNDEwNDEwYTMwMTIwMDEyMDAwMTBiZDAxMjAwMjQxMTA2YTI0MDAwYjBhMDAyMDAwMTAzZDIwMDExMDQwMGI1MTAxMDI3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDIyMDAwMTAxMjIyMDM0MTE4NzQyMDAzNDE4MGZlMDM3MTQxMDg3NDcyMjAwMzQxMDg3NjQxODBmZTAzNzEyMDAzNDExODc2NzI3MjM2MDIwYzIwMDEyMDAyNDEwYzZhNDEwNDEwMGYxYTIwMDEyMDAwMTA4YjAxMjAwMjQxMTA2YTI0MDAwYjA5MDAyMDAwMjAwMTEwMDMwMDBiNTAwMTA0N2YxMDQzMjEwNjEwNDMyMTA3MjMwMDQxMTA2YjIyMDQyNDAwMTA0MzIxMDUyMDAxMTAyZjIxMDEyMDA0MjAwMzEwMjkzNjAyMGMyMDA0MjAwMjM3MDMwMDIwMDQyMDAxMzYwMjA4MjAwNTIwMDQxMDQ0MjAwMDIwMDU0MjAwMjAwNjIwMDcxMDA4MWEyMDA0NDExMDZhMjQwMDBiMTMwMTAxN2YxMDJhMjIwMDQxYjg4ZDA4NDEwMDEwMTgxYTIwMDAwYmQyMDEwMjAyN2YwMTdlMjMwMDQxMTA2YjIyMDMyNDAwMjAwMzIwMDEyODAyMDgyMjAyNDExODc0MjAwMjQxODBmZTAzNzE0MTA4NzQ3MjIwMDI0MTA4NzY0MTgwZmUwMzcxMjAwMjQxMTg3NjcyNzIzNjAyMDAyMDAzMjAwMTI4MDIwYzIyMDI0MTE4NzQyMDAyNDE4MGZlMDM3MTQxMDg3NDcyMjAwMjQxMDg3NjQxODBmZTAzNzEyMDAyNDExODc2NzI3MjM2MDIwYzIwMDMyMDAxMjkwMzAwMjIwNDQyMzg4NjIwMDQ0MjgwZmUwMzgzNDIyODg2ODQyMDA0NDI4MDgwZmMwNzgzNDIxODg2MjAwNDQyODA4MDgwZjgwZjgzNDIwODg2ODQ4NDIwMDQ0MjA4ODg0MjgwODA4MGY4MGY4MzIwMDQ0MjE4ODg0MjgwODBmYzA3ODM4NDIwMDQ0MjI4ODg0MjgwZmUwMzgzMjAwNDQyMzg4ODg0ODQ4NDM3MDIwNDIwMDAyMDAzNDExMDEwMGYxYTIwMDM0MTEwNmEyNDAwMGIxNTAwMjAwMDIwMDEyMDAyMjAwMzIwMDQxMDJhMjIwMTEwMDkxYTIwMDEwYjBjMDEwMTdmMTAyYTIyMDAxMDBhMjAwMDBiMGMwMTAxN2YxMDJhMjIwMDEwMGIyMDAwMGIwYzAxMDE3ZjEwMmEyMjAwMTAwYzIwMDAwYjE1MDAxMDQ4MTA0NjEwMzAwNDQwMGYwYjQxOTI4ZDA4NDEyNDEwMDMwMDBiMmIwMTAxN2Y0MWU4ZGIwODJkMDAwMDIyMDAwNDQwNDE2YjQxZmZmZmZmZmYwNzIwMDAxYjBmMGI0MWU4ZGIwODQxMDEzYTAwMDA0MTZiMTAwZDQxNmIwYjBkMDAyMDAwMTAyYTIyMDAxMDBlMWEyMDAwMGIyZTAxMDE3ZjQxZDU4MzA4NDExNzEwNGQyMjA0MjAwMDIwMDExMDBmMWEyMDA0NDFlYzgzMDg0MTAzMTAwZjFhMjAwNDIwMDIyMDAzMTAwZjFhMjAwNDEwMDAwMDBiMTEwMTAxN2YxMDJhMjIwMjIwMDAyMDAxMTAxODFhMjAwMjBiNDYwMTAxN2YyMzAwNDExMDZiMjIwMjI0MDAyMDAyMjAwMTQxMTg3NDIwMDE0MTgwZmUwMzcxNDEwODc0NzIyMDAxNDEwODc2NDE4MGZlMDM3MTIwMDE0MTE4NzY3MjcyMzYwMjBjMjAwMDIwMDI0MTBjNmE0MTA0MTAwZjFhMjAwMjQxMTA2YTI0MDAwYjBlMDEwMTdmNDEwMDEwMmEyMjAwMTAxMDIwMDAwYjFmMDAyMDAwMTA0YjIyMDAxMDEyNDEyMDQ3MDQ0MDIwMDEyMDAyNDFiMDg2MDg0MTEwMTA0YzAwMGIyMDAwMGJkOTAzMDEwOTdmMjMwMDQxNDA2YTIyMDEyNDAwMjAwMDEwNGIyMTAyMTA0MzIxMDYyMDAyMTAxMjIxMDAyMDAxNDEyNDZhNDEwMDNhMDAwMDIwMDE0MTIwNmEyMDAwMzYwMjAwMjAwMTIwMDIzNjAyMWMyMDAxMjAwMDM2MDIxODIwMDE0MTAwMzYwMjE0NDEwMDIxMDIwMzdmMjAwMDIwMDI0NjA0N2YyMDAxMmQwMDI0MDQ0MDQxZGNkYjA4NDEwMDM2MDIwMDQxZTBkYjA4NDEwMDNhMDAwMDBiMjAwMTQxNDA2YjI0MDAyMDA2MDUyMDAxNDExNDZhMjIwMDQxOTc4NzA4NDExNjEwM2EyMTA0MjAwMDQxOTc4NzA4NDExNjEwNTIyMTAwMTA0MzIxMDMwMzQwMjAwMDA0NDAyMDAxNDExNDZhMjIwNTQxOTc4NzA4NDExNjEwNTIyMTA3MjAwNTQxOTc4NzA4NDExNjEwNTMyMTA4MjAwNTQxOTc4NzA4NDExNjEwM2EyMTA5NDEwMDIxMDIwMjQwMDI0MDAyNDAyMDA1NDE5Nzg3MDg0MTE2MTA1NDQxZmYwMTcxMGUwMjAyMDEwMDBiNDE5Nzg3MDg0MTE2NDFlZDg2MDg0MTBkMTA0YzAwMGI0MTAxMjEwMjBiMjAwMTIwMDIzYTAwMzQyMDAxMjAwOTM2MDIzMDIwMDEyMDA4MzYwMjJjMjAwMTIwMDczNjAyMjgyMDAzMjAwMTQxMjg2YTEwNTUyMDAwNDEwMTZiMjEwMDBjMDEwYjBiMjAwMTQyMDAzNzAzMjgyMDAxMjAwNDQxMTg3NDIwMDQ0MTgwZmUwMzcxNDEwODc0NzIyMDA0NDEwODc2NDE4MGZlMDM3MTIwMDQ0MTE4NzY3MjcyMzYwMjNjMjAwMTQxMDg2YTIwMDE0MTI4NmEyMjAwNDEwMDQxMDQxMDU2MjAwMTI4MDIwODIwMDEyODAyMGMyMDAxNDEzYzZhMjIwMjQxMDQxMDU3MjAwMTIwMDM0MTE4NzQyMDAzNDE4MGZlMDM3MTQxMDg3NDcyMjAwMzQxMDg3NjQxODBmZTAzNzEyMDAzNDExODc2NzI3MjM2MDIzYzIwMDEyMDAwNDEwNDQxMDgxMDU2MjAwMTI4MDIwMDIwMDEyODAyMDQyMDAyNDEwNDEwNTcyMDA2MjAwMDQxMDgxMDBmMWEyMDAxMjgwMjE0MjEwMjIwMDEyODAyMTgyMTAwMGMwMTBiMGIwYjM3MDIwMTdmMDE3ZTIzMDA0MTEwNmIyMjAzMjQwMDIwMDM0MTAwMzYwMjBjMjAwMDIwMDM0MTBjNmEyMjAwNDEwNDIwMDEyMDAyMTBjNTAxMjAwMDQxMDQxMGIxMDEyMDAzNDExMDZhMjQwMGE3MGIwZDAwMjAwMDQxMjAyMDAxMjAwMjEwODUwMTBiMzAwMTAxN2YyMzAwNDExMDZiMjIwMzI0MDAyMDAzNDEwMDNhMDAwZjIwMDAyMDAzNDEwZjZhNDEwMTIwMDEyMDAyMTBjNTAxMjAwMzJkMDAwZjIwMDM0MTEwNmEyNDAwMGJmNjAyMDEwNTdmMjMwMDQxZDAwMDZiMjIwMjI0MDAyMDAyNDIwMDM3MDAzNTIwMDI0MjAwMzcwMzMwMjAwMjIwMDEyODAyMDAyMjAzNDExODc0MjAwMzQxODBmZTAzNzE0MTA4NzQ3MjIwMDM0MTA4NzY0MTgwZmUwMzcxMjAwMzQxMTg3NjcyNzIzNjAyNDAyMDAyNDEyODZhMjAwMjQxMzA2YTIyMDU0MTAwNDEwNDEwOWIwMTIwMDIyODAyMjgyMDAyMjgwMjJjMjAwMjQxNDA2YjIyMDQ0MTA0MTA1NzIwMDI0MWM4MDA2YTQxMDAzYTAwMDAyMDAyNDIwMDM3MDM0MDIwMDIyMDAxMjgwMjA0MjIwMzQxMTg3NDIwMDM0MTgwZmUwMzcxNDEwODc0NzIyMDAzNDEwODc2NDE4MGZlMDM3MTIwMDM0MTE4NzY3MjcyMzYwMjRjMjAwMjQxMjA2YTIwMDQ0MTAwNDEwNDEwOWMwMTIwMDIyODAyMjAyMDAyMjgwMjI0MjAwMjQxY2MwMDZhMjIwNjQxMDQxMDU3MjAwMjIwMDE0MTA4NmEyODAyMDAyMjAzNDExODc0MjAwMzQxODBmZTAzNzE0MTA4NzQ3MjIwMDM0MTA4NzY0MTgwZmUwMzcxMjAwMzQxMTg3NjcyNzIzNjAyNGMyMDAyNDExODZhMjAwNDQxMDQ0MTA4MTA5YzAxMjAwMjI4MDIxODIwMDIyODAyMWMyMDA2NDEwNDEwNTcyMDAyMjAwMTQxMGM2YTJkMDAwMDNhMDA0YzIwMDI0MTEwNmEyMDA0NDEwODQxMDkxMDljMDEyMDAyMjgwMjEwMjAwMjI4MDIxNDIwMDY0MTAxMTA1NzIwMDI0MTA4NmEyMDA1NDEwNDQxMGQxMDliMDEyMDAyMjgwMjA4MjAwMjI4MDIwYzIwMDQ0MTA5MTA1NzIwMDAyMDA1NDEwZDEwMGYxYTIwMDI0MWQwMDA2YTI0MDAwYjBmMDAyMDAwMjAwMTIwMDIyMDAzNDEwODEwZjkwMTBiYjUwMjAxMDY3ZjIwMDEyMDAzNDYwNDQwMjAwMTIyMDM0MTEwNGYwNDQwMjAwMDQxMDAyMDAwNmI0MTAzNzEyMjA0NmEyMTA1MjAwNDA0NDAyMDAyMjEwMTAzNDAyMDAwMjAwMTJkMDAwMDNhMDAwMDIwMDE0MTAxNmEyMTAxMjAwMDQxMDE2YTIyMDAyMDA1NDkwZDAwMGIwYjIwMDUyMDAzMjAwNDZiMjIwMzQxN2M3MTIyMDY2YTIxMDAwMjQwMjAwMjIwMDQ2YTIyMDQ0MTAzNzEwNDQwMjAwNjQxMDA0YzBkMDEyMDA0NDEwMzc0MjIwMTQxMTg3MTIxMDcyMDA0NDE3YzcxMjIwODQxMDQ2YTIxMDI0MTAwMjAwMTZiNDExODcxMjEwOTIwMDgyODAyMDAyMTAxMDM0MDIwMDUyMDAxMjAwNzc2MjAwMjI4MDIwMDIyMDEyMDA5NzQ3MjM2MDIwMDIwMDI0MTA0NmEyMTAyMjAwNTQxMDQ2YTIyMDUyMDAwNDkwZDAwMGIwYzAxMGIyMDA2NDEwMDRjMGQwMDIwMDQyMTAyMDM0MDIwMDUyMDAyMjgwMjAwMzYwMjAwMjAwMjQxMDQ2YTIxMDIyMDA1NDEwNDZhMjIwNTIwMDA0OTBkMDAwYjBiMjAwMzQxMDM3MTIxMDMyMDA0MjAwNjZhMjEwMjBiMjAwMzA0NDAyMDAwMjAwMzZhMjEwMTAzNDAyMDAwMjAwMjJkMDAwMDNhMDAwMDIwMDI0MTAxNmEyMTAyMjAwMDQxMDE2YTIyMDAyMDAxNDkwZDAwMGIwYjBmMGIxMDJjMDAwYmEyMDMwMTA3N2YyMzAwNDE0MDZhMjIwMTI0MDAyMDAwMTA0YjIxMDIxMDQzMjEwNTIwMDIxMDEyMjEwMDIwMDE0MTJjNmE0MTAwM2EwMDAwMjAwMTQxMjg2YTIwMDAzNjAyMDAyMDAxMjAwMjM2MDIyNDIwMDEyMDAwMzYwMjIwMjAwMTQxMDAzNjAyMWM0MTAwMjEwMjAzN2YyMDAwMjAwMjQ2MDQ3ZjIwMDEyZDAwMmMwNDQwNDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGIyMDAxNDE0MDZiMjQwMDIwMDUwNTIwMDE0MTFjNmEyMjAwNDFhZDg3MDg0MTE4MTAzYTIxMDMyMDAwNDFhZDg3MDg0MTE4MTA1MjIxMDAxMDQzMjEwMjAzNDAyMDAwMDQ0MDIwMDE0MTFjNmEyMjA0NDFhZDg3MDg0MTE4MTA1MjIxMDYyMDA0NDFhZDg3MDg0MTE4MTA1MzIxMDcyMDA0NDFhZDg3MDg0MTE4MTAzYTIxMDQyMDAxMjAwNjM2MDIzODIwMDEyMDA0MzYwMjM0MjAwMTIwMDczNjAyMzAyMDAyMjAwMTQxMzA2YTEwNTkyMDAwNDEwMTZiMjEwMDBjMDEwYjBiMjAwMTQyMDAzNzAzMzAyMDAxMjAwMzQxMTg3NDIwMDM0MTgwZmUwMzcxNDEwODc0NzIyMDAzNDEwODc2NDE4MGZlMDM3MTIwMDM0MTE4NzY3MjcyMzYwMjNjMjAwMTQxMTA2YTIwMDE0MTMwNmEyMjAwNDEwMDQxMDQxMDU2MjAwMTI4MDIxMDIwMDEyODAyMTQyMDAxNDEzYzZhMjIwMzQxMDQxMDU3MjAwMTIwMDI0MTE4NzQyMDAyNDE4MGZlMDM3MTQxMDg3NDcyMjAwMjQxMDg3NjQxODBmZTAzNzEyMDAyNDExODc2NzI3MjM2MDIzYzIwMDE0MTA4NmEyMDAwNDEwNDQxMDgxMDU2MjAwMTI4MDIwODIwMDEyODAyMGMyMDAzNDEwNDEwNTcyMDA1MjAwMDQxMDgxMDBmMWEyMDAxMjgwMjFjMjEwMjIwMDEyODAyMjAyMTAwMGMwMTBiMGIwYmI4MDIwMTA0N2YyMzAwNDE0MDZhMjIwMjI0MDAyMDAyNDEyODZhNDEwMDM2MDIwMDIwMDI0MjAwMzcwMzIwMjAwMjIwMDEyODAyMDgyMjAzNDExODc0MjAwMzQxODBmZTAzNzE0MTA4NzQ3MjIwMDM0MTA4NzY0MTgwZmUwMzcxMjAwMzQxMTg3NjcyNzIzNjAyMzAyMDAyNDExODZhMjAwMjQxMjA2YTIyMDU0MTAwNDEwNDEwOWEwMTIwMDIyODAyMTgyMDAyMjgwMjFjMjAwMjQxMzA2YTIyMDQ0MTA0MTA1NzIwMDI0MjAwMzcwMzMwMjAwMjIwMDEyODAyMDAyMjAzNDExODc0MjAwMzQxODBmZTAzNzE0MTA4NzQ3MjIwMDM0MTA4NzY0MTgwZmUwMzcxMjAwMzQxMTg3NjcyNzIzNjAyM2MyMDAyNDExMDZhMjAwNDQxMDA0MTA0MTA1NjIwMDIyODAyMTAyMDAyMjgwMjE0MjAwMjQxM2M2YTIyMDM0MTA0MTA1NzIwMDIyMDAxMjgwMjA0MjIwMTQxMTg3NDIwMDE0MTgwZmUwMzcxNDEwODc0NzIyMDAxNDEwODc2NDE4MGZlMDM3MTIwMDE0MTE4NzY3MjcyMzYwMjNjMjAwMjQxMDg2YTIwMDQ0MTA0NDEwODEwNTYyMDAyMjgwMjA4MjAwMjI4MDIwYzIwMDM0MTA0MTA1NzIwMDIyMDA1NDEwNDQxMGMxMDlhMDEyMDAyMjgwMjAwMjAwMjI4MDIwNDIwMDQ0MTA4MTA1NzIwMDAyMDA1NDEwYzEwMGYxYTIwMDI0MTQwNmIyNDAwMGIxNDAwMTAxMzIwMDA0NjA0NDAwZjBiNDE5Mjg0MDg0MTE5MTAwMzAwMGIwOTAwMjAwMDEwNWMxMDA3MWEwYjFkMDAyMDAwMTBhNzAxMjIwMDEwMTI0MTIwNDcwNDQwNDFiMDg2MDg0MTEwMTA4ODAxMDAwYjIwMDAwYjBhMDAyMDAwMTBhNzAxMTAwNzFhMGIwODAwMjAwMDEwNWYxMDE0MGI2MTAyMDI3ZjAxN2UyMzAwNDExMDZiMjIwMTI0MDAyMDAxNDIwMDM3MDMwODIwMDAxMGE3MDEyMjAwMTAxMjIyMDI0MTA5NGYwNDQwNDE5NTg1MDg0MTBlMTA4ODAxMDAwYjIwMDEyMDAxNDEwODZhMjAwMjEwYjAwMTIwMDA0MTAwMjAwMTI4MDIwMDIyMDAyMDAxMjgwMjA0MjIwMjEwOGEwMTFhMjAwMDIwMDIxMGIxMDEyMDAxNDExMDZhMjQwMDBiMWYwMDIwMDAyMDAxMjAwMjEwMTUyMDAwMTA2MTQxZmYwMTcxMDQ0MDBmMGI0MWFiODQwODQxMzAxMDAzMDAwYjE1MDA0MTAyNDEwMTIwMDAxMDI3MjIwMDFiNDEwMDIwMDA0MTAwNGUxYjBiZjgwMTAxMDQ3ZjIzMDA0MWQwMDA2YjIyMDUyNDAwMjAwNTIwMDQzNjAyMjgyMDA1NDEyMDZhNDFkYjg0MDg0MTE0MTA2MzIwMDUyODAyMjAyMTA3MjAwNTI4MDIyNDIyMDYyMDAzMTA2NDIwMDQxMDY1MjEwMzEwNDMyMjA4MjAwM2FkMTA2NjIwMDYyMDA4MTA0ZTIwMDUyMDA0MTAxMjM2MDIzNDIwMDU0MTAwMzYwMjMwMjAwNTIwMDU0MTI4NmEzNjAyMmMwMzQwMjAwNTQxMzg2YTIwMDU0MTJjNmExMDY3MjAwNTI5MDMzODUwMDQ0MDIwMDUyMDA3MjAwNjIwMDEyMDAyMTA2ODIwMDUyODAyMDQyMTAxMjAwMDIwMDUyODAyMDAzNjAyMDAyMDAwMjAwMTM2MDIwNDIwMDU0MWQwMDA2YTI0MDAwNTIwMDUyODAyNGMyMTAzMjAwNTQxMTg2YTIwMDcyMDA2MjAwNTI4MDI0ODEwNjkyMDA1NDExMDZhMjAwNTI4MDIxODIwMDUyODAyMWMyMDA1MjkwMzQwMTA2YTIwMDU0MTA4NmEyMDA1MjgwMjEwMjAwNTI4MDIxNDIwMDMxMDZiMjAwNTI4MDIwYzIxMDYyMDA1MjgwMjA4MjEwNzBjMDEwYjBiMGIxODAwMjAwMTIwMDIxMDRkMjEwMTIwMDAxMDQzMzYwMjA0MjAwMDIwMDEzNjAyMDAwYjEwMDAxMDQzMWEyMDAwMjAwMTI4MDIwMDEwMmYxMDRlMGIwOTAwMjAwMDEwMTI0MTA0NzYwYjM4MDEwMTdmMjMwMDQxMTA2YjIyMDIyNDAwMjAwMjQyMDAzNzAzMDgyMDAyMjAwMTQxMDAyMDAyNDEwODZhMTA4MjAxMjAwMDIwMDIyODAyMDAyMDAyMjgwMjA0MTAxODFhMjAwMjQxMTA2YTI0MDAwYmE3MDEwMjA1N2YwMTdlMjMwMDQxMjA2YjIyMDIyNDAwMjAwMDIwMDEyODAyMDQyMjA0NDExMDZhMjIwNTIwMDEyODAyMDg0ZDA0N2UyMDAxMjgwMjAwMjAwMjQxMTA2YTQyMDAzNzAzMDAyMDAyNDIwMDM3MDMwODI4MDIwMDIwMDQyMDAyNDEwODZhMjIwMzQxMTAxMDZmMWEyMDAyNDEwMDM2MDIxYzIwMDMyMDAyNDExYzZhMjIwNjEwOTgwMTIxMDQyMDAzMjAwNjEwOTkwMTIxMDcyMDAwNDExNDZhMjAwMjQxMDg2YTIwMDI0MTFjNmExMDk4MDEzNjAyMDAyMDAwNDExMDZhMjAwNDM2MDIwMDIwMDAyMDA3MzcwMzA4MjAwMTIwMDUzNjAyMDQ0MjAxMDU0MjAwMGIzNzAzMDAyMDAyNDEyMDZhMjQwMDBiOTEwMTAxMDM3ZjIzMDA0MTEwNmIyMjA1MjQwMDAyNDAyMDAzMTAxMjQ1MGQwMDIwMDIyMDAzMTA2ZTIwMDQxMDEyMjEwNjQxMDAyMTAzMDM0MDIwMDM0MTA0NmEyMjA3MjAwNjRiMGQwMTIwMDU0MTAwMzYwMjBjMjAwNDIwMDMyMDA1NDEwYzZhNDEwNDEwNmYxYTIwMDIyMDA1MjgwMjBjMjIwMzQxMTg3NDIwMDM0MTgwZmUwMzcxNDEwODc0NzIyMDAzNDEwODc2NDE4MGZlMDM3MTIwMDM0MTE4NzY3MjcyMTA2ZTIwMDcyMTAzMGMwMDBiMDAwYjIwMDAyMDAyMzYwMjA0MjAwMDIwMDEzNjAyMDAyMDA1NDExMDZhMjQwMDBiMTYwMDIwMDIyMDAzMTA2ZTIwMDAyMDAyMzYwMjA0MjAwMDIwMDEzNjAyMDAwYjIwMDEwMTdmMTA0MzIyMDQyMDAzMTA2NjIwMDIyMDA0MTA0ZTIwMDAyMDAyMzYwMjA0MjAwMDIwMDEzNjAyMDAwYjE2MDAyMDAzMjAwMjEwNzAyMDAwMjAwMjM2MDIwNDIwMDAyMDAxMzYwMjAwMGJhMzAxMDEwMjdmMjMwMDQxMzA2YjIyMDUyNDAwMjAwNTQxMjg2YTQxZWY4NDA4NDEwZjEwNjMyMDA1NDEyMDZhMjAwNTI4MDIyODIwMDUyODAyMmMyMDA0MjgwMjA4MTA2OTIwMDU0MTE4NmEyMDA1MjgwMjIwMjAwNTI4MDIyNDIwMDQyOTAzMDAxMDZhMjAwNTQxMTA2YTIwMDUyODAyMTgyMDA1MjgwMjFjMjAwNDI4MDIwYzEwNmIyMDA1MjgwMjEwMjEwNDIwMDUyODAyMTQyMTA2MTA0MzFhMjAwNjIwMDMxMDJmMTA0ZTIwMDU0MTA4NmEyMDA0MjAwNjIwMDEyMDAyMTA2ODIwMDUyODAyMGMyMTAxMjAwMDIwMDUyODAyMDgzNjAyMDAyMDAwMjAwMTM2MDIwNDIwMDU0MTMwNmEyNDAwMGI3MTAxMDE3ZjIzMDA0MTIwNmIyMjA1MjQwMDIwMDU0MTE4NmE0MWZlODQwODQxMGMxMDYzMjAwNTQxMTA2YTIwMDUyODAyMTgyMDA1MjgwMjFjMjAwMzEwNjkyMDA1NDEwODZhMjAwNTI4MDIxMDIwMDUyODAyMTQyMDA0MTA2YjIwMDUyMDA1MjgwMjA4MjAwNTI4MDIwYzIwMDEyMDAyMTA2ODIwMDUyODAyMDQyMTAxMjAwMDIwMDUyODAyMDAzNjAyMDAyMDAwMjAwMTM2MDIwNDIwMDU0MTIwNmEyNDAwMGIwZDAwMTA0MzFhMjAwMDIwMDExMDJmMTA0ZTBiMGQwMDIwMDAyMDAxMjAwMjIwMDMxMDhhMDEwYjBkMDAxMDQzMWEyMDAxMjAwMDEwM2QxMDRlMGIwZjAwMjAwMDQyN2Y1MTA0N2UxMDE2MDUyMDAwMGIwYjMwMDEwMTdlMjAwMDI5MDMwODIyMDE0MjdmNTEwNDdlMTAxNjA1MjAwMTBiMjAwMDI4MDIxMDIwMDAyODAyMTgyMDAwMjgwMjAwMjAwMDI4MDIwNDEwNDUxMDE3MTA3MzBiM2IwMTAyN2YyMzAwNDExMDZiMjIwMTI0MDAyMDAwMTAxMjIxMDIyMDAxNDEwMDM2MDIwYzIwMDEyMDAwMzYwMjA0MjAwMTIwMDI0MTAyNzYzNjAyMDgyMDAxNDEwNDZhMTA3NTEwM2IyMDAxNDExMDZhMjQwMDBiMjQwMDIwMDAyOTAzMDgxMDcxMjAwMDI4MDIxMDIwMDAyODAyMTgyMDAwMjgwMjAwMjAwMDI4MDIwNDEwNDUxMDE3MTAxMjFhMGI3ZDAxMDM3ZjIzMDA0MTEwNmIyMjAxMjQwMDIwMDAyODAyMDgyMTAzMjAwMTQxMDAzNjAyMGMyMDAwMjgwMjAwMjAwMzQxMDI3NDIwMDE0MTBjNmE0MTA0MTA2ZjQ1MDQ0MDIwMDEyODAyMGMyMTAyMjAwMDIwMDM0MTAxNmEzNjAyMDgyMDAyNDExODc0MjAwMjQxODBmZTAzNzE0MTA4NzQ3MjIwMDI0MTA4NzY0MTgwZmUwMzcxMjAwMjQxMTg3NjcyNzIxMDJmMjAwMTQxMTA2YTI0MDAwZjBiNDE4YTg1MDg0MTBiNDFlZjgzMDg0MTExMTA0YzAwMGI5MDAyMDIwMjdmMDE3ZTIzMDA0MWQwMDA2YjIyMDIyNDAwMjAwMTI5MDMwODIyMDQ0MjdmNTEwNDdlMTAxNjA1MjAwNDBiMjAwMTI4MDIxMDIwMDEyODAyMTgyMDAxMjgwMjAwMjAwMTI4MDIwNDEwNDUyMTAxMTAxNzIwMDExMDEyMjEwMzIwMDI0MTAwMzYwMjE0MjAwMjIwMDEzNjAyMGMyMDAyMjAwMzQxMDI3NjM2MDIxMDIwMDI0MTBjNmExMDc1MjIwMzEwMTIyMTAxMjAwMjQxM2M2YTQxMDAzYTAwMDAyMDAyNDEzODZhMjAwMTM2MDIwMDIwMDIyMDAzMzYwMjM0MjAwMjIwMDEzNjAyMzAyMDAyNDEwMDM2MDIyYzIwMDI0MTQwNmIyMDAyNDEyYzZhMTA3NzIwMDIyODAyMzAyMDAyMjgwMjJjNDYwNDQwMjAwMjQxMjA2YTIyMDEyMDAyNDFjODAwNmEyOTAzMDAzNzAzMDAyMDAyMjAwMjI5MDM0MDM3MDMxODIwMDIyZDAwM2MwNDQwNDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGIyMDAwMjAwMjI5MDMxODM3MDMwMDIwMDA0MTA4NmEyMDAxMjkwMzAwMzcwMzAwMjAwMjQxZDAwMDZhMjQwMDBmMGI0MThhODUwODQxMGI0MTk1ODUwODQxMGUxMDRjMDAwYjMwMDIwMTdmMDE3ZTIwMDE0MThhODUwODQxMGIxMDNhMjEwMjIwMDExMGJlMDEyMTAzMjAwMDIwMDExMDM5MzYwMjBjMjAwMDIwMDIzNjAyMDgyMDAwMjAwMzM3MDMwMDBiMTAwMDEwNDMxYTIwMDAyMDAxMjgwMjAwMTAzZDEwNGUwYjBlMDAyMDAxNDUwNDQwMjAwMjIwMDAxMDcwMGIwYjgxMDEwMTA1N2YyMzAwNDExMDZiMjIwMzI0MDAxMDQzMTAyZjIxMDQyMDAxMjgwMjAwMTAxMjIxMDUwMzQwMjAwNTIwMDI0MTA0NmEyMjA2NGYwNDQwMjAwMzQxMDAzNjAyMGMyMDAxMjgwMjAwMjAwMjIwMDM0MTBjNmE0MTA0MTA2ZjFhMjAwMzI4MDIwYzIyMDI0MTE4NzQyMDAyNDE4MGZlMDM3MTQxMDg3NDcyMjAwMjQxMDg3NjQxODBmZTAzNzEyMDAyNDExODc2NzI3MjIwMDQxMDNmMjAwNjIxMDIwYzAxMGIwYjIwMDAyMDA0MTA0ZTIwMDM0MTEwNmEyNDAwMGI4MjAxMDEwNTdmMjMwMDQxMTA2YjIyMDMyNDAwMTA0MzEwMmYyMTA0MjAwMTI4MDIwMDEwMTIyMTA1MDM0MDIwMDUyMDAyNDEwNDZhMjIwNjRmMDQ0MDIwMDM0MTAwMzYwMjBjMjAwMTI4MDIwMDIwMDIyMDAzNDEwYzZhNDEwNDEwNmYxYTIwMDQyMDAzMjgwMjBjMjIwMjQxMTg3NDIwMDI0MTgwZmUwMzcxNDEwODc0NzIyMDAyNDEwODc2NDE4MGZlMDM3MTIwMDI0MTE4NzY3MjcyMTAwNTFhMjAwNjIxMDIwYzAxMGIwYjIwMDAyMDA0MTA0ZTIwMDM0MTEwNmEyNDAwMGI0ZDAxMDI3ZjIzMDA0MTIwNmIyMjAxMjQwMDEwN2QyMTAyMjAwMTQxMTA2YTIwMDA0MTEwNmEyOTAzMDAzNzAzMDAyMDAxNDEwODZhMjAwMDQxMDg2YTI5MDMwMDM3MDMwMDIwMDEyMDAyMzYwMjE4MjAwMTIwMDAyOTAzMDAzNzAzMDAyMDAxMTA3MjIwMDE0MTIwNmEyNDAwMGIwZTAxMDE3ZjEwMmEyMjAwNDIwMDEwMDEyMDAwMGI0ZjAxMDI3ZjIzMDA0MTIwNmIyMjAyMjQwMDEwN2QyMTAzMjAwMjQxMTA2YTIwMDE0MTEwNmEyOTAzMDAzNzAzMDAyMDAyNDEwODZhMjAwMTQxMDg2YTI5MDMwMDM3MDMwMDIwMDIyMDAzMzYwMjE4MjAwMjIwMDEyOTAzMDAzNzAzMDAyMDAwMjAwMjEwNzYyMDAyNDEyMDZhMjQwMDBiNGQwMTAyN2YyMzAwNDEyMDZiMjIwMTI0MDAxMDdkMjEwMjIwMDE0MTEwNmEyMDAwNDExMDZhMjkwMzAwMzcwMzAwMjAwMTQxMDg2YTIwMDA0MTA4NmEyOTAzMDAzNzAzMDAyMDAxMjAwMjM2MDIxODIwMDEyMDAwMjkwMzAwMzcwMzAwMjAwMTEwMzQyMDAxNDEyMDZhMjQwMDBiNzYwMjA1N2YwMTdlMjMwMDQxMTA2YjIyMDEyNDAwMTA3ZDIxMDIyMDAwMjgwMjEwMjEwMzIwMDAyODAyMDQyMTA0MjAwMDI4MDIwMDIxMDUyMDAwMjkwMzA4MjIwNjQyN2Y1MTA0N2UxMDE2MDUyMDA2MGIyMDAzMjAwMjIwMDUyMDA0MTA0NTIxMDAxMDE3MjAwMDEwMTIyMTAyMjAwMTQxMDAzNjAyMGMyMDAxMjAwMDM2MDIwNDIwMDEyMDAyNDEwMjc2MzYwMjA4MjAwMTQxMDQ2YTEwNzUxMDJmMjAwMTQxMTA2YTI0MDAwYjQ3MDEwMjdmMjMwMDQxMTA2YjIyMDIyNDAwMTA0MzIxMDMyMDAyNDIwMDM3MDMwODIwMDIyMDAxYWQ0MmZmMDE4MzQxMDEyMDAyNDEwODZhMTA4MjAxMjAwMzIwMDIyODAyMDAyMDAyMjgwMjA0MTAxODFhMjAwMDIwMDMxMDRlMjAwMjQxMTA2YTI0MDAwYjhmMDIwMjA0N2YwMTdlMjAwMzIwMDE0MjM4ODYyMDAxNDI4MGZlMDM4MzQyMjg4Njg0MjAwMTQyODA4MGZjMDc4MzQyMTg4NjIwMDE0MjgwODA4MGY4MGY4MzQyMDg4Njg0ODQyMDAxNDIwODg4NDI4MDgwODBmODBmODMyMDAxNDIxODg4NDI4MDgwZmMwNzgzODQyMDAxNDIzODg4MjIwODIwMDE0MjI4ODg0MjgwZmUwMzgzODQ4NDg0MzcwMDAwMDI0MDIwMDE1MDA0NDA0MWI4OGQwODIxMDMwYzAxMGIyMDAyMDQ0MDIwMDE0MjdmNTEwNDQwMjAwMzQxMDc2YTIxMDM0MTAxMjEwNDBjMDIwYjIwMDhhN2MwMjIwNTQxMDc3NTIxMDYyMDA1NDEwMDQ4MjEwNTBiMjAwNjQxZmYwMTcxMjEwNjAzNDAwMjQwMDI0MDIwMDQ0MTA4NDcwNDQwMjAwMzIwMDQ2YTJkMDAwMDIyMDcyMDA2NDYwZDAyMjAwMjQ1MjAwNzQxMDc3NjIwMDU0NjcyNDUwNDQwMjAwNDQxMDE2YjIyMDQ0MTA5NGYwZDAyMGIyMDAzMjAwNDZhMjEwMzQxMDgyMDA0NmIyMTA0MGMwNDBiMTAyYzAwMGIxMDJjMDAwYjIwMDQ0MTAxNmEyMTA0MGMwMDBiMDAwYjIwMDAyMDA0MzYwMjA0MjAwMDIwMDMzNjAyMDAwYmEzMDEwMjAzN2YwMTdlMjMwMDQxMTA2YjIyMDMyNDAwMDI3ZjIwMDIyOTAzMDA1MDA0NDAyMDAxMjgwMjEwMjEwNDIwMDMyMDAxMjgwMjAwMjAwMTI4MDIwNDIwMDIyODAyMDgyMDAyMjgwMjBjMTA2ZDIwMDMyODAyMDAyMTA1MjAwMzI4MDIwNDBjMDEwYjEwNDcyMTA0MjAwMzQxMDg2YTIwMDEyODAyMDAyMDAxMjgwMjA0MjAwMTI4MDIxMDIwMDIxMDZjMjAwMzI4MDIwODIxMDUyMDAzMjgwMjBjMGIyMTAyMjAwMTI5MDMwODIxMDYyMDAwMTA3ZDM2MDIxODIwMDAyMDA0MzYwMjEwMjAwMDIwMDYzNzAzMDgyMDAwMjAwMjM2MDIwNDIwMDAyMDA1MzYwMjAwMjAwMzQxMTA2YTI0MDAwYjNmMDEwMTdmMTA0MzIxMDMyMDAwMjAwMTI5MDMwMDM3MDMwMDIwMDA0MTEwNmEyMDAxNDExMDZhMjkwMzAwMzcwMzAwMjAwMDQxMDg2YTIwMDE0MTA4NmEyOTAzMDAzNzAzMDAyMDAzMjAwMjEwNDQyMDAwMjAwMzM2MDIxODBiNTIwMTAyN2YyMzAwNDExMDZiMjIwNDI0MDAyMDA0NDEwODZhMjAwMDI4MDIwODIwMDAyODAyMDAyMjA1MjAwMTEwODYwMTIwMDQyODAyMDg0MTAxNDYwNDQwMjAwNDI4MDIwYzIwMDAyMDAxMjAwNTZhMzYwMjAwMjAwNDQxMTA2YTI0MDAwZjBiMjAwMjIwMDM0MWEzODUwODQxMGYxMDRjMDAwYjFmMDAyMDAxMjAwMjIwMDMxMDA0MjIwMTEwMWYyMTAyMjAwMDIwMDEzNjAyMDQyMDAwMjAwMjQ1MzYwMjAwMGI0ZjAxMDM3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDI0MTA4NmEyMDAwMjgwMjA4MjAwMDI4MDIwMDIyMDMyMDAxMTA4NjAxMjAwMjI4MDIwODQxMDE0NjA0NDAyMDAyMjgwMjBjMjAwMDIwMDEyMDAzNmEzNjAyMDAyMDAyNDExMDZhMjQwMDBmMGI0MWEzODUwODQxMGYxMDg4MDEwMDBiMWEwMTAxN2Y0MWYxODUwODQxMTYxMDRkMjIwMjIwMDAyMDAxMTAwZjFhMjAwMjEwMDAwMDBiMTUwMDQxN2YyMDAwMjAwMTEwMTkyMjAwNDEwMDQ3MjAwMDQxMDA0ODFiMGIwZjAwMjAwMDIwMDEyMDAzMjAwMjEwMjg0MTAwNDcwYjA5MDAyMDAwMjAwMTEwMDUxYTBiMGMwMDIwMDAyMDAwMjAwMTEwMDIyMDAwMGIwYzAwMjAwMDIwMDAyMDAxMTAxYTIwMDAwYjBjMDAyMDAwMjAwMDIwMDExMDFiMjAwMDBiMGEwMDIwMDAyMDAwMjAwMTEwMDIwYjBjMDAyMDAwMjAwMDIwMDExMDYwMjAwMDBiMTAwMTAxN2YxMDJhMjIwMjIwMDAyMDAxMTAwMjIwMDIwYjEwMDEwMTdmMTAyYTIyMDIyMDAwMjAwMTEwMWIyMDAyMGIxMDAxMDE3ZjEwMmEyMjAyMjAwMDIwMDExMDYwMjAwMjBiMTkwMTAxN2YxMDJhMjEwMjQxNzIyMDAxYWQxMDAxMjAwMjIwMDA0MTcyMTAxZTIwMDIwYjBlMDEwMTdmMTA0MzIyMDEyMDAwMTA0NDIwMDEwYjRjMDEwMjdmMjMwMDQxMTA2YjIyMDEyNDAwMTA0MzIxMDIyMDAxMjAwMDQxMTg3NDIwMDA0MTgwZmUwMzcxNDEwODc0NzIyMDAwNDEwODc2NDE4MGZlMDM3MTIwMDA0MTE4NzY3MjcyMzYwMjBjMjAwMjIwMDE0MTBjNmE0MTA0MTAwZjFhMjAwMTQxMTA2YTI0MDAyMDAyMGI4NDAxMDIwNDdmMDE3ZTIzMDA0MTIwNmIyMjAyMjQwMDIwMDI0MTEwNmE0MjAwMzcwMzAwMjAwMjQyMDAzNzAzMDgyMDAxNDEwMDIwMDI0MTA4NmEyMjAzNDExMDEwNmYyMDAyNDEwMDM2MDIxYzIwMDMyMDAyNDExYzZhMjIwNDEwOTgwMTIxMDUyMDAzMjAwNDEwOTkwMTIxMDYyMDAyNDEwODZhMjAwMjQxMWM2YTEwOTgwMTIxMDMwNDQwNDFjMzg1MDg0MTFkMTAwMzAwMGIyMDAwMjAwMzM2MDIwYzIwMDAyMDA1MzYwMjA4MjAwMDIwMDYzNzAzMDAyMDAyNDEyMDZhMjQwMDBiNzQwMTAxN2YyMzAwNDExMDZiMjIwMjI0MDAyMDAyNDEwMDM2MDIwYzIwMDIyMDAwNDExMDIwMDEyODAyMDAyMjAwMjAwMDQxMDQ2YTIyMDAxMDlkMDEyMDAyNDEwYzZhNDEwNDIwMDIyODAyMDAyMDAyMjgwMjA0MTA1NzIwMDEyMDAwMzYwMjAwMjAwMjI4MDIwYzIxMDAyMDAyNDExMDZhMjQwMDIwMDA0MTE4NzQyMDAwNDE4MGZlMDM3MTQxMDg3NDcyMjAwMDQxMDg3NjQxODBmZTAzNzEyMDAwNDExODc2NzI3MjBiYTgwMTAyMDE3ZTAxN2YyMzAwNDExMDZiMjIwMzI0MDAyMDAzNDIwMDM3MDMwODIwMDMyMDAwNDExMDIwMDEyODAyMDAyMjAwMjAwMDQxMDg2YTIyMDAxMDlkMDEyMDAzNDEwODZhNDEwODIwMDMyODAyMDAyMDAzMjgwMjA0MTA1NzIwMDEyMDAwMzYwMjAwMjAwMzI5MDMwODIxMDIyMDAzNDExMDZhMjQwMDIwMDI0MjM4ODYyMDAyNDI4MGZlMDM4MzQyMjg4Njg0MjAwMjQyODA4MGZjMDc4MzQyMTg4NjIwMDI0MjgwODA4MGY4MGY4MzQyMDg4Njg0ODQyMDAyNDIwODg4NDI4MDgwODBmODBmODMyMDAyNDIxODg4NDI4MDgwZmMwNzgzODQyMDAyNDIyODg4NDI4MGZlMDM4MzIwMDI0MjM4ODg4NDg0ODQwYjBmMDAyMDAwMjAwMTIwMDIyMDAzNDEwYzEwZjkwMTBiMGYwMDIwMDAyMDAxMjAwMjIwMDM0MTBkMTBmOTAxMGIwZjAwMjAwMDIwMDEyMDAyMjAwMzQxMDkxMGY5MDEwYjJmMDAwMjQwMjAwMzIwMDQ0ZDA0NDAyMDAyMjAwNDQ5MGQwMTIwMDAyMDA0MjAwMzZiMzYwMjA0MjAwMDIwMDEyMDAzNmEzNjAyMDAwZjBiMTAyYzAwMGIxMDJjMDAwYmI0MDEwMTAzN2YyMzAwNDExMDZiMjIwNDI0MDAwMjdmMDI0MDIwMDAyZDAwMDg0NTA0NDAyMDAwMjgwMjAwMjIwNTEwMTIyMjA2NDE5MGNlMDA0YjBkMDE0MWUwZGIwODJkMDAwMDBkMDE0MWRjZGIwODIwMDYzNjAyMDA0MWUwZGIwODQxMDEzYTAwMDAyMDA0NDEwODZhMjAwNjEwOWYwMTIwMDU0MTAwMjAwNDI4MDIwODIwMDQyODAyMGMxMDZmMWEyMDAwNDEwMTNhMDAwODBiNDEwMTIwMDEyMDAzNmEyMjAwNDFkY2RiMDgyODAyMDA0YjBkMDExYTIwMDQyMDAxMjAwMDEwYTAwMTIwMDIyMDAzMjAwNDI4MDIwMDIwMDQyODAyMDQxMDU3NDEwMDBjMDEwYjIwMDA0MTAwM2EwMDA4MjAwNTIwMDEyMDAyMjAwMzEwNmYwYjIwMDQ0MTEwNmEyNDAwMGIzZTAxMDE3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDI0MTA4NmE0MWNjOGQwODQxOTBjZTAwMjAwMTEwZDAwMTIwMDIyODAyMGMyMTAxMjAwMDIwMDIyODAyMDgzNjAyMDAyMDAwMjAwMTM2MDIwNDIwMDI0MTEwNmEyNDAwMGIzMjAwMDI0MDIwMDEyMDAyNGQwNDQwMjAwMjQxOTBjZTAwNGQwZDAxMTAyYzAwMGIxMDJjMDAwYjIwMDAyMDAyMjAwMTZiMzYwMjA0MjAwMDIwMDE0MWNjOGQwODZhMzYwMjAwMGIxOTAwMjAwMDQxZmVmZmZmZmYwNzQ2MDQ0MDQxZTA4NTA4NDEwZDEwMDMwMDBiMjAwMDBiNGQwMTAxN2YyMzAwNDExMDZiMjIwMTI0MDAyMDAwMTAxMjQxMDQ0NjA0NDAyMDAxNDEwMDM2MDIwYzIwMDA0MTAwMjAwMTQxMGM2YTQxMDQxMDhhMDExYTQxZmVmZmZmZmYwNzIwMDAyMDAxMjgwMjBjNDFjNThlYjFhMjA0NDYxYjIxMDAwYjIwMDE0MTEwNmEyNDAwMjAwMDBiODAwMTAxMDI3ZjIzMDA0MTEwNmIyMjAzMjQwMDAyNDAwMjQwMjAwMDJkMDAwNDA0NDA0MTkwY2UwMDQxZGNkYjA4MjgwMjAwMjIwNDZiMjAwMjQ5MGQwMTIwMDM0MTA4NmEyMDA0MjAwMjIwMDQ2YTIyMDAxMGE0MDEyMDAzMjgwMjA4MjAwMzI4MDIwYzIwMDEyMDAyMTA1NzQxZGNkYjA4MjAwMDM2MDIwMDBjMDIwYjIwMDAyODAyMDAyMDAxMjAwMjEwMGYxYTBjMDEwYjIwMDAxMGE1MDEyMDAwMjgwMjAwMjAwMTIwMDIxMDBmMWEwYjIwMDM0MTEwNmEyNDAwMGIzZjAxMDE3ZjIzMDA0MTEwNmIyMjAzMjQwMDIwMDM0MTA4NmEyMDAxMjAwMjQxY2M4ZDA4NDE5MGNlMDAxMDJiMjAwMzI4MDIwYzIxMDEyMDAwMjAwMzI4MDIwODM2MDIwMDIwMDAyMDAxMzYwMjA0MjAwMzQxMTA2YTI0MDAwYjU4MDEwMjdmMjMwMDQxMTA2YjIyMDEyNDAwMjAwMDJkMDAwNDIwMDA0MTAwM2EwMDA0MDQ0MDIwMDE0MTA4NmE0MTAwNDFkY2RiMDgyODAyMDAxMGEwMDEyMDAwMjgwMjAwMjAwMTI4MDIwODIwMDEyODAyMGMxMDBmMWE0MWRjZGIwODQxMDAzNjAyMDA0MWUwZGIwODQxMDAzYTAwMDAwYjIwMDE0MTEwNmEyNDAwMGIwZDAwMjAwMDQxNjcxMDIwMWE0MTY3MTAxMjBiMGQwMDIwMDAxMDJhMjIwMDEwMjAxYTIwMDAwYjEyMDAyMDAwMTBhNjAxNDUwNDQwMjAwMDIwMDExMDIxMWEwYjBiMTIwMDIwMDAxMGE2MDE0NTA0NDAyMDAwMjAwMTEwYWEwMTBiMGIzODAxMDE3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDI0MjAwMzcwMzA4MjAwMjIwMDE0MTAwMjAwMjQxMDg2YTEwODIwMTIwMDAyMDAyMjgwMjAwMjAwMjI4MDIwNDEwYjgwMTIwMDI0MTEwNmEyNDAwMGIwYTAwMjAwMDEwYTcwMTEwYTIwMTBiYjkwMTAxMDQ3ZjIzMDA0MTIwNmIyMjAxMjQwMDIwMDAxMGE3MDEyMTAyMTA0MzIxMDQyMDAyMTAxMjIxMDAyMDAxNDExMDZhNDEwMDNhMDAwMDIwMDE0MTBjNmEyMDAwMzYwMjAwMjAwMTIwMDIzNjAyMDgyMDAxMjAwMDM2MDIwNDIwMDE0MTAwMzYwMjAwMDM3ZjIwMDAyMDAzNDYwNDdmMjAwMTJkMDAxMDA0NDA0MWRjZGIwODQxMDAzNjAyMDA0MWUwZGIwODQxMDAzYTAwMDAwYjIwMDE0MTIwNmEyNDAwMjAwNDA1MjAwMTEwYWQwMTIxMDAyMDAxMTBhZTAxMjEwMjIwMDExMGFmMDEyMTAzMjAwMTIwMDAzNjAyMWMyMDAxMjAwMzM2MDIxODIwMDEyMDAyMzYwMjE0MjAwNDIwMDE0MTE0NmExMDU5MjAwMTI4MDIwMDIxMDMyMDAxMjgwMjA0MjEwMDBjMDEwYjBiMGIzMzAyMDE3ZjAxN2UyMzAwNDExMDZiMjIwMTI0MDAyMDAxNDEwMDM2MDIwYzIwMDAyMDAxNDEwYzZhMjIwMDQxMDQxMGIzMDEyMDAwNDEwNDEwYjEwMTIwMDE0MTEwNmEyNDAwYTcwYjA5MDAyMDAwNDEyMDEwODcwMTBiMGMwMDIwMDAyMDAwMTBhZDAxMTA4NzAxMGIzYTAxMDE3ZjIzMDA0MTEwNmIyMjAzMjQwMDIwMDM0MTA4NmEyMDAxNDEwODIwMDIxMGQwMDEyMDAzMjgwMjBjMjEwMTIwMDAyMDAzMjgwMjA4MzYwMjAwMjAwMDIwMDEzNjAyMDQyMDAzNDExMDZhMjQwMDBiMzQwMTAxN2UwMjQwMjAwMTQ1MGQwMDAzNDAyMDAxNDUwZDAxMjAwMTQxMDE2YjIxMDEyMDAwMzEwMDAwMjAwMjQyMDg4Njg0MjEwMjIwMDA0MTAxNmEyMTAwMGMwMDBiMDAwYjIwMDIwYmZkMDEwMTA2N2YyMzAwNDEzMDZiMjIwMTI0MDAyMDAwMTBhNzAxMjEwMjEwNDMyMTA0MjAwMjEwMTIyMTAwMjAwMTQxMTg2YTQxMDAzYTAwMDAyMDAxNDExNDZhMjAwMDM2MDIwMDIwMDEyMDAyMzYwMjEwMjAwMTIwMDAzNjAyMGMyMDAxNDEwMDM2MDIwODAzN2YyMDAwMjAwMzQ2MDQ3ZjIwMDEyZDAwMTgwNDQwNDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGIyMDAxNDEzMDZhMjQwMDIwMDQwNTIwMDE0MTA4NmEyMjAyMTBhZDAxMjEwMzIwMDIxMGFlMDEyMTA1MjAwMjEwYWYwMTIxMDY0MTAwMjEwMDIwMDE0MTAwM2EwMDJmMjAwMjIwMDE0MTJmNmE0MTAxMTBiMzAxMDI0MDAyNDAwMjQwMjAwMTJkMDAyZjBlMDIwMjAxMDAwYjQxZWQ4NjA4NDEwZDEwODgwMTAwMGI0MTAxMjEwMDBiMjAwMTIwMDAzYTAwMjgyMDAxMjAwNjM2MDIyNDIwMDEyMDA1MzYwMjIwMjAwMTIwMDMzNjAyMWMyMDA0MjAwMTQxMWM2YTEwNTUyMDAxMjgwMjA4MjEwMzIwMDEyODAyMGMyMTAwMGMwMTBiMGIwYjJkMDAyMDAwNDEwODZhMjAwMDI4MDIwMDIwMDEyMDAyMTA5ZTAxMDQ0MDQxYTM4NTA4NDEwZjEwODgwMTAwMGIyMDAwMjAwMDI4MDIwMDIwMDI2YTM2MDIwMDBiODcwMTAxMDE3ZjIzMDA0MTMwNmIyMjAyMjQwMDIwMDIyMDAxMzYwMjA4MjAwMjEwMzUyMDAyMjAwMjJkMDAwNDNhMDAxMDIwMDIyMDAyMjgwMjAwMzYwMjBjMjAwMjIwMDExMDEyMzYwMjFjMjAwMjQxMDAzNjAyMTgyMDAyMjAwMjQxMDg2YTM2MDIxNDAzNDAyMDAyNDEyMDZhMjAwMjQxMTQ2YTEwYjUwMTIwMDIyZDAwMmM0MTAyNDY0NTA0NDAyMDAyNDEyMDZhMjAwMjQxMGM2YTEwYjYwMTBjMDEwYjBiMjAwMDIwMDIyODAyMGMyMDAyMmQwMDEwMTBiNzAxMjAwMjQxMzA2YTI0MDAwYmM1MDMwMTA3N2YyMzAwNDFkMDAwNmIyMjAyMjQwMDAyNDAyMDAxMjgwMjA0MjIwNDQxMGQ2YTIyMDgyMDAxMjgwMjA4NGQwNDQwMjAwMTI4MDIwMDIwMDI0MjAwMzcwMDM1MjAwMjQyMDAzNzAzMzAyODAyMDAyMDA0MjAwMjQxMzA2YTIyMDM0MTBkMTA2ZjFhMjAwMjQxMDAzNjAyNDAyMDAyNDEyODZhMjAwMzQxMDA0MTA0MTBiZjAxMjAwMjQxNDA2YjIyMDU0MTA0MjAwMjI4MDIyODIwMDIyODAyMmMxMDU3MjAwMjI4MDI0MDIxMDQyMDAyNDFjODAwNmE0MTAwM2EwMDAwMjAwMjQyMDAzNzAzNDAyMDAyNDEyMDZhMjAwMzQxMDQ0MTBkMTBiZjAxMjAwNTQxMDkyMDAyMjgwMjIwMjAwMjI4MDIyNDEwNTcyMDAyNDEwMDM2MDI0YzIwMDI0MTE4NmEyMDA1NDEwMDQxMDQxMGMwMDEyMDAyNDFjYzAwNmEyMjA3NDEwNDIwMDIyODAyMTgyMDAyMjgwMjFjMTA1NzIwMDIyODAyNGMyMTAzMjAwMjQxMDAzNjAyNGMyMDAyNDExMDZhMjAwNTQxMDQ0MTA4MTBjMDAxMjAwNzQxMDQyMDAyMjgwMjEwMjAwMjI4MDIxNDEwNTcyMDAyMjgwMjRjMjEwNjIwMDI0MTAwM2EwMDRjMjAwMjQxMDg2YTIwMDU0MTA4NDEwOTEwYzAwMTIwMDc0MTAxMjAwMjI4MDIwODIwMDIyODAyMGMxMDU3MjAwMDIwMDIyZDAwNGM0MTAwNDczYTAwMGMyMDAwMjAwNjQxMTg3NDIwMDY0MTgwZmUwMzcxNDEwODc0NzIyMDA2NDEwODc2NDE4MGZlMDM3MTIwMDY0MTE4NzY3MjcyMzYwMjA4MjAwMDIwMDM0MTE4NzQyMDAzNDE4MGZlMDM3MTQxMDg3NDcyMjAwMzQxMDg3NjQxODBmZTAzNzEyMDAzNDExODc2NzI3MjM2MDIwNDIwMDAyMDA0NDExODc0MjAwNDQxODBmZTAzNzE0MTA4NzQ3MjIwMDQ0MTA4NzY0MTgwZmUwMzcxMjAwNDQxMTg3NjcyNzIzNjAyMDAyMDAxMjAwODM2MDIwNDBjMDEwYjIwMDA0MTAyM2EwMDBjMGIyMDAyNDFkMDAwNmEyNDAwMGI0ZDAxMDE3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDAyODAyMDAyMDAxMTBiYzAxMjAwMTIwMDAyODAyMDQxMGJkMDEyMDAwNDEwODZhMjgwMjAwMjAwMTEwM2UyMDAyMjAwMDQxMGM2YTJkMDAwMDNhMDAwZjIwMDEyMDAyNDEwZjZhNDEwMTEwYTMwMTIwMDI0MTEwNmEyNDAwMGIwZDAwMjAwMDIwMDEyMDAyMTAzODEwMjExYTBiMGQwMDIwMDAyMDAxMjAwMjEwNGQxMDIxMWEwYjg3MDEwMTAxN2YyMzAwNDEzMDZiMjIwMjI0MDAyMDAyMjAwMTM2MDIwODIwMDIxMDM1MjAwMjIwMDIyZDAwMDQzYTAwMTAyMDAyMjAwMjI4MDIwMDM2MDIwYzIwMDIyMDAxMTAxMjM2MDIxYzIwMDI0MTAwMzYwMjE4MjAwMjIwMDI0MTA4NmEzNjAyMTQyMDAyNDEyNDZhMjEwMTAzNDAyMDAyNDEyMDZhMjAwMjQxMTQ2YTEwYmEwMTIwMDIyODAyMjAwNDQwMjAwMTIwMDI0MTBjNmExMGJiMDEwYzAxMGIwYjIwMDAyMDAyMjgwMjBjMjAwMjJkMDAxMDEwYjcwMTIwMDI0MTMwNmEyNDAwMGI4OTAzMDEwNjdmMjMwMDQxNDA2YTIyMDIyNDAwMjAwMDIwMDEyODAyMDQyMjAzNDEwYzZhMjIwNjIwMDEyODAyMDg0ZDA0N2YyMDAxMjgwMjAwMjAwMjQxMjg2YTQxMDAzNjAyMDAyMDAyNDIwMDM3MDMyMDI4MDIwMDIwMDMyMDAyNDEyMDZhMjIwMzQxMGMxMDZmMWEyMDAyNDEwMDM2MDIzMDIwMDI0MTE4NmEyMDAzNDEwMDQxMDQxMGMxMDEyMDAyNDEzMDZhMjIwNTQxMDQyMDAyMjgwMjE4MjAwMjI4MDIxYzEwNTcyMDAyMjgwMjMwMjEwNDIwMDI0MjAwMzcwMzMwMjAwMjQxMTA2YTIwMDM0MTA0NDEwYzEwYzEwMTIwMDU0MTA4MjAwMjI4MDIxMDIwMDIyODAyMTQxMDU3MjAwMjQxMDAzNjAyM2MyMDAyNDEwODZhMjAwNTQxMDA0MTA0MTBjMjAxMjAwMjQxM2M2YTIyMDc0MTA0MjAwMjI4MDIwODIwMDIyODAyMGMxMDU3MjAwMjI4MDIzYzIxMDMyMDAyNDEwMDM2MDIzYzIwMDIyMDA1NDEwNDQxMDgxMGMyMDEyMDA3NDEwNDIwMDIyODAyMDAyMDAyMjgwMjA0MTA1NzIwMDIyODAyM2MyMTA1MjAwMDQxMGM2YTIwMDQ0MTE4NzQyMDA0NDE4MGZlMDM3MTQxMDg3NDcyMjAwNDQxMDg3NjQxODBmZTAzNzEyMDA0NDExODc2NzI3MjM2MDIwMDIwMDAyMDAzNDExODc0MjAwMzQxODBmZTAzNzE0MTA4NzQ3MjIwMDM0MTA4NzY0MTgwZmUwMzcxMjAwMzQxMTg3NjcyNzIzNjAyMDQyMDAxMjAwNjM2MDIwNDIwMDA0MTA4NmEyMDA1NDExODc0MjAwNTQxODBmZTAzNzE0MTA4NzQ3MjIwMDU0MTA4NzY0MTgwZmUwMzcxMjAwNTQxMTg3NjcyNzIzNjAyMDA0MTAxMDU0MTAwMGIzNjAyMDAyMDAyNDE0MDZiMjQwMDBiMWYwMDIwMDAyODAyMDgyMDAxMTBiYzAxMjAwMTIwMDAyODAyMDAxMGJkMDEyMDAwMjgwMjA0MjAwMTEwM2UwYjQ2MDEwMTdmMjMwMDQxMTA2YjIyMDIyNDAwMjAwMjIwMDA0MTE4NzQyMDAwNDE4MGZlMDM3MTQxMDg3NDcyMjAwMDQxMDg3NjQxODBmZTAzNzEyMDAwNDExODc2NzI3MjM2MDIwYzIwMDEyMDAyNDEwYzZhNDEwNDEwYTMwMTIwMDI0MTEwNmEyNDAwMGI4MTAxMDEwMzdmMjMwMDQxMTA2YjIyMDIyNDAwMDI0MDAyNDAyMDAwMmQwMDA0MDQ0MDIwMDExMDEyMjIwNDQxOTBjZTAwNDFkY2RiMDgyODAyMDAyMjAzNmI0YjBkMDEyMDAyNDEwODZhMjAwMzIwMDMyMDA0NmEyMjAwMTBhNDAxMjAwMTQxMDAyMDAyMjgwMjA4MjAwMjI4MDIwYzEwNmYxYTQxZGNkYjA4MjAwMDM2MDIwMDBjMDIwYjIwMDAyODAyMDAyMDAxMTA4YjAxMGMwMTBiMjAwMDEwYTUwMTIwMDAyODAyMDAyMDAxMTA4YjAxMGIyMDAyNDExMDZhMjQwMDBiMzgwMjAxN2YwMTdlMjMwMDQxMTA2YjIyMDEyNDAwMjAwMTQyMDAzNzAzMDgyMDAwMjAwMTQxMDg2YTIyMDA0MTA4NDE4YTg1MDg0MTBiMTBjNTAxMjAwMDQxMDgxMGIxMDEyMDAxNDExMDZhMjQwMDBiMGYwMDIwMDAyMDAxMjAwMjIwMDM0MTBkMTBmODAxMGIwZjAwMjAwMDIwMDEyMDAyMjAwMzQxMDkxMGY4MDEwYjBmMDAyMDAwMjAwMTIwMDIyMDAzNDEwYzEwZjgwMTBiMGYwMDIwMDAyMDAxMjAwMjIwMDM0MTA4MTBmODAxMGI4MDAyMDEwNTdmMjMwMDQxMjA2YjIyMDIyNDAwMjAwMDIwMDEyODAyMDQyMjAzNDEwODZhMjIwNTIwMDEyODAyMDg0ZDA0N2YyMDAxMjgwMjAwMjAwMjQyMDAzNzAzMTAyODAyMDAyMDAzMjAwMjQxMTA2YTIyMDM0MTA4MTA2ZjFhMjAwMjQxMDAzNjAyMWMyMDAyNDEwODZhMjAwMzQxMDA0MTA0MTBjMjAxMjAwMjQxMWM2YTIyMDY0MTA0MjAwMjI4MDIwODIwMDIyODAyMGMxMDU3MjAwMjI4MDIxYzIxMDQyMDAyNDEwMDM2MDIxYzIwMDIyMDAzNDEwNDQxMDgxMGMyMDEyMDA2NDEwNDIwMDIyODAyMDAyMDAyMjgwMjA0MTA1NzIwMDIyODAyMWMyMTAzMjAwMDIwMDQ0MTE4NzQyMDA0NDE4MGZlMDM3MTQxMDg3NDcyMjAwNDQxMDg3NjQxODBmZTAzNzEyMDA0NDExODc2NzI3MjM2MDIwNDIwMDEyMDA1MzYwMjA0MjAwMDQxMDg2YTIwMDM0MTE4NzQyMDAzNDE4MGZlMDM3MTQxMDg3NDcyMjAwMzQxMDg3NjQxODBmZTAzNzEyMDAzNDExODc2NzI3MjM2MDIwMDQxMDEwNTQxMDAwYjM2MDIwMDIwMDI0MTIwNmEyNDAwMGI4YTAxMDEwNDdmMjMwMDQxMTA2YjIyMDMyNDAwMjAwMTI4MDIwNDIyMDI0MTA0NmEyMjA0MjAwMTI4MDIwODRiMDQ3ZjQxMDAwNTIwMDEyODAyMDAyMDAzNDEwMDM2MDIwYzI4MDIwMDIwMDIyMDAzNDEwYzZhNDEwNDEwNmYxYTIwMDMyODAyMGMyMTAyMjAwMTIwMDQzNjAyMDQyMDAyNDExODc0MjAwMjQxODBmZTAzNzE0MTA4NzQ3MjIwMDI0MTA4NzY0MTgwZmUwMzcxMjAwMjQxMTg3NjcyNzIyMTAyNDEwMTBiMjEwMTIwMDAyMDAyMzYwMjA0MjAwMDIwMDEzNjAyMDAyMDAzNDExMDZhMjQwMDBiMzAwMDIwMDA0MTA4NmEyMDAwMjgwMjAwMjAwMTIwMDIxMDllMDEwNDQwMjAwMzIwMDQ0MWEzODUwODQxMGYxMDRjMDAwYjIwMDAyMDAwMjgwMjAwMjAwMjZhMzYwMjAwMGI3ODAxMDE3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDIyMDAwNDIzODg2MjAwMDQyODBmZTAzODM0MjI4ODY4NDIwMDA0MjgwODBmYzA3ODM0MjE4ODYyMDAwNDI4MDgwODBmODBmODM0MjA4ODY4NDg0MjAwMDQyMDg4ODQyODA4MDgwZjgwZjgzMjAwMDQyMTg4ODQyODA4MGZjMDc4Mzg0MjAwMDQyMjg4ODQyODBmZTAzODMyMDAwNDIzODg4ODQ4NDg0MzcwMzA4MjAwMTIwMDI0MTA4NmE0MTA4MTBhMzAxMjAwMjQxMTA2YTI0MDAwYmQ2MDEwMTA2N2YyMzAwNDE0MDZhMjIwMDI0MDAxMGM4MDExMDVjMjEwMTIwMDAxMGM5MDExMDVjMzYwMjA4MjAwMDEwNDczNjAyMGMyMDAwNDEyODZhMjIwMjIwMDExMDMyNDFmNzgwMDg0MTEwMTAzMzIwMDAyODAyMmMyMjAxMjAwMDQxMDg2YTEwNjQyMDAxMjAwMDQxMGM2YTEwNjQyMDAwNDEyMDZhMjIwMTIwMDA0MTM4NmEyMjAzMjkwMzAwMzcwMzAwMjAwMDQxMTg2YTIyMDQyMDAwNDEzMDZhMjIwNTI5MDMwMDM3MDMwMDIwMDAyMDAwMjkwMzI4MzcwMzEwMjAwMDIwMDA0MTEwNmExMDdjMzYwMjA0MjAwMjEwYzkwMTEwNWMxMDMyNDFmNTgxMDg0MTE4MTAzMzIwMDAyODAyMmMyMDAwNDEwNDZhMTA3ODIwMDEyMDAzMjkwMzAwMzcwMzAwMjAwNDIwMDUyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDMyODM3MDMxMDIwMDA0MTEwNmExMDdjMjAwMDQxNDA2YjI0MDAwYjBhMDA0MTk1ODgwODQxMTIxMDRkMGIwYTAwNDE4MTg4MDg0MTE0MTA0ZDBiYTkwMzAyMDU3ZjAxN2UyMzAwNDE4MDAxNmIyMjAyMjQwMDEwY2IwMTEwYWIwMTIxMDMyMDAxMjgwMjBjMjEwNDIwMDEyOTAzMDAyMTA3MjAwMTI4MDIwODIxMDEwMjQwMjAwMzQxZmVmZmZmZmYwNzQ2MDQ0MDIwMDE0MWZlZmZmZmZmMDc0NjBkMDEyMDAxMTBhMTAxMjEwMTIwMDIyMDA0MzYwMjE0MjAwMjIwMDczNzAzMDgyMDAyMjAwMTM2MDIxMDEwY2MwMTEwNWMyMTAzMjAwNDEwMjkyMTA0MjAwMjQxZTAwMDZhMjIwMTIwMDMxMDMyNDFhMTgwMDg0MTBhMTAzMzIwMDI0MTQwNmIyMjAzMjAwMTIwMDI0MTA4NmExMDg0MDEyMDAxMjAwMzEwY2QwMTIwMDExMDM0NDIwMDIxMDc0MWZlZmZmZmZmMDcyMTAxMGIyMDAyNDFlMDAwNmEyMDAwMTAzMjQxYzA4MTA4NDExMjEwMzMyMDAyMjgwMjY0MWEyMDAyNDEyODZhMjIwMDIwMDI0MWYwMDA2YTIyMDUyOTAzMDAzNzAzMDAyMDAyNDEyMDZhMjIwMzIwMDI0MWU4MDA2YTIyMDYyOTAzMDAzNzAzMDAyMDAyMjAwMjI5MDM2MDM3MDMxODAyNDAyMDAxNDFmZWZmZmZmZjA3NDcwNDQwMjAwNTIwMDAyOTAzMDAzNzAzMDAyMDA2MjAwMzI5MDMwMDM3MDMwMDIwMDIyMDAyMjkwMzE4MzcwMzYwMjAwMjEwN2QzNjAyNzgyMDAxMTBhMTAxMjEwMDIwMDIyMDA0MzYwMjNjMjAwMjIwMDczNzAzMzAyMDAyMjAwMDM2MDIzODIwMDI0MTQwNmIyMDAyNDFlMDAwNmEyMDAyNDEzMDZhMTA4MzAxMGMwMTBiMjAwMjQxZDAwMDZhMjAwMDI5MDMwMDM3MDMwMDIwMDI0MWM4MDA2YTIwMDMyOTAzMDAzNzAzMDAyMDAyMjAwMjI5MDMxODM3MDM0MDIwMDIyMDA0MzYwMjU4MGIyMDAyNDFlMDAwNmEyMDAyNDE0MDZiMTA3NjIwMDI0MTgwMDE2YTI0MDAwZjBiNDFjYTg4MDg0MTFmMTA0MTAwMGIwYTAwNDFlODhjMDg0MTIyMTA0ZDBiMGEwMDQxZmE4NjA4NDExZDEwNGQwYmZmMDIwMjAzN2YwMjdlMjMwMDQxZDAwMDZiMjIwMjI0MDAyMDAyNDEzMDZhMjIwNDIwMDE0MTEwNmEyOTAzMDAzNzAzMDAyMDAyNDEyODZhMjIwMzIwMDE0MTA4NmEyOTAzMDAzNzAzMDAyMDAyMjAwMTI5MDMwMDM3MDMyMDIwMDIxMDdkMzYwMjM4MDI0MDAyNDAwMjQwMDI0MDIwMDEyODAyMTgyMjAxMTA2NTBlMDIwMTAyMDAwYjEwNDcyMTAzMjAwMjQxMDg2YTIwMDIyODAyMjAyMDAyMjgwMjI0MjAwNDIwMDExMDYyMjAwMjI5MDMwODIxMDUyMDAyMjkwMzI4MjEwNjIwMDAxMDdkMzYwMjE4MjAwMDIwMDMzNjAyMTAyMDAwMjAwNjM3MDMwODIwMDAyMDA1MzcwMzAwMGMwMjBiMjAwMDIwMDIyOTAzMjAzNzAzMDAyMDAwNDExODZhMjAwMjQxMzg2YTI5MDMwMDM3MDMwMDIwMDA0MTEwNmEyMDA0MjkwMzAwMzcwMzAwMjAwMDQxMDg2YTIwMDMyOTAzMDAzNzAzMDAwYzAxMGIyMDAyNDE0MDZiMjAwMTEwOTcwMTAyN2YyMDAyMjkwMzQwNTAwNDQwMjAwMjI4MDIzMDIxMDEyMDAyNDExMDZhMjAwMjI4MDIyMDIwMDIyODAyMjQyMDAyMjgwMjQ4MjAwMjI4MDI0YzEwNmQyMDAyMjgwMjEwMjEwMzIwMDIyODAyMTQwYzAxMGIxMDQ3MjEwMTIwMDI0MTE4NmEyMDAyMjgwMjIwMjAwMjI4MDIyNDIwMDIyODAyMzAyMDAyNDE0MDZiMTA2YzIwMDIyODAyMTgyMTAzMjAwMjI4MDIxYzBiMjEwNDIwMDIyOTAzMjgyMTA1MjAwMDEwN2QzNjAyMTgyMDAwMjAwMTM2MDIxMDIwMDAyMDA1MzcwMzA4MjAwMDIwMDQzNjAyMDQyMDAwMjAwMzM2MDIwMDBiMjAwMjQxZDAwMDZhMjQwMDBiMGQwMDIwMDAxMDYxNDFmZjAxNzE0MTAxNGIwYjE3MDAyMDAwMjgwMjAwMjAwMTI4MDIwMDEwODkwMTQxZmYwMTcxNDFmZjAxNDYwYjNiMDEwMTdmMjMwMDQxMTA2YjIyMDQyNDAwMjAwNDQxMDg2YTQxMDAyMDAzMjAwMTIwMDIxMDJiMjAwNDI4MDIwYzIxMDEyMDAwMjAwNDI4MDIwODM2MDIwMDIwMDAyMDAxMzYwMjA0MjAwNDQxMTA2YTI0MDAwYjBhMDA0MWJkODgwODQxMGQxMDRkMGIwYTAwNDFmMjg3MDg0MTBmMTA0ZDBiMGEwMDQxZGQ4NzA4NDExNTEwNGQwYjBhMDA0MWE3ODgwODQxMTYxMDRkMGIxOTAxMDE3ZjQxOTc4NzA4NDExNjEwNGQyMTAxMjAwMDI4MDIwMDIwMDExMDQwMjAwMTBiMTkwMTAxN2Y0MWFkODcwODQxMTgxMDRkMjEwMTIwMDAyODAyMDAyMDAxMTA0MDIwMDEwYjBhMDA0MWM1ODcwODQxMTgxMDRkMGIwYTAwNDE4ZjhjMDg0MTFkMTA0ZDBiMGEwMDQxYWM4YzA4NDExZDEwNGQwYjBhMDA0MWM5OGMwODQxMWYxMDRkMGJhNzA1MDIwZDdmMDI3ZTIzMDA0MTQwNmEyMjAwMjQwMDEwMjI0MTBhMTA1YTQxMDA0MWJkODgwODQxMGQxMDUwMjEwOTQxMDExMDRiMjEwMjQxMDI0MTk1ODgwODQxMTIxMDUwMjEwYTQxMDM0MTgxODgwODQxMTQxMDUwMjEwNTQxMDQ0MWYyODcwODQxMGYxMDUwMjEwNjQxMDUxMDExMjEwZDQxMDYxMDExMjEwZTQxMDcxMDU4MjEwNzQxMDgxMDUxMjEwODQxMDk0MWZhODYwODQxMWQxMDUwMjEwNDIwMDAyMDA4MzYwMjEwMjAwMDIwMDczNjAyMGMyMDA1MTAyZjEwMzIyMTAxNDFlNjgxMDg0MTBmMTA0ZDIxMDMxMDQzMjEwYjEwN2QyMTBjMTAxNjIwMDEyMDBjMjAwMzIwMGIxMDQ1MjEwMTEwMTcyMDAxMTAxMjIxMDMyMDAwNDEwMDM2MDIzMDIwMDAyMDAxMzYwMjI4MjAwMDIwMDM0MTAyNzYzNjAyMmMyMDAwNDEyODZhMjIwMzEwNzUxMDJmMTBhMjAxMjEwMTIwMDMyMDA0MTAyZjEwMmYxMDMyNDFhYjgwMDg0MTE1MTAzMzIwMDMxMDgwMDEyMTAzMDI0MDAyNDAyMDAxNDFmZWZmZmZmZjA3NDcwNDQwMjAwMTEwMmYxMGExMDEyMDAyMTAzMDBkMDE0MWU5ODgwODQxZDEwMDEwNDEwMDBiMjAwMjIwMDMxMDMwNDUwZDAxMGIxMGNjMDEyMDA0MTBhODAxMTBkOTAxMjAwMzEwYTgwMTAyNDAxMGNiMDEyMjA0MTBhNjAxMGQwMDIwMDE0MWZlZmZmZmZmMDc0NzA0NDAyMDA0MjAwMTEwMjExYTBjMDEwYjIwMDQ0MWVkODUwODQxMDQxMGI4MDEwYjEwZDEwMTIwMDkxMGE4MDExMGQ0MDEyMDAyMTBhODAxMTBjODAxMjAwYTEwYTgwMTEwYzkwMTIwMDUxMDJmMTBhODAxMTBkODAxMjAwMDQxMjg2YTIyMDEyMDA1MTAzMjQxYjY4MTA4NDEwYTEwMzMyMDAxMTA4MDAxMTBhODAxMTBkMjAxMjAwNjEwMmYxMGE4MDExMGRhMDEyMDAxMjAwNjEwMzI0MTg2ODMwODQxMGYxMDMzMjAwMTEwODAwMTEwYTgwMTIwMDAyMDA3MTAxMjM2MDIxYzIwMDA0MTAwMzYwMjE4MjAwMDIwMDA0MTBjNmEzNjAyMTQwMzQwMDI0MDIwMDA0MTI4NmEyMDAwNDExNDZhMTBjMzAxMjAwMDI4MDIyODQ1MDQ0MDIwMDAyMDA4MTAxMjM2MDIxYzIwMDA0MTAwMzYwMjE4MjAwMDIwMDA0MTEwNmEzNjAyMTQwMzQwMjAwMDQxMjg2YTIwMDA0MTE0NmExMGMzMDEyMDAwMjgwMjI4NDUwZDAyMjAwMDIwMDAyODAyMzAyMjAxMzYwMjI0MjAwMDIwMDAyODAyMmMzNjAyMjAyMDAwNDEyMDZhMTBkNTAxMjIwMjEwYTYwMTBkMDAyMDAyMjAwMTEwYjQwMTBjMDAwYjAwMGIyMDAwMjAwMDI4MDIzMDIyMDEzNjAyMjQyMDAwMjAwMDI4MDIyYzM2MDIyMDIwMDA0MTIwNmExMGQ2MDEyMjAyMTBhNjAxMGQwMTIwMDIyMDAxMTBiOTAxMGMwMTBiMGIxMGQzMDEyMDBkMTBhOTAxMTBkNzAxMjAwZTEwYTkwMTIwMDA0MTQwNmIyNDAwMGYwYjQxYmE4OTA4NDFjODAwMTA0MTAwMGIwODAwMTAyMjQxMDAxMDVhMGJjNzAxMDEwNTdmMjMwMDQxMzA2YjIyMDAyNDAwNDEwMDEwNWEwMjQwMDI0MDEwNDYxMGQxMDExMDVjMTAzMDA0NDAxMDQ2MTBkMTAxMTA1YzEwMzA0NTBkMDEyMDAwMTA0YTIyMDEzNjAyMDgxMGQ0MDExMGE3MDEyMTAyMTBjOTAxMTA1YzIxMDMyMDAwMjAwMTEwMTIzNjAyMTQyMDAwNDEwMDM2MDIxMDIwMDAyMDAwNDEwODZhMzYwMjBjMjAwMDQxMjA2YTIxMDEwMzQwMDI0MDIwMDA0MTE4NmEyMDAwNDEwYzZhMTA2NzIwMDAyOTAzMTg1MDBkMDAyMDAwMjgwMjJjMjAwMDI4MDIyODIwMDIxMDMwNDUwZDA0MTBjZTAxNDUwZDA0MjAwMzEwMmYyMDAxMTBjYTAxMGMwMTBiMGIyMDAwNDEzMDZhMjQwMDBmMGI0MTgyOGEwODQxMTYxMDQxMDAwYjQxODI4YTA4NDExNjEwNDEwMDBiNDE5ODhhMDg0MTBkMTA0MTAwMGJjNzA3MDIwOTdmMDE3ZTIzMDA0MTgwMDE2YjIyMDAyNDAwMTAyMjQxMDExMDVhMjAwMDEwNGYzNjAyMmMxMGQxMDExMDVjMjEwMTAyNDAwMjQwMDI0MDEwNDYyMjA3MjAwMTEwMzAwNDQwMjAwMDEwYzkwMTEwNWMyMjAxMzYwMjM0MjAwMDQxZTAwMDZhMjIwMjIwMDExMDJmMTAzMjQxOGQ4MjA4NDExODEwMzMyMDAwMjgwMjY0MjAwMDQxMmM2YTEwNzgyMDAwNDFkODAwNmEyMjAxMjAwMDQxZjAwMDZhMjIwNjI5MDMwMDM3MDMwMDIwMDA0MWQwMDA2YTIyMDMyMDAwNDFlODAwNmEyMjA0MjkwMzAwMzcwMzAwMjAwMDIwMDAyOTAzNjAzNzAzNDgyMDAwNDFjODAwNmEyMjA1MTA3YzIxMDgyMDAyMTBjODAxMTA1YzEwMzI0MWUxODAwODQxMGExMDMzMjAwMDI4MDI2NDIyMDIyMDAwNDEzNDZhMTA2NDIwMDI0MTAwMjAwODEwNzkyMDAxMjAwNjI5MDMwMDM3MDMwMDIwMDMyMDA0MjkwMzAwMzcwMzAwMjAwMDIwMDAyOTAzNjAzNzAzNDgyMDAwNDEzODZhMjAwNTEwN2UyMDAwMjgwMjQ0MTBjZTAxNDUwZDAxMjAwMDI4MDIzNDEwMzIyMTAxNDFhNTgyMDg0MTA2MTA0ZDIxMDQxMDQzMjIwMzQxMDEyMDAwMTA3OTEwNDMyMjAyMjAwMDQxMzg2YTEwNDQyMDAwMjAwMTM2MDI3MDIwMDA0MjdmMzcwMzY4MjAwMDIwMDMzNjAyNjQyMDAwMjAwNDM2MDI2MDIwMDAxMDdkMjIwNTM2MDI3ODAyNDAwMjQwMDI0MDAyNDAyMDAyMTA2NTBlMDIwMjAwMDEwYjIwMDA0MWM4MDA2YTIwMDIxMDk3MDEwMjdmMjAwMDI5MDM0ODUwMDQ0MDIwMDA0MTE4NmEyMDA0MjAwMzIwMDAyODAyNTAyMDAwMjgwMjU0MTA2ZDIwMDAyODAyMTgyMTA0MjAwMDI4MDIxYzBjMDEwYjEwNDcyMDAwNDEyMDZhMjAwNDIwMDMyMDAxMjAwMDQxYzgwMDZhMTA2YzIwMDAyODAyMjAyMTA0MjEwMTIwMDAyODAyMjQwYjIxMDMxMDdkMjEwNTBjMDEwYjEwNDcyMTAxMjAwMDQxMTA2YTIwMDQyMDAzMjAwNjIwMDIxMDYyMjAwMDI5MDM2ODIxMDkyMDAwMjgwMjE0MjEwMzIwMDAyODAyMTAyMTA0MTA3ZDIxMDUyMDA5NDI3ZjUyMGQwMTBiMTAxNjIxMDkwYjIwMDkyMDAxMjAwNTIwMDQyMDAzMTA0NTIxMDExMDE3MjAwMTEwMTIyMTAyMjAwMDQxMDAzNjAyNTAyMDAwMjAwMTM2MDI0ODIwMDAyMDAyNDEwMjc2MzYwMjRjMjAwMDQxYzgwMDZhMTA3NTIyMDIxMDEyMjEwMTIwMDA0MWYwMDA2YTQxMDAzYTAwMDAyMDAwNDFlYzAwNmEyMDAxMzYwMjAwMjAwMDIwMDIzNjAyNjgyMDAwMjAwMTM2MDI2NDIwMDA0MTAwMzYwMjYwMjAwMDQxZTAwMDZhMjIwMTQxOGE4NTA4NDEwYjEwM2ExMGEyMDEyMTAyMjAwMTEwYmUwMTIxMDkyMDAxMTAzOTIxMDEyMDAwMjgwMjY0MjAwMDI4MDI2MDQ3MGQwMjIwMDAyZDAwNzAwNDQwNDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGIwMjQwMjAwMjQxZmVmZmZmZmYwNzQ3MDQ0MDIwMDIxMGExMDEyMTAzMGMwMTBiMTBkOTAxMTBhNzAxMjEwMzEwY2MwMTEwNWMyMDAxMTAyOTEwMzE0MjAwMjEwOTBiMjAwMTEwY2UwMTQ1MGQwMzIwMDcyMDAzMjAwOTIwMDExMDQyMjAwMDIwMDEzNjAyNmMyMDAwMjAwMzM2MDI2ODIwMDAyMDA5MzcwMzYwMjAwMDIwMDA0MWUwMDA2YTEwOTUwMTIyMDEzNjAyMzAyMDAwNDEwODZhMTAzNTIwMDAyMDAwMmQwMDBjM2EwMDNjMjAwMDIwMDAyODAyMDgzNjAyMzgyMDAwMjAwMTEwMTIzNjAyNTAyMDAwNDEwMDM2MDI0YzIwMDAyMDAwNDEzMDZhMzYwMjQ4MDM0MDIwMDA0MWUwMDA2YTIwMDA0MWM4MDA2YTEwNjcyMDAwMjkwMzYwNTA0NTA0NDAyMDAwMjgwMjc0MjAwMDI4MDI3MDIwMDA0MTM4NmEyMjAxMTAzZTIwMDAyOTAzNjgyMDAxMTBjNjAxMjAwMTEwM2MwYzAxMGIwYjIwMDAyODAyMzgyMDAwMmQwMDNjMTAzNzIwMDA0MTgwMDE2YTI0MDAwZjBiNDE4MjhhMDg0MTE2MTA0MTAwMGI0MWU3OGEwODQxMWYxMDQxMDAwYjQxOGE4NTA4NDEwYjQxOTU4NTA4NDEwZTEwNGMwMDBiNDE4NjhiMDg0MTFhMTA0MTAwMGJmMzFkMDIxNjdmMDI3ZTIzMDA0MWEwMDI2YjIyMDAyNDAwMTAyMjQxMDAxMDVhMTBjODAxMTA1YzIxMDEyMDAwMTBjOTAxMTA1YzIyMTQxMDJmMTA5NjAxMzYwMmYwMDEyMDAwMTA0MzM2MDJhMDAxMjAwMDQxODAwMjZhMjIwOTIwMDExMDMyNDFlYjgwMDg0MTBjMTAzMzIwMDAyODAyODQwMjIyMDE0MTAwMTA4MTAxMjAwMTQxMDExMDgxMDEyMDAxNDEwMDEwODEwMTIwMDEyMDAwNDFmMDAxNmEyMjExMTA3YjIwMDEyMDAwNDFhMDAxNmEyMjA3MTA3YjIwMDA0MWUwMDE2YTIyMDUyMDAwNDE5MDAyNmEyMjA0MjkwMzAwMzcwMzAwMjAwMDQxZDgwMTZhMjIwMjIwMDA0MTg4MDI2YTIyMDMyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDM4MDAyMzcwM2QwMDEyMDAwNDFkMDAxNmEyMjA2MTA3ZjEwZDIwMTEwNWMyMTAxMjAwMDIwMTQxMDJmMTA5NjAxMzYwMmYwMDEyMDAwMTA0MzM2MDJhMDAxMjAwOTIwMDExMDMyNDFlYjgwMDg0MTBjMTAzMzIwMDAyODAyODQwMjIyMDE0MTAwMTA4MTAxMjAwMTIwMTExMDdiMjAwMTIwMDcxMDdiMjAwMTQxMDEyMDAwMTA3OTIwMDUyMDA0MjkwMzAwMzcwMzAwMjAwMjIwMDMyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDM4MDAyMzcwM2QwMDEyMDA2MTA3ZjEwMmEyMjAzMTAyYTIyMDYxMDIzMjAwNjEwY2UwMTA0NDAxMGNjMDExMDVjMjAwNjEwMjkxMDMxMTBkOTAxMTBhNzAxMjEwMTIwMDAyMDA2MzYwMjhjMDIyMDAwNDIwMDM3MDM4MDAyMjAwMDIwMDEzNjAyODgwMjIwMDMyMDAwNDE4MDAyNmExMDQ0MGIyMDAwMjAwMzM2MDI5MDAxMDI0MDAyNDAwMjQwMjAwMzEwNjUwNDQwMTBkNDAxMTBhNzAxMjEwZTEwN2QyMTBkMjAwMDIwMDAyODAyOTAwMTEwMTIzNjAyOWMwMTIwMDA0MTAwMzYwMjk4MDEyMDAwMjAwMDQxOTAwMTZhMzYwMjk0MDEyMDAwNDE5MDAyNmEyMTBhMjAwMDQxYzAwMTZhMjEwZjIwMDA0MWE4MDE2YTIxMTUwMzQwMjAwMDQxYTAwMTZhMjAwMDQxOTQwMTZhMTA2NzIwMDAyOTAzYTAwMTUwMDQ0MDQyODA4MDkwYmJiYWQ2YWRmMDBkMTAyZTIxMDEyMDBkMTBkMzAxMTA1ZjEwMmUxMDkyMDEyMDAxMTA4ZDAxMjIwNTIwMGQxMGQ3MDExMDVmMTAyZTEwOTIwMTIwMDExMDhkMDEyMjA2MTA5MTAxMjAwZDEwODkwMTQxZmYwMTcxNDEwMjQ5MGQwNTIwMGQyMDA1MTA5MzAxMjAwNjEwOTAwMTIxMDIyMDBlMTAyZjIxMDEyMDAwMjAwMjEwMjkzNjAyOGMwMjIwMDA0MjAwMzcwMzgwMDIyMDAwMjAwMTM2MDI4ODAyMjAxNDIwMDA0MTgwMDI2YTEwY2EwMTIwMGUxMDJmMjEwMTIwMDUxMGNlMDEwNDQwMTA0NjIwMDE0MjAwMjAwNTEwNDIwYjIwMDYxMGNlMDEwNDQwMTA0ODIwMGU0MjAwMjAwNjEwNDIwYjEwNDMyMTA0MTA0MzEwMmYyMTA2MjAwMTQxZmVmZmZmZmYwNzQ2MGQwMzIwMDEyMDA2MTA0MDBjMDQwYjIwMGYyMDE1NDEwODZhMjkwMzAwMzcwMzAwMjAwMDIwMTUyOTAzMDAzNzAzYjgwMTIwMGYxMGQ2MDExMGFjMDEyMTEyMjAwZjEwZDUwMTEwYjIwMTIxMTMyMDBmMjgwMjAwMjEwYzIwMDAyODAyYzQwMTIxMDQyMDAwMjkwM2I4MDEyMTE2MjAxMjEwMTIyMTAxMjAxMzEwMTI0MTBkNmUyMDAxNDEwYzZlNmEyMTExNDEwMDIxMDEwMzQwMDI0MDAyNDAyMDAxMjAxMTQ3MDQ0MDIwMDE0MTAxNmEyMTA2NDEwMDIxMDIyMDEyMTAxMjIxMDUwMjQwMDI0MDAzNDAyMDAyNDEwYzZhMjIwMzIwMDU0YjBkMDEyMDAwNDE4ODAyNmEyMjA5NDEwMDM2MDIwMDIwMDA0MjAwMzcwMzgwMDIyMDEyMjAwMjIwMDA0MTgwMDI2YTIyMDI0MTBjMTA4YTAxMWEyMDAwNDEwMDM2MDJkMDAxMjAwMDQxODgwMTZhMjAwMjQxMDA0MTA0MTBjMTAxMjAwMDQxZDAwMTZhMjIwNzQxMDQyMDAwMjgwMjg4MDEyMDAwMjgwMjhjMDExMDU3MjAwMDI4MDJkMDAxMjEwODIwMDA0MjAwMzcwM2QwMDEyMDAwNDE4MDAxNmEyMDAyNDEwNDQxMGMxMGMxMDEyMDA3NDEwODIwMDAyODAyODAwMTIwMDAyODAyODQwMTEwNTcyMDAwNDEwMDM2MDJmMDAxMjAwMDQxZjgwMDZhMjAwNzQxMDA0MTA0MTBjMjAxMjAwMDQxZjAwMTZhMjIwMjQxMDQyMDAwMjgwMjc4MjAwMDI4MDI3YzEwNTcyMDAwMjgwMmYwMDEyMTBiMjAwMDQxMDAzNjAyZjAwMTIwMDA0MWYwMDA2YTIwMDc0MTA0NDEwODEwYzIwMTIwMDI0MTA0MjAwMDI4MDI3MDIwMDAyODAyNzQxMDU3MjAwMzIxMDIyMDA4NDExODc0MjAwODQxODBmZTAzNzE0MTA4NzQ3MjIwMDg0MTA4NzY0MTgwZmUwMzcxMjAwODQxMTg3NjcyNzIyMDAxNDcwZDAwMGIyMDAwMjgwMmYwMDEyMTAzMjAwYjQxMTg3NDIwMGI0MTgwZmUwMzcxNDEwODc0NzIyMDBiNDEwODc2NDE4MGZlMDM3MTIwMGI0MTE4NzY3MjcyMTAyZjIxMDEyMDAzNDExODc0MjAwMzQxODBmZTAzNzE0MTA4NzQ3MjIwMDM0MTA4NzY0MTgwZmUwMzcxMjAwMzQxMTg3NjcyNzIyMjA3MTAyZjIxMDU0MTAxMTAyZDIwMDA0MTgwMDI2YTIyMDMyMDAxMTAzMjQxZDk4NjA4NDExNDEwMzMyMDAwMjgwMjg0MDIyMjAxMjAwNTEwNmUyMDAxMTA3MDIwMDA0MWUwMDE2YTIyMDIyMDBhMjkwMzAwMzcwMzAwMjAwMDQxZDgwMTZhMjIwMTIwMDkyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDM4MDAyMzcwM2QwMDExMDQzMjEwNTIwMDAyMDA0MzYwMjhjMDIyMDAwMjAwYzM2MDI4ODAyMjAwMDIwMTYzNzAzODAwMjIwMDUyMDAzMTA0NDIwMGEyMDAyMjkwMzAwMzcwMzAwMjAwOTIwMDEyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDNkMDAxMzcwMzgwMDIyMDAwMTA3ZDM2MDI5ODAyMDI0MDAyNDAwMjQwMDI0MDIwMDUxMDY1MGUwMjAxMDIwMDBiMTA0NzIxMDEyMDAwNDFlODAwNmEyMDAwMjgwMjgwMDIyMDAwMjgwMjg0MDIyMDBhMjAwNTEwNjIyMDAwMjkwMzY4MjExNzIwMDAyOTAzODgwMjIxMTYyMDAwMTA3ZDM2MDJlODAxMjAwMDIwMDEzNjAyZTAwMTIwMDAyMDE2MzcwM2Q4MDEyMDAwMjAxNzM3MDNkMDAxMGMwMjBiMjAwMDQxZTgwMTZhMjAwMDQxOTgwMjZhMjkwMzAwMzcwMzAwMjAwMjIwMGEyOTAzMDAzNzAzMDAyMDAxMjAwOTI5MDMwMDM3MDMwMDIwMDAyMDAwMjkwMzgwMDIzNzAzZDAwMTBjMDEwYjIwMDA0MWYwMDE2YTIyMDEyMDA1MTA5NzAxMjAwMDQxZDAwMTZhMjAwMDQxODAwMjZhMjAwMTEwODMwMTBiMjAwMDQxODAwMjZhMjAwMDQxZDAwMTZhMTA3NjIwMDAyODAyODgwMjIyMGMyMDA3MTAzMDQ1MGQwMTIwMDAyODAyOGMwMjIxMDQyMDAwMjkwMzgwMDIyMTE2MjAwNjIxMDEwYzA1MGI0MTAwMjEwMjIwMTMxMDEyMjEwNTAzNDAyMDAyNDEwZDZhMjIwMzIwMDU0YjBkMDMyMDAwNDIwMDM3MDA4NTAyMjAwMDQyMDAzNzAzODAwMjIwMTMyMDAyMjAwMDQxODAwMjZhMjIwMjQxMGQxMDhhMDExYTIwMDA0MTAwMzYwMmQwMDEyMDAwNDFlMDAwNmEyMDAyNDEwMDQxMDQxMGJmMDEyMDAwNDFkMDAxNmEyMjA4NDEwNDIwMDAyODAyNjAyMDAwMjgwMjY0MTA1NzIwMDAyODAyZDAwMTIxMDkyMDAwNDFkODAxNmEyMjBiNDEwMDNhMDAwMDIwMDA0MjAwMzcwM2QwMDEyMDAwNDFkODAwNmEyMDAyNDEwNDQxMGQxMGJmMDEyMDA4NDEwOTIwMDAyODAyNTgyMDAwMjgwMjVjMTA1NzIwMDA0MTAwMzYwMmYwMDEyMDAwNDFkMDAwNmEyMDA4NDEwMDQxMDQxMGMwMDEyMDAwNDFmMDAxNmEyMjAyNDEwNDIwMDAyODAyNTAyMDAwMjgwMjU0MTA1NzIwMDAyODAyZjAwMTIxMTAyMDAwNDEwMDM2MDJmMDAxMjAwMDQxYzgwMDZhMjAwODQxMDQ0MTA4MTBjMDAxMjAwMjQxMDQyMDAwMjgwMjQ4MjAwMDI4MDI0YzEwNTcyMDAwMjgwMmYwMDEyMTA3MjAwMDQxMDAzYTAwZjAwMTIwMDA0MTQwNmIyMDA4NDEwODQxMDkxMGMwMDEyMDAyNDEwMTIwMDAyODAyNDAyMDAwMjgwMjQ0MTA1NzIwMDMyMTAyMjAwOTQxMTg3NDIwMDk0MTgwZmUwMzcxNDEwODc0NzIyMDA5NDEwODc2NDE4MGZlMDM3MTIwMDk0MTE4NzY3MjcyMjAwMTQ3MGQwMDBiMjAwMDJkMDBmMDAxMjAwNzQxMTg3NDIwMDc0MTgwZmUwMzcxNDEwODc0NzIyMDA3NDEwODc2NDE4MGZlMDM3MTIwMDc0MTE4NzY3MjcyMjEwODIwMGMxMDJmMjEwOTIwMDQxMDI5MjEwNzIwMTA0MTE4NzQyMDEwNDE4MGZlMDM3MTQxMDg3NDcyMjAxMDQxMDg3NjQxODBmZTAzNzEyMDEwNDExODc2NzI3MjEwMmYyMTA1NDUwNDQwNDEwMTEwMmQyMDAwNDE4MDAyNmEyMjAxMjAwNTEwMzI0MWE4ODYwODQxMDgxMDMzMjAwMDI4MDI4NDAyMTA3MDIwMDA0MWUwMDE2YTIyMDIyMDBhMjkwMzAwMzcwMzAwMjAwYjIwMDA0MTg4MDI2YTIyMDMyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDM4MDAyMzcwM2QwMDExMDQzMjEwNDIwMDAyMDA3MzYwMjhjMDIyMDAwMjAwOTM2MDI4ODAyMjAwMDIwMTYzNzAzODAwMjIwMDQyMDAxMTA0NDIwMGEyMDAyMjkwMzAwMzcwMzAwMjAwMzIwMGIyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDNkMDAxMzcwMzgwMDIyMDAwMTA3ZDM2MDI5ODAyMDI0MDAyNDAwMjQwMDI0MDIwMDQxMDY1MGUwMjAxMDIwMDBiMTA0NzIxMDEyMDAwNDExMDZhMjAwMDI4MDI4MDAyMjAwMDI4MDI4NDAyMjAwYTIwMDQxMDYyMjAwMDI5MDMxMDIxMTcyMDAwMjkwMzg4MDIyMTE2MjAwMDEwN2QzNjAyZTgwMTIwMDAyMDAxMzYwMmUwMDEyMDAwMjAxNjM3MDNkODAxMjAwMDIwMTczNzAzZDAwMTBjMDIwYjIwMDA0MWU4MDE2YTIwMDA0MTk4MDI2YTI5MDMwMDM3MDMwMDIwMDIyMDBhMjkwMzAwMzcwMzAwMjAwYjIwMDMyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDM4MDAyMzcwM2QwMDEwYzAxMGIyMDAwNDFmMDAxNmEyMDA0MTA5NzAxMDI3ZjIwMDAyOTAzZjAwMTUwMDQ0MDIwMDAyODAyOTAwMjIxMDMyMDAwNDExODZhMjAwMDI4MDI4MDAyMjAwMDI4MDI4NDAyMjAwMDI4MDJmODAxMjAwMDI4MDJmYzAxMTA2ZDIwMDAyODAyMWMyMTAyMjAwMDI4MDIxODBjMDEwYjEwNDcyMTAzMjAwMDQxMjA2YTIwMDAyODAyODAwMjIwMDAyODAyODQwMjIwMDAyODAyOTAwMjIwMDA0MWYwMDE2YTEwNmMyMDAwMjgwMjI0MjEwMjIwMDAyODAyMjAwYjIxMDEyMDAwMjkwMzg4MDIyMTE2MjAwMDEwN2QzNjAyZTgwMTIwMDAyMDAzMzYwMmUwMDEyMDAwMjAxNjM3MDNkODAxMjAwMDIwMDIzNjAyZDQwMTIwMDAyMDAxMzYwMmQwMDEwYjIwMDA0MWQwMDE2YTEwNzIyMTAzMjAwODEwMmYyMTAxMjAwMDIwMDMzNjAyOGMwMjIwMDA0MjAwMzcwMzgwMDIyMDAwMjAwMTM2MDI4ODAyMjAwMDQxODAwMjZhMTA5NTAxMjEwMTBjMDQwYjIwMDgxMDJmMjEwNDQxMDExMDJkMjAwNTEwMzIyMTAzNDFhODg2MDg0MTA4MTA0ZDIxMDExMDQzMjIwNTIwMDQxMDZlMjAwNTEwNzAxMDQzMjEwNDIwMDAyMDA3MzYwMjhjMDIyMDAwMjAwOTM2MDI4ODAyMjAwMDIwMTYzNzAzODAwMjIwMDQyMDAwNDE4MDAyNmExMDQ0MjAwMDIwMDMzNjAyOTAwMjIwMDA0MjdmMzcwMzg4MDIyMDAwMjAwNTM2MDI4NDAyMjAwMDIwMDEzNjAyODAwMjIwMDAxMDdkMzYwMjk4MDIwMjdmMDI3ZTAyNDAwMjQwMDI0MDIwMDQxMDY1MGUwMjAxMDIwMDBiMTA0NzIxMDIyMDAwNDEyODZhMjAwMDI4MDI4MDAyMjAwMDI4MDI4NDAyMjAwYTIwMDQxMDYyMjAwMDI4MDIyYzIxMDMyMDAwMjgwMjI4MjEwMTIwMDAyOTAzODgwMjBjMDIwYjIwMDAyODAyOTAwMjIxMDIyMDAwMjkwMzg4MDIyMTE2MjAwMDI4MDI4NDAyMjEwMzIwMDAyODAyODAwMjIxMDEyMDAwMjgwMjk4MDIwYzAyMGIyMDAwNDFkMDAxNmEyMDA0MTA5NzAxMDI3ZjIwMDAyOTAzZDAwMTUwMDQ0MDIwMDAyODAyOTAwMjIxMDIyMDAwNDEzMDZhMjAwMDI4MDI4MDAyMjAwMDI4MDI4NDAyMjAwMDI4MDJkODAxMjAwMDI4MDJkYzAxMTA2ZDIwMDAyODAyMzQyMTAzMjAwMDI4MDIzMDBjMDEwYjEwNDcyMTAyMjAwMDQxMzg2YTIwMDAyODAyODAwMjIwMDAyODAyODQwMjIwMDAyODAyOTAwMjIwMDA0MWQwMDE2YTEwNmMyMDAwMjgwMjNjMjEwMzIwMDAyODAyMzgwYjIxMDEyMDAwMjkwMzg4MDIwYjIxMTYxMDdkMGIyMTA0MjAxNjQyN2Y1MTA0N2UxMDE2MDUyMDE2MGIyMDAyMjAwNDIwMDEyMDAzMTA0NTIxMDMxMDE3NDEwMDIxMDIyMDAzMTAxMjIxMDEyMDAwNDEwMDM2MDJmODAxMjAwMDIwMDMzNjAyZjAwMTIwMDAyMDAxNDEwMjc2MzYwMmY0MDEyMDAwNDFmMDAxNmExMDc1MTAyZjIxMDQxMDQzMjEwMTIwMDQxMDEyMjEwMzIwMDA0MTAwM2EwMDkwMDIyMDAwMjAwMzM2MDI4YzAyMjAwMDIwMDQzNjAyODgwMjIwMDAyMDAzMzYwMjg0MDIyMDAwNDEwMDM2MDI4MDAyMDM0MDIwMDIyMDAzNDYwNDQwMjAwMDJkMDA5MDAyNDUwZDA1NDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGMwNTA1MjAwMDQxZDAwMTZhMjIwMzIwMDA0MTgwMDI2YTEwNzcyMDAxMjAwMzEwNDQyMDAwMjgwMjgwMDIyMTAyMjAwMDI4MDI4NDAyMjEwMzBjMDEwYjAwMGIwMDBiNDFjMDg2MDg0MTE5MTA0MTAwMGIyMDBjMjAwZTEwMzAwNDQwMjAwZDIwMDQxMDhmMDEwYzA0MGI0MWQ0OGEwODQxMTMxMDQxMDAwYjIwMDA0MTA4NmExMDM2MjAwMDIwMDAyZDAwMGMzYTAwODQwMjIwMDAyMDAwMjgwMjA4MzYwMjgwMDIyMDAwNDE4MDAyNmEyMjA2NDE4MDgwMDg0MTIxMTBhMzAxMjMwMDQxNDA2YTIyMDMyNDAwMjAwMzQxMDAyMDAzNmI0MTAzNzEyMjA0NmEyMTA3MjAwNDA0NDAyMDAzMjEwMjAzNDAyMDAyNDEwMDNhMDAwMDIwMDI0MTAxNmEyMjAyMjAwNzQ5MGQwMDBiMGIyMDA3NDFjMDAwMjAwNDZiMjIwNTQxN2M3MTIyMDQ2YTIxMDIyMDA0NDEwMDRhMDQ0MDAzNDAyMDA3NDEwMDM2MDIwMDIwMDc0MTA0NmEyMjA3MjAwMjQ5MGQwMDBiMGIyMDA1NDEwMzcxMjIwNDA0NDAyMDAyMjAwNDZhMjEwNDAzNDAyMDAyNDEwMDNhMDAwMDIwMDI0MTAxNmEyMjAyMjAwNDQ5MGQwMDBiMGIyMDA2MjAwMzAyN2YyMDAxMDQ0MDIwMDFhZDIxMTY0MTNmMjEwMTAyNDAwMzQwMjAxNjUwMGQwMTIwMDE0MTNmNGQwNDQwMjAwMTIwMDM2YTIwMTYyMDE2NDIwYTgwMjIxNjQyMGE3ZTdkYTc0MTMwNzIzYTAwMDAyMDAxNDEwMTZiMjEwMTBjMDEwYjBiMTAyYzAwMGIyMDAxNDEwMTZhMGMwMTBiMjAwMzQxMzAzYTAwM2Y0MTNmMGIyMjAxNmE0MWMwMDAyMDAxNmIxMGEzMDEyMDAzNDE0MDZiMjQwMDIwMDAyODAyODAwMjIwMDAyZDAwODQwMjEwMzgxMDAwMDAwYjIwMDAyMDAxMzYwMmNjMDExMDdkMjEwMjEwN2QyMTA0MjAwMDIwMDExMDEyMzYwMmQ4MDEyMDAwNDEwMDM2MDJkNDAxMjAwMDIwMDA0MWNjMDE2YTM2MDJkMDAxMDI0MDAzNDAwMjQwMjAwMDQxODAwMjZhMjAwMDQxZDAwMTZhMTA2NzIwMDAyOTAzODAwMjUwMGQwMDIwMDAyODAyOTQwMjIxMDUyMDAyMjEwMzIwMDAyODAyOTAwMjIyMDEyMDBjMTAzMDQ1MDQ0MDIwMDQyMTAzMjAwMTIwMDgxMDMwNDUwZDAzMGIyMDAzMjAwNTEwOGYwMTBjMDEwYjBiMjAwODEwMmYyMTBjNDIwMDIxMTYyMDA2MjEwMTBjMDEwYjBiMGI0MTg3ODYwODQxMjExMDQxMDAwYjQxYTU4YTA4NDExNTEwNDEwMDBiMjAwMDQxODA4MDgwMjAzNjAyZDAwMTIwMDYyMDAwNDFkMDAxNmE0MTA0MTAwZjFhMjAwNjQxZWQ4NTA4NDEwNDEwMGYxYTBiMjAwMDQyMDAzNzAzZDAwMTIwMDYyMDAwNDFkMDAxNmEyMjAzNDEwODEwMGYxYTIwMDUyMDA2MTAzZjIwMDQyMDA2MTA0ZTEwYzcwMTEwNDMyMjAxNDE4YThkMDg0MTA4MTA0ZDEwNGUyMDAyMTA0MzEwMmYyMjAyMTAzZjIwMDIxMDNmMjAwMTIwMDIxMDI0MjAwMDIwMDQzNjAyZDAwMTIwMDAyMDA0MTAxMjM2MDI4ODAyMjAwMDQxMDAzNjAyODQwMjIwMDAyMDAzMzYwMjgwMDIwMzQwMjAwMDIwMDA0MTgwMDI2YTEwYzQwMTIwMDAyODAyMDAwNDQwMjAwMDI4MDIwNDEwMDcxYTBjMDEwYjBiMjAwMDQxYTAwMjZhMjQwMDBmMGI0MWJhOGEwODQxMWExMDQxMDAwYjBkMDAxMDIyNDEwMDEwNWExMGM3MDExMDI1MGIwZDAwMTAyMjQxMDAxMDVhMTBkMTAxMTA1YjBiMGQwMDEwMjI0MTAwMTA1YTEwZDQwMTEwNWQwYjBkMDAxMDIyNDEwMDEwNWExMGQ4MDExMDVkMGIyYTAxMDE3ZjEwMjI0MTAwMTA1YTEwY2IwMTEwYWIwMTIyMDA0MWZlZmZmZmZmMDc0NzA0NDAyMDAwMTAwNzFhMGYwYjQxZWQ4NTA4NDEwNDEwMjYwYjBkMDAxMDIyNDEwMDEwNWExMGRhMDExMDVkMGIwZDAwMTAyMjQxMDAxMDVhMTBjODAxMTA1YjBiMGQwMDEwMjI0MTAwMTA1YTEwYzkwMTEwNWIwYjBkMDAxMDIyNDEwMDEwNWExMGNjMDExMDViMGIwZDAwMTAyMjQxMDAxMDVhMTBkOTAxMTA1ZDBiMGQwMDEwMjI0MTAwMTA1YTEwZDIwMTEwNWIwYmExMDEwMTAyN2YyMzAwNDE0MDZhMjIwMDI0MDAxMDIyNDEwMTEwNWEyMDAwNDEwMDEwNGIzNjAyMTQyMDAwMjAwMDQxMTQ2YTEwZDYwMTEwYWMwMTIyMDEzNjAyMTgyMDAwNDEwODZhMTAzNTIwMDAyMDAwMmQwMDBjM2EwMDIwMjAwMDIwMDAyODAyMDgzNjAyMWMyMDAwMjAwMTEwMTIzNjAyMmMyMDAwNDEwMDM2MDIyODIwMDAyMDAwNDExODZhMzYwMjI0MjAwMDQxMzQ2YTIxMDEwMzQwMjAwMDQxMzA2YTIwMDA0MTI0NmExMGJhMDEyMDAwMjgwMjMwMDQ0MDIwMDEyMDAwNDExYzZhMTBiYjAxMGMwMTBiMGIyMDAwMjgwMjFjMjAwMDJkMDAyMDEwMzcyMDAwNDE0MDZiMjQwMDBiYTAwMTAxMDI3ZjIzMDA0MTQwNmEyMjAwMjQwMDEwMjI0MTAxMTA1YTIwMDA0MTAwMTA0YjM2MDIxNDIwMDAyMDAwNDExNDZhMTBkNTAxMTBiMjAxMjIwMTM2MDIxODIwMDA0MTA4NmExMDM1MjAwMDIwMDAyZDAwMGMzYTAwMjAyMDAwMjAwMDI4MDIwODM2MDIxYzIwMDAyMDAxMTAxMjM2MDIyYzIwMDA0MTAwMzYwMjI4MjAwMDIwMDA0MTE4NmEzNjAyMjQwMzQwMjAwMDQxMzA2YTIwMDA0MTI0NmExMGI1MDEyMDAwMmQwMDNjNDEwMjQ3MDQ0MDIwMDA0MTMwNmEyMDAwNDExYzZhMTBiNjAxMGMwMTBiMGIyMDAwMjgwMjFjMjAwMDJkMDAyMDEwMzcyMDAwNDE0MDZiMjQwMDBiMGQwMDEwMjI0MTAwMTA1YTEwZDMwMTEwNWUwYjBkMDAxMDIyNDEwMDEwNWExMGQ3MDExMDVlMGJlMzAzMDIwNTdmMDI3ZTIzMDA0MTkwMDE2YjIyMDAyNDAwMTA0OTQxMDAxMDVhMjAwMDEwNGEyMjAxMzYwMjE0MDI0MDIwMDExMDY1NDEwMTQ2MDQ0MDIwMDExMDEyMjEwMTIwMDA0MTAwMzYwMjM0MjAwMDIwMDEzNjAyMzAyMDAwNDEwMDM2MDIyYzIwMDAyMDAwNDExNDZhMzYwMjI4MjAwMDQxM2M2YTIxMDIyMDAwNDFmNDAwNmEyMTAzMjAwMDQxZjgwMDZhMjEwMTAzNDAyMDAwNDFmMDAwNmEyMDAwNDEyODZhMTA2NzIwMDAyOTAzNzA1MDBkMDIyMDAwNDFlMDAwNmEyMDAxNDEwODZhMjkwMzAwMjIwNTM3MDMwMDIwMDAyMDAxMjkwMzAwMjIwNjM3MDM1ODIwMDAyMDAwMjgwMjM0MjIwNDQxMDE2YTM2MDIzNDIwMDM0MTA4NmEyMDA1MzcwMjAwMjAwMzIwMDYzNzAyMDAyMDAwNDE0MDZiMjAwMTI5MDIwMDM3MDMwMDIwMDA0MWM4MDA2YTIwMDA0MTgwMDE2YTI4MDIwMDM2MDIwMDIwMDAyMDAwMjkwMjcwMzcwMzM4MjAwNDQ1MDQ0MDIwMDA0MTIwNmEyMDAyNDEwODZhMjkwMjAwMzcwMzAwMjAwMDIwMDIyOTAyMDAzNzAzMTgwYzAxMGIwYjEwMmMwMDBiNDFiMzgzMDg0MTIyMTAwMzAwMGIyMDAwNDEwODZhMjIwMTIwMDA0MTIwNmEyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDMxODM3MDMwMDEwZGEwMTEwYTcwMTIxMDIyMDAxMjgwMjAwMjAwMjEwMzA0NTA0NDA0MTk4OGEwODQxMGQxMDQxMDAwYjEwZDIwMTEwNWMyMTAyMjAwMDEwNDMzNjAyMTgyMDAwMTA0MzM2MDIyODIwMDA0MWYwMDA2YTIyMDEyMDAyMTAzMjQxYTc4MzA4NDEwNTEwMzMyMDAwMjgwMjc0MjIwMjIwMDA0MTE4NmExMDdiMjAwMjIwMDA0MTI4NmExMDdhMjAwMDQxZTgwMDZhMjAwMDQxODAwMTZhMjkwMzAwMzcwMzAwMjAwMDQxZTAwMDZhMjAwMDQxZjgwMDZhMjkwMzAwMzcwMzAwMjAwMDIwMDAyOTAzNzAzNzAzNTgyMDAwNDEzODZhMjIwMjIwMDA0MWQ4MDA2YTIwMDAxMDg0MDEyMDAxMjAwMjEwY2QwMTIwMDExMDc0MjAwMDQxOTAwMTZhMjQwMDBiOGMwMTAxMDI3ZjIzMDA0MTQwNmEyMjAwMjQwMDEwNDk0MTAwMTA1YTEwZDIwMTEwNWMyMTAxMjAwMDEwNDMzNjAyMDAyMDAwMTA0MzM2MDIwNDIwMDA0MTA4NmEyMDAxMTAzMjQxOTU4MzA4NDExMjEwMzMyMDAwMjgwMjBjMjIwMTIwMDAxMDdiMjAwMTIwMDA0MTA0NmExMDdhMjAwMDQxMzA2YTIwMDA0MTE4NmEyOTAzMDAzNzAzMDAyMDAwNDEyODZhMjAwMDQxMTA2YTI5MDMwMDM3MDMwMDIwMDAyMDAwMjkwMzA4MzcwMzIwMjAwMDEwN2QzNjAyMzgyMDAwNDEyMDZhMTA3NDIwMDA0MTQwNmIyNDAwMGJmZjAxMDIwNTdmMDE3ZTIzMDA0MTMwNmIyMjAwMjQwMDEwMjIxMDQ5NDEwMTEwNWEyMDAwMTA0ZjM2MDIxMDEwZDIwMTEwNWMyMDAwMTA0MzM2MDIxNDIwMDAxMDQzMzYwMjE4MTAzMjIxMDI0MWFjODMwODQxMDcxMDRkMjEwMzEwNDMyMjAxMjAwMDQxMTA2YTEwNzgyMDAxMjAwMDQxMTQ2YTEwN2IyMDAxMjAwMDQxMTg2YTEwN2ExMDdkMjEwNDEwMTYyMDAyMjAwNDIwMDMyMDAxMTA0NTIxMDExMDE3MjAwMTEwMTIyMTAyMjAwMDQxMDAzNjAyMjQyMDAwMjAwMTM2MDIxYzIwMDAyMDAyNDEwMjc2MzYwMjIwMjAwMDQxMWM2YTEwNzUyMTAxMjAwMDQyMDAzNzAzMjgyMDAxMTAxMjIyMDI0MTA5NDkwNDQwMDI0MDIwMDA0MTA4NmEyMDAwNDEyODZhMjAwMjEwYjAwMTIwMDE0MTAwMjAwMDI4MDIwODIyMDEyMDAwMjgwMjBjMjIwMjEwOGEwMTFhMjAwMTIwMDIxMGIxMDEyMjA1NDI4MDgwODA4MDEwNWEwZDAwMjAwNTEwMTQyMDAwNDEzMDZhMjQwMDBmMGIwYjQxOGE4NTA4NDEwYjQxOTU4NTA4NDEwZTEwNGMwMDBiOTgwMzAyMDU3ZjAxN2UyMzAwNDFlMDAwNmIyMjAwMjQwMDEwMjIxMDQ5NDFlNGRiMDgxMDEzMzYwMjAwNDFlNGRiMDgyODAyMDA0MTAwNDgwNDQwNDFlZjgzMDg0MTExMTAwMzAwMGIyMDAwNDEwMDM2MDIzODEwNDMyMTAzMjAwMDQxMzg2YTIyMDQyODAyMDAyMTAxMDM0MDQxZTRkYjA4MjgwMjAwMjAwMTRhMDQ0MDIwMDQyMDAxNDEwMTZhMjIwMjM2MDIwMDIwMDMyMDAxMTA0YjEwNGUyMDAyMjEwMTBjMDEwYjBiMjAwMzIxMDE0MWU0ZGIwODI4MDIwMDIwMDAyODAyMzg0YTA0NDA0MTgwODQwODQxMTIxMDAzMDAwYjIwMDAyMDAxMzYwMjFjMjAwNDEwZDIwMTEwNWMxMDMyNDFmOTgyMDg0MTBkMTAzMzIwMDAyMDAxMTAxMjM2MDI1YzIwMDA0MTAwMzYwMjU4MjAwMDIwMDA0MTFjNmEzNjAyNTQyMDAwMjgwMjNjMjEwMTAzNDAyMDAwNDExMDZhMjAwMDQxZDQwMDZhMTBjNDAxMjAwMDI4MDIxMDA0NDAyMDAxMjAwMDI4MDIxNDEwNmUwYzAxMGIwYjIwMDA0MTI4NmEyMDAwNDE0MDZiMjkwMzAwMzcwMzAwMjAwMDQxMzA2YTIwMDA0MWM4MDA2YTI5MDMwMDM3MDMwMDIwMDAyMDAwMjkwMzM4MzcwMzIwMjAwMDQxMzg2YTIwMDA0MTIwNmExMDdlMDI0MDIwMDAyODAyNDQyMjAxMTBjZTAxNDUwNDQwMjAwMDI4MDI0MDIxMDIwYzAxMGIxMDQ2MjAwMDI4MDI0MDIyMDI0MjAwMjAwMTEwNDIwYjIwMDAyOTAzMzgyMDAwNDEwODZhMTAzNTIwMDAyMDAwMmQwMDBjM2EwMDNjMjAwMDIwMDAyODAyMDgzNjAyMzgyMDAyMjAwMDQxMzg2YTIyMDIxMDNlMjAwMjEwYzYwMTIwMDEyMDAyMTAzYzIwMDAyODAyMzgyMDAwMmQwMDNjMTAzNzIwMDA0MWUwMDA2YTI0MDAwYjMxMDEwMTdlMTAyMjEwNDk0MTAxMTA1YTQxMDAxMDExMjIwMDQyODE4MDkwYmJiYWQ2YWRmMDBkNWEwNDQwNDFlZjhiMDg0MTIwMTA0MTAwMGIxMGQ3MDEyMDAwMTBhYTAxMGIzMTAxMDE3ZTEwMjIxMDQ5NDEwMTEwNWE0MTAwMTAxMTIyMDA0MjgxODA5MGJiYmFkNmFkZjAwZDVhMDQ0MDQxZDI4YjA4NDExZDEwNDEwMDBiMTBkMzAxMjAwMDEwYWEwMTBiZTMwMTAxMDM3ZjIzMDA0MTMwNmIyMjAwMjQwMDEwMjIxMDQ5NDEwMjEwNWE0MTAwMTA1ODIxMDEyMDAwNDEwMTEwNTEyMjAyMzYwMjBjMjAwMDIwMDEzNjAyMDgyMDAwMjAwMTEwMTIzNjAyMTgyMDAwNDEwMDM2MDIxNDIwMDAyMDAwNDEwODZhMzYwMjEwMDM0MDIwMDA0MTFjNmEyMDAwNDExMDZhMTBjMzAxMjAwMDI4MDIxYzA0NDAyMDAwMjAwMDI4MDIyNDIyMDEzNjAyMmMyMDAwMjAwMDI4MDIyMDM2MDIyODIwMDA0MTI4NmExMGQ2MDEyMDAxMTBiOTAxMGMwMTA1MjAwMDIwMDIxMDEyMzYwMjE4MjAwMDQxMDAzNjAyMTQyMDAwMjAwMDQxMGM2YTM2MDIxMDAzNDAyMDAwNDExYzZhMjAwMDQxMTA2YTEwYzMwMTIwMDAyODAyMWMwNDQwMjAwMDIwMDAyODAyMjQyMjAxMzYwMjJjMjAwMDIwMDAyODAyMjAzNjAyMjgyMDAwNDEyODZhMTBkNTAxMjAwMTEwYjQwMTBjMDEwYjBiMjAwMDQxMzA2YTI0MDAwYjBiMGJhYTA3MDIwYjdmMDE3ZTIzMDA0MTMwNmIyMjAwMjQwMDEwMjI0MTAwMTA1YTEwYzkwMTEwNWMyMjA5MTAyZjEwMzIyMTAxNDFkMjgxMDg0MTE0MTA0ZDIxMDIxMDQzMjEwNjEwN2QyMTA3MTAxNjIwMDEyMDA3MjAwMjIwMDYxMDQ1MjEwMTEwMTcyMDAxMTAxMjIxMDIyMDAwNDEwMDM2MDIxMDIwMDAyMDAxMzYwMjA4MjAwMDIwMDI0MTAyNzYzNjAyMGMyMDAwNDEwODZhMTA3NTIyMDIxMDEyMjEwMTIwMDA0MTI4NmE0MTAwM2EwMDAwMjAwMDQxMjQ2YTIwMDEzNjAyMDAyMDAwMjAwMjM2MDIyMDIwMDAyMDAxMzYwMjFjMjAwMDQxMDAzNjAyMTgwMjQwMDI3ZjAyNDAwMjQwMjAwMTQ1MGQwMDAyNDAwMjQwMDI0MDIwMDA0MTE4NmE0MThhODUwODQxMGIxMDU0NDFmZjAxNzEwZTAyMDIwMTAwMGI0MThhODUwODQxMGI0MWVkODYwODQxMGQxMDRjMDAwYjQxMDEyMTAzMjAwMDQxMTg2YTQxOGE4NTA4NDEwYjEwNTMyMTAxMGIyMDAwMjgwMjFjMjAwMDI4MDIxODQ3MGQwMzIwMDAyZDAwMjgwNDQwNDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGIyMDAzNDUwZDAwMjAwMDQxMTg2YTIyMDQyMDAxMTAyZjEwMzI0MWU0ODIwODQxMTUxMDMzMjAwMDIwMDQxMDdjMjIwMzM2MDIwMDIwMDQyMDAxMTAyZjEwMzI0MWIyODIwODQxMGIxMDMzMjAwMDQxMTg2YTEwN2M0MmJlOGE4NjBmMTAyZTEwOGUwMTIxMDYyMDA0MjAwMTEwMmYxMDMyNDFjOTgyMDg0MTBkMTAzMzIwMDA0MTE4NmExMDdjMjAwMzEwOTIwMTQyYmU4YTg2MGYxMDJlMTA4ZTAxNDEwYTEwMmQ0MTEyMTA5NDAxMTA4ZDAxMjEwNzIwMDQyMDAxMTAyZjEwMzI0MWJkODIwODQxMGMxMDMzMjAwMDQxMTg2YTEwN2M0MTBhMTAyZDQxMTIxMDk0MDEyMDAzMTA5MDAxMTA4ZTAxNDJiZThhODYwZjEwMmUxMDhlMDE0MTBhMTAyZDQxMTIxMDk0MDExMDhkMDEyMTBhMjAwNDIwMDkxMDJmMjIwMjEwMmYxMDMyNDE4NzgxMDg0MTBmMTAzMzIwMDAyMDAwNDExODZhMTA3YzIyMDUzNjAyMTQyMDA0MjAwMjEwMmYxMDMyNDFhYjgyMDg0MTA3MTAzMzIwMDA0MTE4NmExMDdjMjEwODIwMDQyMDAyMTAzMjQxYTY4MTA4NDExMDEwMzMyMDAwNDExODZhMTA3YzIxMDIyMDAwMjAwODIwMDUxMDkxMDEyMDAyMTA5MDAxMzYwMjA4MjAwNDIwMDExMDMyNDFkNjgyMDg0MTBlMTAzMzIwMDAyODAyMWMyMjAxMjAwMDQxMTQ2YTEwNzgyMDAxMjAwMDQxMDg2YTEwNzgyMDAwMjgwMjI4MjEwMjIwMDAyODAyMTgyMTA1MjAwMDI5MDMyMDEwN2QyMTA4MTA3MTIwMDIyMDA4MjAwNTIwMDExMDQ1MjEwMTEwMTcyMDAwMjAwMTEwNzMzNjAyMDQ0MjgwODA5MGJiYmFkNmFkZjAwZDEwMmUyMTAyMjAwMDEwN2QzNjAyMTgyMDAwNDEwNDZhMjAwNDEwY2YwMTIxMDUxMDdkMjIwMTIwMDUwZDAyMWEyMDAxMjAwMDI4MDIwNDEwODkwMTQxMDE2YTQxZmYwMTcxNDEwMTRkMDQ0MDIwMDA0MTA0NmEyMDAwMTBjZjAxMGQwMjIwMDAyODAyMDAyMTAzMGIyMDAwMjgwMjA0MjAwMzEwOTMwMTIwMGExMDhlMDEyMTAxNDEwYTEwMmQ0MTEyMTA5NDAxMjAwMDI4MDIwMDEwOTAwMTIxMDMyMDA2MjAwMjEwOTIwMTIwMDcyMDAyMTA5MjAxMTA4YzAxMjAwMTIwMDIxMDhlMDEyMDAzMTA4ZDAxMTA4YzAxMGMwMjBiNDFhMDhiMDg0MTMyMTA0MTAwMGIyMDAwMjgwMjA0MjAwNzEwOTIwMTIxMDEyMDA2MjAwMjEwOTIwMTIwMDEyMDAyMTA4ZTAxMjAwMDI4MDIwMDEwOGQwMTEwOGMwMTBiMjEwMTIwMDA0MTE4NmEyMjAzMjAwOTEwMzI0MTk2ODEwODQxMTAxMDMzMjAwMzEwN2MyMTAyNDEwYTEwMmQ0MTEyMTA5NDAxMjEwMzIwMDAyODAyMDQyMDAxMTA5MjAxMjAwMzIwMDIxMDkzMDExMDhlMDEyMDAzNDEwMzEwOTQwMTEwOGQwMTEwMjUyMDAwNDEzMDZhMjQwMDBmMGI0MThhODUwODQxMGI0MTk1ODUwODQxMGUxMDRjMDAwYjAzMDAwMTBiM2MwMTAxN2YyMzAwNDExMDZiMjIwNTI0MDAyMDA1NDEwODZhMjAwMTIwMDQyMDAyMjAwMzEwOWQwMTIwMDUyODAyMGMyMTAxMjAwMDIwMDUyODAyMDgzNjAyMDAyMDAwMjAwMTM2MDIwNDIwMDU0MTEwNmEyNDAwMGIzYjAxMDE3ZjIzMDA0MTEwNmIyMjA1MjQwMDIwMDU0MTA4NmEyMDAyMjAwMzIwMDEyMDA0MTAyYjIwMDUyODAyMGMyMTAxMjAwMDIwMDUyODAyMDgzNjAyMDAyMDAwMjAwMTM2MDIwNDIwMDU0MTEwNmEyNDAwMGIwYmRhMGQwMjAwNDE4MDgwMDgwYmM2MGQ0ZTZmMjA3Mzc3NjE3MDIwNmY3MDY1NzI2MTc0Njk2ZjZlMjA2NjZmNzU2ZTY0MjA2MTc0MjA2OTZlNjQ2NTc4MjA3NTZlNzc3MjYxNzA0NTY3NmM2NDY3NjU3NDU3NzI2MTcwNzA2NTY0NDU2NzZjNjQ1NDZmNmI2NTZlNDk2NDc3NzI2MTcwNDU2NzZjNjQ3MjY1NjM2OTcwNjk2NTZlNzQyMDYxNjQ2NDcyNjU3MzczMjA2ZTZmNzQyMDczNjU3NDY1Nzg2OTc0NGQ2MTcyNmI2NTc0NjM2YzYxNjk2ZDUyNjU3NzYxNzI2NDczNjc2NTc0NDE2MzYzNmY3NTZlNzQ1NDZmNmI2NTZlNzM2NzY1NzQ1NDZmNzQ2MTZjNDI2ZjcyNzI2Zjc3NzM2NzY1NzQ1MjY1NzM2NTcyNzY2NTQ2NjE2Mzc0NmY3MjY3NjU3NDU0NmY3NDYxNmM1MjY1NzM2NTcyNzY2NTczNjc2NTc0NTQ2ZjZiNjU2ZTQ5NjQ2ZDY5NmU3NDQxNmU2NDQ1NmU3NDY1NzI0ZDYxNzI2YjY1NzQ2NzY1NzQ0OTZlNzQ2NTcyNjU3Mzc0NTI2MTc0NjU0ZDZmNjQ2NTZjNjc2NTc0NTU2ZTY0NjU3MjZjNzk2OTZlNjc0OTY0NzQ2ZjZiNjU2ZTczNTQ2ZjU1NmU2NDY1NzI2Yzc5Njk2ZTY3NDE2ZDZmNzU2ZTc0NzU2ZTY0NjU3MjZjNzk2OTZlNjc0MTZkNmY3NTZlNzQ1NDZmNTQ2ZjZiNjU2ZTczNzI2NTY0NjU2NTZkNjc2NTc0NDM2MTczNjg2NzY1NzQ0MjYxNzM2NTUyNjE3NDY1Njc2NTc0NGM2MTczNzQ1MzZjNmY3MDY1Njc2NTc0NDY2OTcyNzM3NDUzNmM2ZjcwNjU2NzY1NzQ1NTc0Njk2YzY5N2E2MTc0Njk2ZjZlNjc2NTc0NGY3MDc0Njk2ZDYxNmM1NTc0Njk2YzY5N2E2MTc0Njk2ZjZlNjM2YzYxNjk2ZDRkNzU2Yzc0Njk3MDZjNjU2NzY1NzQ1Mzc0NjE2YjY1NTQ2ZjZiNjU2ZTQ5NjQ3MjY1NjI2MTZjNjE2ZTYzNjU1MDZmNzI3NDY2NmY2YzY5NmY3Mzc0NjE2YjY1NzU2ZTczNzQ2MTZiNjU2OTZlNjM2ZjcyNzI2NTYzNzQyMDZlNzU2ZDYyNjU3MjIwNmY2NjIwNDU1MzQ0NTQyMDc0NzI2MTZlNzM2NjY1NzI3MzYxNzI2Nzc1NmQ2NTZlNzQyMDY0NjU2MzZmNjQ2NTIwNjU3MjcyNmY3MjIwMjgyOTNhMjA3NDZmNmYyMDY2NjU3NzIwNjE3MjY3NzU2ZDY1NmU3NDczNzQ2ZjZmMjA2ZDYxNmU3OTIwNjE3MjY3NzU2ZDY1NmU3NDczNzc3MjZmNmU2NzIwNmU3NTZkNjI2NTcyMjA2ZjY2MjA2MTcyNjc3NTZkNjU2ZTc0NzM2MzYxNmU2ZTZmNzQyMDczNzU2Mjc0NzI2MTYzNzQyMDYyNjU2MzYxNzU3MzY1MjA3MjY1NzM3NTZjNzQyMDc3NmY3NTZjNjQyMDYyNjUyMDZlNjU2NzYxNzQ2OTc2NjU0ZDc1NmM3NDY5NDU1MzQ0NTQ0ZTQ2NTQ1NDcyNjE2ZTczNjY2NTcyNDU1MzQ0NTQ0ZTQ2NTQ1NDcyNjE2ZTczNjY2NTcyNDU1MzQ0NTQ1NDcyNjE2ZTczNjY2NTcyNzM3OTZlNjMyMDcyNjU3Mzc1NmM3NDY5NmU3MDc1NzQyMDc0NmY2ZjIwNmM2ZjZlNjc2OTZlNzA3NTc0MjA3NDZmNmYyMDczNjg2ZjcyNzQ2MzYxNzM3NDIwNzQ2ZjIwNjkzNjM0MjA2NTcyNzI2ZjcyNGQ2MTZlNjE2NzY1NjQ1NjY1NjMyMDY5NmU2NDY1NzgyMDZmNzU3NDIwNmY2NjIwNzI2MTZlNjc2NTQ1NTM0NDU0MjA2NTc4NzA2NTYzNzQ2NTY0NDU0NzRjNDQ3Mzc0NmY3MjYxNjc2NTIwNjQ2NTYzNmY2NDY1MjA2NTcyNzI2ZjcyM2EyMDc1NmU2YjZlNmY3NzZlMjA3MjY1NjM2NTY5NzY2NTY0MjA3NDZmNmI2NTZlMjA2MTY2NzQ2NTcyMjA3Mzc3NjE3MDY1Nzg2MzY4NjE2ZTY3NjU2MjYxNjQyMDYxNzI3MjYxNzkyMDZjNjU2ZTY3NzQ2ODc3NzI2ZjZlNjcyMDcyNjU3NDc1NzI2ZTY1NjQyMDczNzc2MTcwMjA3NDZmNmI2NTZlNzM3NzYxNzA1NDZmNmI2NTZlNzM0NjY5Nzg2NTY0NDk2ZTcwNzU3NDY5NmU3NjYxNmM2OTY0MjA3NjYxNmM3NTY1Nzc3MjYxNzA3MDY1NjQ1ZjY1Njc2YzY0NWY2MzZmNmU3NDcyNjE2Mzc0NWY2MTY0NjQ3MjY1NzM3MzYzNmY2ZDcwNmY3NTZlNjQ1ZjYxNzM2ODczNzc2MTcwNWY3Mzc3NjE3MDczNjM2ZjZkNzA2Zjc1NmU2NDVmNzg2NTc4NjM2ODYxNmU2NzY1NWY3Mzc3NjE3MDczNzA2NTcyNjY2ZjcyNmQ2MTZlNjM2NTVmNjY2NTY1NzM1ZjcwNjU3MjYzNjU2ZTc0NjM2ZjZkNzA2Zjc1NmU2NDVmNjY2NTY1NzM1ZjcwNjU3MjYzNjU2ZTc0NjI2ZjZmNzM3NDY1NzI1ZjYxNjQ2NDcyNjU3MzczNmQ2ZjZlNjU3OTVmNmQ2MTcyNmI2NTc0NWY2MTY0NjQ3MjY1NzM3MzYzNmY2ZTc0NzI2ZjZjNmM2NTcyNWY2MTY0NjQ3MjY1NzM3MzYxNzM3MzY1NzQ1Zjc0NmY2YjY1NmU1ZjY5NjQ2NTZlNzQ2OTY2Njk2NTcyNzY2MTc1NmM3NDVmNjE2NDY0NzI2NTczNzM3MDYxNzk2ZDY1NmU3NDIwNzM2ODZmNzU2YzY0MjA2MjY1MjA2MTZlMjA0NTUzNDQ1NDIwNzQ2ZjZiNjU2ZTU0Njg2NTIwNjE3MzczNjU3NDIwNzQ2ZjZiNjU2ZTIwNjk2NDY1NmU3NDY5NjY2OTY1NzIyMDYxNmU2NDIwNzQ2ODY1MjA2ZDZmNmU2NTc5MjA2ZDYxNzI2YjY1NzQyMDc1NmU2NDY1NzI2Yzc5Njk2ZTY3MjA2OTY0NjU2ZTc0Njk2NjY5NjU3MjIwNjQ2ZjZlMjc3NDIwNmQ2MTc0NjM2ODU3Njg2NTZlMjA3NDYxNzI2NzY1NzQ2OTZlNjcyMDYxNmUyMDQ1NDc0YzQ0MjA2ZDYxNzI2YjY1NzQyMDc0Njg2NTIwNjE3MzczNjU3NDIwNzQ2ZjZiNjU2ZTIwNjk2NDY1NmU3NDY5NjY2OTY1NzIyMDczNjg2Zjc1NmM2NDIwNjI2NTIwNTc0NTQ3NGM0NDQzNjE2YzZjNjU3MjIwNzM2ODZmNzU2YzY0MjA2MjY1MjA3NjYxNzU2Yzc0Nzc3MjZmNmU2NzIwNzA2MTc5NmQ2NTZlNzQ2ZTZmMjA3MjY1Nzc2MTcyNjQyMDc0NmYyMDYzNmY2ZDcwNmY3NTZlNjQ2ZTZmMjA2YzY1NjY3NDIwNjE2ZDZmNzU2ZTc0MjA3NDZmMjA2MzZmNmQ3MDZmNzU2ZTY0Nzc3MjZmNmU2NzIwNzM3NzYxNzA3MDY1NjQyMDc0NmY2YjY1NmU2ZTZmMjA2NTc4Njk3NDIwNmQ2MTcyNmI2NTc0MjA3MDYxNzk2ZDY1NmU3NDIwNzI2NTYzNjU2OTc2NjU2NDZlNmYyMDcyNjU2NDY1NjU2ZDIwNzA2MTc5NmQ2NTZlNzQyMDcyNjU2MzY1Njk3NjY1NjQ0ZTZmMjA2OTZlNzQ2NTcyNjU3Mzc0MjA3MjYxNzQ2NTIwNmQ2ZjY0NjU2YzIwNzA3MjY1NzM2NTZlNzQyMDZmNmUyMDc0Njg2NTIwNmQ2ZjZlNjU3OTIwNmQ2MTcyNmI2NTc0NmU2NTc3MjA2MzZmNmQ3MDZmNzU2ZTY0MjA2NjY1NjU3MzIwNjU3ODYzNjU2NTY0MjAzMTMwMzAyNTZlNjU3NzIwNzA2NTcyNjY2ZjcyNmQ2MTZlNjM2NTIwNjY2NTY1NzMyMDY1Nzg2MzY1NjU2NDIwMzEzMDMwMjU2ZDZmNmU2NTc5NWY2ZDYxNzI2YjY1NzQ1Zjc0NmY2YjY1NmU1ZjY5NjQ2NTZlNzQ2OTY2Njk2NTcyNzc3MjYxNzA3MDY1NjQ1ZjY1Njc2YzY0NWY3NDZmNmI2NTZlNWY2OTY0NjU2ZTc0Njk2NjY5NjU3MjYyNmY2ZjczNzQ2NTcyNWY3Mzc0NjE2YjY1NjQ1Zjc0NmY2YjY1NmU1ZjY5NjQ2NTZlNzQ2OTY2Njk2NTcyNmQ2ZjZlNjU3OTVmNmQ2MTcyNmI2NTc0NWY3NTZlNjQ2NTcyNmM3OTY5NmU2NzVmNjk2NDY1NmU3NDY5NjY2OTY1NzI2MzZmNmQ3MDZmNzU2ZTY0NDU2ZTY0NzA2ZjY5NmU3NDIwNjM2MTZlMjA2ZjZlNmM3OTIwNjI2NTIwNjM2MTZjNmM2NTY0MjA2Mjc5MjA2Zjc3NmU2NTcyMDAwMDcwNjE2ZTY5NjMyMDZmNjM2Mzc1NzI3MjY1NjQwMDQxYzg4ZDA4MGIwNDljZmZmZmZmQDA1MDBAMDEwMEAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQDU3NDU0NzRjNDQyZDYxMzIzODYzMzUzOUAwMDAwMDAwMDAwMDAwMDAwMDUwMGEzYjY2NjkwMmQ1ZjRiYmYwZmY5Mzc0OGZiOTE1YWViNDMxMjRjYmY2NTA5QDAwMDAwMDAwMDAwMDAwMDAwNTAwMzJkZTRmNDBmMTdhMmY0MWM0ZTQwYzIxZjU5NmUzNmE4NDY5OTRlMzY1MDlAMDAwMDAwMDAwMDAwMDAwMDA1MDBmODgzNjY4NmY3YzZjMGYxM2Q3Mjc1MTUxYjc4ZjU5ZjhmMmY3MjlhNjUwOUBAQEBAMDAwMDAwMDAwMDAwMDAwMDA1MDAwYjFlNWIyNDQzMjUwOTU4NDlmNGUzNzEzNDY2MWQ1YmZkY2Q5MjVlN2NlYg==", - "signature": "edf0ec99b6f60414fa5e36d40cfb1d0075d01fd7c4ad7ba59bbe62b8b48eb892beb0c18bba203ff32b83827c3953847b190cdc89a4806f4615565dc2b3b5940f", - "sourceShard": 1, - "destinationShard": 1, - "blockNonce": 2127577, - "blockHash": "e3aea17b5345b45f61b233834d3b4ba0ac6f2b7d53eb3f1b1cf2bf0534ba567f", - "notarizedAtSourceInMetaNonce": 2129029, - "NotarizedAtSourceInMetaHash": "73ee8458f55bf5c9ea4a9974c0c838ced51a236c2b13238761f444598f40575e", - "notarizedAtDestinationInMetaNonce": 2129029, - "notarizedAtDestinationInMetaHash": "73ee8458f55bf5c9ea4a9974c0c838ced51a236c2b13238761f444598f40575e", - "miniblockType": "TxBlock", - "miniblockHash": "cc7e81e68269c2c633daf997fd2d52fc82d8ba3bb699d7e75250008bd9b7aa29", - "hyperblockNonce": 2129029, - "hyperblockHash": "73ee8458f55bf5c9ea4a9974c0c838ced51a236c2b13238761f444598f40575e", - "timestamp": 1707144290, - "status": "success", - "operation": "scDeploy", - "initiallyPaidFee": "82333950000000000", - "chainID": "D", - "version": 1, - "options": 0 - } - }, - "error": "", - "code": "successful" -} - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - let opt_address = tx_response.new_deployed_address.map(|e| { - multiversx_sdk::data::address::Address::from_bytes(*e.as_array()) - .to_bech32_string() - .unwrap() - }); - - let expected = - Some("erd1qqqqqqqqqqqqqpgqwpdf84ggxzqzmr2zmw959q4nlf9nz562q33sak25ze".to_string()); - - assert_eq!(opt_address, expected) - } - - #[test] - fn test_deployed_address_should_be_none_if_not_a_sc_deployment_tx() { - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "BuiltInFunctionCall", - "processingTypeOnDestination": "SCInvoking", - "hash": "238ad6dbe75dab1d53caeb9cabd584aabc6fc113c849a983afef5a5e439ce9e5", - "nonce": 13, - "round": 2192628, - "epoch": 888, - "value": "0", - "receiver": "erd1qqqqqqqqqqqqqpgqydwpdrplefjlwp3sp9xmn3vevdxdelfkwmfsw6e5xw", - "sender": "erd179xw6t04ug48m74jzyw9zq028hv66jhqayelzpzvgds0ptnzmckq2jf07f", - "gasPrice": 1000000000, - "gasLimit": 20000000, - "data": "RVNEVFRyYW5zZmVyQDRmNTU1MjRmMmQ2NDM4MzEzNzMxNjZAMDI0NmQyZDBiNmI1ZjBANjI3NTc5QDFiYzE2ZDY3NGVjODAwMDA=", - "signature": "ce984b4d785ccc7aca4b1cdea57ddcd568a502209f81e6b5bc678e1dd52b78d764fe46ea3ff77b926eb9f70eb52ae8f3f2afa2e9d0efa82655e361641458b900", - "sourceShard": 0, - "destinationShard": 1, - "blockNonce": 2129490, - "blockHash": "0ab10909b27565c5b7b59e8e1ee4a68d7046f49225fcde4c12d4b1ea3f512b8a", - "notarizedAtSourceInMetaNonce": 2130938, - "NotarizedAtSourceInMetaHash": "0c545160fd37f09f0196505b9cd2e730596bcd99438978a5bb415b9e1be1849d", - "notarizedAtDestinationInMetaNonce": 2130942, - "notarizedAtDestinationInMetaHash": "1ddd6b7aeeff824b5d11f2936a6284e470fc5abe41e34a8df229b719dc1a537d", - "miniblockType": "TxBlock", - "miniblockHash": "dc8ae41e1ae321c0fccbeb807194d11ff6e0f4ed71163764d850f1daaa60bd22", - "hyperblockNonce": 2130942, - "hyperblockHash": "1ddd6b7aeeff824b5d11f2936a6284e470fc5abe41e34a8df229b719dc1a537d", - "timestamp": 1707155768, - "status": "success", - "tokens": [ - "OURO-d8171f" - ], - "esdtValues": [ - "640821212132848" - ], - "operation": "ESDTTransfer", - "function": "buy", - "initiallyPaidFee": "359390000000000", - "chainID": "D", - "version": 1, - "options": 0 - } - }, - "error": "", - "code": "successful" -} - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - let opt_address = tx_response.new_deployed_address; - - let expected: Option
= None; - - assert_eq!(opt_address, expected) - } - - #[test] - fn test_with_tx_that_has_sc_result() { - // transaction data from the devnet, an artificial "10" result has been appended on the original result - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "BuiltInFunctionCall", - "processingTypeOnDestination": "SCInvoking", - "hash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", - "nonce": 30, - "round": 7639115, - "epoch": 6333, - "value": "0", - "receiver": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", - "sender": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", - "gasPrice": 1000000000, - "gasLimit": 25500000, - "gasUsed": 15297149, - "data": "RVNEVFRyYW5zZmVyQDQ4NTQ0ZDJkNjY2NTMxNjYzNjM5QDBkZTBiNmIzYTc2NDAwMDBANzM3NzYxNzA1NDZmNmI2NTZlNzM0NjY5Nzg2NTY0NDk2ZTcwNzU3NEA1NzQ1NDc0YzQ0MmQ2NDM3NjMzNjYyNjJAMDM3Yzc3OGZjY2U5YzU1Yg==", - "signature": "e912fae4b7a9e51ddf316a5e82a0f457d453a62e3c17477f5d6175e1b33c5e92ddb187d65f54cf3131a0603321290279a0456c20778039f2ab09b54e33c60f0d", - "sourceShard": 2, - "destinationShard": 1, - "blockNonce": 7585351, - "blockHash": "e456f38f11fec78ed26d5fda068e912739dceedb2e5ce559bf17614b8386c039", - "notarizedAtSourceInMetaNonce": 7601495, - "NotarizedAtSourceInMetaHash": "e28c6011d4b3f73f3945cae70ff251e675dfea331a70077c5ab3310e3101af17", - "notarizedAtDestinationInMetaNonce": 7601499, - "notarizedAtDestinationInMetaHash": "333d4266614e981cc1c5654f85ef496038a8cddac46dfc0ad0b7c44c37ab489d", - "miniblockType": "TxBlock", - "miniblockHash": "13e041f32fde79ebf1abdcfe692e99516f9ec6778dcb917251b440daa7f1210a", - "hyperblockNonce": 7601499, - "hyperblockHash": "333d4266614e981cc1c5654f85ef496038a8cddac46dfc0ad0b7c44c37ab489d", - "timestamp": 1694386290, - "smartContractResults": [ - { - "hash": "a23faa3c80bae0b968f007ff0fad3afdec05b4e71d749c3d583dec10c6eb05a2", - "nonce": 0, - "value": 0, - "receiver": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", - "sender": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", - "data": "ESDTTransfer@5745474c442d643763366262@03856446ff9a304b", - "prevTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", - "originalTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "logs": { - "address": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", - "identifier": "ESDTTransfer", - "topics": [ - "V0VHTEQtZDdjNmJi", - "", - "A4VkRv+aMEs=", - "qP29NHPKNFkQzDGmOEIaNRCFYABw8ku13ZyenAuvJOY=" - ], - "data": null - }, - { - "address": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", - "identifier": "writeLog", - "topics": [ - "AAAAAAAAAAAFAKVe/p1dXpaw/INtyTPaxf3N3LaNfOs=" - ], - "data": "QDZmNmI=" - }, - { - "address": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", - "identifier": "completedTxEvent", - "topics": [ - "1AWL08E9sLFIMsfFj+Fj2y9Xn/ZUQ4BYa4on2ItKUHA=" - ], - "data": null - } - ] - }, - "tokens": [ - "WEGLD-d7c6bb" - ], - "esdtValues": [ - "253719210115084363" - ], - "operation": "ESDTTransfer" - }, - { - "hash": "b7b4d15917fd215399d8e772c3c4e732008baaedc2b8172f71c91708ba7523f0", - "nonce": 31, - "value": 102028510000000, - "receiver": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", - "sender": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", - "data": "@6f6b@0000000c5745474c442d64376336626200000000000000000000000803856446ff9a304b@10", - "prevTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", - "originalTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "logs": { - "address": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", - "events": [ - { - "address": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", - "identifier": "completedTxEvent", - "topics": [ - "1AWL08E9sLFIMsfFj+Fj2y9Xn/ZUQ4BYa4on2ItKUHA=" - ], - "data": null - } - ] - }, - "operation": "transfer", - "isRefund": true - }, - { - "hash": "05a766ca05d2053d1c0fbeb1797116474a06c86402a3bfd6c132c9a24cfa1bb0", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", - "sender": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", - "data": "swapTokensFixedInput@5745474c442d643763366262@037c778fcce9c55b", - "prevTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", - "originalTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", - "gasLimit": 25050500, - "gasPrice": 1000000000, - "callType": 0, - "operation": "transfer", - "function": "swapTokensFixedInput" - }, - { - "hash": "4e639c80822d5d7780c8326d683fa9cd6d59649d14122dfabc5a96dda36da527", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgquu5rsa4ee6l4azz6vdu4hjp8z4p6tt8m0n4suht3dy", - "sender": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", - "data": "ESDTTransfer@5745474c442d643763366262@e7730d1ef1b0@737761704e6f466565416e64466f7277617264@4d45582d646332383963@0000000000000000000000000000000000000000000000000000000000000000", - "prevTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", - "originalTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "tokens": [ - "WEGLD-d7c6bb" - ], - "esdtValues": [ - "254481327387056" - ], - "operation": "ESDTTransfer", - "function": "swapNoFeeAndForward" - } - ], - "logs": { - "address": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", - "events": [ - { - "address": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", - "identifier": "ESDTTransfer", - "topics": [ - "SFRNLWZlMWY2OQ==", - "", - "DeC2s6dkAAA=", - "AAAAAAAAAAAFAKVe/p1dXpaw/INtyTPaxf3N3LaNfOs=" - ], - "data": null - }, - { - "address": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", - "identifier": "ESDTTransfer", - "topics": [ - "V0VHTEQtZDdjNmJi", - "", - "53MNHvGw", - "AAAAAAAAAAAFAOcoOHa5zr9eiFpjeVvIJxVDpaz7fOs=" - ], - "data": null - }, - { - "address": "erd1qqqqqqqqqqqqqpgquu5rsa4ee6l4azz6vdu4hjp8z4p6tt8m0n4suht3dy", - "identifier": "ESDTLocalBurn", - "topics": [ - "TUVYLWRjMjg5Yw==", - "", - "AuMDPq1jy03x" - ], - "data": null - }, - { - "address": "erd1qqqqqqqqqqqqqpgquu5rsa4ee6l4azz6vdu4hjp8z4p6tt8m0n4suht3dy", - "identifier": "swapNoFeeAndForward", - "topics": [ - "c3dhcF9ub19mZWVfYW5kX2ZvcndhcmQ=", - "TUVYLWRjMjg5Yw==", - "AAAAAAAAAAAFAKVe/p1dXpaw/INtyTPaxf3N3LaNfOs=", - "GL0=" - ], - "data": "AAAAAAAAAAAFAKVe/p1dXpaw/INtyTPaxf3N3LaNfOsAAAAMV0VHTEQtZDdjNmJiAAAABudzDR7xsAAAAApNRVgtZGMyODljAAAACQLjAz6tY8tN8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzvkcAAAAAAAAYvQAAAABk/khy" - }, - { - "address": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", - "identifier": "ESDTTransfer", - "topics": [ - "V0VHTEQtZDdjNmJi", - "", - "A4VkRv+aMEs=", - "qP29NHPKNFkQzDGmOEIaNRCFYABw8ku13ZyenAuvJOY=" - ], - "data": null - }, - { - "address": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", - "identifier": "swapTokensFixedInput", - "topics": [ - "c3dhcA==", - "SFRNLWZlMWY2OQ==", - "V0VHTEQtZDdjNmJi", - "qP29NHPKNFkQzDGmOEIaNRCFYABw8ku13ZyenAuvJOY=", - "GL0=" - ], - "data": "qP29NHPKNFkQzDGmOEIaNRCFYABw8ku13ZyenAuvJOYAAAAKSFRNLWZlMWY2OQAAAAgN4Lazp2QAAAAAAAxXRUdMRC1kN2M2YmIAAAAIA4VkRv+aMEsAAAAHA41+pMaAAAAAAAoofxtJRPkr8X9kAAAACgpOPCsHUu261HUAAAAAAHO+RwAAAAAAABi9AAAAAGT+SHI=" - } - ] - }, - "status": "success", - "tokens": [ - "HTM-fe1f69" - ], - "esdtValues": [ - "1000000000000000000" - ], - "operation": "ESDTTransfer", - "function": "swapTokensFixedInput", - "initiallyPaidFee": "502005000000000", - "fee": "399976490000000", - "chainID": "D", - "version": 1, - "options": 0 - } - }, - "error": "", - "code": "successful" - } - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - - let expected: Vec> = vec![ - hex::decode("0000000c5745474c442d64376336626200000000000000000000000803856446ff9a304b") - .unwrap(), - hex::decode("10").unwrap(), - ]; - - assert_eq!(tx_response.out, expected) - } - - #[test] - fn test_with_tx_that_has_no_sc_result() { - // transaction data from the devnet - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "SCInvoking", - "processingTypeOnDestination": "SCInvoking", - "hash": "6afac3ec13c89cc56154d06efdb457a24f58361699eee00a48202a8f8adc8c8a", - "nonce": 17, - "round": 7548071, - "epoch": 6257, - "value": "0", - "receiver": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", - "sender": "erd1uh67c2lkhyj4vh73akv7jky9sfgvus8awwcj64uju69mmfne5u7q299t7g", - "gasPrice": 1000000000, - "gasLimit": 600000000, - "gasUsed": 600000000, - "data": "cmV0dXJuVHdvVTY0", - "signature": "f3a3ca96a78c90c9cf1b08541e1777010f0176a5e1e525e631155b2784932cbfd74c9168d03ba201fd5434d1a1b4789895ddade9883eca2ee9e0bce18468fb00", - "sourceShard": 0, - "destinationShard": 0, - "blockNonce": 7502091, - "blockHash": "5ec66c651cb1514cba200e7e80a4491880f0db678ce7631c397872e3842f0aa2", - "notarizedAtSourceInMetaNonce": 7510505, - "NotarizedAtSourceInMetaHash": "8410309ec5b988af79b4dcfb44fd4729d46874ebd796672c78e417e314409051", - "notarizedAtDestinationInMetaNonce": 7510505, - "notarizedAtDestinationInMetaHash": "8410309ec5b988af79b4dcfb44fd4729d46874ebd796672c78e417e314409051", - "miniblockType": "TxBlock", - "miniblockHash": "fb150e515449c9b658879ed06f256b429239cbe78ec2c2821deb4b283ff21554", - "hyperblockNonce": 7510505, - "hyperblockHash": "8410309ec5b988af79b4dcfb44fd4729d46874ebd796672c78e417e314409051", - "timestamp": 1693840026, - "logs": { - "address": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", - "identifier": "writeLog", - "topics": [ - "5fXsK/a5JVZf0e2Z6ViFglDOQP1zsS1XkuaLvaZ5pzw=", - "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gNTk5OTMyMDAwLCBnYXMgdXNlZCA9IDE4NDE2NjU=" - ], - "data": "QDZmNmJAMGFAMDIxODcxMWEwMA==" - }, - { - "address": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", - "identifier": "completedTxEvent", - "topics": [ - "avrD7BPInMVhVNBu/bRXok9YNhaZ7uAKSCAqj4rcjIo=" - ], - "data": null - } - ] - }, - "status": "success", - "operation": "transfer", - "function": "returnTwoU64", - "initiallyPaidFee": "6067320000000000", - "fee": "6067320000000000", - "chainID": "D", - "version": 1, - "options": 0 - } - }, - "error": "", - "code": "successful" - } - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - - let expected: Vec> = vec![ - hex::decode("0a").unwrap(), - hex::decode("0218711a00").unwrap(), - ]; - - assert_eq!(tx_response.out, expected) - } - - #[test] - fn test_with_multi_contract_same_shard_tx_that_has_no_sc_result() { - // transaction data from the devnet - // context : user -> A --call--> B, B returns a MultiValue2, A returns the B's returned value - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "SCInvoking", - "processingTypeOnDestination": "SCInvoking", - "hash": "e914857f1bfd003ba411bae372266703e5f706fa412c378feb37faa5e18c3d73", - "nonce": 49, - "round": 7646960, - "epoch": 6339, - "value": "0", - "receiver": "erd1qqqqqqqqqqqqqpgqshqmekudxlxwp0d9j368etjamr5dw7k45u7qx40w6h", - "sender": "erd1uh67c2lkhyj4vh73akv7jky9sfgvus8awwcj64uju69mmfne5u7q299t7g", - "gasPrice": 1000000000, - "gasLimit": 600000000, - "gasUsed": 600000000, - "data": "Y2FsbEFub3RoZXJDb250cmFjdFJldHVyblR3b1U2NEAwMDAwMDAwMDAwMDAwMDAwMDUwMEFDRkY2QjdBNEVCODEwMUE4REU3RkY3RjVEMkMwQkYzRTRENjNGNDdBNzND", - "signature": "53cc6496647287d735bd7950f4ec79d7b51f884defda1d6d840d722b7d0d869900ccecc01602da7a7c717955e8d4ed0711b92acd980d64ed6eebd6eaed0c4608", - "sourceShard": 0, - "destinationShard": 0, - "blockNonce": 7600794, - "blockHash": "77eb0904e56d6dd596c0d72821cf33b326fde383e72903ca4df5c2f200b0ea75", - "notarizedAtSourceInMetaNonce": 7609344, - "NotarizedAtSourceInMetaHash": "12df3fe65cacde2c9742b9506ac2261d34f3c72d690301192fd8016430d51913", - "notarizedAtDestinationInMetaNonce": 7609344, - "notarizedAtDestinationInMetaHash": "12df3fe65cacde2c9742b9506ac2261d34f3c72d690301192fd8016430d51913", - "miniblockType": "TxBlock", - "miniblockHash": "03219ac7427f7511687f0768c722c759c1b1428b2664b44a0cbe2072154851ee", - "hyperblockNonce": 7609344, - "hyperblockHash": "12df3fe65cacde2c9742b9506ac2261d34f3c72d690301192fd8016430d51913", - "timestamp": 1694433360, - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqshqmekudxlxwp0d9j368etjamr5dw7k45u7qx40w6h", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqshqmekudxlxwp0d9j368etjamr5dw7k45u7qx40w6h", - "identifier": "writeLog", - "topics": [ - "5fXsK/a5JVZf0e2Z6ViFglDOQP1zsS1XkuaLvaZ5pzw=", - "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gNTk5ODA2MDAwLCBnYXMgdXNlZCA9IDM4NDcyNDA=" - ], - "data": "QDZmNmJAMGFAMDIxODcxMWEwMA==" - }, - { - "address": "erd1qqqqqqqqqqqqqpgqshqmekudxlxwp0d9j368etjamr5dw7k45u7qx40w6h", - "identifier": "completedTxEvent", - "topics": [ - "6RSFfxv9ADukEbrjciZnA+X3BvpBLDeP6zf6peGMPXM=" - ], - "data": null - } - ] - }, - "status": "success", - "operation": "transfer", - "function": "callAnotherContractReturnTwoU64", - "initiallyPaidFee": "6192060000000000", - "fee": "6192060000000000", - "chainID": "D", - "version": 2, - "options": 0 - } - }, - "error": "", - "code": "successful" - } - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - - let expected: Vec> = vec![ - hex::decode("0a").unwrap(), - hex::decode("0218711a00").unwrap(), - ]; - - assert_eq!(tx_response.out, expected) - } - - #[test] - fn test_with_multi_contract_cross_shard_tx_that_has_no_callback() { - // transaction data from the devnet - // context : user -> A --async call--> B, no callback - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "SCInvoking", - "processingTypeOnDestination": "SCInvoking", - "hash": "4d50a055663dfee2479851684d7fb83cf00695b6f03f4dbbdf0f9232477cafc4", - "nonce": 51, - "round": 7647523, - "epoch": 6340, - "value": "0", - "receiver": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "sender": "erd1uh67c2lkhyj4vh73akv7jky9sfgvus8awwcj64uju69mmfne5u7q299t7g", - "gasPrice": 1000000000, - "gasLimit": 600000000, - "gasUsed": 600000000, - "data": "YXN5bmNDYWxsQW5vdGhlckNvbnRyYWN0UmV0dXJuVHdvVTY0Tm9DYWxsYmFja0AwMDAwMDAwMDAwMDAwMDAwMDUwMEFDRkY2QjdBNEVCODEwMUE4REU3RkY3RjVEMkMwQkYzRTRENjNGNDdBNzND", - "signature": "0fc30cddaa8e5365662a14344e3434cbccf287f357be99b3ed4add182f64dded774ec0d095ab1589e7c6c07e00de3b7239efc96eb2e0e97b48c1ef87084cec01", - "sourceShard": 0, - "destinationShard": 1, - "blockNonce": 7593758, - "blockHash": "a828c0ca58ef1c8aff60e512ab59f18204f1915d4a6c8285cfceb1c5725b88e8", - "notarizedAtSourceInMetaNonce": 7609903, - "NotarizedAtSourceInMetaHash": "4e90fe45c2fdccd5cf6977c1422e5f4ffa41c4e9f31fb4a50c20455f87df1e99", - "notarizedAtDestinationInMetaNonce": 7609907, - "notarizedAtDestinationInMetaHash": "10b8666a44411c3babbe20af7154fb3d47efcb1cb10d955523ec68fece26e517", - "miniblockType": "TxBlock", - "miniblockHash": "4ff4bb1ac88911d617c9b0342aeb5158db78490c2fe414cad08adcc584a77be7", - "hyperblockNonce": 7609907, - "hyperblockHash": "10b8666a44411c3babbe20af7154fb3d47efcb1cb10d955523ec68fece26e517", - "timestamp": 1694436738, - "smartContractResults": [ - { - "hash": "462b56a1530e6070dc7c15f755e51a97a6972c8cd7891f3be4635b93211890c5", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "sender": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", - "data": "@00@0a@0218711a00", - "prevTxHash": "41d56fdacf3e14de67e821427c732b62ebfa07c82d2e5db6de75fe3a1c828d9b", - "originalTxHash": "4d50a055663dfee2479851684d7fb83cf00695b6f03f4dbbdf0f9232477cafc4", - "gasLimit": 595637825, - "gasPrice": 1000000000, - "callType": 2, - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "identifier": "writeLog", - "topics": [ - "AAAAAAAAAAAFAP/Aj4ZNGKlpx2+xeJLdoJbREzb20P0=", - "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gNTk1NjM3ODI1LCBnYXMgdXNlZCA9IDIxNjE3NzA=" - ], - "data": "QDZmNmI=" - }, - { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "identifier": "completedTxEvent", - "topics": [ - "QdVv2s8+FN5n6CFCfHMrYuv6B8gtLl223nX+OhyCjZs=" - ], - "data": null - } - ] - }, - "operation": "transfer" - }, - { - "hash": "41d56fdacf3e14de67e821427c732b62ebfa07c82d2e5db6de75fe3a1c828d9b", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", - "sender": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "data": "returnTwoU64@4f3c60", - "prevTxHash": "4d50a055663dfee2479851684d7fb83cf00695b6f03f4dbbdf0f9232477cafc4", - "originalTxHash": "4d50a055663dfee2479851684d7fb83cf00695b6f03f4dbbdf0f9232477cafc4", - "gasLimit": 597479490, - "gasPrice": 1000000000, - "callType": 1, - "operation": "transfer", - "function": "returnTwoU64" - } - ], - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "identifier": "writeLog", - "topics": [ - "5fXsK/a5JVZf0e2Z6ViFglDOQP1zsS1XkuaLvaZ5pzw=" - ], - "data": "QDZmNmI=" - } - ] - }, - "status": "success", - "operation": "transfer", - "function": "asyncCallAnotherContractReturnTwoU64NoCallback", - "initiallyPaidFee": "6214335000000000", - "fee": "6214335000000000", - "chainID": "D", - "version": 2, - "options": 0 - } - }, - "error": "", - "code": "successful" - } - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - - let expected: Vec> = vec![]; - - assert_eq!(tx_response.out, expected) - } - - #[test] - fn test_with_multi_contract_cross_shard_tx_that_has_non_returning_callback() { - // transaction data from the devnet - // context : user -> A --async call--> B --callback--> A, the callback returns () - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "SCInvoking", - "processingTypeOnDestination": "SCInvoking", - "hash": "4f7f19e448176e4d47a0f844cbd6bdb1b6c68035dafe927e8249ed60af1c3b17", - "nonce": 52, - "round": 7647560, - "epoch": 6340, - "value": "0", - "receiver": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "sender": "erd1uh67c2lkhyj4vh73akv7jky9sfgvus8awwcj64uju69mmfne5u7q299t7g", - "gasPrice": 1000000000, - "gasLimit": 600000000, - "gasUsed": 600000000, - "data": "YXN5bmNDYWxsQW5vdGhlckNvbnRyYWN0UmV0dXJuVHdvVTY0V2l0aE5vblJldHVybmluZ0NhbGxiYWNrQDAwMDAwMDAwMDAwMDAwMDAwNTAwQUNGRjZCN0E0RUI4MTAxQThERTdGRjdGNUQyQzBCRjNFNEQ2M0Y0N0E3M0M=", - "signature": "3918fce429b2059b2321b709011079755dbb835e12839278ee510e4741180540e80c6111eea1d3312b2c63446de08b20e01f6040358fa94d1633c355bb65bc0f", - "sourceShard": 0, - "destinationShard": 1, - "blockNonce": 7593795, - "blockHash": "c17e727f90025225670b7852ea9807c67753c9b3f21b6ec7cc40077e3849a8b7", - "notarizedAtSourceInMetaNonce": 7609940, - "NotarizedAtSourceInMetaHash": "c67b5c550986cfd6c94d00f4b90234eb38ee196ff0d79a00d916f3bd24be272c", - "notarizedAtDestinationInMetaNonce": 7609944, - "notarizedAtDestinationInMetaHash": "d59b7398d962ce3119679af59d5d74e10083e62c3ee2b15421cc0d607979ca18", - "miniblockType": "TxBlock", - "miniblockHash": "2977affeffeb6cf41117bed442662021cb713528cdb1d0dce4537b01caeb8e0b", - "hyperblockNonce": 7609944, - "hyperblockHash": "d59b7398d962ce3119679af59d5d74e10083e62c3ee2b15421cc0d607979ca18", - "timestamp": 1694436960, - "smartContractResults": [ - { - "hash": "fe7474188d5ca4b84c7577f03fc778d22d53c070dfcb05a9cda840229d30e4d3", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", - "sender": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "data": "returnTwoU64@4f3c60", - "prevTxHash": "4f7f19e448176e4d47a0f844cbd6bdb1b6c68035dafe927e8249ed60af1c3b17", - "originalTxHash": "4f7f19e448176e4d47a0f844cbd6bdb1b6c68035dafe927e8249ed60af1c3b17", - "gasLimit": 596979545, - "gasPrice": 1000000000, - "callType": 1, - "operation": "transfer", - "function": "returnTwoU64" - }, - { - "hash": "948dc6702b376d1e043db8de2f87ca12907c342f54cfad7dfebadf59145ca3ac", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "sender": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", - "data": "@00@0a@0218711a00", - "prevTxHash": "fe7474188d5ca4b84c7577f03fc778d22d53c070dfcb05a9cda840229d30e4d3", - "originalTxHash": "4f7f19e448176e4d47a0f844cbd6bdb1b6c68035dafe927e8249ed60af1c3b17", - "gasLimit": 595137880, - "gasPrice": 1000000000, - "callType": 2, - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "identifier": "writeLog", - "topics": [ - "AAAAAAAAAAAFAP/Aj4ZNGKlpx2+xeJLdoJbREzb20P0=", - "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gNTk1MTM3ODgwLCBnYXMgdXNlZCA9IDIyODg1NTA=" - ], - "data": "QDZmNmJAMGFAMDIxODcxMWEwMA==" - }, - { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "identifier": "completedTxEvent", - "topics": [ - "/nR0GI1cpLhMdXfwP8d40i1TwHDfywWpzahAIp0w5NM=" - ], - "data": null - } - ] - }, - "operation": "transfer" - } - ], - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "identifier": "writeLog", - "topics": [ - "5fXsK/a5JVZf0e2Z6ViFglDOQP1zsS1XkuaLvaZ5pzw=" - ], - "data": "QDZmNmI=" - } - ] - }, - "status": "success", - "operation": "transfer", - "function": "asyncCallAnotherContractReturnTwoU64WithNonReturningCallback", - "initiallyPaidFee": "6235125000000000", - "fee": "6235125000000000", - "chainID": "D", - "version": 2, - "options": 0 - } - }, - "error": "", - "code": "successful" - } - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - - let expected: Vec> = vec![]; - - assert_eq!(tx_response.out, expected) - } - - #[test] - fn test_with_multi_contract_cross_shard_tx_that_has_returning_callback() { - // transaction data from the devnet - // context : user -> A --async call--> B --callback--> A, the callback returns a MultiValue2 - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "SCInvoking", - "processingTypeOnDestination": "SCInvoking", - "hash": "f34e136ca81c0e32f6fb532b753612715675073f3718b5db009bb275d246fd7a", - "nonce": 53, - "round": 7647583, - "epoch": 6340, - "value": "0", - "receiver": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "sender": "erd1uh67c2lkhyj4vh73akv7jky9sfgvus8awwcj64uju69mmfne5u7q299t7g", - "gasPrice": 1000000000, - "gasLimit": 600000000, - "gasUsed": 600000000, - "data": "YXN5bmNDYWxsQW5vdGhlckNvbnRyYWN0UmV0dXJuVHdvVTY0V2l0aFJldHVybmluZ0NhbGxiYWNrQDAwMDAwMDAwMDAwMDAwMDAwNTAwQUNGRjZCN0E0RUI4MTAxQThERTdGRjdGNUQyQzBCRjNFNEQ2M0Y0N0E3M0M=", - "signature": "858958d4aaf9cb0220ab2933edad3f65e1cb4c58aa7940cb0f40b489d0bd9fdf5c4736a40d6e813743ee622bb91e9f86eacf01b9a31e0ff53f9c84f13c500304", - "sourceShard": 0, - "destinationShard": 1, - "blockNonce": 7593818, - "blockHash": "b19f97110ca38d3cb15f802a00ab403491b0e5804ebc701527ab50064dc06825", - "notarizedAtSourceInMetaNonce": 7609963, - "NotarizedAtSourceInMetaHash": "4d9db6de610ca778114d44fe91dd036fac7c375c373ae9e77130d3fb9efc8391", - "notarizedAtDestinationInMetaNonce": 7609967, - "notarizedAtDestinationInMetaHash": "a4573d388c31860f9bd6f9507b65d1b3130e445abcada538f10704feba4614e7", - "miniblockType": "TxBlock", - "miniblockHash": "530f5fa3c7af474a187caca8dcea02a7a155017414147871d083bed5c49ec8f5", - "hyperblockNonce": 7609967, - "hyperblockHash": "a4573d388c31860f9bd6f9507b65d1b3130e445abcada538f10704feba4614e7", - "timestamp": 1694437098, - "smartContractResults": [ - { - "hash": "065291164a8acd27c26b5a8f09664810081fda18cd54fca635196cf9b200297a", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", - "sender": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "data": "returnTwoU64@4f3c60", - "prevTxHash": "f34e136ca81c0e32f6fb532b753612715675073f3718b5db009bb275d246fd7a", - "originalTxHash": "f34e136ca81c0e32f6fb532b753612715675073f3718b5db009bb275d246fd7a", - "gasLimit": 596994205, - "gasPrice": 1000000000, - "callType": 1, - "operation": "transfer", - "function": "returnTwoU64" - }, - { - "hash": "bc31cb153ae615204625df84fe9ae3a159aa412b7342f3dca958dd5517a08197", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "sender": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", - "data": "@00@0a@0218711a00", - "prevTxHash": "065291164a8acd27c26b5a8f09664810081fda18cd54fca635196cf9b200297a", - "originalTxHash": "f34e136ca81c0e32f6fb532b753612715675073f3718b5db009bb275d246fd7a", - "gasLimit": 595152540, - "gasPrice": 1000000000, - "callType": 2, - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "identifier": "writeLog", - "topics": [ - "AAAAAAAAAAAFAP/Aj4ZNGKlpx2+xeJLdoJbREzb20P0=", - "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gNTk1MTUyNTQwLCBnYXMgdXNlZCA9IDIyODgwMTU=" - ], - "data": "QDZmNmJAMGFAMDIxODcxMWEwMA==" - }, - { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "identifier": "completedTxEvent", - "topics": [ - "BlKRFkqKzSfCa1qPCWZIEAgf2hjNVPymNRls+bIAKXo=" - ], - "data": null - } - ] - }, - "operation": "transfer" - } - ], - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "identifier": "writeLog", - "topics": [ - "5fXsK/a5JVZf0e2Z6ViFglDOQP1zsS1XkuaLvaZ5pzw=" - ], - "data": "QDZmNmI=" - } - ] - }, - "status": "success", - "operation": "transfer", - "function": "asyncCallAnotherContractReturnTwoU64WithReturningCallback", - "initiallyPaidFee": "6230670000000000", - "fee": "6230670000000000", - "chainID": "D", - "version": 2, - "options": 0 - } - }, - "error": "", - "code": "successful" - } - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - - let expected: Vec> = vec![]; - - assert_eq!(tx_response.out, expected) - } - - #[test] - fn test_process_issued_token_identifier_fungible() { - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "SCInvoking", - "processingTypeOnDestination": "SCInvoking", - "hash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", - "nonce": 61, - "round": 173598, - "epoch": 72, - "value": "50000000000000000", - "receiver": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", - "sender": "erd1x39tc3q3nn72ecjnmcz7x0qp09kp97t080x99dgyhx7zh95j0n4szskhlv", - "gasPrice": 1000000000, - "gasLimit": 100000000, - "gasUsed": 100000000, - "data": "aXNzdWVMcFRva2VuQDAwMDAwMDAwMDAwMDAwMDAwNTAwMTM5ZWQ3YWU0YWEwMzc5MmU2YmNiMzMyMzk0YTQwZmU3NDZlZWZhNDdjZWJANDU0NzRjNDQ0ZDQ1NTg0YzUwQDQ1NDc0YzQ0NGQ0NTU4", - "signature": "b5049d2906adc1305a6a8d0f42749254ca6259c6996d9a35e7dc7528b3c87b48a421879aff70bc6d81483a7559b75e5dcf9be499dcb7d57aa9f25c79ac2ad40d", - "sourceShard": 1, - "destinationShard": 1, - "blockNonce": 173354, - "blockHash": "09d85ac264a54e12e7613395211c53fe0ee5a7d3b7111bf5fec1d02794caaacd", - "notarizedAtSourceInMetaNonce": 173321, - "NotarizedAtSourceInMetaHash": "64a83759da97fe8305cd4cda4b518f2d41ef0a8f3995d264460821edad45e09e", - "notarizedAtDestinationInMetaNonce": 173321, - "notarizedAtDestinationInMetaHash": "64a83759da97fe8305cd4cda4b518f2d41ef0a8f3995d264460821edad45e09e", - "miniblockType": "TxBlock", - "miniblockHash": "7f45eee4e35ffc1fbce66b92e4dd2aeae2acb092416aa5aa775b96493256b81d", - "hyperblockNonce": 173321, - "hyperblockHash": "64a83759da97fe8305cd4cda4b518f2d41ef0a8f3995d264460821edad45e09e", - "timestamp": 1695041588, - "smartContractResults": [ - { - "hash": "bce3d0dceb0b3e5c8c5780d7da3755c3f7492d551685d493a73bf66ebd36754b", - "nonce": 0, - "value": 50000000000000000, - "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "sender": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", - "data": "issue@45474c444d45584c50@45474c444d4558@03e8@12@63616e467265657a65@74727565@63616e57697065@74727565@63616e5061757365@74727565@63616e4d696e74@74727565@63616e4275726e@74727565@63616e4368616e67654f776e6572@74727565@63616e55706772616465@74727565@63616e4164645370656369616c526f6c6573@74727565@65ba30", - "prevTxHash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", - "originalTxHash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", - "gasLimit": 89624222, - "gasPrice": 1000000000, - "callType": 1, - "originalSender": "erd1x39tc3q3nn72ecjnmcz7x0qp09kp97t080x99dgyhx7zh95j0n4szskhlv", - "operation": "transfer", - "function": "issue" - }, - { - "hash": "2a452ff652791d79be5f6933fb583cc5503e876893e54b3b51381a92aa2e904d", - "nonce": 0, - "value": 0, - "receiver": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqsl6e366", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "ESDTSetBurnRoleForAll@45474c444d45582d393563366435", - "prevTxHash": "bce3d0dceb0b3e5c8c5780d7da3755c3f7492d551685d493a73bf66ebd36754b", - "originalTxHash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "logs": { - "address": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqsl6e366", - "events": [ - { - "address": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqsl6e366", - "identifier": "completedTxEvent", - "topics": [ - "vOPQ3OsLPlyMV4DX2jdVw/dJLVUWhdSTpzv2br02dUs=" - ], - "data": null, - "additionalData": null - } - ] - }, - "operation": "transfer" - }, - { - "hash": "2c84740ccb3376ea9fa00dab6c6c93fe7a35ee0a1d6dbfa0a1e61064853b0874", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "ESDTTransfer@45474c444d45582d393563366435@03e8@00", - "prevTxHash": "bce3d0dceb0b3e5c8c5780d7da3755c3f7492d551685d493a73bf66ebd36754b", - "originalTxHash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", - "gasLimit": 39624222, - "gasPrice": 1000000000, - "callType": 2, - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "identifier": "ESDTTransfer", - "topics": [ - "RUdMRE1FWC05NWM2ZDU=", - "", - "A+g=", - "AAAAAAAAAAAFAO+ux8+3RD51ieGHV10Z68X293CYfOs=" - ], - "data": null, - "additionalData": null - }, - { - "address": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", - "identifier": "completedTxEvent", - "topics": [ - "vOPQ3OsLPlyMV4DX2jdVw/dJLVUWhdSTpzv2br02dUs=" - ], - "data": null, - "additionalData": null - } - ] - }, - "tokens": [ - "EGLDMEX-95c6d5" - ], - "esdtValues": [ - "1000" - ], - "operation": "ESDTTransfer", - "function": "\u0000" - }, - { - "hash": "c9dfc4de3c3cee319123087a4f5dd03cc051e728ec6070707a63ea977b535227", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", - "sender": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", - "data": "\u0000", - "prevTxHash": "2c84740ccb3376ea9fa00dab6c6c93fe7a35ee0a1d6dbfa0a1e61064853b0874", - "originalTxHash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", - "gasLimit": 39424222, - "gasPrice": 1000000000, - "callType": 2, - "operation": "transfer", - "function": "\u0000" - }, - { - "hash": "609c3a8e1903680fef1f6d9e47527b1b5c1259664b868af600162120ce0b8192", - "nonce": 1, - "value": 300925400000000, - "receiver": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", - "sender": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", - "data": "@6f6b", - "prevTxHash": "2c84740ccb3376ea9fa00dab6c6c93fe7a35ee0a1d6dbfa0a1e61064853b0874", - "originalTxHash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "operation": "transfer", - "isRefund": true - } - ], - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", - "identifier": "transferValueOnly", - "topics": [ - "AAAAAAAAAAAFAO+ux8+3RD51ieGHV10Z68X293CYfOs=", - "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=", - "saK8LsUAAA==" - ], - "data": null, - "additionalData": null - }, - { - "address": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", - "identifier": "writeLog", - "topics": [ - "NEq8RBGc/KziU94F4zwBeWwS+W87zFK1BLm8K5aSfOs=" - ], - "data": "QDZmNmI=", - "additionalData": null - } - ] - }, - "status": "success", - "operation": "transfer", - "function": "issueLpToken", - "initiallyPaidFee": "1214335000000000", - "fee": "1214335000000000", - "chainID": "D", - "version": 2, - "options": 0 - } - }, - "error": "", - "code": "successful" -} - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - - let expected: Option = Some("EGLDMEX-95c6d5".to_string()); - - assert_eq!(tx_response.new_issued_token_identifier, expected) - } - - #[test] - fn test_process_issued_token_identifier_semi_fungible() { - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "SCInvoking", - "processingTypeOnDestination": "SCInvoking", - "hash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", - "nonce": 65, - "round": 8422527, - "epoch": 584, - "value": "50000000000000000", - "receiver": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", - "sender": "erd1x3g000ew7zzv6kyqhj9jl2wy5g6cc72qahvvxz29zv76jwq6ssvqt0d998", - "gasPrice": 1000000000, - "gasLimit": 80000000, - "gasUsed": 80000000, - "data": "aXNzdWVUb2tlbkA0NDZmNzA2NTU0NjU3Mzc0QDQ0NGY1MDQ1NTQ0NTUzNTQ=", - "signature": "0191848976e930996f6c62d4921e732f9b0ada8b41ca3b5b63d6bfd304fd44c2a1e8e6643479618ba4a764a36e87f53882b4f707600d5b7d476f2fdd2bac040e", - "sourceShard": 0, - "destinationShard": 0, - "blockNonce": 8420241, - "blockHash": "4d302220f6015876c95e7961b770cc67f8ab63c5f0ab69b4d6c2fb15c8bc23bd", - "notarizedAtSourceInMetaNonce": 8403647, - "NotarizedAtSourceInMetaHash": "f8b83b6d38fa45dacc167b15c93dd07ee5c40db906de34f26e11e7a24f539e30", - "notarizedAtDestinationInMetaNonce": 8403647, - "notarizedAtDestinationInMetaHash": "f8b83b6d38fa45dacc167b15c93dd07ee5c40db906de34f26e11e7a24f539e30", - "miniblockType": "TxBlock", - "miniblockHash": "b7b8fc9f3b81d7daae1113cbf73457e16ee31f3a864ef3729a1a21f3a929e112", - "hyperblockNonce": 8403647, - "hyperblockHash": "f8b83b6d38fa45dacc167b15c93dd07ee5c40db906de34f26e11e7a24f539e30", - "timestamp": 1646652762, - "smartContractResults": [ - { - "hash": "9aecf3bd5dd5c706a28d1cc7059ac20db74340f136816f667dbefcc58daa3aba", - "nonce": 0, - "value": 50000000000000000, - "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "sender": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", - "data": "issueSemiFungible@446f706554657374@444f504554455354@63616e467265657a65@74727565@63616e57697065@74727565@63616e5061757365@74727565@63616e4368616e67654f776e6572@74727565@63616e55706772616465@74727565@63616e4164645370656369616c526f6c6573@74727565@5ca148", - "prevTxHash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", - "originalTxHash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", - "gasLimit": 75958360, - "gasPrice": 1000000000, - "callType": 1, - "originalSender": "erd1x3g000ew7zzv6kyqhj9jl2wy5g6cc72qahvvxz29zv76jwq6ssvqt0d998", - "operation": "transfer", - "function": "issueSemiFungible" - }, - { - "hash": "aacfe9088bb9d2d5b3fbe9cab2b2f1c6a7e9cbab2f1a41020e2c819fc9b43570", - "nonce": 66, - "value": 0, - "receiver": "erd1x3g000ew7zzv6kyqhj9jl2wy5g6cc72qahvvxz29zv76jwq6ssvqt0d998", - "sender": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", - "data": "@6f6b", - "prevTxHash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", - "originalTxHash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "operation": "transfer" - }, - { - "hash": "3f6f0f3de9e942884e7e1592823a7db7ce935a3f9d3359d8c1ee98a5645332d8", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "@00@444f5045544553542d373732303063", - "prevTxHash": "9aecf3bd5dd5c706a28d1cc7059ac20db74340f136816f667dbefcc58daa3aba", - "originalTxHash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", - "gasLimit": 25958360, - "gasPrice": 1000000000, - "callType": 2, - "originalSender": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", - "logs": { - "address": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", - "identifier": "completedTxEvent", - "topics": [ - "muzzvV3VxwaijRzHBZrCDbdDQPE2gW9mfb78xY2qOro=" - ], - "data": null - } - ] - }, - "operation": "transfer" - }, - { - "hash": "c6e4f7c5da455009fb4f6967ce8a273a97b826aa617fa798ffd0cf17bde6b97a", - "nonce": 1, - "value": 225516180000000, - "receiver": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", - "sender": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", - "data": "@6f6b", - "prevTxHash": "3f6f0f3de9e942884e7e1592823a7db7ce935a3f9d3359d8c1ee98a5645332d8", - "originalTxHash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "operation": "transfer", - "isRefund": true - } - ], - "logs": { - "address": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", - "identifier": "transferValueOnly", - "topics": [ - "AAAAAAAAAAAFAH6d74PDz8xLqvowrlOA5lVDBMUghBg=", - "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=", - "saK8LsUAAA==" - ], - "data": null - }, - { - "address": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", - "identifier": "writeLog", - "topics": [ - "NFD3vy7whM1YgLyLL6nEojWMeUDt2MMJRRM9qTgahBg=" - ], - "data": "QDZmNmI=" - } - ] - }, - "status": "success", - "operation": "transfer", - "function": "issueToken", - "initiallyPaidFee": "914840000000000", - "fee": "914840000000000", - "chainID": "1", - "version": 1, - "options": 0 - } - }, - "error": "", - "code": "successful" -} - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - - let expected: Option = Some("DOPETEST-77200c".to_string()); - - assert_eq!(tx_response.new_issued_token_identifier, expected) - } - - #[test] - fn test_process_issued_token_identifier_non_fungible() { - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "SCInvoking", - "processingTypeOnDestination": "SCInvoking", - "hash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", - "nonce": 16, - "round": 820170, - "epoch": 341, - "value": "50000000000000000", - "receiver": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "sender": "erd162knt53z7m0f9jjms9wxphr3q9d7zu4ky85xs2cc0ekrqz7k4fdq85lkuc", - "gasPrice": 1000000000, - "gasLimit": 200000000, - "gasUsed": 200000000, - "data": "aXNzdWVUb2tlbkA2NzY1NmU2NTdhNzk3M0A0NzQ1NGU=", - "signature": "e80d45f4de419799a2bbff1cae1235521c8eef1853ee45b02f95c2da74ce50d241bf75b6ab0c650245562700862ea9759caad40f3e381ac0c4d82cfe56e67c09", - "sourceShard": 2, - "destinationShard": 2, - "blockNonce": 819313, - "blockHash": "a1db4ef13f07b86678000df9cc78f244d83dcc35ae51de545f333bf616930d39", - "notarizedAtSourceInMetaNonce": 819396, - "NotarizedAtSourceInMetaHash": "6d9e511e46d318aa5b77cbfdfde14d2ce8515ce4e954b286f130a6b518ddf26a", - "notarizedAtDestinationInMetaNonce": 819396, - "notarizedAtDestinationInMetaHash": "6d9e511e46d318aa5b77cbfdfde14d2ce8515ce4e954b286f130a6b518ddf26a", - "miniblockType": "TxBlock", - "miniblockHash": "afdb278522181aeb9b12f08840e6c534e398e6af9c7f757548308e300e7ec4e9", - "hyperblockNonce": 819396, - "hyperblockHash": "6d9e511e46d318aa5b77cbfdfde14d2ce8515ce4e954b286f130a6b518ddf26a", - "timestamp": 1698921020, - "smartContractResults": [ - { - "hash": "6fe0cc002802af1744f394eee4a69224b5e775961d8386e04e7a5b9242f7ff65", - "nonce": 0, - "value": 50000000000000000, - "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "sender": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "data": "issueNonFungible@67656e657a7973@47454e@63616e467265657a65@74727565@63616e57697065@74727565@63616e5061757365@74727565@63616e5472616e736665724e4654437265617465526f6c65@74727565@63616e4368616e67654f776e6572@66616c7365@63616e55706772616465@66616c7365@63616e4164645370656369616c526f6c6573@74727565@5e30e4", - "prevTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", - "originalTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", - "gasLimit": 196098365, - "gasPrice": 1000000000, - "callType": 1, - "originalSender": "erd162knt53z7m0f9jjms9wxphr3q9d7zu4ky85xs2cc0ekrqz7k4fdq85lkuc", - "operation": "transfer", - "function": "issueNonFungible" - }, - { - "hash": "98afe82512c79f1caaf171bd5919ee469d11ba0c4f725aefcab834278c0f1e58", - "nonce": 0, - "value": 0, - "receiver": "erd1lllllllllllllllllllllllllllllllllllllllllllllllllupq9x7ny0", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "ESDTSetBurnRoleForAll@47454e2d383638353933", - "prevTxHash": "6fe0cc002802af1744f394eee4a69224b5e775961d8386e04e7a5b9242f7ff65", - "originalTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "logs": { - "address": "erd1lllllllllllllllllllllllllllllllllllllllllllllllllupq9x7ny0", - "events": [ - { - "address": "erd1lllllllllllllllllllllllllllllllllllllllllllllllllupq9x7ny0", - "identifier": "completedTxEvent", - "topics": [ - "b+DMACgCrxdE85Tu5KaSJLXndZYdg4bgTnpbkkL3/2U=" - ], - "data": null, - "additionalData": null - } - ] - }, - "operation": "transfer" - }, - { - "hash": "83494ad9369738b574a7266cbfb12ce63ccf634950cd6b0ec16107b8fb42f8f6", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "sender": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "data": "setSpecialRole@47454e2d383638353933@00000000000000000500de51fa8943c26e6933419f9bb7ceb79b7ff4f7bbaa5a@45534454526f6c654e4654437265617465@5e30e4", - "prevTxHash": "112d18ec0364b4700b1bfb3df517c80dba547a53373ece2a9e71acd5266e7b64", - "originalTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", - "gasLimit": 142399698, - "gasPrice": 1000000000, - "callType": 1, - "operation": "transfer", - "function": "setSpecialRole" - }, - { - "hash": "112d18ec0364b4700b1bfb3df517c80dba547a53373ece2a9e71acd5266e7b64", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "@00@47454e2d383638353933", - "prevTxHash": "6fe0cc002802af1744f394eee4a69224b5e775961d8386e04e7a5b9242f7ff65", - "originalTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", - "gasLimit": 146098365, - "gasPrice": 1000000000, - "callType": 2, - "originalSender": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "identifier": "writeLog", - "topics": [ - "AAAAAAAAAAAFAN5R+olDwm5pM0Gfm7fOt5t/9Pe7qlo=" - ], - "data": "QDZmNmI=", - "additionalData": null - } - ] - }, - "operation": "transfer" - }, - { - "hash": "db5d74970374337956fa61fb4fd90057b3f6a82ea3e259b389934b71a1652e5f", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "ESDTSetRole@47454e2d383638353933@45534454526f6c654e4654437265617465", - "prevTxHash": "83494ad9369738b574a7266cbfb12ce63ccf634950cd6b0ec16107b8fb42f8f6", - "originalTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "identifier": "ESDTSetRole", - "topics": [ - "R0VOLTg2ODU5Mw==", - "", - "", - "RVNEVFJvbGVORlRDcmVhdGU=" - ], - "data": null, - "additionalData": null - }, - { - "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "identifier": "completedTxEvent", - "topics": [ - "g0lK2TaXOLV0pyZsv7Es5jzPY0lQzWsOwWEHuPtC+PY=" - ], - "data": null, - "additionalData": null - } - ] - }, - "operation": "ESDTSetRole", - "function": "ESDTSetRole" - }, - { - "hash": "a6a665f47977a59c4c2baf460281fc938e04ae0f87ac2e78040a14ae27822701", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "@00", - "prevTxHash": "83494ad9369738b574a7266cbfb12ce63ccf634950cd6b0ec16107b8fb42f8f6", - "originalTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", - "gasLimit": 92399698, - "gasPrice": 1000000000, - "callType": 2, - "originalSender": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "identifier": "writeLog", - "topics": [ - "AAAAAAAAAAAFAN5R+olDwm5pM0Gfm7fOt5t/9Pe7qlo=", - "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gOTIzOTk2OTgsIGdhcyB1c2VkID0gMzE0MTg4MA==" - ], - "data": "QDZmNmI=", - "additionalData": null - }, - { - "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "identifier": "completedTxEvent", - "topics": [ - "g0lK2TaXOLV0pyZsv7Es5jzPY0lQzWsOwWEHuPtC+PY=" - ], - "data": null, - "additionalData": null - } - ] - }, - "operation": "transfer" - } - ], - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "identifier": "transferValueOnly", - "topics": [ - "AAAAAAAAAAAFAN5R+olDwm5pM0Gfm7fOt5t/9Pe7qlo=", - "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=", - "saK8LsUAAA==" - ], - "data": null, - "additionalData": null - }, - { - "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "identifier": "writeLog", - "topics": [ - "0q010iL23pLKW4FcYNxxAVvhcrYh6GgrGH5sMAvWqlo=" - ], - "data": "QDZmNmI=", - "additionalData": null - } - ] - }, - "status": "success", - "operation": "transfer", - "function": "issueToken", - "initiallyPaidFee": "2097020000000000", - "fee": "2097020000000000", - "chainID": "D", - "version": 1, - "options": 0 - } - }, - "error": "", - "code": "successful" -} - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - - let expected: Option = Some("GEN-868593".to_string()); - - assert_eq!(tx_response.new_issued_token_identifier, expected) - } - - #[test] - fn test_process_issued_token_identifier_meta_esdt() { - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "SCInvoking", - "processingTypeOnDestination": "SCInvoking", - "hash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", - "nonce": 419, - "round": 1787093, - "epoch": 744, - "value": "50000000000000000", - "receiver": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "sender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", - "gasPrice": 1000000000, - "gasLimit": 600000000, - "gasUsed": 157220928, - "data": "ZGVwbG95QXNoc3dhcExQQUNTdHJhdGVneUA0MTRjNTAyZDYzNjE2NTYxNjMzNUA0MTU0NTMyZDM0NjMzMDM5MzIzMEAwM2U4QDAzZThAQDNiOWFjYTAwQDAwMDAwMDAwMDAwMDAwMDAwNTAwOTU3MzkwYWVkYTQzMmY1MmE0MTFkNTE5NzRmZTkzZDQwZDI3NzMzZTA0NjNAMDAwMDAwMDAwMDAwMDAwMDA1MDBkMTJjYzczY2JkYTZmMjY1OWM5NTllNWQ1NzU4YWY5MmNhMTM4NDg2NTIzM0AwMDAwMDAwMDAwMDAwMDAwMDUwMDUxZGY3MTc1OGNmMmFjYTViNDZkZWQ4MTU1OGI1NTE1ZGMyOWYzZjM1MjMzQEAwMDAwMDAwMDAwMDAwMDAwMDUwMDdlNGExZGZjNDM3Y2VkNDlkYjlmMTYzNzk4NDE2Yjg0YWMyMWQ0Yzk3Y2ViMDAwMDAwMGM1NzQ1NDc0YzQ0MmQ2MTMyMzg2MzM1MzkwMDAwMDAwMDAwMDAwMDAwMDUwMGE4YmE5ZTY4NjI2YmJjOTkzZmQ3OTVlOGJiNmY0Nzk0M2IyZjVmZmE3Y2ViMDAwMDAwMGE1NTU0NGIyZDMxMzQ2NDM1Mzc2NEAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwNTAwNTFkZjcxNzU4Y2YyYWNhNWI0NmRlZDgxNTU4YjU1MTVkYzI5ZjNmMzUyMzMwMDAwMDAwYjQyNTU1MzQ0MmQ2NDM0NjMzMDMxMzQwMDAwMDAwMDAwQDAxODZhMEAyNzEw", - "signature": "4648af0b96eb430e4986b9fb760549742de09c809b46b984e5d995c898d80c25bfc0717c30da34bd89cd3005d98ee895afa39ee588b7b74b4807c63cbeade807", - "sourceShard": 1, - "destinationShard": 1, - "blockNonce": 1785520, - "blockHash": "8f926a5d79fa84bc69949a21bfbba17447091a8a074ac172fa0b88e4475a1214", - "notarizedAtSourceInMetaNonce": 1785568, - "NotarizedAtSourceInMetaHash": "eebd1aa5c3dde083f9c367242c054affedd36bfc95f7bcc1d4e2d90beb5754e9", - "notarizedAtDestinationInMetaNonce": 1785568, - "notarizedAtDestinationInMetaHash": "eebd1aa5c3dde083f9c367242c054affedd36bfc95f7bcc1d4e2d90beb5754e9", - "miniblockType": "TxBlock", - "miniblockHash": "b85d82db6d69cbc1911b3455d2837eeb3170b391926efa2eacb4d9c8e3c96ee4", - "hyperblockNonce": 1785568, - "hyperblockHash": "eebd1aa5c3dde083f9c367242c054affedd36bfc95f7bcc1d4e2d90beb5754e9", - "timestamp": 1704722558, - "smartContractResults": [ - { - "hash": "ea9a96c079e66249e6b73c0341991dad96ca81f855f2fc4abe0d432be117a882", - "nonce": 420, - "value": 4427790720000000, - "receiver": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", - "sender": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "data": "@6f6b", - "prevTxHash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", - "originalTxHash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "operation": "transfer", - "isRefund": true - }, - { - "hash": "6082975132a2c9d8197dfd0f9852b454ad344740eebdbdf93f620b2796ab723b", - "nonce": 0, - "value": 50000000000000000, - "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "sender": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "data": "registerMetaESDT@415453417368537761704c5041435661756c74@4156415348@12@63616e467265657a65@66616c7365@63616e57697065@66616c7365@63616e5061757365@66616c7365@63616e5472616e736665724e4654437265617465526f6c65@66616c7365@63616e4368616e67654f776e6572@66616c7365@63616e55706772616465@66616c7365@63616e4164645370656369616c526f6c6573@74727565@9eb30a87c92674ab1469700c0b385b3850e86de80f87dec6cf3213c7e379a646@408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43@03eb4a30", - "prevTxHash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", - "originalTxHash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", - "gasLimit": 125751600, - "gasPrice": 1000000000, - "callType": 1, - "originalSender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", - "operation": "transfer", - "function": "registerMetaESDT" - }, - { - "hash": "290f85d7ec2f7d5797510290358e9e0f76bb880451efaacb0d69280b8d94c67a", - "nonce": 0, - "value": 0, - "receiver": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqsl6e366", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "ESDTSetBurnRoleForAll@41564153482d376438623564", - "prevTxHash": "6082975132a2c9d8197dfd0f9852b454ad344740eebdbdf93f620b2796ab723b", - "originalTxHash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "originalSender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", - "logs": { - "address": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqsl6e366", - "events": [ - { - "address": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqsl6e366", - "identifier": "completedTxEvent", - "topics": [ - "YIKXUTKiydgZff0PmFK0VK00R0Duvb35P2ILJ5arcjs=" - ], - "data": null, - "additionalData": null - } - ] - }, - "operation": "transfer" - }, - { - "hash": "1aa62a6251edd216bd4e5ae59f7e676d5d2f88597685e0ec0e25ac4434bfccdb", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "@00@41564153482d376438623564@d0644194444642fd16ee156307f6fda0e8f8baf4c496e1a1dc85e027ecc08a4a@9eb30a87c92674ab1469700c0b385b3850e86de80f87dec6cf3213c7e379a646@408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43@00", - "prevTxHash": "6082975132a2c9d8197dfd0f9852b454ad344740eebdbdf93f620b2796ab723b", - "originalTxHash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", - "gasLimit": 75751600, - "gasPrice": 1000000000, - "callType": 2, - "originalSender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", - "logs": { - "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "identifier": "writeLog", - "topics": [ - "AAAAAAAAAAAFAH6UefeHERqHcLpMz2gC3xXGhFsJBGM=", - "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gNzU3NTE2MDAsIGdhcyB1c2VkID0gNDE3NjA1OQ==" - ], - "data": "QDZmNmI=", - "additionalData": [ - "QDZmNmI=" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "identifier": "completedTxEvent", - "topics": [ - "YIKXUTKiydgZff0PmFK0VK00R0Duvb35P2ILJ5arcjs=" - ], - "data": null, - "additionalData": null - } - ] - }, - "operation": "transfer" - } - ], - "logs": { - "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "identifier": "transferValueOnly", - "topics": [ - "", - "AAAAAAAAAAAFANAMwOY4h/9reS00I0pE56xrV11LBGM=" - ], - "data": "RGVwbG95RnJvbVNvdXJjZQ==", - "additionalData": [ - "RGVwbG95RnJvbVNvdXJjZQ==", - "aW5pdA==", - "QUxQLWNhZWFjNQ==", - "QVRTLTRjMDkyMA==", - "A+g=", - "A+g=", - "", - "O5rKAA==" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "identifier": "transferValueOnly", - "topics": [ - "", - "AAAAAAAAAAAFADJ0SE0vUW6bO5SurLeFIMfK/HtBBGM=" - ], - "data": "RGVwbG95RnJvbVNvdXJjZQ==", - "additionalData": [ - "RGVwbG95RnJvbVNvdXJjZQ==", - "aW5pdA==", - "AAAAAAAAAAAFANAMwOY4h/9reS00I0pE56xrV11LBGM=", - "AAAAAAAAAAAFAJVzkK7aQy9SpBHVGXT+k9QNJ3M+BGM=", - "AAAAAAAAAAAFANEsxzy9pvJlnJWeXVdYr5LKE4SGUjM=", - "AAAAAAAAAAAFAFHfcXWM8qyltG3tgVWLVRXcKfPzUjM=", - "", - "AAAAAAAAAAAFAH5KHfxDfO1J258WN5hBa4SsIdTJfOsAAAAMV0VHTEQtYTI4YzU5AAAAAAAAAAAFAKi6nmhia7yZP9eV6LtvR5Q7L1/6fOsAAAAKVVRLLTE0ZDU3ZA==", - "AAAAAQAAAAAAAAAABQBR33F1jPKspbRt7YFVi1UV3Cnz81IzAAAAC0JVU0QtZDRjMDE0AAAAAAA=", - "AYag", - "JxA=" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgqxf6ysnf029hfkwu546kt0pfqcl90c76pq33s0a320f", - "identifier": "transferValueOnly", - "topics": [ - "", - "AAAAAAAAAAAFANEsxzy9pvJlnJWeXVdYr5LKE4SGUjM=" - ], - "data": "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", - "additionalData": [ - "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", - "Z2V0RmFybWluZ1Rva2VuSWQ=" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgqxf6ysnf029hfkwu546kt0pfqcl90c76pq33s0a320f", - "identifier": "transferValueOnly", - "topics": [ - "", - "AAAAAAAAAAAFANEsxzy9pvJlnJWeXVdYr5LKE4SGUjM=" - ], - "data": "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", - "additionalData": [ - "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", - "Z2V0RmFybVRva2VuSWQ=" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgqxf6ysnf029hfkwu546kt0pfqcl90c76pq33s0a320f", - "identifier": "transferValueOnly", - "topics": [ - "", - "AAAAAAAAAAAFANEsxzy9pvJlnJWeXVdYr5LKE4SGUjM=" - ], - "data": "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", - "additionalData": [ - "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", - "Z2V0UmV3YXJkVG9rZW5JZA==" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "identifier": "transferValueOnly", - "topics": [ - "saK8LsUAAA==", - "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=" - ], - "data": "QXN5bmNDYWxs", - "additionalData": [ - "QXN5bmNDYWxs", - "cmVnaXN0ZXJNZXRhRVNEVA==", - "QVRTQXNoU3dhcExQQUNWYXVsdA==", - "QVZBU0g=", - "Eg==", - "Y2FuRnJlZXpl", - "ZmFsc2U=", - "Y2FuV2lwZQ==", - "ZmFsc2U=", - "Y2FuUGF1c2U=", - "ZmFsc2U=", - "Y2FuVHJhbnNmZXJORlRDcmVhdGVSb2xl", - "ZmFsc2U=", - "Y2FuQ2hhbmdlT3duZXI=", - "ZmFsc2U=", - "Y2FuVXBncmFkZQ==", - "ZmFsc2U=", - "Y2FuQWRkU3BlY2lhbFJvbGVz", - "dHJ1ZQ==" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgqxf6ysnf029hfkwu546kt0pfqcl90c76pq33s0a320f", - "identifier": "SCDeploy", - "topics": [ - "AAAAAAAAAAAFADJ0SE0vUW6bO5SurLeFIMfK/HtBBGM=", - "AAAAAAAAAAAFAH6UefeHERqHcLpMz2gC3xXGhFsJBGM=", - "fvRqbue54Womde/CN2IkRGkrx8tsU+xkLvi3+uwMkhY=" - ], - "data": null, - "additionalData": null - }, - { - "address": "erd1qqqqqqqqqqqqqpgq6qxvpe3csllkk7fdxs3553884344wh2tq33sakulat", - "identifier": "SCDeploy", - "topics": [ - "AAAAAAAAAAAFANAMwOY4h/9reS00I0pE56xrV11LBGM=", - "AAAAAAAAAAAFAH6UefeHERqHcLpMz2gC3xXGhFsJBGM=", - "E3blQfRJfCKLWDr06Od703DSZenIzq8KND+xUjmGY/M=" - ], - "data": null, - "additionalData": null - } - ] - }, - "status": "success", - "operation": "transfer", - "function": "deployAshswapLPACStrategy", - "initiallyPaidFee": "6936045000000000", - "fee": "2508254280000000", - "chainID": "D", - "version": 1, - "options": 0 - } - }, - "error": "", - "code": "successful" -} - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - - let expected: Option = Some("AVASH-7d8b5d".to_string()); - - assert_eq!(tx_response.new_issued_token_identifier, expected) - } - - #[test] - fn test_set_special_roles_should_not_process_issued_token_identifier() { - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "SCInvoking", - "processingTypeOnDestination": "SCInvoking", - "hash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", - "nonce": 420, - "round": 1787109, - "epoch": 744, - "value": "0", - "receiver": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "sender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", - "gasPrice": 1000000000, - "gasLimit": 600000000, - "gasUsed": 129636807, - "data": "ZmluaXNoVmF1bHREZXBsb3ltZW50cw==", - "signature": "dca943ef1a788bfa6cb0e9aa3900b8340e4908075cbfefaa2a66688f6f0c0fed349edb2eb48eec427cd9098822fba875e4d66072fbdb44cb7f4c1a416736e20c", - "sourceShard": 1, - "destinationShard": 1, - "blockNonce": 1785536, - "blockHash": "93ca539e81612768b67a85b7135f7c104e76bec031a758a6b1782910ae49dd8f", - "notarizedAtSourceInMetaNonce": 1785584, - "NotarizedAtSourceInMetaHash": "71d17afe660282bb42de1ea3eec3e3534a179bd32aa1471c2861ce411bf30552", - "notarizedAtDestinationInMetaNonce": 1785584, - "notarizedAtDestinationInMetaHash": "71d17afe660282bb42de1ea3eec3e3534a179bd32aa1471c2861ce411bf30552", - "miniblockType": "TxBlock", - "miniblockHash": "f8c60565af746e92d2c9c09a92734e5eb8da7e42c67a86854c93b349bfe287eb", - "hyperblockNonce": 1785584, - "hyperblockHash": "71d17afe660282bb42de1ea3eec3e3534a179bd32aa1471c2861ce411bf30552", - "timestamp": 1704722654, - "smartContractResults": [ - { - "hash": "c3ce9c364de3823ffae250c2bfb40aaf2b18f771ed4bd37bf788ad83a2c651f3", - "nonce": 421, - "value": 4703631930000000, - "receiver": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", - "sender": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "data": "@6f6b", - "prevTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", - "originalTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "operation": "transfer", - "isRefund": true - }, - { - "hash": "50f9c25a1402ce6d87ae9f890659c8a67462292e471e02c74d64ff7ba1995e60", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "sender": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "data": "setSpecialRole@41564153482d376438623564@00000000000000000500d00cc0e63887ff6b792d34234a44e7ac6b575d4b0463@45534454526f6c654e4654437265617465@45534454526f6c654e46544164645175616e74697479@45534454526f6c654e46544275726e@0192c6db2c69f50b6968fb22ac558337a851719519cfd1e6bbf79a07bbcf18bc@cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0@03eb4a30", - "prevTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", - "originalTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", - "gasLimit": 125751600, - "gasPrice": 1000000000, - "callType": 1, - "originalSender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", - "operation": "transfer", - "function": "setSpecialRole" - }, - { - "hash": "d6a5824a60b6c9050462c3f5a02ace00c36e8b4ba1958d132bd394e2ed1e7226", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgq6qxvpe3csllkk7fdxs3553884344wh2tq33sakulat", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "ESDTSetRole@41564153482d376438623564@45534454526f6c654e4654437265617465@45534454526f6c654e46544164645175616e74697479@45534454526f6c654e46544275726e", - "prevTxHash": "50f9c25a1402ce6d87ae9f890659c8a67462292e471e02c74d64ff7ba1995e60", - "originalTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "originalSender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", - "logs": { - "address": "erd1qqqqqqqqqqqqqpgq6qxvpe3csllkk7fdxs3553884344wh2tq33sakulat", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgq6qxvpe3csllkk7fdxs3553884344wh2tq33sakulat", - "identifier": "ESDTSetRole", - "topics": [ - "QVZBU0gtN2Q4YjVk", - "", - "", - "RVNEVFJvbGVORlRDcmVhdGU=", - "RVNEVFJvbGVORlRBZGRRdWFudGl0eQ==", - "RVNEVFJvbGVORlRCdXJu" - ], - "data": null, - "additionalData": null - }, - { - "address": "erd1qqqqqqqqqqqqqpgq6qxvpe3csllkk7fdxs3553884344wh2tq33sakulat", - "identifier": "completedTxEvent", - "topics": [ - "UPnCWhQCzm2Hrp+JBlnIpnRiKS5HHgLHTWT/e6GZXmA=" - ], - "data": null, - "additionalData": null - } - ] - }, - "operation": "ESDTSetRole", - "function": "ESDTSetRole" - }, - { - "hash": "bf1b8b4b301ff548368dfd972896489d5e2a088d5cbdfa1bfe2421cc7f641f7a", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "@00@a68d44c751eba85db0713db8dc9c10c78749189ec0d6f1af5fc67bb656c1254b@0192c6db2c69f50b6968fb22ac558337a851719519cfd1e6bbf79a07bbcf18bc@cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0@00", - "prevTxHash": "50f9c25a1402ce6d87ae9f890659c8a67462292e471e02c74d64ff7ba1995e60", - "originalTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", - "gasLimit": 75751600, - "gasPrice": 1000000000, - "callType": 2, - "originalSender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", - "logs": { - "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "identifier": "transferValueOnly", - "topics": [ - "", - "AAAAAAAAAAAFANAMwOY4h/9reS00I0pE56xrV11LBGM=" - ], - "data": "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", - "additionalData": [ - "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", - "c2V0U2hhcmVUb2tlbklkZW50aWZpZXI=", - "QVZBU0gtN2Q4YjVk" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "identifier": "transferValueOnly", - "topics": [ - "", - "AAAAAAAAAAAFANAMwOY4h/9reS00I0pE56xrV11LBGM=" - ], - "data": "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", - "additionalData": [ - "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", - "c2V0U3RyYXRlZ3lBZGRyZXNz", - "AAAAAAAAAAAFADJ0SE0vUW6bO5SurLeFIMfK/HtBBGM=" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "identifier": "completedTxEvent", - "topics": [ - "UPnCWhQCzm2Hrp+JBlnIpnRiKS5HHgLHTWT/e6GZXmA=" - ], - "data": null, - "additionalData": null - } - ] - }, - "operation": "transfer" - }, - { - "hash": "9d75a398545f488d4764149245e6ec3101debfce99477c353ac11c3239acd897", - "nonce": 1, - "value": 648519550000000, - "receiver": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "sender": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "data": "@6f6b", - "prevTxHash": "bf1b8b4b301ff548368dfd972896489d5e2a088d5cbdfa1bfe2421cc7f641f7a", - "originalTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "operation": "transfer", - "isRefund": true - } - ], - "logs": { - "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "identifier": "transferValueOnly", - "topics": [ - "", - "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=" - ], - "data": "QXN5bmNDYWxs", - "additionalData": [ - "QXN5bmNDYWxs", - "c2V0U3BlY2lhbFJvbGU=", - "QVZBU0gtN2Q4YjVk", - "AAAAAAAAAAAFANAMwOY4h/9reS00I0pE56xrV11LBGM=", - "RVNEVFJvbGVORlRDcmVhdGU=", - "RVNEVFJvbGVORlRBZGRRdWFudGl0eQ==", - "RVNEVFJvbGVORlRCdXJu" - ] - } - ] - }, - "status": "success", - "operation": "transfer", - "function": "finishVaultDeployments", - "initiallyPaidFee": "6082170000000000", - "fee": "1378538070000000", - "chainID": "D", - "version": 1, - "options": 0 - } - }, - "error": "", - "code": "successful" -} - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - - let expected: Option = None; - - assert_eq!(tx_response.new_issued_token_identifier, expected) - } - - #[test] - fn test_multisig_issue_nft_and_set_all_roles() { - let data = r#" -{ - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "SCInvoking", - "processingTypeOnDestination": "SCInvoking", - "hash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", - "nonce": 53, - "round": 3050972, - "epoch": 1246, - "value": "0", - "receiver": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "sender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", - "gasPrice": 1000000000, - "gasLimit": 80000000, - "gasUsed": 80000000, - "data": "cGVyZm9ybUFjdGlvbkAwMQ==", - "signature": "cb67645595cee5f7967d8d85af05bb7db73e80d9b97611796819249d87cd174b69b4abfc2a3fbe52df1aec965bdea921f7eb34d2b1118aa480699ad1dc85790a", - "sourceShard": 0, - "destinationShard": 0, - "blockNonce": 2984930, - "blockHash": "644ae8703b826a23e89429953919ec37f875e34a547ea9f7edd53fb71a99c746", - "notarizedAtSourceInMetaNonce": 2988311, - "NotarizedAtSourceInMetaHash": "4f608a72e654dd9f466801cd489be8ee1a73fbcd77b128559cd46182d3b9455a", - "notarizedAtDestinationInMetaNonce": 2988311, - "notarizedAtDestinationInMetaHash": "4f608a72e654dd9f466801cd489be8ee1a73fbcd77b128559cd46182d3b9455a", - "miniblockType": "TxBlock", - "miniblockHash": "c5a73671bc1d37835ddd15b926157721bc83203ec4e00cd48ae0d46015cb5f0b", - "hyperblockNonce": 2988311, - "hyperblockHash": "4f608a72e654dd9f466801cd489be8ee1a73fbcd77b128559cd46182d3b9455a", - "timestamp": 1712305832, - "smartContractResults": [ - { - "hash": "b0b3c8df519c33b314c0ee3d25abae6f17c4432fb3382676ce17a42690811cff", - "nonce": 0, - "value": 50000000000000000, - "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "sender": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "data": "registerAndSetAllRoles@54657374436f6c6c656374696f6e31@54455354434f4c4c31@4e4654@@98fa4ff554b9c6990ce577fbb816a271f690dcbd6b148f6583fe7692868ae538@08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd@5e2338", - "prevTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", - "originalTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", - "gasLimit": 73052300, - "gasPrice": 1000000000, - "callType": 1, - "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", - "operation": "transfer", - "function": "registerAndSetAllRoles" - }, - { - "hash": "5ae4f74e134e4fa63c8b92e06ff12b2a4b544233d01d80db6a922af35ee55356", - "nonce": 1, - "value": 196430610000000, - "receiver": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "sender": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "data": "@6f6b", - "prevTxHash": "c4a24b01b48d32308636310e2d335d6ed1f34dcbdfc1133aed7995e78e831c18", - "originalTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "operation": "transfer", - "isRefund": true - }, - { - "hash": "7589c1ad622d8a9ab2f186731fc82aeeab0aea5a8198cb94b6eba85a966e7962", - "nonce": 0, - "value": 0, - "receiver": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqq2m3f0f", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "ESDTSetBurnRoleForAll@54455354434f4c4c312d356161383063", - "prevTxHash": "b0b3c8df519c33b314c0ee3d25abae6f17c4432fb3382676ce17a42690811cff", - "originalTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", - "logs": { - "address": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqq2m3f0f", - "events": [ - { - "address": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqq2m3f0f", - "identifier": "completedTxEvent", - "topics": [ - "sLPI31GcM7MUwO49JauubxfEQy+zOCZ2zhekJpCBHP8=" - ] - } - ] - }, - "operation": "transfer" - }, - { - "hash": "86d1ec3365ea1311dbde2f2366de4ea8627d7e49c29a974578c0869b66903cbc", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "ESDTSetRole@54455354434f4c4c312d356161383063@45534454526f6c654e4654437265617465@45534454526f6c654e46544275726e@45534454526f6c654e465455706461746541747472696275746573@45534454526f6c654e4654416464555249", - "prevTxHash": "b0b3c8df519c33b314c0ee3d25abae6f17c4432fb3382676ce17a42690811cff", - "originalTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "identifier": "ESDTSetRole", - "topics": [ - "VEVTVENPTEwxLTVhYTgwYw==", - "", - "", - "RVNEVFJvbGVORlRDcmVhdGU=", - "RVNEVFJvbGVORlRCdXJu", - "RVNEVFJvbGVORlRVcGRhdGVBdHRyaWJ1dGVz", - "RVNEVFJvbGVORlRBZGRVUkk=" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "identifier": "completedTxEvent", - "topics": [ - "sLPI31GcM7MUwO49JauubxfEQy+zOCZ2zhekJpCBHP8=" - ] - } - ] - }, - "operation": "ESDTSetRole", - "function": "ESDTSetRole" - }, - { - "hash": "c4a24b01b48d32308636310e2d335d6ed1f34dcbdfc1133aed7995e78e831c18", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "@00@54455354434f4c4c312d356161383063@3ec73c55022548038bbe06c0639156b3db70b7c770955e340f14fcfcd45df06a@98fa4ff554b9c6990ce577fbb816a271f690dcbd6b148f6583fe7692868ae538@08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd@00", - "prevTxHash": "b0b3c8df519c33b314c0ee3d25abae6f17c4432fb3382676ce17a42690811cff", - "originalTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", - "gasLimit": 23052300, - "gasPrice": 1000000000, - "callType": 2, - "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "identifier": "callBack", - "topics": [ - "YXN5bmNDYWxsU3VjY2Vzcw==", - "VEVTVENPTEwxLTVhYTgwYw==" - ], - "additionalData": [ - "" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "identifier": "completedTxEvent", - "topics": [ - "sLPI31GcM7MUwO49JauubxfEQy+zOCZ2zhekJpCBHP8=" - ] - } - ] - }, - "operation": "transfer" - } - ], - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "identifier": "performAction", - "topics": [ - "c3RhcnRQZXJmb3JtQWN0aW9u" - ], - "data": "AAAAAQYAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAL//wAAAAexorwuxQAAAAAAFnJlZ2lzdGVyQW5kU2V0QWxsUm9sZXMAAAAEAAAAD1Rlc3RDb2xsZWN0aW9uMQAAAAlURVNUQ09MTDEAAAADTkZUAAAAAAAAAATjKv7ckE/hk5dGrZc76zg1Y89jZCumabMED5uUKKXtYLE6AXQjw2bK/4zs+3ehJhChMPSIgTQSLHk3/q4NbX0XOvjZyUI7JXfGJSciwdkCEqQRH3ID+XRPdvz6HQoxADOyoRVVzlIeSUTgmrF1SdhbSH3NJshLUBejnjGjZwiJug==", - "additionalData": [ - "AAAAAQYAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAL//wAAAAexorwuxQAAAAAAFnJlZ2lzdGVyQW5kU2V0QWxsUm9sZXMAAAAEAAAAD1Rlc3RDb2xsZWN0aW9uMQAAAAlURVNUQ09MTDEAAAADTkZUAAAAAAAAAATjKv7ckE/hk5dGrZc76zg1Y89jZCumabMED5uUKKXtYLE6AXQjw2bK/4zs+3ehJhChMPSIgTQSLHk3/q4NbX0XOvjZyUI7JXfGJSciwdkCEqQRH3ID+XRPdvz6HQoxADOyoRVVzlIeSUTgmrF1SdhbSH3NJshLUBejnjGjZwiJug==" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "identifier": "performAction", - "topics": [ - "cGVyZm9ybUFzeW5jQ2FsbA==", - "AQ==", - "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=", - "saK8LsUAAA==", - "BGa4HQ==", - "cmVnaXN0ZXJBbmRTZXRBbGxSb2xlcw==", - "VGVzdENvbGxlY3Rpb24x", - "VEVTVENPTEwx", - "TkZU", - "" - ], - "additionalData": [ - "" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "identifier": "transferValueOnly", - "topics": [ - "saK8LsUAAA==", - "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=" - ], - "data": "QXN5bmNDYWxs", - "additionalData": [ - "QXN5bmNDYWxs", - "cmVnaXN0ZXJBbmRTZXRBbGxSb2xlcw==", - "VGVzdENvbGxlY3Rpb24x", - "VEVTVENPTEwx", - "TkZU", - "" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "identifier": "writeLog", - "topics": [ - "4yr+3JBP4ZOXRq2XO+s4NWPPY2QrpmmzBA+blCil7WA=" - ], - "data": "QDZmNmI=", - "additionalData": [ - "QDZmNmI=" - ] - } - ] - }, - "status": "success", - "operation": "transfer", - "function": "performAction", - "initiallyPaidFee": "873260000000000", - "fee": "873260000000000", - "chainID": "D", - "version": 1, - "options": 0 - } - }, - "code": "successful" -} - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - - let expected = Some("TESTCOLL1-5aa80c".to_string()); - - assert_eq!(tx_response.new_issued_token_identifier, expected) - } -} diff --git a/framework/scenario/tests/tx_response_tests.rs b/framework/scenario/tests/tx_response_tests.rs new file mode 100644 index 0000000000..a1d9da5a34 --- /dev/null +++ b/framework/scenario/tests/tx_response_tests.rs @@ -0,0 +1,2661 @@ +use multiversx_sc::types::Address; +use multiversx_sc_scenario::scenario_model::{is_out_scr, TxResponse}; +use multiversx_sdk::data::transaction::{TransactionInfo, TransactionOnNetwork}; + +#[test] +fn test_transaction_multiple_sc_results() { + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "BuiltInFunctionCall", + "processingTypeOnDestination": "SCInvoking", + "hash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", + "nonce": 236, + "round": 3353069, + "epoch": 1371, + "value": "0", + "receiver": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", + "sender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "gasPrice": 1000000000, + "gasLimit": 100000000, + "gasUsed": 12767998, + "data": "RVNEVFRyYW5zZmVyQDU1NTQ0YjJkMzEzNDY0MzUzNzY0QDhhYzcyMzA0ODllODAwMDBANzM3NzYxNzA1NDZmNmI2NTZlNzM0NjY5Nzg2NTY0NDk2ZTcwNzU3NEA1NzQ1NDc0YzQ0MmQ2MTMyMzg2MzM1MzlAZThkNGE1MTAwMA==", + "signature": "caed340339e3ae17a92783f5f08f96ac875885e44c25510cd11251ce23f22994985a6605c4d36f841b7110288a5e928f624f150a66a9de8ade36b68028a9af09", + "sourceShard": 0, + "destinationShard": 1, + "blockNonce": 3288476, + "blockHash": "0e70ea5fb26c58b1029c84e24eb9a661272b6253d30c668af91f167bfd67b2b0", + "notarizedAtSourceInMetaNonce": 3290316, + "NotarizedAtSourceInMetaHash": "8200662ca3ade8fa8e1dd3a4184b0a74d4c43de8f4153170a506f60c94ad3e8b", + "notarizedAtDestinationInMetaNonce": 3290320, + "notarizedAtDestinationInMetaHash": "e5f332a8f2070fd1c4ff90f5dc1ee691f36e4ecb9cb5c37e8e7c8595036c3792", + "miniblockType": "TxBlock", + "miniblockHash": "d271ad87c6cf8653cc950272f3ee5e976820ada80468518fa35fe45b6e33dca8", + "hyperblockNonce": 3290320, + "hyperblockHash": "e5f332a8f2070fd1c4ff90f5dc1ee691f36e4ecb9cb5c37e8e7c8595036c3792", + "timestamp": 1714118414, + "smartContractResults": [ + { + "hash": "c0e63f1018ece1036e3e6dc405553e5f6badfe0f5d2a104f4cd4457a872d02f9", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", + "sender": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", + "data": "swapTokensFixedInput@5745474c442d613238633539@e8d4a51000", + "prevTxHash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", + "originalTxHash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", + "gasLimit": 99559500, + "gasPrice": 1000000000, + "callType": 0, + "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "operation": "transfer", + "function": "swapTokensFixedInput" + }, + { + "hash": "40078cec63b6e0d0d9522ea5e6d2d0cb6f21ebae981f354de3dc3545ac2928ad", + "nonce": 0, + "value": 0, + "receiver": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "sender": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", + "data": "ESDTTransfer@5745474c442d613238633539@9b35e4dd3902b9", + "prevTxHash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", + "originalTxHash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "logs": { + "address": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", + "identifier": "ESDTTransfer", + "topics": [ + "V0VHTEQtYTI4YzU5", + "", + "mzXk3TkCuQ==", + "4yr+3JBP4ZOXRq2XO+s4NWPPY2QrpmmzBA+blCil7WA=" + ], + "data": null, + "additionalData": [ + "", + "RVNEVFRyYW5zZmVy", + "V0VHTEQtYTI4YzU5", + "mzXk3TkCuQ==" + ] + }, + { + "address": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "identifier": "writeLog", + "topics": [ + "AAAAAAAAAAAFAKi6nmhia7yZP9eV6LtvR5Q7L1/6fOs=" + ], + "data": "QDZmNmI=", + "additionalData": [ + "QDZmNmI=" + ] + }, + { + "address": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "identifier": "completedTxEvent", + "topics": [ + "xtxxjFbIeVFW2Ef0+XaPKxl2pRbTkP3OD1uLrRrDzOU=" + ], + "data": null, + "additionalData": null + } + ] + }, + "tokens": [ + "WEGLD-a28c59" + ], + "esdtValues": [ + "43687878470468281" + ], + "operation": "ESDTTransfer" + }, + { + "hash": "26487a550721b8282ceafe603bb4d53ee93929ffd9ded39b08e7422adb4d8795", + "nonce": 237, + "value": 872320020000000, + "receiver": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "sender": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", + "data": "@6f6b@0000000c5745474c442d6132386335390000000000000000000000079b35e4dd3902b9", + "prevTxHash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", + "originalTxHash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "logs": { + "address": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "events": [ + { + "address": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "identifier": "completedTxEvent", + "topics": [ + "xtxxjFbIeVFW2Ef0+XaPKxl2pRbTkP3OD1uLrRrDzOU=" + ], + "data": null, + "additionalData": null + } + ] + }, + "operation": "transfer", + "isRefund": true + }, + { + "hash": "798ba4333a7cedb62f811d942dedb8c0c09bf9945a0d2ccede2eaed967eba135", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgqw88ux2l44eufvwz2uhvduhq03g8pxc4j0n4s0frzjz", + "sender": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", + "data": "ESDTTransfer@55544b2d313464353764@2d79883d2000@6465706f7369745377617046656573", + "prevTxHash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", + "originalTxHash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "tokens": [ + "UTK-14d57d" + ], + "esdtValues": [ + "50000000000000" + ], + "operation": "ESDTTransfer", + "function": "depositSwapFees" + } + ], + "logs": { + "address": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", + "events": [ + { + "address": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "identifier": "ESDTTransfer", + "topics": [ + "VVRLLTE0ZDU3ZA==", + "", + "iscjBInoAAA=", + "AAAAAAAAAAAFAKi6nmhia7yZP9eV6LtvR5Q7L1/6fOs=" + ], + "data": null, + "additionalData": [ + "", + "RVNEVFRyYW5zZmVy", + "VVRLLTE0ZDU3ZA==", + "iscjBInoAAA=", + "c3dhcFRva2Vuc0ZpeGVkSW5wdXQ=", + "V0VHTEQtYTI4YzU5", + "6NSlEAA=" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", + "identifier": "ESDTTransfer", + "topics": [ + "VVRLLTE0ZDU3ZA==", + "", + "LXmIPSAA", + "AAAAAAAAAAAFAHHPwyv1rniWOErl2N5cD4oOE2KyfOs=" + ], + "data": "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", + "additionalData": [ + "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", + "RVNEVFRyYW5zZmVy", + "VVRLLTE0ZDU3ZA==", + "LXmIPSAA", + "ZGVwb3NpdFN3YXBGZWVz" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgqw88ux2l44eufvwz2uhvduhq03g8pxc4j0n4s0frzjz", + "identifier": "depositSwapFees", + "topics": [ + "ZGVwb3NpdF9zd2FwX2ZlZXNfZXZlbnQ=", + "AAAAAAAAAAAFAKi6nmhia7yZP9eV6LtvR5Q7L1/6fOs=", + "ug==", + "AAAAClVUSy0xNGQ1N2QAAAAAAAAAAAAAAAYteYg9IAA=" + ], + "data": null, + "additionalData": [ + "" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", + "identifier": "ESDTTransfer", + "topics": [ + "V0VHTEQtYTI4YzU5", + "", + "mzXk3TkCuQ==", + "4yr+3JBP4ZOXRq2XO+s4NWPPY2QrpmmzBA+blCil7WA=" + ], + "data": "RGlyZWN0Q2FsbA==", + "additionalData": [ + "RGlyZWN0Q2FsbA==", + "RVNEVFRyYW5zZmVy", + "V0VHTEQtYTI4YzU5", + "mzXk3TkCuQ==" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", + "identifier": "swapTokensFixedInput", + "topics": [ + "c3dhcA==", + "VVRLLTE0ZDU3ZA==", + "V0VHTEQtYTI4YzU5", + "4yr+3JBP4ZOXRq2XO+s4NWPPY2QrpmmzBA+blCil7WA=", + "BVs=" + ], + "data": "4yr+3JBP4ZOXRq2XO+s4NWPPY2QrpmmzBA+blCil7WAAAAAKVVRLLTE0ZDU3ZAAAAAiKxyMEiegAAAAAAAxXRUdMRC1hMjhjNTkAAAAHmzXk3TkCuQAAAAcjhvJvwQAAAAAACwGBykedC25GCD5kAAAACgGwxHNBlOj27dQAAAAAADItnAAAAAAAAAVbAAAAAGYrXw4=", + "additionalData": [ + "4yr+3JBP4ZOXRq2XO+s4NWPPY2QrpmmzBA+blCil7WAAAAAKVVRLLTE0ZDU3ZAAAAAiKxyMEiegAAAAAAAxXRUdMRC1hMjhjNTkAAAAHmzXk3TkCuQAAAAcjhvJvwQAAAAAACwGBykedC25GCD5kAAAACgGwxHNBlOj27dQAAAAAADItnAAAAAAAAAVbAAAAAGYrXw4=" + ] + } + ] + }, + "status": "success", + "tokens": [ + "UTK-14d57d" + ], + "esdtValues": [ + "10000000000000000000" + ], + "operation": "ESDTTransfer", + "function": "swapTokensFixedInput", + "initiallyPaidFee": "1238095000000000", + "fee": "365774980000000", + "chainID": "D", + "version": 1, + "options": 0 + } + }, + "error": "", + "code": "successful" + }"#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + assert_eq!(tx_response.api_scrs.len(), 4usize); + assert!(is_out_scr(&tx_response.api_scrs.get(2).unwrap())); +} + +#[test] +fn test_deployed_address() { + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "SCDeployment", + "processingTypeOnDestination": "SCDeployment", + "hash": "07a176d1734d1901d396be344f97e1d80f076269e9559f9b2110f6f11c4f74de", + "nonce": 427, + "round": 2190715, + "epoch": 887, + "value": "0", + "receiver": "erd1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq6gq4hu", + "sender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", + "gasPrice": 1000000000, + "gasLimit": 600000000, + "data": "MDA2MTczNmQwMTAwMDAwMDAxOTgwMTE5NjAwMjdmN2YwMDYwMDE3ZjAxN2Y2MDAwMDA2MDAwMDE3ZjYwMDI3ZjdmMDE3ZjYwMDM3ZjdmN2YwMDYwMDE3ZjAwNjAwNDdmN2Y3ZjdmMDA2MDA1N2Y3ZjdmN2Y3ZjAwNjAwMzdmN2Y3ZjAxN2Y2MDA0N2Y3ZjdmN2YwMTdmNjAwMjdmN2UwMDYwMDE3ZjAxN2U2MDAyN2Y3ZjAxN2U2MDA1N2Y3ZjdlN2Y3ZjAxN2Y2MDA2N2U3ZjdmN2Y3ZjdmMDE3ZjYwMDE3ZTAwNjAwMDAxN2U2MDAxN2UwMTdmNjAwNDdmN2Y3ZTdmMDA2MDA1N2U3ZjdmN2Y3ZjAxN2Y2MDA0N2Y3ZjdmN2UwMDYwMDE3ZTAxN2U2MDA0N2Y3ZTdmN2YwMDYwMDI3ZTdmMDAwMmMxMDcyOTAzNjU2ZTc2MTI2ZDYxNmU2MTY3NjU2NDUzNjk2NzZlNjE2YzQ1NzI3MjZmNzIwMDA2MDM2NTZlNzYwZTYyNjk2NzQ5NmU3NDUzNjU3NDQ5NmU3NDM2MzQwMDBiMDM2NTZlNzYwOTYyNjk2NzQ5NmU3NDQxNjQ2NDAwMDUwMzY1NmU3NjBiNzM2OTY3NmU2MTZjNDU3MjcyNmY3MjAwMDAwMzY1NmU3NjBhNmQ0Mjc1NjY2NjY1NzI0ZTY1NzcwMDAzMDM2NTZlNzYwZDZkNDI3NTY2NjY2NTcyNDE3MDcwNjU2ZTY0MDAwNDAzNjU2ZTc2MDk2ZDQyNzU2NjY2NjU3MjQ1NzEwMDA0MDM2NTZlNzYwZDZkNDI3NTY2NjY2NTcyNDY2OTZlNjk3MzY4MDAwMTAzNjU2ZTc2MjI2ZDYxNmU2MTY3NjU2NDRkNzU2Yzc0Njk1NDcyNjE2ZTczNjY2NTcyNDU1MzQ0NTQ0ZTQ2NTQ0NTc4NjU2Mzc1NzQ2NTAwMGUwMzY1NmU3NjFiNmQ2MTZlNjE2NzY1NjQ0NTc4NjU2Mzc1NzQ2NTRmNmU0NDY1NzM3NDQzNmY2ZTc0NjU3ODc0MDAwZjAzNjU2ZTc2MGQ2ZDYxNmU2MTY3NjU2NDQzNjE2YzZjNjU3MjAwMDYwMzY1NmU3NjEwNmQ2MTZlNjE2NzY1NjQ1MzQzNDE2NDY0NzI2NTczNzMwMDA2MDM2NTZlNzYxMzZkNjE2ZTYxNjc2NTY0NGY3NzZlNjU3MjQxNjQ2NDcyNjU3MzczMDAwNjAzNjU2ZTc2MWM2ZDYxNmU2MTY3NjU2NDQ3NjU3NDRkNzU2Yzc0Njk0NTUzNDQ1NDQzNjE2YzZjNTY2MTZjNzU2NTAwMDYwMzY1NmU3NjEyNmQ0Mjc1NjY2NjY1NzI0NzY1NzQ0MTcyNjc3NTZkNjU2ZTc0MDAwNDAzNjU2ZTc2MTI2ZDQyNzU2NjY2NjU3MjQxNzA3MDY1NmU2NDQyNzk3NDY1NzMwMDA5MDM2NTZlNzYxOTYyNjk2NzQ5NmU3NDQ3NjU3NDU1NmU3MzY5Njc2ZTY1NjQ0MTcyNjc3NTZkNjU2ZTc0MDAwMDAzNjU2ZTc2MWI3MzZkNjE2YzZjNDk2ZTc0NDc2NTc0NTU2ZTczNjk2NzZlNjU2NDQxNzI2Nzc1NmQ2NTZlNzQwMDBjMDM2NTZlNzYxMDZkNDI3NTY2NjY2NTcyNDc2NTc0NGM2NTZlNjc3NDY4MDAwMTAzNjU2ZTc2MGY2NzY1NzQ0ZTc1NmQ0MTcyNjc3NTZkNjU2ZTc0NzMwMDAzMDM2NTZlNzYxNjczNmQ2MTZjNmM0OTZlNzQ0NjY5NmU2OTczNjg1NTZlNzM2OTY3NmU2NTY0MDAxMDAzNjU2ZTc2MDk2MjY5Njc0OTZlNzQ1Mzc1NjIwMDA1MDM2NTZlNzYwYTY3NjU3NDQ3NjE3MzRjNjU2Njc0MDAxMTAzNjU2ZTc2MGY2MzZjNjU2MTZlNTI2NTc0NzU3MjZlNDQ2MTc0NjEwMDAyMDM2NTZlNzYwZjZkNDI3NTY2NjY2NTcyNTM2NTc0NDI3OTc0NjU3MzAwMDkwMzY1NmU3NjA5NjI2OTY3NDk2ZTc0NDM2ZDcwMDAwNDAzNjU2ZTc2MGE2MjY5Njc0OTZlNzQ1NDQ0Njk3NjAwMDUwMzY1NmU3NjA5NjI2OTY3NDk2ZTc0NGQ3NTZjMDAwNTAzNjU2ZTc2MTk2ZDQyNzU2NjY2NjU3MjQ2NzI2ZjZkNDI2OTY3NDk2ZTc0NTU2ZTczNjk2NzZlNjU2NDAwMDQwMzY1NmU3NjE3NmQ0Mjc1NjY2NjY1NzI1NDZmNDI2OTY3NDk2ZTc0NTU2ZTczNjk2NzZlNjU2NDAwMDQwMzY1NmU3NjA5NjI2OTY3NDk2ZTc0NTA2Zjc3MDAwNTAzNjU2ZTc2MTQ2ZDQyNzU2NjY2NjU3MjQzNmY3MDc5NDI3OTc0NjU1MzZjNjk2MzY1MDAwYTAzNjU2ZTc2MTI2ZDQyNzU2NjY2NjU3MjUzNzQ2ZjcyNjE2NzY1NGM2ZjYxNjQwMDA0MDM2NTZlNzYxMzZkNDI3NTY2NjY2NTcyNTM3NDZmNzI2MTY3NjU1Mzc0NmY3MjY1MDAwNDAzNjU2ZTc2MGU2MzY4NjU2MzZiNGU2ZjUwNjE3OTZkNjU2ZTc0MDAwMjAzNjU2ZTc2MTc2ZDYxNmU2MTY3NjU2NDQ3NjU3NDQyNjE2MzZiNTQ3MjYxNmU3MzY2NjU3MjczMDAwMDAzNjU2ZTc2MGY2ZDYxNmU2MTY3NjU2NDU3NzI2OTc0NjU0YzZmNjcwMDAwMDM2NTZlNzYxNDYyNjk2NzQ5NmU3NDQ2Njk2ZTY5NzM2ODU1NmU3MzY5Njc2ZTY1NjQwMDA2MDM2NTZlNzYwNjY2Njk2ZTY5NzM2ODAwMDAwMzY1NmU3NjBhNjI2OTY3NDk2ZTc0NTM2OTY3NmUwMDAxMDM2NTZlNzYxMzZkNDI3NTY2NjY2NTcyNDc2NTc0NDI3OTc0NjU1MzZjNjk2MzY1MDAwYTAzZDMwMWQxMDEwMTAzMDgwMjAxMTIwMTA0MDAwMTA3MDYwNjA2MDAwNDAxMDkwMTAwMDEwMDAwMDAwMDEzMDMwMDE0MDMwMzAzMDIwMzAxMDcwNDAwMDMwOTAxMDkwOTA5MDAwNzA3MDEwMDA2MDYwMTA2MDYwYzA1MDEwODA1MDAwMTBiMDAwODA3MTUwNzA4MDgwMDBhMDAxNjAxMDEwNjAxMDAwMDAwMDUwMDAwMDEwMzAwMDYwMTAwMTcwNTA1MGEwNzA0MDAwNDBhMDAwNDA0MDQwMDA0MDQwNDA0MDQwMTAxMDAwNDBkMDcwNzA3MDgwYTAwMDUwMTAxMDUwNTA2MDEwMTAwMGIwYjAxMDEwMTAxMDEwNTBkMDEwNTAwMDAwMDA1MDUwMDAwMDAwMDAwMGMwNzA3MDcwNzAwMDAwODE4MDMwMzAzMDAwMzAzMDAwMTA0MDcwMzAzMDMwMzAxMDEwMzAzMDMwMzAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwODA4MDUwMzAxMDAwMzA2MTYwMzdmMDE0MTgwODAwODBiN2YwMDQxZTlkYjA4MGI3ZjAwNDFmMGRiMDgwYjA3YzcwNTIwMDY2ZDY1NmQ2ZjcyNzkwMjAwMDQ2OTZlNjk3NDAwZGIwMTA3NzU3MDY3NzI2MTY0NjUwMGRjMDEwNzY0NjU3MDZmNzM2OTc0MDBkZDAxMDg3NzY5NzQ2ODY0NzI2MTc3MDBkZTAxMDg2MzZmNmQ3MDZmNzU2ZTY0MDBkZjAxMGU2NzY1NzQ1NDZmNzQ2MTZjNDE3MzczNjU3NDczMDBlMDAxMGY2NzY1NzQ1NjYxNzU2Yzc0NDE2NDY0NzI2NTczNzMwMGUxMDExNzY3NjU3NDQxNzM3MzY1NzQ1NDZmNmI2NTZlNDk2NDY1NmU3NDY5NjY2OTY1NzIwMGUyMDExZDY3NjU3NDRkNmY2ZTY1Nzk0ZDYxNzI2YjY1NzQ1NDZmNmI2NTZlNDk2NDY1NmU3NDY5NjY2OTY1NzIwMGUzMDEyMjY3NjU3NDRkNmY2ZTY1Nzk0ZDYxNzI2YjY1NzQ1NTZlNjQ2NTcyNmM3OTY5NmU2NzQ5NjQ2NTZlNzQ2OTY2Njk2NTcyMDBlNDAxMWY2NzY1NzQ0MjZmNmY3Mzc0NjU3MjUzNzQ2MTZiNjU2NDU0NmY2YjY1NmU0OTY0NjU2ZTc0Njk2NjY5NjU3MjAwZTUwMTE0Njc2NTc0NDM2ZjZlNzQ3MjZmNmM2YzY1NzI0MTY0NjQ3MjY1NzM3MzAwZTYwMTE1Njc2NTc0NGQ2ZjZlNjU3OTRkNjE3MjZiNjU3NDQxNjQ2NDcyNjU3MzczMDBlNzAxMWQ2NzY1NzQ1NzcyNjE3MDcwNjU2NDQ1Njc2YzY0NDM2ZjZlNzQ3MjYxNjM3NDQxNjQ2NDcyNjU3MzczMDBlODAxMWQ2NzY1NzQ1NzcyNjE3MDcwNjU2NDQ1Njc2YzY0NTQ2ZjZiNjU2ZTQ5NjQ2NTZlNzQ2OTY2Njk2NTcyMDBlOTAxMTE2NzY1NzQ0MjZmNmY3Mzc0NjU3MjQxNjQ2NDcyNjU3MzczMDBlYTAxMTk2NzY1NzQ0MzZmNmQ3MDZmNzU2ZTY0NTg0NTc4NjM2ODYxNmU2NzY1NTM3NzYxNzA3MzAwZWIwMTE3Njc2NTc0NDM2ZjZkNzA2Zjc1NmU2NDQxNzM2ODczNzc2MTcwNTM3NzYxNzA3MzAwZWMwMTE2Njc2NTc0NDM2ZjZkNzA2Zjc1NmU2NDQ2NjU2NTczNTA2NTcyNjM2NTZlNzQwMGVkMDExOTY3NjU3NDUwNjU3MjY2NmY3MjZkNjE2ZTYzNjU0NjY1NjU3MzUwNjU3MjYzNjU2ZTc0MDBlZTAxMGU3Mzc0NjE2YjY1NDk2ZTQyNmY2ZjczNzQ2NTcyMDBlZjAxMWI3MjY1NjI2MTZjNjE2ZTYzNjU1MDZmNzI3NDY2NmY2YzY5NmY0OTZlNDI2ZjZmNzM3NDY1NzIwMGYwMDExMjc1NmU3Mzc0NjE2YjY1NDY3MjZmNmQ0MjZmNmY3Mzc0NjU3MjAwZjEwMTE4NjM2YzYxNjk2ZDRkNzU2Yzc0Njk3MDZjNjU0NjcyNmY2ZDQyNmY2ZjczNzQ2NTcyMDBmMjAxMTk3MzY1NzQ1MDY1NzI2NjZmNzI2ZDYxNmU2MzY1NDY2NTY1NzM1MDY1NzI2MzY1NmU3NDAwZjMwMTE2NzM2NTc0NDM2ZjZkNzA2Zjc1NmU2NDQ2NjU2NTczNTA2NTcyNjM2NTZlNzQwMGY0MDExMDczNjU3NDQzNmY2ZDcwNmY3NTZlNjQ1Mzc3NjE3MDczMDBmNTAxMGQ2NzY1NzQ0ZTYxNzQ3NTcyNjE2YzQxNTA1OTAwZjYwMTA4NjM2MTZjNmM0MjYxNjM2YjAwZjcwMTBhNWY1ZjY0NjE3NDYxNWY2NTZlNjQwMzAxMGI1ZjVmNjg2NTYxNzA1ZjYyNjE3MzY1MDMwMjBhOWFhOTAxZDEwMTE2MDEwMTdmMTAyYTIyMDE0MjAwMTAwMTIwMDEyMDAxMjAwMDEwMDIyMDAxMGIxOTAxMDE3ZjQxYzg4ZDA4NDFjODhkMDgyODAyMDA0MTAxNmIyMjAwMzYwMjAwMjAwMDBiMmUwMDAyNDAyMDAxMjAwMjRkMDQ0MDIwMDIyMDA0NGQwZDAxMTAyYzAwMGIxMDJjMDAwYjIwMDAyMDAyMjAwMTZiMzYwMjA0MjAwMDIwMDEyMDAzNmEzNjAyMDAwYjBiMDA0MWI4OGQwODQxMGUxMDAzMDAwYjEzMDEwMTdmMTAyYTIyMDEyMDAwYWQ0MmZmMDE4MzEwMDEyMDAxMGIyMTAxMDE3ZjEwMmEyMTAxMjAwMDQyMDA1MzA0NDA0MWIyODUwODQxMTExMDAzMDAwYjIwMDEyMDAwMTAwMTIwMDEwYjBmMDEwMTdmMTAwNDIyMDEyMDAwMTAwNTFhMjAwMTBiMGIwMDIwMDAyMDAxMTAwNjQxMDA0YTBiMmQwMTAxN2YyMzAwNDEyMDZiMjIwMjI0MDAyMDAyMjAwMDEwMzI0MWMwODAwODQxMDgxMDMzMjAwMjIwMDEzNjAyMTgyMDAyMTAzNDIwMDI0MTIwNmEyNDAwMGIxOTAwMjAwMDQxZmVmZmZmZmYwNzQ2MDQ0MDQxYzg4MDA4NDExOTEwMDMwMDBiMjAwMDBiMmEwMDIwMDIyMDAzMTA0ZDIxMDIxMDQzMjEwMzIwMDA0MjdmMzcwMzA4MjAwMDIwMDMzNjAyMDQyMDAwMjAwMjM2MDIwMDIwMDAyMDAxMzYwMjEwMGI3ZDAxMDM3ZjIzMDA0MTEwNmIyMjAxMjQwMDIwMDAyOTAzMDgxMDcxMjAwMDI4MDIxMDIwMDAyODAyMTgyMDAwMjgwMjAwMjAwMDI4MDIwNDEwNDUyMTAyMTAxNzQxMDAyMTAwMjAwMjEwMTIyMTAzMjAwMTQxMDAzNjAyMGMyMDAxMjAwMjM2MDIwNDIwMDEyMDAzNDEwMjc2MjIwMjM2MDIwODAzNDAyMDAwMjAwMjRmNDUwNDQwMjAwMTQxMDQ2YTEwNzUxYTIwMDEyODAyMDgyMTAyMjAwMTI4MDIwYzIxMDAwYzAxMGIwYjIwMDE0MTEwNmEyNDAwMGIzNjAxMDI3ZjIzMDA0MTEwNmIyMjAxMjQwMDIwMDE0MTA4NmExMDM2MjAwMTI4MDIwODIxMDIyMDAwMjAwMTJkMDAwYzQxMDE3MTNhMDAwNDIwMDAyMDAyMzYwMjAwMjAwMTQxMTA2YTI0MDAwYjZkMDEwMjdmMjMwMDQxMTA2YjIyMDEyNDAwMjAwMDAyN2Y0MWUwZGIwODJkMDAwMDIyMDI0NTA0NDA0MWUwZGIwODQxMDEzYTAwMDA0MWRjZGIwODQxMDAzNjAyMDAyMDAxNDEwODZhNDEwMDEwOWYwMTIwMDEyODAyMDgyMDAxMjgwMjBjNDFiODhkMDg0MTAwMTA1NzEwNDMwYzAxMGI0MWI4OGQwODQxMDAxMDRkMGIzNjAyMDAyMDAwMjAwMjQxMDE3MzNhMDAwNDIwMDE0MTEwNmEyNDAwMGIwYjAwMjAwMDIwMDExMDM4MTAwNzFhMGI0OTAxMDE3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDIyMDAxM2EwMDBjMjAwMjIwMDAzNjAyMDgyMDAyNDEwODZhMTBhNTAxMjAwMjI4MDIwODIwMDIyZDAwMGMwNDQwNDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGIyMDAyNDExMDZhMjQwMDBiMGUwMDIwMDA0MThhODUwODQxMGIxMDNhMTAzYjBiMTMwMDIwMDAyMDAwMjAwMTIwMDIxMDUyMjAwMTIwMDIxMDg1MDEwYjBkMDAyMDAwMTAyYTIyMDAxMDFkMWEyMDAwMGIwYTAwMjAwMDEwM2QyMDAxMTAzZTBiMGYwMTAxN2YxMDJhMjIwMTIwMDAxMDFjMWEyMDAxMGI1MTAxMDI3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDIyMDAwMTAxMjIyMDM0MTE4NzQyMDAzNDE4MGZlMDM3MTQxMDg3NDcyMjAwMzQxMDg3NjQxODBmZTAzNzEyMDAzNDExODc2NzI3MjM2MDIwYzIwMDEyMDAyNDEwYzZhNDEwNDEwYTMwMTIwMDEyMDAwMTBiZDAxMjAwMjQxMTA2YTI0MDAwYjBhMDAyMDAwMTAzZDIwMDExMDQwMGI1MTAxMDI3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDIyMDAwMTAxMjIyMDM0MTE4NzQyMDAzNDE4MGZlMDM3MTQxMDg3NDcyMjAwMzQxMDg3NjQxODBmZTAzNzEyMDAzNDExODc2NzI3MjM2MDIwYzIwMDEyMDAyNDEwYzZhNDEwNDEwMGYxYTIwMDEyMDAwMTA4YjAxMjAwMjQxMTA2YTI0MDAwYjA5MDAyMDAwMjAwMTEwMDMwMDBiNTAwMTA0N2YxMDQzMjEwNjEwNDMyMTA3MjMwMDQxMTA2YjIyMDQyNDAwMTA0MzIxMDUyMDAxMTAyZjIxMDEyMDA0MjAwMzEwMjkzNjAyMGMyMDA0MjAwMjM3MDMwMDIwMDQyMDAxMzYwMjA4MjAwNTIwMDQxMDQ0MjAwMDIwMDU0MjAwMjAwNjIwMDcxMDA4MWEyMDA0NDExMDZhMjQwMDBiMTMwMTAxN2YxMDJhMjIwMDQxYjg4ZDA4NDEwMDEwMTgxYTIwMDAwYmQyMDEwMjAyN2YwMTdlMjMwMDQxMTA2YjIyMDMyNDAwMjAwMzIwMDEyODAyMDgyMjAyNDExODc0MjAwMjQxODBmZTAzNzE0MTA4NzQ3MjIwMDI0MTA4NzY0MTgwZmUwMzcxMjAwMjQxMTg3NjcyNzIzNjAyMDAyMDAzMjAwMTI4MDIwYzIyMDI0MTE4NzQyMDAyNDE4MGZlMDM3MTQxMDg3NDcyMjAwMjQxMDg3NjQxODBmZTAzNzEyMDAyNDExODc2NzI3MjM2MDIwYzIwMDMyMDAxMjkwMzAwMjIwNDQyMzg4NjIwMDQ0MjgwZmUwMzgzNDIyODg2ODQyMDA0NDI4MDgwZmMwNzgzNDIxODg2MjAwNDQyODA4MDgwZjgwZjgzNDIwODg2ODQ4NDIwMDQ0MjA4ODg0MjgwODA4MGY4MGY4MzIwMDQ0MjE4ODg0MjgwODBmYzA3ODM4NDIwMDQ0MjI4ODg0MjgwZmUwMzgzMjAwNDQyMzg4ODg0ODQ4NDM3MDIwNDIwMDAyMDAzNDExMDEwMGYxYTIwMDM0MTEwNmEyNDAwMGIxNTAwMjAwMDIwMDEyMDAyMjAwMzIwMDQxMDJhMjIwMTEwMDkxYTIwMDEwYjBjMDEwMTdmMTAyYTIyMDAxMDBhMjAwMDBiMGMwMTAxN2YxMDJhMjIwMDEwMGIyMDAwMGIwYzAxMDE3ZjEwMmEyMjAwMTAwYzIwMDAwYjE1MDAxMDQ4MTA0NjEwMzAwNDQwMGYwYjQxOTI4ZDA4NDEyNDEwMDMwMDBiMmIwMTAxN2Y0MWU4ZGIwODJkMDAwMDIyMDAwNDQwNDE2YjQxZmZmZmZmZmYwNzIwMDAxYjBmMGI0MWU4ZGIwODQxMDEzYTAwMDA0MTZiMTAwZDQxNmIwYjBkMDAyMDAwMTAyYTIyMDAxMDBlMWEyMDAwMGIyZTAxMDE3ZjQxZDU4MzA4NDExNzEwNGQyMjA0MjAwMDIwMDExMDBmMWEyMDA0NDFlYzgzMDg0MTAzMTAwZjFhMjAwNDIwMDIyMDAzMTAwZjFhMjAwNDEwMDAwMDBiMTEwMTAxN2YxMDJhMjIwMjIwMDAyMDAxMTAxODFhMjAwMjBiNDYwMTAxN2YyMzAwNDExMDZiMjIwMjI0MDAyMDAyMjAwMTQxMTg3NDIwMDE0MTgwZmUwMzcxNDEwODc0NzIyMDAxNDEwODc2NDE4MGZlMDM3MTIwMDE0MTE4NzY3MjcyMzYwMjBjMjAwMDIwMDI0MTBjNmE0MTA0MTAwZjFhMjAwMjQxMTA2YTI0MDAwYjBlMDEwMTdmNDEwMDEwMmEyMjAwMTAxMDIwMDAwYjFmMDAyMDAwMTA0YjIyMDAxMDEyNDEyMDQ3MDQ0MDIwMDEyMDAyNDFiMDg2MDg0MTEwMTA0YzAwMGIyMDAwMGJkOTAzMDEwOTdmMjMwMDQxNDA2YTIyMDEyNDAwMjAwMDEwNGIyMTAyMTA0MzIxMDYyMDAyMTAxMjIxMDAyMDAxNDEyNDZhNDEwMDNhMDAwMDIwMDE0MTIwNmEyMDAwMzYwMjAwMjAwMTIwMDIzNjAyMWMyMDAxMjAwMDM2MDIxODIwMDE0MTAwMzYwMjE0NDEwMDIxMDIwMzdmMjAwMDIwMDI0NjA0N2YyMDAxMmQwMDI0MDQ0MDQxZGNkYjA4NDEwMDM2MDIwMDQxZTBkYjA4NDEwMDNhMDAwMDBiMjAwMTQxNDA2YjI0MDAyMDA2MDUyMDAxNDExNDZhMjIwMDQxOTc4NzA4NDExNjEwM2EyMTA0MjAwMDQxOTc4NzA4NDExNjEwNTIyMTAwMTA0MzIxMDMwMzQwMjAwMDA0NDAyMDAxNDExNDZhMjIwNTQxOTc4NzA4NDExNjEwNTIyMTA3MjAwNTQxOTc4NzA4NDExNjEwNTMyMTA4MjAwNTQxOTc4NzA4NDExNjEwM2EyMTA5NDEwMDIxMDIwMjQwMDI0MDAyNDAyMDA1NDE5Nzg3MDg0MTE2MTA1NDQxZmYwMTcxMGUwMjAyMDEwMDBiNDE5Nzg3MDg0MTE2NDFlZDg2MDg0MTBkMTA0YzAwMGI0MTAxMjEwMjBiMjAwMTIwMDIzYTAwMzQyMDAxMjAwOTM2MDIzMDIwMDEyMDA4MzYwMjJjMjAwMTIwMDczNjAyMjgyMDAzMjAwMTQxMjg2YTEwNTUyMDAwNDEwMTZiMjEwMDBjMDEwYjBiMjAwMTQyMDAzNzAzMjgyMDAxMjAwNDQxMTg3NDIwMDQ0MTgwZmUwMzcxNDEwODc0NzIyMDA0NDEwODc2NDE4MGZlMDM3MTIwMDQ0MTE4NzY3MjcyMzYwMjNjMjAwMTQxMDg2YTIwMDE0MTI4NmEyMjAwNDEwMDQxMDQxMDU2MjAwMTI4MDIwODIwMDEyODAyMGMyMDAxNDEzYzZhMjIwMjQxMDQxMDU3MjAwMTIwMDM0MTE4NzQyMDAzNDE4MGZlMDM3MTQxMDg3NDcyMjAwMzQxMDg3NjQxODBmZTAzNzEyMDAzNDExODc2NzI3MjM2MDIzYzIwMDEyMDAwNDEwNDQxMDgxMDU2MjAwMTI4MDIwMDIwMDEyODAyMDQyMDAyNDEwNDEwNTcyMDA2MjAwMDQxMDgxMDBmMWEyMDAxMjgwMjE0MjEwMjIwMDEyODAyMTgyMTAwMGMwMTBiMGIwYjM3MDIwMTdmMDE3ZTIzMDA0MTEwNmIyMjAzMjQwMDIwMDM0MTAwMzYwMjBjMjAwMDIwMDM0MTBjNmEyMjAwNDEwNDIwMDEyMDAyMTBjNTAxMjAwMDQxMDQxMGIxMDEyMDAzNDExMDZhMjQwMGE3MGIwZDAwMjAwMDQxMjAyMDAxMjAwMjEwODUwMTBiMzAwMTAxN2YyMzAwNDExMDZiMjIwMzI0MDAyMDAzNDEwMDNhMDAwZjIwMDAyMDAzNDEwZjZhNDEwMTIwMDEyMDAyMTBjNTAxMjAwMzJkMDAwZjIwMDM0MTEwNmEyNDAwMGJmNjAyMDEwNTdmMjMwMDQxZDAwMDZiMjIwMjI0MDAyMDAyNDIwMDM3MDAzNTIwMDI0MjAwMzcwMzMwMjAwMjIwMDEyODAyMDAyMjAzNDExODc0MjAwMzQxODBmZTAzNzE0MTA4NzQ3MjIwMDM0MTA4NzY0MTgwZmUwMzcxMjAwMzQxMTg3NjcyNzIzNjAyNDAyMDAyNDEyODZhMjAwMjQxMzA2YTIyMDU0MTAwNDEwNDEwOWIwMTIwMDIyODAyMjgyMDAyMjgwMjJjMjAwMjQxNDA2YjIyMDQ0MTA0MTA1NzIwMDI0MWM4MDA2YTQxMDAzYTAwMDAyMDAyNDIwMDM3MDM0MDIwMDIyMDAxMjgwMjA0MjIwMzQxMTg3NDIwMDM0MTgwZmUwMzcxNDEwODc0NzIyMDAzNDEwODc2NDE4MGZlMDM3MTIwMDM0MTE4NzY3MjcyMzYwMjRjMjAwMjQxMjA2YTIwMDQ0MTAwNDEwNDEwOWMwMTIwMDIyODAyMjAyMDAyMjgwMjI0MjAwMjQxY2MwMDZhMjIwNjQxMDQxMDU3MjAwMjIwMDE0MTA4NmEyODAyMDAyMjAzNDExODc0MjAwMzQxODBmZTAzNzE0MTA4NzQ3MjIwMDM0MTA4NzY0MTgwZmUwMzcxMjAwMzQxMTg3NjcyNzIzNjAyNGMyMDAyNDExODZhMjAwNDQxMDQ0MTA4MTA5YzAxMjAwMjI4MDIxODIwMDIyODAyMWMyMDA2NDEwNDEwNTcyMDAyMjAwMTQxMGM2YTJkMDAwMDNhMDA0YzIwMDI0MTEwNmEyMDA0NDEwODQxMDkxMDljMDEyMDAyMjgwMjEwMjAwMjI4MDIxNDIwMDY0MTAxMTA1NzIwMDI0MTA4NmEyMDA1NDEwNDQxMGQxMDliMDEyMDAyMjgwMjA4MjAwMjI4MDIwYzIwMDQ0MTA5MTA1NzIwMDAyMDA1NDEwZDEwMGYxYTIwMDI0MWQwMDA2YTI0MDAwYjBmMDAyMDAwMjAwMTIwMDIyMDAzNDEwODEwZjkwMTBiYjUwMjAxMDY3ZjIwMDEyMDAzNDYwNDQwMjAwMTIyMDM0MTEwNGYwNDQwMjAwMDQxMDAyMDAwNmI0MTAzNzEyMjA0NmEyMTA1MjAwNDA0NDAyMDAyMjEwMTAzNDAyMDAwMjAwMTJkMDAwMDNhMDAwMDIwMDE0MTAxNmEyMTAxMjAwMDQxMDE2YTIyMDAyMDA1NDkwZDAwMGIwYjIwMDUyMDAzMjAwNDZiMjIwMzQxN2M3MTIyMDY2YTIxMDAwMjQwMjAwMjIwMDQ2YTIyMDQ0MTAzNzEwNDQwMjAwNjQxMDA0YzBkMDEyMDA0NDEwMzc0MjIwMTQxMTg3MTIxMDcyMDA0NDE3YzcxMjIwODQxMDQ2YTIxMDI0MTAwMjAwMTZiNDExODcxMjEwOTIwMDgyODAyMDAyMTAxMDM0MDIwMDUyMDAxMjAwNzc2MjAwMjI4MDIwMDIyMDEyMDA5NzQ3MjM2MDIwMDIwMDI0MTA0NmEyMTAyMjAwNTQxMDQ2YTIyMDUyMDAwNDkwZDAwMGIwYzAxMGIyMDA2NDEwMDRjMGQwMDIwMDQyMTAyMDM0MDIwMDUyMDAyMjgwMjAwMzYwMjAwMjAwMjQxMDQ2YTIxMDIyMDA1NDEwNDZhMjIwNTIwMDA0OTBkMDAwYjBiMjAwMzQxMDM3MTIxMDMyMDA0MjAwNjZhMjEwMjBiMjAwMzA0NDAyMDAwMjAwMzZhMjEwMTAzNDAyMDAwMjAwMjJkMDAwMDNhMDAwMDIwMDI0MTAxNmEyMTAyMjAwMDQxMDE2YTIyMDAyMDAxNDkwZDAwMGIwYjBmMGIxMDJjMDAwYmEyMDMwMTA3N2YyMzAwNDE0MDZhMjIwMTI0MDAyMDAwMTA0YjIxMDIxMDQzMjEwNTIwMDIxMDEyMjEwMDIwMDE0MTJjNmE0MTAwM2EwMDAwMjAwMTQxMjg2YTIwMDAzNjAyMDAyMDAxMjAwMjM2MDIyNDIwMDEyMDAwMzYwMjIwMjAwMTQxMDAzNjAyMWM0MTAwMjEwMjAzN2YyMDAwMjAwMjQ2MDQ3ZjIwMDEyZDAwMmMwNDQwNDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGIyMDAxNDE0MDZiMjQwMDIwMDUwNTIwMDE0MTFjNmEyMjAwNDFhZDg3MDg0MTE4MTAzYTIxMDMyMDAwNDFhZDg3MDg0MTE4MTA1MjIxMDAxMDQzMjEwMjAzNDAyMDAwMDQ0MDIwMDE0MTFjNmEyMjA0NDFhZDg3MDg0MTE4MTA1MjIxMDYyMDA0NDFhZDg3MDg0MTE4MTA1MzIxMDcyMDA0NDFhZDg3MDg0MTE4MTAzYTIxMDQyMDAxMjAwNjM2MDIzODIwMDEyMDA0MzYwMjM0MjAwMTIwMDczNjAyMzAyMDAyMjAwMTQxMzA2YTEwNTkyMDAwNDEwMTZiMjEwMDBjMDEwYjBiMjAwMTQyMDAzNzAzMzAyMDAxMjAwMzQxMTg3NDIwMDM0MTgwZmUwMzcxNDEwODc0NzIyMDAzNDEwODc2NDE4MGZlMDM3MTIwMDM0MTE4NzY3MjcyMzYwMjNjMjAwMTQxMTA2YTIwMDE0MTMwNmEyMjAwNDEwMDQxMDQxMDU2MjAwMTI4MDIxMDIwMDEyODAyMTQyMDAxNDEzYzZhMjIwMzQxMDQxMDU3MjAwMTIwMDI0MTE4NzQyMDAyNDE4MGZlMDM3MTQxMDg3NDcyMjAwMjQxMDg3NjQxODBmZTAzNzEyMDAyNDExODc2NzI3MjM2MDIzYzIwMDE0MTA4NmEyMDAwNDEwNDQxMDgxMDU2MjAwMTI4MDIwODIwMDEyODAyMGMyMDAzNDEwNDEwNTcyMDA1MjAwMDQxMDgxMDBmMWEyMDAxMjgwMjFjMjEwMjIwMDEyODAyMjAyMTAwMGMwMTBiMGIwYmI4MDIwMTA0N2YyMzAwNDE0MDZhMjIwMjI0MDAyMDAyNDEyODZhNDEwMDM2MDIwMDIwMDI0MjAwMzcwMzIwMjAwMjIwMDEyODAyMDgyMjAzNDExODc0MjAwMzQxODBmZTAzNzE0MTA4NzQ3MjIwMDM0MTA4NzY0MTgwZmUwMzcxMjAwMzQxMTg3NjcyNzIzNjAyMzAyMDAyNDExODZhMjAwMjQxMjA2YTIyMDU0MTAwNDEwNDEwOWEwMTIwMDIyODAyMTgyMDAyMjgwMjFjMjAwMjQxMzA2YTIyMDQ0MTA0MTA1NzIwMDI0MjAwMzcwMzMwMjAwMjIwMDEyODAyMDAyMjAzNDExODc0MjAwMzQxODBmZTAzNzE0MTA4NzQ3MjIwMDM0MTA4NzY0MTgwZmUwMzcxMjAwMzQxMTg3NjcyNzIzNjAyM2MyMDAyNDExMDZhMjAwNDQxMDA0MTA0MTA1NjIwMDIyODAyMTAyMDAyMjgwMjE0MjAwMjQxM2M2YTIyMDM0MTA0MTA1NzIwMDIyMDAxMjgwMjA0MjIwMTQxMTg3NDIwMDE0MTgwZmUwMzcxNDEwODc0NzIyMDAxNDEwODc2NDE4MGZlMDM3MTIwMDE0MTE4NzY3MjcyMzYwMjNjMjAwMjQxMDg2YTIwMDQ0MTA0NDEwODEwNTYyMDAyMjgwMjA4MjAwMjI4MDIwYzIwMDM0MTA0MTA1NzIwMDIyMDA1NDEwNDQxMGMxMDlhMDEyMDAyMjgwMjAwMjAwMjI4MDIwNDIwMDQ0MTA4MTA1NzIwMDAyMDA1NDEwYzEwMGYxYTIwMDI0MTQwNmIyNDAwMGIxNDAwMTAxMzIwMDA0NjA0NDAwZjBiNDE5Mjg0MDg0MTE5MTAwMzAwMGIwOTAwMjAwMDEwNWMxMDA3MWEwYjFkMDAyMDAwMTBhNzAxMjIwMDEwMTI0MTIwNDcwNDQwNDFiMDg2MDg0MTEwMTA4ODAxMDAwYjIwMDAwYjBhMDAyMDAwMTBhNzAxMTAwNzFhMGIwODAwMjAwMDEwNWYxMDE0MGI2MTAyMDI3ZjAxN2UyMzAwNDExMDZiMjIwMTI0MDAyMDAxNDIwMDM3MDMwODIwMDAxMGE3MDEyMjAwMTAxMjIyMDI0MTA5NGYwNDQwNDE5NTg1MDg0MTBlMTA4ODAxMDAwYjIwMDEyMDAxNDEwODZhMjAwMjEwYjAwMTIwMDA0MTAwMjAwMTI4MDIwMDIyMDAyMDAxMjgwMjA0MjIwMjEwOGEwMTFhMjAwMDIwMDIxMGIxMDEyMDAxNDExMDZhMjQwMDBiMWYwMDIwMDAyMDAxMjAwMjEwMTUyMDAwMTA2MTQxZmYwMTcxMDQ0MDBmMGI0MWFiODQwODQxMzAxMDAzMDAwYjE1MDA0MTAyNDEwMTIwMDAxMDI3MjIwMDFiNDEwMDIwMDA0MTAwNGUxYjBiZjgwMTAxMDQ3ZjIzMDA0MWQwMDA2YjIyMDUyNDAwMjAwNTIwMDQzNjAyMjgyMDA1NDEyMDZhNDFkYjg0MDg0MTE0MTA2MzIwMDUyODAyMjAyMTA3MjAwNTI4MDIyNDIyMDYyMDAzMTA2NDIwMDQxMDY1MjEwMzEwNDMyMjA4MjAwM2FkMTA2NjIwMDYyMDA4MTA0ZTIwMDUyMDA0MTAxMjM2MDIzNDIwMDU0MTAwMzYwMjMwMjAwNTIwMDU0MTI4NmEzNjAyMmMwMzQwMjAwNTQxMzg2YTIwMDU0MTJjNmExMDY3MjAwNTI5MDMzODUwMDQ0MDIwMDUyMDA3MjAwNjIwMDEyMDAyMTA2ODIwMDUyODAyMDQyMTAxMjAwMDIwMDUyODAyMDAzNjAyMDAyMDAwMjAwMTM2MDIwNDIwMDU0MWQwMDA2YTI0MDAwNTIwMDUyODAyNGMyMTAzMjAwNTQxMTg2YTIwMDcyMDA2MjAwNTI4MDI0ODEwNjkyMDA1NDExMDZhMjAwNTI4MDIxODIwMDUyODAyMWMyMDA1MjkwMzQwMTA2YTIwMDU0MTA4NmEyMDA1MjgwMjEwMjAwNTI4MDIxNDIwMDMxMDZiMjAwNTI4MDIwYzIxMDYyMDA1MjgwMjA4MjEwNzBjMDEwYjBiMGIxODAwMjAwMTIwMDIxMDRkMjEwMTIwMDAxMDQzMzYwMjA0MjAwMDIwMDEzNjAyMDAwYjEwMDAxMDQzMWEyMDAwMjAwMTI4MDIwMDEwMmYxMDRlMGIwOTAwMjAwMDEwMTI0MTA0NzYwYjM4MDEwMTdmMjMwMDQxMTA2YjIyMDIyNDAwMjAwMjQyMDAzNzAzMDgyMDAyMjAwMTQxMDAyMDAyNDEwODZhMTA4MjAxMjAwMDIwMDIyODAyMDAyMDAyMjgwMjA0MTAxODFhMjAwMjQxMTA2YTI0MDAwYmE3MDEwMjA1N2YwMTdlMjMwMDQxMjA2YjIyMDIyNDAwMjAwMDIwMDEyODAyMDQyMjA0NDExMDZhMjIwNTIwMDEyODAyMDg0ZDA0N2UyMDAxMjgwMjAwMjAwMjQxMTA2YTQyMDAzNzAzMDAyMDAyNDIwMDM3MDMwODI4MDIwMDIwMDQyMDAyNDEwODZhMjIwMzQxMTAxMDZmMWEyMDAyNDEwMDM2MDIxYzIwMDMyMDAyNDExYzZhMjIwNjEwOTgwMTIxMDQyMDAzMjAwNjEwOTkwMTIxMDcyMDAwNDExNDZhMjAwMjQxMDg2YTIwMDI0MTFjNmExMDk4MDEzNjAyMDAyMDAwNDExMDZhMjAwNDM2MDIwMDIwMDAyMDA3MzcwMzA4MjAwMTIwMDUzNjAyMDQ0MjAxMDU0MjAwMGIzNzAzMDAyMDAyNDEyMDZhMjQwMDBiOTEwMTAxMDM3ZjIzMDA0MTEwNmIyMjA1MjQwMDAyNDAyMDAzMTAxMjQ1MGQwMDIwMDIyMDAzMTA2ZTIwMDQxMDEyMjEwNjQxMDAyMTAzMDM0MDIwMDM0MTA0NmEyMjA3MjAwNjRiMGQwMTIwMDU0MTAwMzYwMjBjMjAwNDIwMDMyMDA1NDEwYzZhNDEwNDEwNmYxYTIwMDIyMDA1MjgwMjBjMjIwMzQxMTg3NDIwMDM0MTgwZmUwMzcxNDEwODc0NzIyMDAzNDEwODc2NDE4MGZlMDM3MTIwMDM0MTE4NzY3MjcyMTA2ZTIwMDcyMTAzMGMwMDBiMDAwYjIwMDAyMDAyMzYwMjA0MjAwMDIwMDEzNjAyMDAyMDA1NDExMDZhMjQwMDBiMTYwMDIwMDIyMDAzMTA2ZTIwMDAyMDAyMzYwMjA0MjAwMDIwMDEzNjAyMDAwYjIwMDEwMTdmMTA0MzIyMDQyMDAzMTA2NjIwMDIyMDA0MTA0ZTIwMDAyMDAyMzYwMjA0MjAwMDIwMDEzNjAyMDAwYjE2MDAyMDAzMjAwMjEwNzAyMDAwMjAwMjM2MDIwNDIwMDAyMDAxMzYwMjAwMGJhMzAxMDEwMjdmMjMwMDQxMzA2YjIyMDUyNDAwMjAwNTQxMjg2YTQxZWY4NDA4NDEwZjEwNjMyMDA1NDEyMDZhMjAwNTI4MDIyODIwMDUyODAyMmMyMDA0MjgwMjA4MTA2OTIwMDU0MTE4NmEyMDA1MjgwMjIwMjAwNTI4MDIyNDIwMDQyOTAzMDAxMDZhMjAwNTQxMTA2YTIwMDUyODAyMTgyMDA1MjgwMjFjMjAwNDI4MDIwYzEwNmIyMDA1MjgwMjEwMjEwNDIwMDUyODAyMTQyMTA2MTA0MzFhMjAwNjIwMDMxMDJmMTA0ZTIwMDU0MTA4NmEyMDA0MjAwNjIwMDEyMDAyMTA2ODIwMDUyODAyMGMyMTAxMjAwMDIwMDUyODAyMDgzNjAyMDAyMDAwMjAwMTM2MDIwNDIwMDU0MTMwNmEyNDAwMGI3MTAxMDE3ZjIzMDA0MTIwNmIyMjA1MjQwMDIwMDU0MTE4NmE0MWZlODQwODQxMGMxMDYzMjAwNTQxMTA2YTIwMDUyODAyMTgyMDA1MjgwMjFjMjAwMzEwNjkyMDA1NDEwODZhMjAwNTI4MDIxMDIwMDUyODAyMTQyMDA0MTA2YjIwMDUyMDA1MjgwMjA4MjAwNTI4MDIwYzIwMDEyMDAyMTA2ODIwMDUyODAyMDQyMTAxMjAwMDIwMDUyODAyMDAzNjAyMDAyMDAwMjAwMTM2MDIwNDIwMDU0MTIwNmEyNDAwMGIwZDAwMTA0MzFhMjAwMDIwMDExMDJmMTA0ZTBiMGQwMDIwMDAyMDAxMjAwMjIwMDMxMDhhMDEwYjBkMDAxMDQzMWEyMDAxMjAwMDEwM2QxMDRlMGIwZjAwMjAwMDQyN2Y1MTA0N2UxMDE2MDUyMDAwMGIwYjMwMDEwMTdlMjAwMDI5MDMwODIyMDE0MjdmNTEwNDdlMTAxNjA1MjAwMTBiMjAwMDI4MDIxMDIwMDAyODAyMTgyMDAwMjgwMjAwMjAwMDI4MDIwNDEwNDUxMDE3MTA3MzBiM2IwMTAyN2YyMzAwNDExMDZiMjIwMTI0MDAyMDAwMTAxMjIxMDIyMDAxNDEwMDM2MDIwYzIwMDEyMDAwMzYwMjA0MjAwMTIwMDI0MTAyNzYzNjAyMDgyMDAxNDEwNDZhMTA3NTEwM2IyMDAxNDExMDZhMjQwMDBiMjQwMDIwMDAyOTAzMDgxMDcxMjAwMDI4MDIxMDIwMDAyODAyMTgyMDAwMjgwMjAwMjAwMDI4MDIwNDEwNDUxMDE3MTAxMjFhMGI3ZDAxMDM3ZjIzMDA0MTEwNmIyMjAxMjQwMDIwMDAyODAyMDgyMTAzMjAwMTQxMDAzNjAyMGMyMDAwMjgwMjAwMjAwMzQxMDI3NDIwMDE0MTBjNmE0MTA0MTA2ZjQ1MDQ0MDIwMDEyODAyMGMyMTAyMjAwMDIwMDM0MTAxNmEzNjAyMDgyMDAyNDExODc0MjAwMjQxODBmZTAzNzE0MTA4NzQ3MjIwMDI0MTA4NzY0MTgwZmUwMzcxMjAwMjQxMTg3NjcyNzIxMDJmMjAwMTQxMTA2YTI0MDAwZjBiNDE4YTg1MDg0MTBiNDFlZjgzMDg0MTExMTA0YzAwMGI5MDAyMDIwMjdmMDE3ZTIzMDA0MWQwMDA2YjIyMDIyNDAwMjAwMTI5MDMwODIyMDQ0MjdmNTEwNDdlMTAxNjA1MjAwNDBiMjAwMTI4MDIxMDIwMDEyODAyMTgyMDAxMjgwMjAwMjAwMTI4MDIwNDEwNDUyMTAxMTAxNzIwMDExMDEyMjEwMzIwMDI0MTAwMzYwMjE0MjAwMjIwMDEzNjAyMGMyMDAyMjAwMzQxMDI3NjM2MDIxMDIwMDI0MTBjNmExMDc1MjIwMzEwMTIyMTAxMjAwMjQxM2M2YTQxMDAzYTAwMDAyMDAyNDEzODZhMjAwMTM2MDIwMDIwMDIyMDAzMzYwMjM0MjAwMjIwMDEzNjAyMzAyMDAyNDEwMDM2MDIyYzIwMDI0MTQwNmIyMDAyNDEyYzZhMTA3NzIwMDIyODAyMzAyMDAyMjgwMjJjNDYwNDQwMjAwMjQxMjA2YTIyMDEyMDAyNDFjODAwNmEyOTAzMDAzNzAzMDAyMDAyMjAwMjI5MDM0MDM3MDMxODIwMDIyZDAwM2MwNDQwNDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGIyMDAwMjAwMjI5MDMxODM3MDMwMDIwMDA0MTA4NmEyMDAxMjkwMzAwMzcwMzAwMjAwMjQxZDAwMDZhMjQwMDBmMGI0MThhODUwODQxMGI0MTk1ODUwODQxMGUxMDRjMDAwYjMwMDIwMTdmMDE3ZTIwMDE0MThhODUwODQxMGIxMDNhMjEwMjIwMDExMGJlMDEyMTAzMjAwMDIwMDExMDM5MzYwMjBjMjAwMDIwMDIzNjAyMDgyMDAwMjAwMzM3MDMwMDBiMTAwMDEwNDMxYTIwMDAyMDAxMjgwMjAwMTAzZDEwNGUwYjBlMDAyMDAxNDUwNDQwMjAwMjIwMDAxMDcwMGIwYjgxMDEwMTA1N2YyMzAwNDExMDZiMjIwMzI0MDAxMDQzMTAyZjIxMDQyMDAxMjgwMjAwMTAxMjIxMDUwMzQwMjAwNTIwMDI0MTA0NmEyMjA2NGYwNDQwMjAwMzQxMDAzNjAyMGMyMDAxMjgwMjAwMjAwMjIwMDM0MTBjNmE0MTA0MTA2ZjFhMjAwMzI4MDIwYzIyMDI0MTE4NzQyMDAyNDE4MGZlMDM3MTQxMDg3NDcyMjAwMjQxMDg3NjQxODBmZTAzNzEyMDAyNDExODc2NzI3MjIwMDQxMDNmMjAwNjIxMDIwYzAxMGIwYjIwMDAyMDA0MTA0ZTIwMDM0MTEwNmEyNDAwMGI4MjAxMDEwNTdmMjMwMDQxMTA2YjIyMDMyNDAwMTA0MzEwMmYyMTA0MjAwMTI4MDIwMDEwMTIyMTA1MDM0MDIwMDUyMDAyNDEwNDZhMjIwNjRmMDQ0MDIwMDM0MTAwMzYwMjBjMjAwMTI4MDIwMDIwMDIyMDAzNDEwYzZhNDEwNDEwNmYxYTIwMDQyMDAzMjgwMjBjMjIwMjQxMTg3NDIwMDI0MTgwZmUwMzcxNDEwODc0NzIyMDAyNDEwODc2NDE4MGZlMDM3MTIwMDI0MTE4NzY3MjcyMTAwNTFhMjAwNjIxMDIwYzAxMGIwYjIwMDAyMDA0MTA0ZTIwMDM0MTEwNmEyNDAwMGI0ZDAxMDI3ZjIzMDA0MTIwNmIyMjAxMjQwMDEwN2QyMTAyMjAwMTQxMTA2YTIwMDA0MTEwNmEyOTAzMDAzNzAzMDAyMDAxNDEwODZhMjAwMDQxMDg2YTI5MDMwMDM3MDMwMDIwMDEyMDAyMzYwMjE4MjAwMTIwMDAyOTAzMDAzNzAzMDAyMDAxMTA3MjIwMDE0MTIwNmEyNDAwMGIwZTAxMDE3ZjEwMmEyMjAwNDIwMDEwMDEyMDAwMGI0ZjAxMDI3ZjIzMDA0MTIwNmIyMjAyMjQwMDEwN2QyMTAzMjAwMjQxMTA2YTIwMDE0MTEwNmEyOTAzMDAzNzAzMDAyMDAyNDEwODZhMjAwMTQxMDg2YTI5MDMwMDM3MDMwMDIwMDIyMDAzMzYwMjE4MjAwMjIwMDEyOTAzMDAzNzAzMDAyMDAwMjAwMjEwNzYyMDAyNDEyMDZhMjQwMDBiNGQwMTAyN2YyMzAwNDEyMDZiMjIwMTI0MDAxMDdkMjEwMjIwMDE0MTEwNmEyMDAwNDExMDZhMjkwMzAwMzcwMzAwMjAwMTQxMDg2YTIwMDA0MTA4NmEyOTAzMDAzNzAzMDAyMDAxMjAwMjM2MDIxODIwMDEyMDAwMjkwMzAwMzcwMzAwMjAwMTEwMzQyMDAxNDEyMDZhMjQwMDBiNzYwMjA1N2YwMTdlMjMwMDQxMTA2YjIyMDEyNDAwMTA3ZDIxMDIyMDAwMjgwMjEwMjEwMzIwMDAyODAyMDQyMTA0MjAwMDI4MDIwMDIxMDUyMDAwMjkwMzA4MjIwNjQyN2Y1MTA0N2UxMDE2MDUyMDA2MGIyMDAzMjAwMjIwMDUyMDA0MTA0NTIxMDAxMDE3MjAwMDEwMTIyMTAyMjAwMTQxMDAzNjAyMGMyMDAxMjAwMDM2MDIwNDIwMDEyMDAyNDEwMjc2MzYwMjA4MjAwMTQxMDQ2YTEwNzUxMDJmMjAwMTQxMTA2YTI0MDAwYjQ3MDEwMjdmMjMwMDQxMTA2YjIyMDIyNDAwMTA0MzIxMDMyMDAyNDIwMDM3MDMwODIwMDIyMDAxYWQ0MmZmMDE4MzQxMDEyMDAyNDEwODZhMTA4MjAxMjAwMzIwMDIyODAyMDAyMDAyMjgwMjA0MTAxODFhMjAwMDIwMDMxMDRlMjAwMjQxMTA2YTI0MDAwYjhmMDIwMjA0N2YwMTdlMjAwMzIwMDE0MjM4ODYyMDAxNDI4MGZlMDM4MzQyMjg4Njg0MjAwMTQyODA4MGZjMDc4MzQyMTg4NjIwMDE0MjgwODA4MGY4MGY4MzQyMDg4Njg0ODQyMDAxNDIwODg4NDI4MDgwODBmODBmODMyMDAxNDIxODg4NDI4MDgwZmMwNzgzODQyMDAxNDIzODg4MjIwODIwMDE0MjI4ODg0MjgwZmUwMzgzODQ4NDg0MzcwMDAwMDI0MDIwMDE1MDA0NDA0MWI4OGQwODIxMDMwYzAxMGIyMDAyMDQ0MDIwMDE0MjdmNTEwNDQwMjAwMzQxMDc2YTIxMDM0MTAxMjEwNDBjMDIwYjIwMDhhN2MwMjIwNTQxMDc3NTIxMDYyMDA1NDEwMDQ4MjEwNTBiMjAwNjQxZmYwMTcxMjEwNjAzNDAwMjQwMDI0MDIwMDQ0MTA4NDcwNDQwMjAwMzIwMDQ2YTJkMDAwMDIyMDcyMDA2NDYwZDAyMjAwMjQ1MjAwNzQxMDc3NjIwMDU0NjcyNDUwNDQwMjAwNDQxMDE2YjIyMDQ0MTA5NGYwZDAyMGIyMDAzMjAwNDZhMjEwMzQxMDgyMDA0NmIyMTA0MGMwNDBiMTAyYzAwMGIxMDJjMDAwYjIwMDQ0MTAxNmEyMTA0MGMwMDBiMDAwYjIwMDAyMDA0MzYwMjA0MjAwMDIwMDMzNjAyMDAwYmEzMDEwMjAzN2YwMTdlMjMwMDQxMTA2YjIyMDMyNDAwMDI3ZjIwMDIyOTAzMDA1MDA0NDAyMDAxMjgwMjEwMjEwNDIwMDMyMDAxMjgwMjAwMjAwMTI4MDIwNDIwMDIyODAyMDgyMDAyMjgwMjBjMTA2ZDIwMDMyODAyMDAyMTA1MjAwMzI4MDIwNDBjMDEwYjEwNDcyMTA0MjAwMzQxMDg2YTIwMDEyODAyMDAyMDAxMjgwMjA0MjAwMTI4MDIxMDIwMDIxMDZjMjAwMzI4MDIwODIxMDUyMDAzMjgwMjBjMGIyMTAyMjAwMTI5MDMwODIxMDYyMDAwMTA3ZDM2MDIxODIwMDAyMDA0MzYwMjEwMjAwMDIwMDYzNzAzMDgyMDAwMjAwMjM2MDIwNDIwMDAyMDA1MzYwMjAwMjAwMzQxMTA2YTI0MDAwYjNmMDEwMTdmMTA0MzIxMDMyMDAwMjAwMTI5MDMwMDM3MDMwMDIwMDA0MTEwNmEyMDAxNDExMDZhMjkwMzAwMzcwMzAwMjAwMDQxMDg2YTIwMDE0MTA4NmEyOTAzMDAzNzAzMDAyMDAzMjAwMjEwNDQyMDAwMjAwMzM2MDIxODBiNTIwMTAyN2YyMzAwNDExMDZiMjIwNDI0MDAyMDA0NDEwODZhMjAwMDI4MDIwODIwMDAyODAyMDAyMjA1MjAwMTEwODYwMTIwMDQyODAyMDg0MTAxNDYwNDQwMjAwNDI4MDIwYzIwMDAyMDAxMjAwNTZhMzYwMjAwMjAwNDQxMTA2YTI0MDAwZjBiMjAwMjIwMDM0MWEzODUwODQxMGYxMDRjMDAwYjFmMDAyMDAxMjAwMjIwMDMxMDA0MjIwMTEwMWYyMTAyMjAwMDIwMDEzNjAyMDQyMDAwMjAwMjQ1MzYwMjAwMGI0ZjAxMDM3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDI0MTA4NmEyMDAwMjgwMjA4MjAwMDI4MDIwMDIyMDMyMDAxMTA4NjAxMjAwMjI4MDIwODQxMDE0NjA0NDAyMDAyMjgwMjBjMjAwMDIwMDEyMDAzNmEzNjAyMDAyMDAyNDExMDZhMjQwMDBmMGI0MWEzODUwODQxMGYxMDg4MDEwMDBiMWEwMTAxN2Y0MWYxODUwODQxMTYxMDRkMjIwMjIwMDAyMDAxMTAwZjFhMjAwMjEwMDAwMDBiMTUwMDQxN2YyMDAwMjAwMTEwMTkyMjAwNDEwMDQ3MjAwMDQxMDA0ODFiMGIwZjAwMjAwMDIwMDEyMDAzMjAwMjEwMjg0MTAwNDcwYjA5MDAyMDAwMjAwMTEwMDUxYTBiMGMwMDIwMDAyMDAwMjAwMTEwMDIyMDAwMGIwYzAwMjAwMDIwMDAyMDAxMTAxYTIwMDAwYjBjMDAyMDAwMjAwMDIwMDExMDFiMjAwMDBiMGEwMDIwMDAyMDAwMjAwMTEwMDIwYjBjMDAyMDAwMjAwMDIwMDExMDYwMjAwMDBiMTAwMTAxN2YxMDJhMjIwMjIwMDAyMDAxMTAwMjIwMDIwYjEwMDEwMTdmMTAyYTIyMDIyMDAwMjAwMTEwMWIyMDAyMGIxMDAxMDE3ZjEwMmEyMjAyMjAwMDIwMDExMDYwMjAwMjBiMTkwMTAxN2YxMDJhMjEwMjQxNzIyMDAxYWQxMDAxMjAwMjIwMDA0MTcyMTAxZTIwMDIwYjBlMDEwMTdmMTA0MzIyMDEyMDAwMTA0NDIwMDEwYjRjMDEwMjdmMjMwMDQxMTA2YjIyMDEyNDAwMTA0MzIxMDIyMDAxMjAwMDQxMTg3NDIwMDA0MTgwZmUwMzcxNDEwODc0NzIyMDAwNDEwODc2NDE4MGZlMDM3MTIwMDA0MTE4NzY3MjcyMzYwMjBjMjAwMjIwMDE0MTBjNmE0MTA0MTAwZjFhMjAwMTQxMTA2YTI0MDAyMDAyMGI4NDAxMDIwNDdmMDE3ZTIzMDA0MTIwNmIyMjAyMjQwMDIwMDI0MTEwNmE0MjAwMzcwMzAwMjAwMjQyMDAzNzAzMDgyMDAxNDEwMDIwMDI0MTA4NmEyMjAzNDExMDEwNmYyMDAyNDEwMDM2MDIxYzIwMDMyMDAyNDExYzZhMjIwNDEwOTgwMTIxMDUyMDAzMjAwNDEwOTkwMTIxMDYyMDAyNDEwODZhMjAwMjQxMWM2YTEwOTgwMTIxMDMwNDQwNDFjMzg1MDg0MTFkMTAwMzAwMGIyMDAwMjAwMzM2MDIwYzIwMDAyMDA1MzYwMjA4MjAwMDIwMDYzNzAzMDAyMDAyNDEyMDZhMjQwMDBiNzQwMTAxN2YyMzAwNDExMDZiMjIwMjI0MDAyMDAyNDEwMDM2MDIwYzIwMDIyMDAwNDExMDIwMDEyODAyMDAyMjAwMjAwMDQxMDQ2YTIyMDAxMDlkMDEyMDAyNDEwYzZhNDEwNDIwMDIyODAyMDAyMDAyMjgwMjA0MTA1NzIwMDEyMDAwMzYwMjAwMjAwMjI4MDIwYzIxMDAyMDAyNDExMDZhMjQwMDIwMDA0MTE4NzQyMDAwNDE4MGZlMDM3MTQxMDg3NDcyMjAwMDQxMDg3NjQxODBmZTAzNzEyMDAwNDExODc2NzI3MjBiYTgwMTAyMDE3ZTAxN2YyMzAwNDExMDZiMjIwMzI0MDAyMDAzNDIwMDM3MDMwODIwMDMyMDAwNDExMDIwMDEyODAyMDAyMjAwMjAwMDQxMDg2YTIyMDAxMDlkMDEyMDAzNDEwODZhNDEwODIwMDMyODAyMDAyMDAzMjgwMjA0MTA1NzIwMDEyMDAwMzYwMjAwMjAwMzI5MDMwODIxMDIyMDAzNDExMDZhMjQwMDIwMDI0MjM4ODYyMDAyNDI4MGZlMDM4MzQyMjg4Njg0MjAwMjQyODA4MGZjMDc4MzQyMTg4NjIwMDI0MjgwODA4MGY4MGY4MzQyMDg4Njg0ODQyMDAyNDIwODg4NDI4MDgwODBmODBmODMyMDAyNDIxODg4NDI4MDgwZmMwNzgzODQyMDAyNDIyODg4NDI4MGZlMDM4MzIwMDI0MjM4ODg4NDg0ODQwYjBmMDAyMDAwMjAwMTIwMDIyMDAzNDEwYzEwZjkwMTBiMGYwMDIwMDAyMDAxMjAwMjIwMDM0MTBkMTBmOTAxMGIwZjAwMjAwMDIwMDEyMDAyMjAwMzQxMDkxMGY5MDEwYjJmMDAwMjQwMjAwMzIwMDQ0ZDA0NDAyMDAyMjAwNDQ5MGQwMTIwMDAyMDA0MjAwMzZiMzYwMjA0MjAwMDIwMDEyMDAzNmEzNjAyMDAwZjBiMTAyYzAwMGIxMDJjMDAwYmI0MDEwMTAzN2YyMzAwNDExMDZiMjIwNDI0MDAwMjdmMDI0MDIwMDAyZDAwMDg0NTA0NDAyMDAwMjgwMjAwMjIwNTEwMTIyMjA2NDE5MGNlMDA0YjBkMDE0MWUwZGIwODJkMDAwMDBkMDE0MWRjZGIwODIwMDYzNjAyMDA0MWUwZGIwODQxMDEzYTAwMDAyMDA0NDEwODZhMjAwNjEwOWYwMTIwMDU0MTAwMjAwNDI4MDIwODIwMDQyODAyMGMxMDZmMWEyMDAwNDEwMTNhMDAwODBiNDEwMTIwMDEyMDAzNmEyMjAwNDFkY2RiMDgyODAyMDA0YjBkMDExYTIwMDQyMDAxMjAwMDEwYTAwMTIwMDIyMDAzMjAwNDI4MDIwMDIwMDQyODAyMDQxMDU3NDEwMDBjMDEwYjIwMDA0MTAwM2EwMDA4MjAwNTIwMDEyMDAyMjAwMzEwNmYwYjIwMDQ0MTEwNmEyNDAwMGIzZTAxMDE3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDI0MTA4NmE0MWNjOGQwODQxOTBjZTAwMjAwMTEwZDAwMTIwMDIyODAyMGMyMTAxMjAwMDIwMDIyODAyMDgzNjAyMDAyMDAwMjAwMTM2MDIwNDIwMDI0MTEwNmEyNDAwMGIzMjAwMDI0MDIwMDEyMDAyNGQwNDQwMjAwMjQxOTBjZTAwNGQwZDAxMTAyYzAwMGIxMDJjMDAwYjIwMDAyMDAyMjAwMTZiMzYwMjA0MjAwMDIwMDE0MWNjOGQwODZhMzYwMjAwMGIxOTAwMjAwMDQxZmVmZmZmZmYwNzQ2MDQ0MDQxZTA4NTA4NDEwZDEwMDMwMDBiMjAwMDBiNGQwMTAxN2YyMzAwNDExMDZiMjIwMTI0MDAyMDAwMTAxMjQxMDQ0NjA0NDAyMDAxNDEwMDM2MDIwYzIwMDA0MTAwMjAwMTQxMGM2YTQxMDQxMDhhMDExYTQxZmVmZmZmZmYwNzIwMDAyMDAxMjgwMjBjNDFjNThlYjFhMjA0NDYxYjIxMDAwYjIwMDE0MTEwNmEyNDAwMjAwMDBiODAwMTAxMDI3ZjIzMDA0MTEwNmIyMjAzMjQwMDAyNDAwMjQwMjAwMDJkMDAwNDA0NDA0MTkwY2UwMDQxZGNkYjA4MjgwMjAwMjIwNDZiMjAwMjQ5MGQwMTIwMDM0MTA4NmEyMDA0MjAwMjIwMDQ2YTIyMDAxMGE0MDEyMDAzMjgwMjA4MjAwMzI4MDIwYzIwMDEyMDAyMTA1NzQxZGNkYjA4MjAwMDM2MDIwMDBjMDIwYjIwMDAyODAyMDAyMDAxMjAwMjEwMGYxYTBjMDEwYjIwMDAxMGE1MDEyMDAwMjgwMjAwMjAwMTIwMDIxMDBmMWEwYjIwMDM0MTEwNmEyNDAwMGIzZjAxMDE3ZjIzMDA0MTEwNmIyMjAzMjQwMDIwMDM0MTA4NmEyMDAxMjAwMjQxY2M4ZDA4NDE5MGNlMDAxMDJiMjAwMzI4MDIwYzIxMDEyMDAwMjAwMzI4MDIwODM2MDIwMDIwMDAyMDAxMzYwMjA0MjAwMzQxMTA2YTI0MDAwYjU4MDEwMjdmMjMwMDQxMTA2YjIyMDEyNDAwMjAwMDJkMDAwNDIwMDA0MTAwM2EwMDA0MDQ0MDIwMDE0MTA4NmE0MTAwNDFkY2RiMDgyODAyMDAxMGEwMDEyMDAwMjgwMjAwMjAwMTI4MDIwODIwMDEyODAyMGMxMDBmMWE0MWRjZGIwODQxMDAzNjAyMDA0MWUwZGIwODQxMDAzYTAwMDAwYjIwMDE0MTEwNmEyNDAwMGIwZDAwMjAwMDQxNjcxMDIwMWE0MTY3MTAxMjBiMGQwMDIwMDAxMDJhMjIwMDEwMjAxYTIwMDAwYjEyMDAyMDAwMTBhNjAxNDUwNDQwMjAwMDIwMDExMDIxMWEwYjBiMTIwMDIwMDAxMGE2MDE0NTA0NDAyMDAwMjAwMTEwYWEwMTBiMGIzODAxMDE3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDI0MjAwMzcwMzA4MjAwMjIwMDE0MTAwMjAwMjQxMDg2YTEwODIwMTIwMDAyMDAyMjgwMjAwMjAwMjI4MDIwNDEwYjgwMTIwMDI0MTEwNmEyNDAwMGIwYTAwMjAwMDEwYTcwMTEwYTIwMTBiYjkwMTAxMDQ3ZjIzMDA0MTIwNmIyMjAxMjQwMDIwMDAxMGE3MDEyMTAyMTA0MzIxMDQyMDAyMTAxMjIxMDAyMDAxNDExMDZhNDEwMDNhMDAwMDIwMDE0MTBjNmEyMDAwMzYwMjAwMjAwMTIwMDIzNjAyMDgyMDAxMjAwMDM2MDIwNDIwMDE0MTAwMzYwMjAwMDM3ZjIwMDAyMDAzNDYwNDdmMjAwMTJkMDAxMDA0NDA0MWRjZGIwODQxMDAzNjAyMDA0MWUwZGIwODQxMDAzYTAwMDAwYjIwMDE0MTIwNmEyNDAwMjAwNDA1MjAwMTEwYWQwMTIxMDAyMDAxMTBhZTAxMjEwMjIwMDExMGFmMDEyMTAzMjAwMTIwMDAzNjAyMWMyMDAxMjAwMzM2MDIxODIwMDEyMDAyMzYwMjE0MjAwNDIwMDE0MTE0NmExMDU5MjAwMTI4MDIwMDIxMDMyMDAxMjgwMjA0MjEwMDBjMDEwYjBiMGIzMzAyMDE3ZjAxN2UyMzAwNDExMDZiMjIwMTI0MDAyMDAxNDEwMDM2MDIwYzIwMDAyMDAxNDEwYzZhMjIwMDQxMDQxMGIzMDEyMDAwNDEwNDEwYjEwMTIwMDE0MTEwNmEyNDAwYTcwYjA5MDAyMDAwNDEyMDEwODcwMTBiMGMwMDIwMDAyMDAwMTBhZDAxMTA4NzAxMGIzYTAxMDE3ZjIzMDA0MTEwNmIyMjAzMjQwMDIwMDM0MTA4NmEyMDAxNDEwODIwMDIxMGQwMDEyMDAzMjgwMjBjMjEwMTIwMDAyMDAzMjgwMjA4MzYwMjAwMjAwMDIwMDEzNjAyMDQyMDAzNDExMDZhMjQwMDBiMzQwMTAxN2UwMjQwMjAwMTQ1MGQwMDAzNDAyMDAxNDUwZDAxMjAwMTQxMDE2YjIxMDEyMDAwMzEwMDAwMjAwMjQyMDg4Njg0MjEwMjIwMDA0MTAxNmEyMTAwMGMwMDBiMDAwYjIwMDIwYmZkMDEwMTA2N2YyMzAwNDEzMDZiMjIwMTI0MDAyMDAwMTBhNzAxMjEwMjEwNDMyMTA0MjAwMjEwMTIyMTAwMjAwMTQxMTg2YTQxMDAzYTAwMDAyMDAxNDExNDZhMjAwMDM2MDIwMDIwMDEyMDAyMzYwMjEwMjAwMTIwMDAzNjAyMGMyMDAxNDEwMDM2MDIwODAzN2YyMDAwMjAwMzQ2MDQ3ZjIwMDEyZDAwMTgwNDQwNDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGIyMDAxNDEzMDZhMjQwMDIwMDQwNTIwMDE0MTA4NmEyMjAyMTBhZDAxMjEwMzIwMDIxMGFlMDEyMTA1MjAwMjEwYWYwMTIxMDY0MTAwMjEwMDIwMDE0MTAwM2EwMDJmMjAwMjIwMDE0MTJmNmE0MTAxMTBiMzAxMDI0MDAyNDAwMjQwMjAwMTJkMDAyZjBlMDIwMjAxMDAwYjQxZWQ4NjA4NDEwZDEwODgwMTAwMGI0MTAxMjEwMDBiMjAwMTIwMDAzYTAwMjgyMDAxMjAwNjM2MDIyNDIwMDEyMDA1MzYwMjIwMjAwMTIwMDMzNjAyMWMyMDA0MjAwMTQxMWM2YTEwNTUyMDAxMjgwMjA4MjEwMzIwMDEyODAyMGMyMTAwMGMwMTBiMGIwYjJkMDAyMDAwNDEwODZhMjAwMDI4MDIwMDIwMDEyMDAyMTA5ZTAxMDQ0MDQxYTM4NTA4NDEwZjEwODgwMTAwMGIyMDAwMjAwMDI4MDIwMDIwMDI2YTM2MDIwMDBiODcwMTAxMDE3ZjIzMDA0MTMwNmIyMjAyMjQwMDIwMDIyMDAxMzYwMjA4MjAwMjEwMzUyMDAyMjAwMjJkMDAwNDNhMDAxMDIwMDIyMDAyMjgwMjAwMzYwMjBjMjAwMjIwMDExMDEyMzYwMjFjMjAwMjQxMDAzNjAyMTgyMDAyMjAwMjQxMDg2YTM2MDIxNDAzNDAyMDAyNDEyMDZhMjAwMjQxMTQ2YTEwYjUwMTIwMDIyZDAwMmM0MTAyNDY0NTA0NDAyMDAyNDEyMDZhMjAwMjQxMGM2YTEwYjYwMTBjMDEwYjBiMjAwMDIwMDIyODAyMGMyMDAyMmQwMDEwMTBiNzAxMjAwMjQxMzA2YTI0MDAwYmM1MDMwMTA3N2YyMzAwNDFkMDAwNmIyMjAyMjQwMDAyNDAyMDAxMjgwMjA0MjIwNDQxMGQ2YTIyMDgyMDAxMjgwMjA4NGQwNDQwMjAwMTI4MDIwMDIwMDI0MjAwMzcwMDM1MjAwMjQyMDAzNzAzMzAyODAyMDAyMDA0MjAwMjQxMzA2YTIyMDM0MTBkMTA2ZjFhMjAwMjQxMDAzNjAyNDAyMDAyNDEyODZhMjAwMzQxMDA0MTA0MTBiZjAxMjAwMjQxNDA2YjIyMDU0MTA0MjAwMjI4MDIyODIwMDIyODAyMmMxMDU3MjAwMjI4MDI0MDIxMDQyMDAyNDFjODAwNmE0MTAwM2EwMDAwMjAwMjQyMDAzNzAzNDAyMDAyNDEyMDZhMjAwMzQxMDQ0MTBkMTBiZjAxMjAwNTQxMDkyMDAyMjgwMjIwMjAwMjI4MDIyNDEwNTcyMDAyNDEwMDM2MDI0YzIwMDI0MTE4NmEyMDA1NDEwMDQxMDQxMGMwMDEyMDAyNDFjYzAwNmEyMjA3NDEwNDIwMDIyODAyMTgyMDAyMjgwMjFjMTA1NzIwMDIyODAyNGMyMTAzMjAwMjQxMDAzNjAyNGMyMDAyNDExMDZhMjAwNTQxMDQ0MTA4MTBjMDAxMjAwNzQxMDQyMDAyMjgwMjEwMjAwMjI4MDIxNDEwNTcyMDAyMjgwMjRjMjEwNjIwMDI0MTAwM2EwMDRjMjAwMjQxMDg2YTIwMDU0MTA4NDEwOTEwYzAwMTIwMDc0MTAxMjAwMjI4MDIwODIwMDIyODAyMGMxMDU3MjAwMDIwMDIyZDAwNGM0MTAwNDczYTAwMGMyMDAwMjAwNjQxMTg3NDIwMDY0MTgwZmUwMzcxNDEwODc0NzIyMDA2NDEwODc2NDE4MGZlMDM3MTIwMDY0MTE4NzY3MjcyMzYwMjA4MjAwMDIwMDM0MTE4NzQyMDAzNDE4MGZlMDM3MTQxMDg3NDcyMjAwMzQxMDg3NjQxODBmZTAzNzEyMDAzNDExODc2NzI3MjM2MDIwNDIwMDAyMDA0NDExODc0MjAwNDQxODBmZTAzNzE0MTA4NzQ3MjIwMDQ0MTA4NzY0MTgwZmUwMzcxMjAwNDQxMTg3NjcyNzIzNjAyMDAyMDAxMjAwODM2MDIwNDBjMDEwYjIwMDA0MTAyM2EwMDBjMGIyMDAyNDFkMDAwNmEyNDAwMGI0ZDAxMDE3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDAyODAyMDAyMDAxMTBiYzAxMjAwMTIwMDAyODAyMDQxMGJkMDEyMDAwNDEwODZhMjgwMjAwMjAwMTEwM2UyMDAyMjAwMDQxMGM2YTJkMDAwMDNhMDAwZjIwMDEyMDAyNDEwZjZhNDEwMTEwYTMwMTIwMDI0MTEwNmEyNDAwMGIwZDAwMjAwMDIwMDEyMDAyMTAzODEwMjExYTBiMGQwMDIwMDAyMDAxMjAwMjEwNGQxMDIxMWEwYjg3MDEwMTAxN2YyMzAwNDEzMDZiMjIwMjI0MDAyMDAyMjAwMTM2MDIwODIwMDIxMDM1MjAwMjIwMDIyZDAwMDQzYTAwMTAyMDAyMjAwMjI4MDIwMDM2MDIwYzIwMDIyMDAxMTAxMjM2MDIxYzIwMDI0MTAwMzYwMjE4MjAwMjIwMDI0MTA4NmEzNjAyMTQyMDAyNDEyNDZhMjEwMTAzNDAyMDAyNDEyMDZhMjAwMjQxMTQ2YTEwYmEwMTIwMDIyODAyMjAwNDQwMjAwMTIwMDI0MTBjNmExMGJiMDEwYzAxMGIwYjIwMDAyMDAyMjgwMjBjMjAwMjJkMDAxMDEwYjcwMTIwMDI0MTMwNmEyNDAwMGI4OTAzMDEwNjdmMjMwMDQxNDA2YTIyMDIyNDAwMjAwMDIwMDEyODAyMDQyMjAzNDEwYzZhMjIwNjIwMDEyODAyMDg0ZDA0N2YyMDAxMjgwMjAwMjAwMjQxMjg2YTQxMDAzNjAyMDAyMDAyNDIwMDM3MDMyMDI4MDIwMDIwMDMyMDAyNDEyMDZhMjIwMzQxMGMxMDZmMWEyMDAyNDEwMDM2MDIzMDIwMDI0MTE4NmEyMDAzNDEwMDQxMDQxMGMxMDEyMDAyNDEzMDZhMjIwNTQxMDQyMDAyMjgwMjE4MjAwMjI4MDIxYzEwNTcyMDAyMjgwMjMwMjEwNDIwMDI0MjAwMzcwMzMwMjAwMjQxMTA2YTIwMDM0MTA0NDEwYzEwYzEwMTIwMDU0MTA4MjAwMjI4MDIxMDIwMDIyODAyMTQxMDU3MjAwMjQxMDAzNjAyM2MyMDAyNDEwODZhMjAwNTQxMDA0MTA0MTBjMjAxMjAwMjQxM2M2YTIyMDc0MTA0MjAwMjI4MDIwODIwMDIyODAyMGMxMDU3MjAwMjI4MDIzYzIxMDMyMDAyNDEwMDM2MDIzYzIwMDIyMDA1NDEwNDQxMDgxMGMyMDEyMDA3NDEwNDIwMDIyODAyMDAyMDAyMjgwMjA0MTA1NzIwMDIyODAyM2MyMTA1MjAwMDQxMGM2YTIwMDQ0MTE4NzQyMDA0NDE4MGZlMDM3MTQxMDg3NDcyMjAwNDQxMDg3NjQxODBmZTAzNzEyMDA0NDExODc2NzI3MjM2MDIwMDIwMDAyMDAzNDExODc0MjAwMzQxODBmZTAzNzE0MTA4NzQ3MjIwMDM0MTA4NzY0MTgwZmUwMzcxMjAwMzQxMTg3NjcyNzIzNjAyMDQyMDAxMjAwNjM2MDIwNDIwMDA0MTA4NmEyMDA1NDExODc0MjAwNTQxODBmZTAzNzE0MTA4NzQ3MjIwMDU0MTA4NzY0MTgwZmUwMzcxMjAwNTQxMTg3NjcyNzIzNjAyMDA0MTAxMDU0MTAwMGIzNjAyMDAyMDAyNDE0MDZiMjQwMDBiMWYwMDIwMDAyODAyMDgyMDAxMTBiYzAxMjAwMTIwMDAyODAyMDAxMGJkMDEyMDAwMjgwMjA0MjAwMTEwM2UwYjQ2MDEwMTdmMjMwMDQxMTA2YjIyMDIyNDAwMjAwMjIwMDA0MTE4NzQyMDAwNDE4MGZlMDM3MTQxMDg3NDcyMjAwMDQxMDg3NjQxODBmZTAzNzEyMDAwNDExODc2NzI3MjM2MDIwYzIwMDEyMDAyNDEwYzZhNDEwNDEwYTMwMTIwMDI0MTEwNmEyNDAwMGI4MTAxMDEwMzdmMjMwMDQxMTA2YjIyMDIyNDAwMDI0MDAyNDAyMDAwMmQwMDA0MDQ0MDIwMDExMDEyMjIwNDQxOTBjZTAwNDFkY2RiMDgyODAyMDAyMjAzNmI0YjBkMDEyMDAyNDEwODZhMjAwMzIwMDMyMDA0NmEyMjAwMTBhNDAxMjAwMTQxMDAyMDAyMjgwMjA4MjAwMjI4MDIwYzEwNmYxYTQxZGNkYjA4MjAwMDM2MDIwMDBjMDIwYjIwMDAyODAyMDAyMDAxMTA4YjAxMGMwMTBiMjAwMDEwYTUwMTIwMDAyODAyMDAyMDAxMTA4YjAxMGIyMDAyNDExMDZhMjQwMDBiMzgwMjAxN2YwMTdlMjMwMDQxMTA2YjIyMDEyNDAwMjAwMTQyMDAzNzAzMDgyMDAwMjAwMTQxMDg2YTIyMDA0MTA4NDE4YTg1MDg0MTBiMTBjNTAxMjAwMDQxMDgxMGIxMDEyMDAxNDExMDZhMjQwMDBiMGYwMDIwMDAyMDAxMjAwMjIwMDM0MTBkMTBmODAxMGIwZjAwMjAwMDIwMDEyMDAyMjAwMzQxMDkxMGY4MDEwYjBmMDAyMDAwMjAwMTIwMDIyMDAzNDEwYzEwZjgwMTBiMGYwMDIwMDAyMDAxMjAwMjIwMDM0MTA4MTBmODAxMGI4MDAyMDEwNTdmMjMwMDQxMjA2YjIyMDIyNDAwMjAwMDIwMDEyODAyMDQyMjAzNDEwODZhMjIwNTIwMDEyODAyMDg0ZDA0N2YyMDAxMjgwMjAwMjAwMjQyMDAzNzAzMTAyODAyMDAyMDAzMjAwMjQxMTA2YTIyMDM0MTA4MTA2ZjFhMjAwMjQxMDAzNjAyMWMyMDAyNDEwODZhMjAwMzQxMDA0MTA0MTBjMjAxMjAwMjQxMWM2YTIyMDY0MTA0MjAwMjI4MDIwODIwMDIyODAyMGMxMDU3MjAwMjI4MDIxYzIxMDQyMDAyNDEwMDM2MDIxYzIwMDIyMDAzNDEwNDQxMDgxMGMyMDEyMDA2NDEwNDIwMDIyODAyMDAyMDAyMjgwMjA0MTA1NzIwMDIyODAyMWMyMTAzMjAwMDIwMDQ0MTE4NzQyMDA0NDE4MGZlMDM3MTQxMDg3NDcyMjAwNDQxMDg3NjQxODBmZTAzNzEyMDA0NDExODc2NzI3MjM2MDIwNDIwMDEyMDA1MzYwMjA0MjAwMDQxMDg2YTIwMDM0MTE4NzQyMDAzNDE4MGZlMDM3MTQxMDg3NDcyMjAwMzQxMDg3NjQxODBmZTAzNzEyMDAzNDExODc2NzI3MjM2MDIwMDQxMDEwNTQxMDAwYjM2MDIwMDIwMDI0MTIwNmEyNDAwMGI4YTAxMDEwNDdmMjMwMDQxMTA2YjIyMDMyNDAwMjAwMTI4MDIwNDIyMDI0MTA0NmEyMjA0MjAwMTI4MDIwODRiMDQ3ZjQxMDAwNTIwMDEyODAyMDAyMDAzNDEwMDM2MDIwYzI4MDIwMDIwMDIyMDAzNDEwYzZhNDEwNDEwNmYxYTIwMDMyODAyMGMyMTAyMjAwMTIwMDQzNjAyMDQyMDAyNDExODc0MjAwMjQxODBmZTAzNzE0MTA4NzQ3MjIwMDI0MTA4NzY0MTgwZmUwMzcxMjAwMjQxMTg3NjcyNzIyMTAyNDEwMTBiMjEwMTIwMDAyMDAyMzYwMjA0MjAwMDIwMDEzNjAyMDAyMDAzNDExMDZhMjQwMDBiMzAwMDIwMDA0MTA4NmEyMDAwMjgwMjAwMjAwMTIwMDIxMDllMDEwNDQwMjAwMzIwMDQ0MWEzODUwODQxMGYxMDRjMDAwYjIwMDAyMDAwMjgwMjAwMjAwMjZhMzYwMjAwMGI3ODAxMDE3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDIyMDAwNDIzODg2MjAwMDQyODBmZTAzODM0MjI4ODY4NDIwMDA0MjgwODBmYzA3ODM0MjE4ODYyMDAwNDI4MDgwODBmODBmODM0MjA4ODY4NDg0MjAwMDQyMDg4ODQyODA4MDgwZjgwZjgzMjAwMDQyMTg4ODQyODA4MGZjMDc4Mzg0MjAwMDQyMjg4ODQyODBmZTAzODMyMDAwNDIzODg4ODQ4NDg0MzcwMzA4MjAwMTIwMDI0MTA4NmE0MTA4MTBhMzAxMjAwMjQxMTA2YTI0MDAwYmQ2MDEwMTA2N2YyMzAwNDE0MDZhMjIwMDI0MDAxMGM4MDExMDVjMjEwMTIwMDAxMGM5MDExMDVjMzYwMjA4MjAwMDEwNDczNjAyMGMyMDAwNDEyODZhMjIwMjIwMDExMDMyNDFmNzgwMDg0MTEwMTAzMzIwMDAyODAyMmMyMjAxMjAwMDQxMDg2YTEwNjQyMDAxMjAwMDQxMGM2YTEwNjQyMDAwNDEyMDZhMjIwMTIwMDA0MTM4NmEyMjAzMjkwMzAwMzcwMzAwMjAwMDQxMTg2YTIyMDQyMDAwNDEzMDZhMjIwNTI5MDMwMDM3MDMwMDIwMDAyMDAwMjkwMzI4MzcwMzEwMjAwMDIwMDA0MTEwNmExMDdjMzYwMjA0MjAwMjEwYzkwMTEwNWMxMDMyNDFmNTgxMDg0MTE4MTAzMzIwMDAyODAyMmMyMDAwNDEwNDZhMTA3ODIwMDEyMDAzMjkwMzAwMzcwMzAwMjAwNDIwMDUyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDMyODM3MDMxMDIwMDA0MTEwNmExMDdjMjAwMDQxNDA2YjI0MDAwYjBhMDA0MTk1ODgwODQxMTIxMDRkMGIwYTAwNDE4MTg4MDg0MTE0MTA0ZDBiYTkwMzAyMDU3ZjAxN2UyMzAwNDE4MDAxNmIyMjAyMjQwMDEwY2IwMTEwYWIwMTIxMDMyMDAxMjgwMjBjMjEwNDIwMDEyOTAzMDAyMTA3MjAwMTI4MDIwODIxMDEwMjQwMjAwMzQxZmVmZmZmZmYwNzQ2MDQ0MDIwMDE0MWZlZmZmZmZmMDc0NjBkMDEyMDAxMTBhMTAxMjEwMTIwMDIyMDA0MzYwMjE0MjAwMjIwMDczNzAzMDgyMDAyMjAwMTM2MDIxMDEwY2MwMTEwNWMyMTAzMjAwNDEwMjkyMTA0MjAwMjQxZTAwMDZhMjIwMTIwMDMxMDMyNDFhMTgwMDg0MTBhMTAzMzIwMDI0MTQwNmIyMjAzMjAwMTIwMDI0MTA4NmExMDg0MDEyMDAxMjAwMzEwY2QwMTIwMDExMDM0NDIwMDIxMDc0MWZlZmZmZmZmMDcyMTAxMGIyMDAyNDFlMDAwNmEyMDAwMTAzMjQxYzA4MTA4NDExMjEwMzMyMDAyMjgwMjY0MWEyMDAyNDEyODZhMjIwMDIwMDI0MWYwMDA2YTIyMDUyOTAzMDAzNzAzMDAyMDAyNDEyMDZhMjIwMzIwMDI0MWU4MDA2YTIyMDYyOTAzMDAzNzAzMDAyMDAyMjAwMjI5MDM2MDM3MDMxODAyNDAyMDAxNDFmZWZmZmZmZjA3NDcwNDQwMjAwNTIwMDAyOTAzMDAzNzAzMDAyMDA2MjAwMzI5MDMwMDM3MDMwMDIwMDIyMDAyMjkwMzE4MzcwMzYwMjAwMjEwN2QzNjAyNzgyMDAxMTBhMTAxMjEwMDIwMDIyMDA0MzYwMjNjMjAwMjIwMDczNzAzMzAyMDAyMjAwMDM2MDIzODIwMDI0MTQwNmIyMDAyNDFlMDAwNmEyMDAyNDEzMDZhMTA4MzAxMGMwMTBiMjAwMjQxZDAwMDZhMjAwMDI5MDMwMDM3MDMwMDIwMDI0MWM4MDA2YTIwMDMyOTAzMDAzNzAzMDAyMDAyMjAwMjI5MDMxODM3MDM0MDIwMDIyMDA0MzYwMjU4MGIyMDAyNDFlMDAwNmEyMDAyNDE0MDZiMTA3NjIwMDI0MTgwMDE2YTI0MDAwZjBiNDFjYTg4MDg0MTFmMTA0MTAwMGIwYTAwNDFlODhjMDg0MTIyMTA0ZDBiMGEwMDQxZmE4NjA4NDExZDEwNGQwYmZmMDIwMjAzN2YwMjdlMjMwMDQxZDAwMDZiMjIwMjI0MDAyMDAyNDEzMDZhMjIwNDIwMDE0MTEwNmEyOTAzMDAzNzAzMDAyMDAyNDEyODZhMjIwMzIwMDE0MTA4NmEyOTAzMDAzNzAzMDAyMDAyMjAwMTI5MDMwMDM3MDMyMDIwMDIxMDdkMzYwMjM4MDI0MDAyNDAwMjQwMDI0MDIwMDEyODAyMTgyMjAxMTA2NTBlMDIwMTAyMDAwYjEwNDcyMTAzMjAwMjQxMDg2YTIwMDIyODAyMjAyMDAyMjgwMjI0MjAwNDIwMDExMDYyMjAwMjI5MDMwODIxMDUyMDAyMjkwMzI4MjEwNjIwMDAxMDdkMzYwMjE4MjAwMDIwMDMzNjAyMTAyMDAwMjAwNjM3MDMwODIwMDAyMDA1MzcwMzAwMGMwMjBiMjAwMDIwMDIyOTAzMjAzNzAzMDAyMDAwNDExODZhMjAwMjQxMzg2YTI5MDMwMDM3MDMwMDIwMDA0MTEwNmEyMDA0MjkwMzAwMzcwMzAwMjAwMDQxMDg2YTIwMDMyOTAzMDAzNzAzMDAwYzAxMGIyMDAyNDE0MDZiMjAwMTEwOTcwMTAyN2YyMDAyMjkwMzQwNTAwNDQwMjAwMjI4MDIzMDIxMDEyMDAyNDExMDZhMjAwMjI4MDIyMDIwMDIyODAyMjQyMDAyMjgwMjQ4MjAwMjI4MDI0YzEwNmQyMDAyMjgwMjEwMjEwMzIwMDIyODAyMTQwYzAxMGIxMDQ3MjEwMTIwMDI0MTE4NmEyMDAyMjgwMjIwMjAwMjI4MDIyNDIwMDIyODAyMzAyMDAyNDE0MDZiMTA2YzIwMDIyODAyMTgyMTAzMjAwMjI4MDIxYzBiMjEwNDIwMDIyOTAzMjgyMTA1MjAwMDEwN2QzNjAyMTgyMDAwMjAwMTM2MDIxMDIwMDAyMDA1MzcwMzA4MjAwMDIwMDQzNjAyMDQyMDAwMjAwMzM2MDIwMDBiMjAwMjQxZDAwMDZhMjQwMDBiMGQwMDIwMDAxMDYxNDFmZjAxNzE0MTAxNGIwYjE3MDAyMDAwMjgwMjAwMjAwMTI4MDIwMDEwODkwMTQxZmYwMTcxNDFmZjAxNDYwYjNiMDEwMTdmMjMwMDQxMTA2YjIyMDQyNDAwMjAwNDQxMDg2YTQxMDAyMDAzMjAwMTIwMDIxMDJiMjAwNDI4MDIwYzIxMDEyMDAwMjAwNDI4MDIwODM2MDIwMDIwMDAyMDAxMzYwMjA0MjAwNDQxMTA2YTI0MDAwYjBhMDA0MWJkODgwODQxMGQxMDRkMGIwYTAwNDFmMjg3MDg0MTBmMTA0ZDBiMGEwMDQxZGQ4NzA4NDExNTEwNGQwYjBhMDA0MWE3ODgwODQxMTYxMDRkMGIxOTAxMDE3ZjQxOTc4NzA4NDExNjEwNGQyMTAxMjAwMDI4MDIwMDIwMDExMDQwMjAwMTBiMTkwMTAxN2Y0MWFkODcwODQxMTgxMDRkMjEwMTIwMDAyODAyMDAyMDAxMTA0MDIwMDEwYjBhMDA0MWM1ODcwODQxMTgxMDRkMGIwYTAwNDE4ZjhjMDg0MTFkMTA0ZDBiMGEwMDQxYWM4YzA4NDExZDEwNGQwYjBhMDA0MWM5OGMwODQxMWYxMDRkMGJhNzA1MDIwZDdmMDI3ZTIzMDA0MTQwNmEyMjAwMjQwMDEwMjI0MTBhMTA1YTQxMDA0MWJkODgwODQxMGQxMDUwMjEwOTQxMDExMDRiMjEwMjQxMDI0MTk1ODgwODQxMTIxMDUwMjEwYTQxMDM0MTgxODgwODQxMTQxMDUwMjEwNTQxMDQ0MWYyODcwODQxMGYxMDUwMjEwNjQxMDUxMDExMjEwZDQxMDYxMDExMjEwZTQxMDcxMDU4MjEwNzQxMDgxMDUxMjEwODQxMDk0MWZhODYwODQxMWQxMDUwMjEwNDIwMDAyMDA4MzYwMjEwMjAwMDIwMDczNjAyMGMyMDA1MTAyZjEwMzIyMTAxNDFlNjgxMDg0MTBmMTA0ZDIxMDMxMDQzMjEwYjEwN2QyMTBjMTAxNjIwMDEyMDBjMjAwMzIwMGIxMDQ1MjEwMTEwMTcyMDAxMTAxMjIxMDMyMDAwNDEwMDM2MDIzMDIwMDAyMDAxMzYwMjI4MjAwMDIwMDM0MTAyNzYzNjAyMmMyMDAwNDEyODZhMjIwMzEwNzUxMDJmMTBhMjAxMjEwMTIwMDMyMDA0MTAyZjEwMmYxMDMyNDFhYjgwMDg0MTE1MTAzMzIwMDMxMDgwMDEyMTAzMDI0MDAyNDAyMDAxNDFmZWZmZmZmZjA3NDcwNDQwMjAwMTEwMmYxMGExMDEyMDAyMTAzMDBkMDE0MWU5ODgwODQxZDEwMDEwNDEwMDBiMjAwMjIwMDMxMDMwNDUwZDAxMGIxMGNjMDEyMDA0MTBhODAxMTBkOTAxMjAwMzEwYTgwMTAyNDAxMGNiMDEyMjA0MTBhNjAxMGQwMDIwMDE0MWZlZmZmZmZmMDc0NzA0NDAyMDA0MjAwMTEwMjExYTBjMDEwYjIwMDQ0MWVkODUwODQxMDQxMGI4MDEwYjEwZDEwMTIwMDkxMGE4MDExMGQ0MDEyMDAyMTBhODAxMTBjODAxMjAwYTEwYTgwMTEwYzkwMTIwMDUxMDJmMTBhODAxMTBkODAxMjAwMDQxMjg2YTIyMDEyMDA1MTAzMjQxYjY4MTA4NDEwYTEwMzMyMDAxMTA4MDAxMTBhODAxMTBkMjAxMjAwNjEwMmYxMGE4MDExMGRhMDEyMDAxMjAwNjEwMzI0MTg2ODMwODQxMGYxMDMzMjAwMTEwODAwMTEwYTgwMTIwMDAyMDA3MTAxMjM2MDIxYzIwMDA0MTAwMzYwMjE4MjAwMDIwMDA0MTBjNmEzNjAyMTQwMzQwMDI0MDIwMDA0MTI4NmEyMDAwNDExNDZhMTBjMzAxMjAwMDI4MDIyODQ1MDQ0MDIwMDAyMDA4MTAxMjM2MDIxYzIwMDA0MTAwMzYwMjE4MjAwMDIwMDA0MTEwNmEzNjAyMTQwMzQwMjAwMDQxMjg2YTIwMDA0MTE0NmExMGMzMDEyMDAwMjgwMjI4NDUwZDAyMjAwMDIwMDAyODAyMzAyMjAxMzYwMjI0MjAwMDIwMDAyODAyMmMzNjAyMjAyMDAwNDEyMDZhMTBkNTAxMjIwMjEwYTYwMTBkMDAyMDAyMjAwMTEwYjQwMTBjMDAwYjAwMGIyMDAwMjAwMDI4MDIzMDIyMDEzNjAyMjQyMDAwMjAwMDI4MDIyYzM2MDIyMDIwMDA0MTIwNmExMGQ2MDEyMjAyMTBhNjAxMGQwMTIwMDIyMDAxMTBiOTAxMGMwMTBiMGIxMGQzMDEyMDBkMTBhOTAxMTBkNzAxMjAwZTEwYTkwMTIwMDA0MTQwNmIyNDAwMGYwYjQxYmE4OTA4NDFjODAwMTA0MTAwMGIwODAwMTAyMjQxMDAxMDVhMGJjNzAxMDEwNTdmMjMwMDQxMzA2YjIyMDAyNDAwNDEwMDEwNWEwMjQwMDI0MDEwNDYxMGQxMDExMDVjMTAzMDA0NDAxMDQ2MTBkMTAxMTA1YzEwMzA0NTBkMDEyMDAwMTA0YTIyMDEzNjAyMDgxMGQ0MDExMGE3MDEyMTAyMTBjOTAxMTA1YzIxMDMyMDAwMjAwMTEwMTIzNjAyMTQyMDAwNDEwMDM2MDIxMDIwMDAyMDAwNDEwODZhMzYwMjBjMjAwMDQxMjA2YTIxMDEwMzQwMDI0MDIwMDA0MTE4NmEyMDAwNDEwYzZhMTA2NzIwMDAyOTAzMTg1MDBkMDAyMDAwMjgwMjJjMjAwMDI4MDIyODIwMDIxMDMwNDUwZDA0MTBjZTAxNDUwZDA0MjAwMzEwMmYyMDAxMTBjYTAxMGMwMTBiMGIyMDAwNDEzMDZhMjQwMDBmMGI0MTgyOGEwODQxMTYxMDQxMDAwYjQxODI4YTA4NDExNjEwNDEwMDBiNDE5ODhhMDg0MTBkMTA0MTAwMGJjNzA3MDIwOTdmMDE3ZTIzMDA0MTgwMDE2YjIyMDAyNDAwMTAyMjQxMDExMDVhMjAwMDEwNGYzNjAyMmMxMGQxMDExMDVjMjEwMTAyNDAwMjQwMDI0MDEwNDYyMjA3MjAwMTEwMzAwNDQwMjAwMDEwYzkwMTEwNWMyMjAxMzYwMjM0MjAwMDQxZTAwMDZhMjIwMjIwMDExMDJmMTAzMjQxOGQ4MjA4NDExODEwMzMyMDAwMjgwMjY0MjAwMDQxMmM2YTEwNzgyMDAwNDFkODAwNmEyMjAxMjAwMDQxZjAwMDZhMjIwNjI5MDMwMDM3MDMwMDIwMDA0MWQwMDA2YTIyMDMyMDAwNDFlODAwNmEyMjA0MjkwMzAwMzcwMzAwMjAwMDIwMDAyOTAzNjAzNzAzNDgyMDAwNDFjODAwNmEyMjA1MTA3YzIxMDgyMDAyMTBjODAxMTA1YzEwMzI0MWUxODAwODQxMGExMDMzMjAwMDI4MDI2NDIyMDIyMDAwNDEzNDZhMTA2NDIwMDI0MTAwMjAwODEwNzkyMDAxMjAwNjI5MDMwMDM3MDMwMDIwMDMyMDA0MjkwMzAwMzcwMzAwMjAwMDIwMDAyOTAzNjAzNzAzNDgyMDAwNDEzODZhMjAwNTEwN2UyMDAwMjgwMjQ0MTBjZTAxNDUwZDAxMjAwMDI4MDIzNDEwMzIyMTAxNDFhNTgyMDg0MTA2MTA0ZDIxMDQxMDQzMjIwMzQxMDEyMDAwMTA3OTEwNDMyMjAyMjAwMDQxMzg2YTEwNDQyMDAwMjAwMTM2MDI3MDIwMDA0MjdmMzcwMzY4MjAwMDIwMDMzNjAyNjQyMDAwMjAwNDM2MDI2MDIwMDAxMDdkMjIwNTM2MDI3ODAyNDAwMjQwMDI0MDAyNDAyMDAyMTA2NTBlMDIwMjAwMDEwYjIwMDA0MWM4MDA2YTIwMDIxMDk3MDEwMjdmMjAwMDI5MDM0ODUwMDQ0MDIwMDA0MTE4NmEyMDA0MjAwMzIwMDAyODAyNTAyMDAwMjgwMjU0MTA2ZDIwMDAyODAyMTgyMTA0MjAwMDI4MDIxYzBjMDEwYjEwNDcyMDAwNDEyMDZhMjAwNDIwMDMyMDAxMjAwMDQxYzgwMDZhMTA2YzIwMDAyODAyMjAyMTA0MjEwMTIwMDAyODAyMjQwYjIxMDMxMDdkMjEwNTBjMDEwYjEwNDcyMTAxMjAwMDQxMTA2YTIwMDQyMDAzMjAwNjIwMDIxMDYyMjAwMDI5MDM2ODIxMDkyMDAwMjgwMjE0MjEwMzIwMDAyODAyMTAyMTA0MTA3ZDIxMDUyMDA5NDI3ZjUyMGQwMTBiMTAxNjIxMDkwYjIwMDkyMDAxMjAwNTIwMDQyMDAzMTA0NTIxMDExMDE3MjAwMTEwMTIyMTAyMjAwMDQxMDAzNjAyNTAyMDAwMjAwMTM2MDI0ODIwMDAyMDAyNDEwMjc2MzYwMjRjMjAwMDQxYzgwMDZhMTA3NTIyMDIxMDEyMjEwMTIwMDA0MWYwMDA2YTQxMDAzYTAwMDAyMDAwNDFlYzAwNmEyMDAxMzYwMjAwMjAwMDIwMDIzNjAyNjgyMDAwMjAwMTM2MDI2NDIwMDA0MTAwMzYwMjYwMjAwMDQxZTAwMDZhMjIwMTQxOGE4NTA4NDEwYjEwM2ExMGEyMDEyMTAyMjAwMTEwYmUwMTIxMDkyMDAxMTAzOTIxMDEyMDAwMjgwMjY0MjAwMDI4MDI2MDQ3MGQwMjIwMDAyZDAwNzAwNDQwNDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGIwMjQwMjAwMjQxZmVmZmZmZmYwNzQ3MDQ0MDIwMDIxMGExMDEyMTAzMGMwMTBiMTBkOTAxMTBhNzAxMjEwMzEwY2MwMTEwNWMyMDAxMTAyOTEwMzE0MjAwMjEwOTBiMjAwMTEwY2UwMTQ1MGQwMzIwMDcyMDAzMjAwOTIwMDExMDQyMjAwMDIwMDEzNjAyNmMyMDAwMjAwMzM2MDI2ODIwMDAyMDA5MzcwMzYwMjAwMDIwMDA0MWUwMDA2YTEwOTUwMTIyMDEzNjAyMzAyMDAwNDEwODZhMTAzNTIwMDAyMDAwMmQwMDBjM2EwMDNjMjAwMDIwMDAyODAyMDgzNjAyMzgyMDAwMjAwMTEwMTIzNjAyNTAyMDAwNDEwMDM2MDI0YzIwMDAyMDAwNDEzMDZhMzYwMjQ4MDM0MDIwMDA0MWUwMDA2YTIwMDA0MWM4MDA2YTEwNjcyMDAwMjkwMzYwNTA0NTA0NDAyMDAwMjgwMjc0MjAwMDI4MDI3MDIwMDA0MTM4NmEyMjAxMTAzZTIwMDAyOTAzNjgyMDAxMTBjNjAxMjAwMTEwM2MwYzAxMGIwYjIwMDAyODAyMzgyMDAwMmQwMDNjMTAzNzIwMDA0MTgwMDE2YTI0MDAwZjBiNDE4MjhhMDg0MTE2MTA0MTAwMGI0MWU3OGEwODQxMWYxMDQxMDAwYjQxOGE4NTA4NDEwYjQxOTU4NTA4NDEwZTEwNGMwMDBiNDE4NjhiMDg0MTFhMTA0MTAwMGJmMzFkMDIxNjdmMDI3ZTIzMDA0MWEwMDI2YjIyMDAyNDAwMTAyMjQxMDAxMDVhMTBjODAxMTA1YzIxMDEyMDAwMTBjOTAxMTA1YzIyMTQxMDJmMTA5NjAxMzYwMmYwMDEyMDAwMTA0MzM2MDJhMDAxMjAwMDQxODAwMjZhMjIwOTIwMDExMDMyNDFlYjgwMDg0MTBjMTAzMzIwMDAyODAyODQwMjIyMDE0MTAwMTA4MTAxMjAwMTQxMDExMDgxMDEyMDAxNDEwMDEwODEwMTIwMDEyMDAwNDFmMDAxNmEyMjExMTA3YjIwMDEyMDAwNDFhMDAxNmEyMjA3MTA3YjIwMDA0MWUwMDE2YTIyMDUyMDAwNDE5MDAyNmEyMjA0MjkwMzAwMzcwMzAwMjAwMDQxZDgwMTZhMjIwMjIwMDA0MTg4MDI2YTIyMDMyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDM4MDAyMzcwM2QwMDEyMDAwNDFkMDAxNmEyMjA2MTA3ZjEwZDIwMTEwNWMyMTAxMjAwMDIwMTQxMDJmMTA5NjAxMzYwMmYwMDEyMDAwMTA0MzM2MDJhMDAxMjAwOTIwMDExMDMyNDFlYjgwMDg0MTBjMTAzMzIwMDAyODAyODQwMjIyMDE0MTAwMTA4MTAxMjAwMTIwMTExMDdiMjAwMTIwMDcxMDdiMjAwMTQxMDEyMDAwMTA3OTIwMDUyMDA0MjkwMzAwMzcwMzAwMjAwMjIwMDMyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDM4MDAyMzcwM2QwMDEyMDA2MTA3ZjEwMmEyMjAzMTAyYTIyMDYxMDIzMjAwNjEwY2UwMTA0NDAxMGNjMDExMDVjMjAwNjEwMjkxMDMxMTBkOTAxMTBhNzAxMjEwMTIwMDAyMDA2MzYwMjhjMDIyMDAwNDIwMDM3MDM4MDAyMjAwMDIwMDEzNjAyODgwMjIwMDMyMDAwNDE4MDAyNmExMDQ0MGIyMDAwMjAwMzM2MDI5MDAxMDI0MDAyNDAwMjQwMjAwMzEwNjUwNDQwMTBkNDAxMTBhNzAxMjEwZTEwN2QyMTBkMjAwMDIwMDAyODAyOTAwMTEwMTIzNjAyOWMwMTIwMDA0MTAwMzYwMjk4MDEyMDAwMjAwMDQxOTAwMTZhMzYwMjk0MDEyMDAwNDE5MDAyNmEyMTBhMjAwMDQxYzAwMTZhMjEwZjIwMDA0MWE4MDE2YTIxMTUwMzQwMjAwMDQxYTAwMTZhMjAwMDQxOTQwMTZhMTA2NzIwMDAyOTAzYTAwMTUwMDQ0MDQyODA4MDkwYmJiYWQ2YWRmMDBkMTAyZTIxMDEyMDBkMTBkMzAxMTA1ZjEwMmUxMDkyMDEyMDAxMTA4ZDAxMjIwNTIwMGQxMGQ3MDExMDVmMTAyZTEwOTIwMTIwMDExMDhkMDEyMjA2MTA5MTAxMjAwZDEwODkwMTQxZmYwMTcxNDEwMjQ5MGQwNTIwMGQyMDA1MTA5MzAxMjAwNjEwOTAwMTIxMDIyMDBlMTAyZjIxMDEyMDAwMjAwMjEwMjkzNjAyOGMwMjIwMDA0MjAwMzcwMzgwMDIyMDAwMjAwMTM2MDI4ODAyMjAxNDIwMDA0MTgwMDI2YTEwY2EwMTIwMGUxMDJmMjEwMTIwMDUxMGNlMDEwNDQwMTA0NjIwMDE0MjAwMjAwNTEwNDIwYjIwMDYxMGNlMDEwNDQwMTA0ODIwMGU0MjAwMjAwNjEwNDIwYjEwNDMyMTA0MTA0MzEwMmYyMTA2MjAwMTQxZmVmZmZmZmYwNzQ2MGQwMzIwMDEyMDA2MTA0MDBjMDQwYjIwMGYyMDE1NDEwODZhMjkwMzAwMzcwMzAwMjAwMDIwMTUyOTAzMDAzNzAzYjgwMTIwMGYxMGQ2MDExMGFjMDEyMTEyMjAwZjEwZDUwMTEwYjIwMTIxMTMyMDBmMjgwMjAwMjEwYzIwMDAyODAyYzQwMTIxMDQyMDAwMjkwM2I4MDEyMTE2MjAxMjEwMTIyMTAxMjAxMzEwMTI0MTBkNmUyMDAxNDEwYzZlNmEyMTExNDEwMDIxMDEwMzQwMDI0MDAyNDAyMDAxMjAxMTQ3MDQ0MDIwMDE0MTAxNmEyMTA2NDEwMDIxMDIyMDEyMTAxMjIxMDUwMjQwMDI0MDAzNDAyMDAyNDEwYzZhMjIwMzIwMDU0YjBkMDEyMDAwNDE4ODAyNmEyMjA5NDEwMDM2MDIwMDIwMDA0MjAwMzcwMzgwMDIyMDEyMjAwMjIwMDA0MTgwMDI2YTIyMDI0MTBjMTA4YTAxMWEyMDAwNDEwMDM2MDJkMDAxMjAwMDQxODgwMTZhMjAwMjQxMDA0MTA0MTBjMTAxMjAwMDQxZDAwMTZhMjIwNzQxMDQyMDAwMjgwMjg4MDEyMDAwMjgwMjhjMDExMDU3MjAwMDI4MDJkMDAxMjEwODIwMDA0MjAwMzcwM2QwMDEyMDAwNDE4MDAxNmEyMDAyNDEwNDQxMGMxMGMxMDEyMDA3NDEwODIwMDAyODAyODAwMTIwMDAyODAyODQwMTEwNTcyMDAwNDEwMDM2MDJmMDAxMjAwMDQxZjgwMDZhMjAwNzQxMDA0MTA0MTBjMjAxMjAwMDQxZjAwMTZhMjIwMjQxMDQyMDAwMjgwMjc4MjAwMDI4MDI3YzEwNTcyMDAwMjgwMmYwMDEyMTBiMjAwMDQxMDAzNjAyZjAwMTIwMDA0MWYwMDA2YTIwMDc0MTA0NDEwODEwYzIwMTIwMDI0MTA0MjAwMDI4MDI3MDIwMDAyODAyNzQxMDU3MjAwMzIxMDIyMDA4NDExODc0MjAwODQxODBmZTAzNzE0MTA4NzQ3MjIwMDg0MTA4NzY0MTgwZmUwMzcxMjAwODQxMTg3NjcyNzIyMDAxNDcwZDAwMGIyMDAwMjgwMmYwMDEyMTAzMjAwYjQxMTg3NDIwMGI0MTgwZmUwMzcxNDEwODc0NzIyMDBiNDEwODc2NDE4MGZlMDM3MTIwMGI0MTE4NzY3MjcyMTAyZjIxMDEyMDAzNDExODc0MjAwMzQxODBmZTAzNzE0MTA4NzQ3MjIwMDM0MTA4NzY0MTgwZmUwMzcxMjAwMzQxMTg3NjcyNzIyMjA3MTAyZjIxMDU0MTAxMTAyZDIwMDA0MTgwMDI2YTIyMDMyMDAxMTAzMjQxZDk4NjA4NDExNDEwMzMyMDAwMjgwMjg0MDIyMjAxMjAwNTEwNmUyMDAxMTA3MDIwMDA0MWUwMDE2YTIyMDIyMDBhMjkwMzAwMzcwMzAwMjAwMDQxZDgwMTZhMjIwMTIwMDkyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDM4MDAyMzcwM2QwMDExMDQzMjEwNTIwMDAyMDA0MzYwMjhjMDIyMDAwMjAwYzM2MDI4ODAyMjAwMDIwMTYzNzAzODAwMjIwMDUyMDAzMTA0NDIwMGEyMDAyMjkwMzAwMzcwMzAwMjAwOTIwMDEyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDNkMDAxMzcwMzgwMDIyMDAwMTA3ZDM2MDI5ODAyMDI0MDAyNDAwMjQwMDI0MDIwMDUxMDY1MGUwMjAxMDIwMDBiMTA0NzIxMDEyMDAwNDFlODAwNmEyMDAwMjgwMjgwMDIyMDAwMjgwMjg0MDIyMDBhMjAwNTEwNjIyMDAwMjkwMzY4MjExNzIwMDAyOTAzODgwMjIxMTYyMDAwMTA3ZDM2MDJlODAxMjAwMDIwMDEzNjAyZTAwMTIwMDAyMDE2MzcwM2Q4MDEyMDAwMjAxNzM3MDNkMDAxMGMwMjBiMjAwMDQxZTgwMTZhMjAwMDQxOTgwMjZhMjkwMzAwMzcwMzAwMjAwMjIwMGEyOTAzMDAzNzAzMDAyMDAxMjAwOTI5MDMwMDM3MDMwMDIwMDAyMDAwMjkwMzgwMDIzNzAzZDAwMTBjMDEwYjIwMDA0MWYwMDE2YTIyMDEyMDA1MTA5NzAxMjAwMDQxZDAwMTZhMjAwMDQxODAwMjZhMjAwMTEwODMwMTBiMjAwMDQxODAwMjZhMjAwMDQxZDAwMTZhMTA3NjIwMDAyODAyODgwMjIyMGMyMDA3MTAzMDQ1MGQwMTIwMDAyODAyOGMwMjIxMDQyMDAwMjkwMzgwMDIyMTE2MjAwNjIxMDEwYzA1MGI0MTAwMjEwMjIwMTMxMDEyMjEwNTAzNDAyMDAyNDEwZDZhMjIwMzIwMDU0YjBkMDMyMDAwNDIwMDM3MDA4NTAyMjAwMDQyMDAzNzAzODAwMjIwMTMyMDAyMjAwMDQxODAwMjZhMjIwMjQxMGQxMDhhMDExYTIwMDA0MTAwMzYwMmQwMDEyMDAwNDFlMDAwNmEyMDAyNDEwMDQxMDQxMGJmMDEyMDAwNDFkMDAxNmEyMjA4NDEwNDIwMDAyODAyNjAyMDAwMjgwMjY0MTA1NzIwMDAyODAyZDAwMTIxMDkyMDAwNDFkODAxNmEyMjBiNDEwMDNhMDAwMDIwMDA0MjAwMzcwM2QwMDEyMDAwNDFkODAwNmEyMDAyNDEwNDQxMGQxMGJmMDEyMDA4NDEwOTIwMDAyODAyNTgyMDAwMjgwMjVjMTA1NzIwMDA0MTAwMzYwMmYwMDEyMDAwNDFkMDAwNmEyMDA4NDEwMDQxMDQxMGMwMDEyMDAwNDFmMDAxNmEyMjAyNDEwNDIwMDAyODAyNTAyMDAwMjgwMjU0MTA1NzIwMDAyODAyZjAwMTIxMTAyMDAwNDEwMDM2MDJmMDAxMjAwMDQxYzgwMDZhMjAwODQxMDQ0MTA4MTBjMDAxMjAwMjQxMDQyMDAwMjgwMjQ4MjAwMDI4MDI0YzEwNTcyMDAwMjgwMmYwMDEyMTA3MjAwMDQxMDAzYTAwZjAwMTIwMDA0MTQwNmIyMDA4NDEwODQxMDkxMGMwMDEyMDAyNDEwMTIwMDAyODAyNDAyMDAwMjgwMjQ0MTA1NzIwMDMyMTAyMjAwOTQxMTg3NDIwMDk0MTgwZmUwMzcxNDEwODc0NzIyMDA5NDEwODc2NDE4MGZlMDM3MTIwMDk0MTE4NzY3MjcyMjAwMTQ3MGQwMDBiMjAwMDJkMDBmMDAxMjAwNzQxMTg3NDIwMDc0MTgwZmUwMzcxNDEwODc0NzIyMDA3NDEwODc2NDE4MGZlMDM3MTIwMDc0MTE4NzY3MjcyMjEwODIwMGMxMDJmMjEwOTIwMDQxMDI5MjEwNzIwMTA0MTE4NzQyMDEwNDE4MGZlMDM3MTQxMDg3NDcyMjAxMDQxMDg3NjQxODBmZTAzNzEyMDEwNDExODc2NzI3MjEwMmYyMTA1NDUwNDQwNDEwMTEwMmQyMDAwNDE4MDAyNmEyMjAxMjAwNTEwMzI0MWE4ODYwODQxMDgxMDMzMjAwMDI4MDI4NDAyMTA3MDIwMDA0MWUwMDE2YTIyMDIyMDBhMjkwMzAwMzcwMzAwMjAwYjIwMDA0MTg4MDI2YTIyMDMyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDM4MDAyMzcwM2QwMDExMDQzMjEwNDIwMDAyMDA3MzYwMjhjMDIyMDAwMjAwOTM2MDI4ODAyMjAwMDIwMTYzNzAzODAwMjIwMDQyMDAxMTA0NDIwMGEyMDAyMjkwMzAwMzcwMzAwMjAwMzIwMGIyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDNkMDAxMzcwMzgwMDIyMDAwMTA3ZDM2MDI5ODAyMDI0MDAyNDAwMjQwMDI0MDIwMDQxMDY1MGUwMjAxMDIwMDBiMTA0NzIxMDEyMDAwNDExMDZhMjAwMDI4MDI4MDAyMjAwMDI4MDI4NDAyMjAwYTIwMDQxMDYyMjAwMDI5MDMxMDIxMTcyMDAwMjkwMzg4MDIyMTE2MjAwMDEwN2QzNjAyZTgwMTIwMDAyMDAxMzYwMmUwMDEyMDAwMjAxNjM3MDNkODAxMjAwMDIwMTczNzAzZDAwMTBjMDIwYjIwMDA0MWU4MDE2YTIwMDA0MTk4MDI2YTI5MDMwMDM3MDMwMDIwMDIyMDBhMjkwMzAwMzcwMzAwMjAwYjIwMDMyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDM4MDAyMzcwM2QwMDEwYzAxMGIyMDAwNDFmMDAxNmEyMDA0MTA5NzAxMDI3ZjIwMDAyOTAzZjAwMTUwMDQ0MDIwMDAyODAyOTAwMjIxMDMyMDAwNDExODZhMjAwMDI4MDI4MDAyMjAwMDI4MDI4NDAyMjAwMDI4MDJmODAxMjAwMDI4MDJmYzAxMTA2ZDIwMDAyODAyMWMyMTAyMjAwMDI4MDIxODBjMDEwYjEwNDcyMTAzMjAwMDQxMjA2YTIwMDAyODAyODAwMjIwMDAyODAyODQwMjIwMDAyODAyOTAwMjIwMDA0MWYwMDE2YTEwNmMyMDAwMjgwMjI0MjEwMjIwMDAyODAyMjAwYjIxMDEyMDAwMjkwMzg4MDIyMTE2MjAwMDEwN2QzNjAyZTgwMTIwMDAyMDAzMzYwMmUwMDEyMDAwMjAxNjM3MDNkODAxMjAwMDIwMDIzNjAyZDQwMTIwMDAyMDAxMzYwMmQwMDEwYjIwMDA0MWQwMDE2YTEwNzIyMTAzMjAwODEwMmYyMTAxMjAwMDIwMDMzNjAyOGMwMjIwMDA0MjAwMzcwMzgwMDIyMDAwMjAwMTM2MDI4ODAyMjAwMDQxODAwMjZhMTA5NTAxMjEwMTBjMDQwYjIwMDgxMDJmMjEwNDQxMDExMDJkMjAwNTEwMzIyMTAzNDFhODg2MDg0MTA4MTA0ZDIxMDExMDQzMjIwNTIwMDQxMDZlMjAwNTEwNzAxMDQzMjEwNDIwMDAyMDA3MzYwMjhjMDIyMDAwMjAwOTM2MDI4ODAyMjAwMDIwMTYzNzAzODAwMjIwMDQyMDAwNDE4MDAyNmExMDQ0MjAwMDIwMDMzNjAyOTAwMjIwMDA0MjdmMzcwMzg4MDIyMDAwMjAwNTM2MDI4NDAyMjAwMDIwMDEzNjAyODAwMjIwMDAxMDdkMzYwMjk4MDIwMjdmMDI3ZTAyNDAwMjQwMDI0MDIwMDQxMDY1MGUwMjAxMDIwMDBiMTA0NzIxMDIyMDAwNDEyODZhMjAwMDI4MDI4MDAyMjAwMDI4MDI4NDAyMjAwYTIwMDQxMDYyMjAwMDI4MDIyYzIxMDMyMDAwMjgwMjI4MjEwMTIwMDAyOTAzODgwMjBjMDIwYjIwMDAyODAyOTAwMjIxMDIyMDAwMjkwMzg4MDIyMTE2MjAwMDI4MDI4NDAyMjEwMzIwMDAyODAyODAwMjIxMDEyMDAwMjgwMjk4MDIwYzAyMGIyMDAwNDFkMDAxNmEyMDA0MTA5NzAxMDI3ZjIwMDAyOTAzZDAwMTUwMDQ0MDIwMDAyODAyOTAwMjIxMDIyMDAwNDEzMDZhMjAwMDI4MDI4MDAyMjAwMDI4MDI4NDAyMjAwMDI4MDJkODAxMjAwMDI4MDJkYzAxMTA2ZDIwMDAyODAyMzQyMTAzMjAwMDI4MDIzMDBjMDEwYjEwNDcyMTAyMjAwMDQxMzg2YTIwMDAyODAyODAwMjIwMDAyODAyODQwMjIwMDAyODAyOTAwMjIwMDA0MWQwMDE2YTEwNmMyMDAwMjgwMjNjMjEwMzIwMDAyODAyMzgwYjIxMDEyMDAwMjkwMzg4MDIwYjIxMTYxMDdkMGIyMTA0MjAxNjQyN2Y1MTA0N2UxMDE2MDUyMDE2MGIyMDAyMjAwNDIwMDEyMDAzMTA0NTIxMDMxMDE3NDEwMDIxMDIyMDAzMTAxMjIxMDEyMDAwNDEwMDM2MDJmODAxMjAwMDIwMDMzNjAyZjAwMTIwMDAyMDAxNDEwMjc2MzYwMmY0MDEyMDAwNDFmMDAxNmExMDc1MTAyZjIxMDQxMDQzMjEwMTIwMDQxMDEyMjEwMzIwMDA0MTAwM2EwMDkwMDIyMDAwMjAwMzM2MDI4YzAyMjAwMDIwMDQzNjAyODgwMjIwMDAyMDAzMzYwMjg0MDIyMDAwNDEwMDM2MDI4MDAyMDM0MDIwMDIyMDAzNDYwNDQwMjAwMDJkMDA5MDAyNDUwZDA1NDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGMwNTA1MjAwMDQxZDAwMTZhMjIwMzIwMDA0MTgwMDI2YTEwNzcyMDAxMjAwMzEwNDQyMDAwMjgwMjgwMDIyMTAyMjAwMDI4MDI4NDAyMjEwMzBjMDEwYjAwMGIwMDBiNDFjMDg2MDg0MTE5MTA0MTAwMGIyMDBjMjAwZTEwMzAwNDQwMjAwZDIwMDQxMDhmMDEwYzA0MGI0MWQ0OGEwODQxMTMxMDQxMDAwYjIwMDA0MTA4NmExMDM2MjAwMDIwMDAyZDAwMGMzYTAwODQwMjIwMDAyMDAwMjgwMjA4MzYwMjgwMDIyMDAwNDE4MDAyNmEyMjA2NDE4MDgwMDg0MTIxMTBhMzAxMjMwMDQxNDA2YTIyMDMyNDAwMjAwMzQxMDAyMDAzNmI0MTAzNzEyMjA0NmEyMTA3MjAwNDA0NDAyMDAzMjEwMjAzNDAyMDAyNDEwMDNhMDAwMDIwMDI0MTAxNmEyMjAyMjAwNzQ5MGQwMDBiMGIyMDA3NDFjMDAwMjAwNDZiMjIwNTQxN2M3MTIyMDQ2YTIxMDIyMDA0NDEwMDRhMDQ0MDAzNDAyMDA3NDEwMDM2MDIwMDIwMDc0MTA0NmEyMjA3MjAwMjQ5MGQwMDBiMGIyMDA1NDEwMzcxMjIwNDA0NDAyMDAyMjAwNDZhMjEwNDAzNDAyMDAyNDEwMDNhMDAwMDIwMDI0MTAxNmEyMjAyMjAwNDQ5MGQwMDBiMGIyMDA2MjAwMzAyN2YyMDAxMDQ0MDIwMDFhZDIxMTY0MTNmMjEwMTAyNDAwMzQwMjAxNjUwMGQwMTIwMDE0MTNmNGQwNDQwMjAwMTIwMDM2YTIwMTYyMDE2NDIwYTgwMjIxNjQyMGE3ZTdkYTc0MTMwNzIzYTAwMDAyMDAxNDEwMTZiMjEwMTBjMDEwYjBiMTAyYzAwMGIyMDAxNDEwMTZhMGMwMTBiMjAwMzQxMzAzYTAwM2Y0MTNmMGIyMjAxNmE0MWMwMDAyMDAxNmIxMGEzMDEyMDAzNDE0MDZiMjQwMDIwMDAyODAyODAwMjIwMDAyZDAwODQwMjEwMzgxMDAwMDAwYjIwMDAyMDAxMzYwMmNjMDExMDdkMjEwMjEwN2QyMTA0MjAwMDIwMDExMDEyMzYwMmQ4MDEyMDAwNDEwMDM2MDJkNDAxMjAwMDIwMDA0MWNjMDE2YTM2MDJkMDAxMDI0MDAzNDAwMjQwMjAwMDQxODAwMjZhMjAwMDQxZDAwMTZhMTA2NzIwMDAyOTAzODAwMjUwMGQwMDIwMDAyODAyOTQwMjIxMDUyMDAyMjEwMzIwMDAyODAyOTAwMjIyMDEyMDBjMTAzMDQ1MDQ0MDIwMDQyMTAzMjAwMTIwMDgxMDMwNDUwZDAzMGIyMDAzMjAwNTEwOGYwMTBjMDEwYjBiMjAwODEwMmYyMTBjNDIwMDIxMTYyMDA2MjEwMTBjMDEwYjBiMGI0MTg3ODYwODQxMjExMDQxMDAwYjQxYTU4YTA4NDExNTEwNDEwMDBiMjAwMDQxODA4MDgwMjAzNjAyZDAwMTIwMDYyMDAwNDFkMDAxNmE0MTA0MTAwZjFhMjAwNjQxZWQ4NTA4NDEwNDEwMGYxYTBiMjAwMDQyMDAzNzAzZDAwMTIwMDYyMDAwNDFkMDAxNmEyMjAzNDEwODEwMGYxYTIwMDUyMDA2MTAzZjIwMDQyMDA2MTA0ZTEwYzcwMTEwNDMyMjAxNDE4YThkMDg0MTA4MTA0ZDEwNGUyMDAyMTA0MzEwMmYyMjAyMTAzZjIwMDIxMDNmMjAwMTIwMDIxMDI0MjAwMDIwMDQzNjAyZDAwMTIwMDAyMDA0MTAxMjM2MDI4ODAyMjAwMDQxMDAzNjAyODQwMjIwMDAyMDAzMzYwMjgwMDIwMzQwMjAwMDIwMDA0MTgwMDI2YTEwYzQwMTIwMDAyODAyMDAwNDQwMjAwMDI4MDIwNDEwMDcxYTBjMDEwYjBiMjAwMDQxYTAwMjZhMjQwMDBmMGI0MWJhOGEwODQxMWExMDQxMDAwYjBkMDAxMDIyNDEwMDEwNWExMGM3MDExMDI1MGIwZDAwMTAyMjQxMDAxMDVhMTBkMTAxMTA1YjBiMGQwMDEwMjI0MTAwMTA1YTEwZDQwMTEwNWQwYjBkMDAxMDIyNDEwMDEwNWExMGQ4MDExMDVkMGIyYTAxMDE3ZjEwMjI0MTAwMTA1YTEwY2IwMTEwYWIwMTIyMDA0MWZlZmZmZmZmMDc0NzA0NDAyMDAwMTAwNzFhMGYwYjQxZWQ4NTA4NDEwNDEwMjYwYjBkMDAxMDIyNDEwMDEwNWExMGRhMDExMDVkMGIwZDAwMTAyMjQxMDAxMDVhMTBjODAxMTA1YjBiMGQwMDEwMjI0MTAwMTA1YTEwYzkwMTEwNWIwYjBkMDAxMDIyNDEwMDEwNWExMGNjMDExMDViMGIwZDAwMTAyMjQxMDAxMDVhMTBkOTAxMTA1ZDBiMGQwMDEwMjI0MTAwMTA1YTEwZDIwMTEwNWIwYmExMDEwMTAyN2YyMzAwNDE0MDZhMjIwMDI0MDAxMDIyNDEwMTEwNWEyMDAwNDEwMDEwNGIzNjAyMTQyMDAwMjAwMDQxMTQ2YTEwZDYwMTEwYWMwMTIyMDEzNjAyMTgyMDAwNDEwODZhMTAzNTIwMDAyMDAwMmQwMDBjM2EwMDIwMjAwMDIwMDAyODAyMDgzNjAyMWMyMDAwMjAwMTEwMTIzNjAyMmMyMDAwNDEwMDM2MDIyODIwMDAyMDAwNDExODZhMzYwMjI0MjAwMDQxMzQ2YTIxMDEwMzQwMjAwMDQxMzA2YTIwMDA0MTI0NmExMGJhMDEyMDAwMjgwMjMwMDQ0MDIwMDEyMDAwNDExYzZhMTBiYjAxMGMwMTBiMGIyMDAwMjgwMjFjMjAwMDJkMDAyMDEwMzcyMDAwNDE0MDZiMjQwMDBiYTAwMTAxMDI3ZjIzMDA0MTQwNmEyMjAwMjQwMDEwMjI0MTAxMTA1YTIwMDA0MTAwMTA0YjM2MDIxNDIwMDAyMDAwNDExNDZhMTBkNTAxMTBiMjAxMjIwMTM2MDIxODIwMDA0MTA4NmExMDM1MjAwMDIwMDAyZDAwMGMzYTAwMjAyMDAwMjAwMDI4MDIwODM2MDIxYzIwMDAyMDAxMTAxMjM2MDIyYzIwMDA0MTAwMzYwMjI4MjAwMDIwMDA0MTE4NmEzNjAyMjQwMzQwMjAwMDQxMzA2YTIwMDA0MTI0NmExMGI1MDEyMDAwMmQwMDNjNDEwMjQ3MDQ0MDIwMDA0MTMwNmEyMDAwNDExYzZhMTBiNjAxMGMwMTBiMGIyMDAwMjgwMjFjMjAwMDJkMDAyMDEwMzcyMDAwNDE0MDZiMjQwMDBiMGQwMDEwMjI0MTAwMTA1YTEwZDMwMTEwNWUwYjBkMDAxMDIyNDEwMDEwNWExMGQ3MDExMDVlMGJlMzAzMDIwNTdmMDI3ZTIzMDA0MTkwMDE2YjIyMDAyNDAwMTA0OTQxMDAxMDVhMjAwMDEwNGEyMjAxMzYwMjE0MDI0MDIwMDExMDY1NDEwMTQ2MDQ0MDIwMDExMDEyMjEwMTIwMDA0MTAwMzYwMjM0MjAwMDIwMDEzNjAyMzAyMDAwNDEwMDM2MDIyYzIwMDAyMDAwNDExNDZhMzYwMjI4MjAwMDQxM2M2YTIxMDIyMDAwNDFmNDAwNmEyMTAzMjAwMDQxZjgwMDZhMjEwMTAzNDAyMDAwNDFmMDAwNmEyMDAwNDEyODZhMTA2NzIwMDAyOTAzNzA1MDBkMDIyMDAwNDFlMDAwNmEyMDAxNDEwODZhMjkwMzAwMjIwNTM3MDMwMDIwMDAyMDAxMjkwMzAwMjIwNjM3MDM1ODIwMDAyMDAwMjgwMjM0MjIwNDQxMDE2YTM2MDIzNDIwMDM0MTA4NmEyMDA1MzcwMjAwMjAwMzIwMDYzNzAyMDAyMDAwNDE0MDZiMjAwMTI5MDIwMDM3MDMwMDIwMDA0MWM4MDA2YTIwMDA0MTgwMDE2YTI4MDIwMDM2MDIwMDIwMDAyMDAwMjkwMjcwMzcwMzM4MjAwNDQ1MDQ0MDIwMDA0MTIwNmEyMDAyNDEwODZhMjkwMjAwMzcwMzAwMjAwMDIwMDIyOTAyMDAzNzAzMTgwYzAxMGIwYjEwMmMwMDBiNDFiMzgzMDg0MTIyMTAwMzAwMGIyMDAwNDEwODZhMjIwMTIwMDA0MTIwNmEyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDMxODM3MDMwMDEwZGEwMTEwYTcwMTIxMDIyMDAxMjgwMjAwMjAwMjEwMzA0NTA0NDA0MTk4OGEwODQxMGQxMDQxMDAwYjEwZDIwMTEwNWMyMTAyMjAwMDEwNDMzNjAyMTgyMDAwMTA0MzM2MDIyODIwMDA0MWYwMDA2YTIyMDEyMDAyMTAzMjQxYTc4MzA4NDEwNTEwMzMyMDAwMjgwMjc0MjIwMjIwMDA0MTE4NmExMDdiMjAwMjIwMDA0MTI4NmExMDdhMjAwMDQxZTgwMDZhMjAwMDQxODAwMTZhMjkwMzAwMzcwMzAwMjAwMDQxZTAwMDZhMjAwMDQxZjgwMDZhMjkwMzAwMzcwMzAwMjAwMDIwMDAyOTAzNzAzNzAzNTgyMDAwNDEzODZhMjIwMjIwMDA0MWQ4MDA2YTIwMDAxMDg0MDEyMDAxMjAwMjEwY2QwMTIwMDExMDc0MjAwMDQxOTAwMTZhMjQwMDBiOGMwMTAxMDI3ZjIzMDA0MTQwNmEyMjAwMjQwMDEwNDk0MTAwMTA1YTEwZDIwMTEwNWMyMTAxMjAwMDEwNDMzNjAyMDAyMDAwMTA0MzM2MDIwNDIwMDA0MTA4NmEyMDAxMTAzMjQxOTU4MzA4NDExMjEwMzMyMDAwMjgwMjBjMjIwMTIwMDAxMDdiMjAwMTIwMDA0MTA0NmExMDdhMjAwMDQxMzA2YTIwMDA0MTE4NmEyOTAzMDAzNzAzMDAyMDAwNDEyODZhMjAwMDQxMTA2YTI5MDMwMDM3MDMwMDIwMDAyMDAwMjkwMzA4MzcwMzIwMjAwMDEwN2QzNjAyMzgyMDAwNDEyMDZhMTA3NDIwMDA0MTQwNmIyNDAwMGJmZjAxMDIwNTdmMDE3ZTIzMDA0MTMwNmIyMjAwMjQwMDEwMjIxMDQ5NDEwMTEwNWEyMDAwMTA0ZjM2MDIxMDEwZDIwMTEwNWMyMDAwMTA0MzM2MDIxNDIwMDAxMDQzMzYwMjE4MTAzMjIxMDI0MWFjODMwODQxMDcxMDRkMjEwMzEwNDMyMjAxMjAwMDQxMTA2YTEwNzgyMDAxMjAwMDQxMTQ2YTEwN2IyMDAxMjAwMDQxMTg2YTEwN2ExMDdkMjEwNDEwMTYyMDAyMjAwNDIwMDMyMDAxMTA0NTIxMDExMDE3MjAwMTEwMTIyMTAyMjAwMDQxMDAzNjAyMjQyMDAwMjAwMTM2MDIxYzIwMDAyMDAyNDEwMjc2MzYwMjIwMjAwMDQxMWM2YTEwNzUyMTAxMjAwMDQyMDAzNzAzMjgyMDAxMTAxMjIyMDI0MTA5NDkwNDQwMDI0MDIwMDA0MTA4NmEyMDAwNDEyODZhMjAwMjEwYjAwMTIwMDE0MTAwMjAwMDI4MDIwODIyMDEyMDAwMjgwMjBjMjIwMjEwOGEwMTFhMjAwMTIwMDIxMGIxMDEyMjA1NDI4MDgwODA4MDEwNWEwZDAwMjAwNTEwMTQyMDAwNDEzMDZhMjQwMDBmMGIwYjQxOGE4NTA4NDEwYjQxOTU4NTA4NDEwZTEwNGMwMDBiOTgwMzAyMDU3ZjAxN2UyMzAwNDFlMDAwNmIyMjAwMjQwMDEwMjIxMDQ5NDFlNGRiMDgxMDEzMzYwMjAwNDFlNGRiMDgyODAyMDA0MTAwNDgwNDQwNDFlZjgzMDg0MTExMTAwMzAwMGIyMDAwNDEwMDM2MDIzODEwNDMyMTAzMjAwMDQxMzg2YTIyMDQyODAyMDAyMTAxMDM0MDQxZTRkYjA4MjgwMjAwMjAwMTRhMDQ0MDIwMDQyMDAxNDEwMTZhMjIwMjM2MDIwMDIwMDMyMDAxMTA0YjEwNGUyMDAyMjEwMTBjMDEwYjBiMjAwMzIxMDE0MWU0ZGIwODI4MDIwMDIwMDAyODAyMzg0YTA0NDA0MTgwODQwODQxMTIxMDAzMDAwYjIwMDAyMDAxMzYwMjFjMjAwNDEwZDIwMTEwNWMxMDMyNDFmOTgyMDg0MTBkMTAzMzIwMDAyMDAxMTAxMjM2MDI1YzIwMDA0MTAwMzYwMjU4MjAwMDIwMDA0MTFjNmEzNjAyNTQyMDAwMjgwMjNjMjEwMTAzNDAyMDAwNDExMDZhMjAwMDQxZDQwMDZhMTBjNDAxMjAwMDI4MDIxMDA0NDAyMDAxMjAwMDI4MDIxNDEwNmUwYzAxMGIwYjIwMDA0MTI4NmEyMDAwNDE0MDZiMjkwMzAwMzcwMzAwMjAwMDQxMzA2YTIwMDA0MWM4MDA2YTI5MDMwMDM3MDMwMDIwMDAyMDAwMjkwMzM4MzcwMzIwMjAwMDQxMzg2YTIwMDA0MTIwNmExMDdlMDI0MDIwMDAyODAyNDQyMjAxMTBjZTAxNDUwNDQwMjAwMDI4MDI0MDIxMDIwYzAxMGIxMDQ2MjAwMDI4MDI0MDIyMDI0MjAwMjAwMTEwNDIwYjIwMDAyOTAzMzgyMDAwNDEwODZhMTAzNTIwMDAyMDAwMmQwMDBjM2EwMDNjMjAwMDIwMDAyODAyMDgzNjAyMzgyMDAyMjAwMDQxMzg2YTIyMDIxMDNlMjAwMjEwYzYwMTIwMDEyMDAyMTAzYzIwMDAyODAyMzgyMDAwMmQwMDNjMTAzNzIwMDA0MWUwMDA2YTI0MDAwYjMxMDEwMTdlMTAyMjEwNDk0MTAxMTA1YTQxMDAxMDExMjIwMDQyODE4MDkwYmJiYWQ2YWRmMDBkNWEwNDQwNDFlZjhiMDg0MTIwMTA0MTAwMGIxMGQ3MDEyMDAwMTBhYTAxMGIzMTAxMDE3ZTEwMjIxMDQ5NDEwMTEwNWE0MTAwMTAxMTIyMDA0MjgxODA5MGJiYmFkNmFkZjAwZDVhMDQ0MDQxZDI4YjA4NDExZDEwNDEwMDBiMTBkMzAxMjAwMDEwYWEwMTBiZTMwMTAxMDM3ZjIzMDA0MTMwNmIyMjAwMjQwMDEwMjIxMDQ5NDEwMjEwNWE0MTAwMTA1ODIxMDEyMDAwNDEwMTEwNTEyMjAyMzYwMjBjMjAwMDIwMDEzNjAyMDgyMDAwMjAwMTEwMTIzNjAyMTgyMDAwNDEwMDM2MDIxNDIwMDAyMDAwNDEwODZhMzYwMjEwMDM0MDIwMDA0MTFjNmEyMDAwNDExMDZhMTBjMzAxMjAwMDI4MDIxYzA0NDAyMDAwMjAwMDI4MDIyNDIyMDEzNjAyMmMyMDAwMjAwMDI4MDIyMDM2MDIyODIwMDA0MTI4NmExMGQ2MDEyMDAxMTBiOTAxMGMwMTA1MjAwMDIwMDIxMDEyMzYwMjE4MjAwMDQxMDAzNjAyMTQyMDAwMjAwMDQxMGM2YTM2MDIxMDAzNDAyMDAwNDExYzZhMjAwMDQxMTA2YTEwYzMwMTIwMDAyODAyMWMwNDQwMjAwMDIwMDAyODAyMjQyMjAxMzYwMjJjMjAwMDIwMDAyODAyMjAzNjAyMjgyMDAwNDEyODZhMTBkNTAxMjAwMTEwYjQwMTBjMDEwYjBiMjAwMDQxMzA2YTI0MDAwYjBiMGJhYTA3MDIwYjdmMDE3ZTIzMDA0MTMwNmIyMjAwMjQwMDEwMjI0MTAwMTA1YTEwYzkwMTEwNWMyMjA5MTAyZjEwMzIyMTAxNDFkMjgxMDg0MTE0MTA0ZDIxMDIxMDQzMjEwNjEwN2QyMTA3MTAxNjIwMDEyMDA3MjAwMjIwMDYxMDQ1MjEwMTEwMTcyMDAxMTAxMjIxMDIyMDAwNDEwMDM2MDIxMDIwMDAyMDAxMzYwMjA4MjAwMDIwMDI0MTAyNzYzNjAyMGMyMDAwNDEwODZhMTA3NTIyMDIxMDEyMjEwMTIwMDA0MTI4NmE0MTAwM2EwMDAwMjAwMDQxMjQ2YTIwMDEzNjAyMDAyMDAwMjAwMjM2MDIyMDIwMDAyMDAxMzYwMjFjMjAwMDQxMDAzNjAyMTgwMjQwMDI3ZjAyNDAwMjQwMjAwMTQ1MGQwMDAyNDAwMjQwMDI0MDIwMDA0MTE4NmE0MThhODUwODQxMGIxMDU0NDFmZjAxNzEwZTAyMDIwMTAwMGI0MThhODUwODQxMGI0MWVkODYwODQxMGQxMDRjMDAwYjQxMDEyMTAzMjAwMDQxMTg2YTQxOGE4NTA4NDEwYjEwNTMyMTAxMGIyMDAwMjgwMjFjMjAwMDI4MDIxODQ3MGQwMzIwMDAyZDAwMjgwNDQwNDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGIyMDAzNDUwZDAwMjAwMDQxMTg2YTIyMDQyMDAxMTAyZjEwMzI0MWU0ODIwODQxMTUxMDMzMjAwMDIwMDQxMDdjMjIwMzM2MDIwMDIwMDQyMDAxMTAyZjEwMzI0MWIyODIwODQxMGIxMDMzMjAwMDQxMTg2YTEwN2M0MmJlOGE4NjBmMTAyZTEwOGUwMTIxMDYyMDA0MjAwMTEwMmYxMDMyNDFjOTgyMDg0MTBkMTAzMzIwMDA0MTE4NmExMDdjMjAwMzEwOTIwMTQyYmU4YTg2MGYxMDJlMTA4ZTAxNDEwYTEwMmQ0MTEyMTA5NDAxMTA4ZDAxMjEwNzIwMDQyMDAxMTAyZjEwMzI0MWJkODIwODQxMGMxMDMzMjAwMDQxMTg2YTEwN2M0MTBhMTAyZDQxMTIxMDk0MDEyMDAzMTA5MDAxMTA4ZTAxNDJiZThhODYwZjEwMmUxMDhlMDE0MTBhMTAyZDQxMTIxMDk0MDExMDhkMDEyMTBhMjAwNDIwMDkxMDJmMjIwMjEwMmYxMDMyNDE4NzgxMDg0MTBmMTAzMzIwMDAyMDAwNDExODZhMTA3YzIyMDUzNjAyMTQyMDA0MjAwMjEwMmYxMDMyNDFhYjgyMDg0MTA3MTAzMzIwMDA0MTE4NmExMDdjMjEwODIwMDQyMDAyMTAzMjQxYTY4MTA4NDExMDEwMzMyMDAwNDExODZhMTA3YzIxMDIyMDAwMjAwODIwMDUxMDkxMDEyMDAyMTA5MDAxMzYwMjA4MjAwNDIwMDExMDMyNDFkNjgyMDg0MTBlMTAzMzIwMDAyODAyMWMyMjAxMjAwMDQxMTQ2YTEwNzgyMDAxMjAwMDQxMDg2YTEwNzgyMDAwMjgwMjI4MjEwMjIwMDAyODAyMTgyMTA1MjAwMDI5MDMyMDEwN2QyMTA4MTA3MTIwMDIyMDA4MjAwNTIwMDExMDQ1MjEwMTEwMTcyMDAwMjAwMTEwNzMzNjAyMDQ0MjgwODA5MGJiYmFkNmFkZjAwZDEwMmUyMTAyMjAwMDEwN2QzNjAyMTgyMDAwNDEwNDZhMjAwNDEwY2YwMTIxMDUxMDdkMjIwMTIwMDUwZDAyMWEyMDAxMjAwMDI4MDIwNDEwODkwMTQxMDE2YTQxZmYwMTcxNDEwMTRkMDQ0MDIwMDA0MTA0NmEyMDAwMTBjZjAxMGQwMjIwMDAyODAyMDAyMTAzMGIyMDAwMjgwMjA0MjAwMzEwOTMwMTIwMGExMDhlMDEyMTAxNDEwYTEwMmQ0MTEyMTA5NDAxMjAwMDI4MDIwMDEwOTAwMTIxMDMyMDA2MjAwMjEwOTIwMTIwMDcyMDAyMTA5MjAxMTA4YzAxMjAwMTIwMDIxMDhlMDEyMDAzMTA4ZDAxMTA4YzAxMGMwMjBiNDFhMDhiMDg0MTMyMTA0MTAwMGIyMDAwMjgwMjA0MjAwNzEwOTIwMTIxMDEyMDA2MjAwMjEwOTIwMTIwMDEyMDAyMTA4ZTAxMjAwMDI4MDIwMDEwOGQwMTEwOGMwMTBiMjEwMTIwMDA0MTE4NmEyMjAzMjAwOTEwMzI0MTk2ODEwODQxMTAxMDMzMjAwMzEwN2MyMTAyNDEwYTEwMmQ0MTEyMTA5NDAxMjEwMzIwMDAyODAyMDQyMDAxMTA5MjAxMjAwMzIwMDIxMDkzMDExMDhlMDEyMDAzNDEwMzEwOTQwMTEwOGQwMTEwMjUyMDAwNDEzMDZhMjQwMDBmMGI0MThhODUwODQxMGI0MTk1ODUwODQxMGUxMDRjMDAwYjAzMDAwMTBiM2MwMTAxN2YyMzAwNDExMDZiMjIwNTI0MDAyMDA1NDEwODZhMjAwMTIwMDQyMDAyMjAwMzEwOWQwMTIwMDUyODAyMGMyMTAxMjAwMDIwMDUyODAyMDgzNjAyMDAyMDAwMjAwMTM2MDIwNDIwMDU0MTEwNmEyNDAwMGIzYjAxMDE3ZjIzMDA0MTEwNmIyMjA1MjQwMDIwMDU0MTA4NmEyMDAyMjAwMzIwMDEyMDA0MTAyYjIwMDUyODAyMGMyMTAxMjAwMDIwMDUyODAyMDgzNjAyMDAyMDAwMjAwMTM2MDIwNDIwMDU0MTEwNmEyNDAwMGIwYmRhMGQwMjAwNDE4MDgwMDgwYmM2MGQ0ZTZmMjA3Mzc3NjE3MDIwNmY3MDY1NzI2MTc0Njk2ZjZlMjA2NjZmNzU2ZTY0MjA2MTc0MjA2OTZlNjQ2NTc4MjA3NTZlNzc3MjYxNzA0NTY3NmM2NDY3NjU3NDU3NzI2MTcwNzA2NTY0NDU2NzZjNjQ1NDZmNmI2NTZlNDk2NDc3NzI2MTcwNDU2NzZjNjQ3MjY1NjM2OTcwNjk2NTZlNzQyMDYxNjQ2NDcyNjU3MzczMjA2ZTZmNzQyMDczNjU3NDY1Nzg2OTc0NGQ2MTcyNmI2NTc0NjM2YzYxNjk2ZDUyNjU3NzYxNzI2NDczNjc2NTc0NDE2MzYzNmY3NTZlNzQ1NDZmNmI2NTZlNzM2NzY1NzQ1NDZmNzQ2MTZjNDI2ZjcyNzI2Zjc3NzM2NzY1NzQ1MjY1NzM2NTcyNzY2NTQ2NjE2Mzc0NmY3MjY3NjU3NDU0NmY3NDYxNmM1MjY1NzM2NTcyNzY2NTczNjc2NTc0NTQ2ZjZiNjU2ZTQ5NjQ2ZDY5NmU3NDQxNmU2NDQ1NmU3NDY1NzI0ZDYxNzI2YjY1NzQ2NzY1NzQ0OTZlNzQ2NTcyNjU3Mzc0NTI2MTc0NjU0ZDZmNjQ2NTZjNjc2NTc0NTU2ZTY0NjU3MjZjNzk2OTZlNjc0OTY0NzQ2ZjZiNjU2ZTczNTQ2ZjU1NmU2NDY1NzI2Yzc5Njk2ZTY3NDE2ZDZmNzU2ZTc0NzU2ZTY0NjU3MjZjNzk2OTZlNjc0MTZkNmY3NTZlNzQ1NDZmNTQ2ZjZiNjU2ZTczNzI2NTY0NjU2NTZkNjc2NTc0NDM2MTczNjg2NzY1NzQ0MjYxNzM2NTUyNjE3NDY1Njc2NTc0NGM2MTczNzQ1MzZjNmY3MDY1Njc2NTc0NDY2OTcyNzM3NDUzNmM2ZjcwNjU2NzY1NzQ1NTc0Njk2YzY5N2E2MTc0Njk2ZjZlNjc2NTc0NGY3MDc0Njk2ZDYxNmM1NTc0Njk2YzY5N2E2MTc0Njk2ZjZlNjM2YzYxNjk2ZDRkNzU2Yzc0Njk3MDZjNjU2NzY1NzQ1Mzc0NjE2YjY1NTQ2ZjZiNjU2ZTQ5NjQ3MjY1NjI2MTZjNjE2ZTYzNjU1MDZmNzI3NDY2NmY2YzY5NmY3Mzc0NjE2YjY1NzU2ZTczNzQ2MTZiNjU2OTZlNjM2ZjcyNzI2NTYzNzQyMDZlNzU2ZDYyNjU3MjIwNmY2NjIwNDU1MzQ0NTQyMDc0NzI2MTZlNzM2NjY1NzI3MzYxNzI2Nzc1NmQ2NTZlNzQyMDY0NjU2MzZmNjQ2NTIwNjU3MjcyNmY3MjIwMjgyOTNhMjA3NDZmNmYyMDY2NjU3NzIwNjE3MjY3NzU2ZDY1NmU3NDczNzQ2ZjZmMjA2ZDYxNmU3OTIwNjE3MjY3NzU2ZDY1NmU3NDczNzc3MjZmNmU2NzIwNmU3NTZkNjI2NTcyMjA2ZjY2MjA2MTcyNjc3NTZkNjU2ZTc0NzM2MzYxNmU2ZTZmNzQyMDczNzU2Mjc0NzI2MTYzNzQyMDYyNjU2MzYxNzU3MzY1MjA3MjY1NzM3NTZjNzQyMDc3NmY3NTZjNjQyMDYyNjUyMDZlNjU2NzYxNzQ2OTc2NjU0ZDc1NmM3NDY5NDU1MzQ0NTQ0ZTQ2NTQ1NDcyNjE2ZTczNjY2NTcyNDU1MzQ0NTQ0ZTQ2NTQ1NDcyNjE2ZTczNjY2NTcyNDU1MzQ0NTQ1NDcyNjE2ZTczNjY2NTcyNzM3OTZlNjMyMDcyNjU3Mzc1NmM3NDY5NmU3MDc1NzQyMDc0NmY2ZjIwNmM2ZjZlNjc2OTZlNzA3NTc0MjA3NDZmNmYyMDczNjg2ZjcyNzQ2MzYxNzM3NDIwNzQ2ZjIwNjkzNjM0MjA2NTcyNzI2ZjcyNGQ2MTZlNjE2NzY1NjQ1NjY1NjMyMDY5NmU2NDY1NzgyMDZmNzU3NDIwNmY2NjIwNzI2MTZlNjc2NTQ1NTM0NDU0MjA2NTc4NzA2NTYzNzQ2NTY0NDU0NzRjNDQ3Mzc0NmY3MjYxNjc2NTIwNjQ2NTYzNmY2NDY1MjA2NTcyNzI2ZjcyM2EyMDc1NmU2YjZlNmY3NzZlMjA3MjY1NjM2NTY5NzY2NTY0MjA3NDZmNmI2NTZlMjA2MTY2NzQ2NTcyMjA3Mzc3NjE3MDY1Nzg2MzY4NjE2ZTY3NjU2MjYxNjQyMDYxNzI3MjYxNzkyMDZjNjU2ZTY3NzQ2ODc3NzI2ZjZlNjcyMDcyNjU3NDc1NzI2ZTY1NjQyMDczNzc2MTcwMjA3NDZmNmI2NTZlNzM3NzYxNzA1NDZmNmI2NTZlNzM0NjY5Nzg2NTY0NDk2ZTcwNzU3NDY5NmU3NjYxNmM2OTY0MjA3NjYxNmM3NTY1Nzc3MjYxNzA3MDY1NjQ1ZjY1Njc2YzY0NWY2MzZmNmU3NDcyNjE2Mzc0NWY2MTY0NjQ3MjY1NzM3MzYzNmY2ZDcwNmY3NTZlNjQ1ZjYxNzM2ODczNzc2MTcwNWY3Mzc3NjE3MDczNjM2ZjZkNzA2Zjc1NmU2NDVmNzg2NTc4NjM2ODYxNmU2NzY1NWY3Mzc3NjE3MDczNzA2NTcyNjY2ZjcyNmQ2MTZlNjM2NTVmNjY2NTY1NzM1ZjcwNjU3MjYzNjU2ZTc0NjM2ZjZkNzA2Zjc1NmU2NDVmNjY2NTY1NzM1ZjcwNjU3MjYzNjU2ZTc0NjI2ZjZmNzM3NDY1NzI1ZjYxNjQ2NDcyNjU3MzczNmQ2ZjZlNjU3OTVmNmQ2MTcyNmI2NTc0NWY2MTY0NjQ3MjY1NzM3MzYzNmY2ZTc0NzI2ZjZjNmM2NTcyNWY2MTY0NjQ3MjY1NzM3MzYxNzM3MzY1NzQ1Zjc0NmY2YjY1NmU1ZjY5NjQ2NTZlNzQ2OTY2Njk2NTcyNzY2MTc1NmM3NDVmNjE2NDY0NzI2NTczNzM3MDYxNzk2ZDY1NmU3NDIwNzM2ODZmNzU2YzY0MjA2MjY1MjA2MTZlMjA0NTUzNDQ1NDIwNzQ2ZjZiNjU2ZTU0Njg2NTIwNjE3MzczNjU3NDIwNzQ2ZjZiNjU2ZTIwNjk2NDY1NmU3NDY5NjY2OTY1NzIyMDYxNmU2NDIwNzQ2ODY1MjA2ZDZmNmU2NTc5MjA2ZDYxNzI2YjY1NzQyMDc1NmU2NDY1NzI2Yzc5Njk2ZTY3MjA2OTY0NjU2ZTc0Njk2NjY5NjU3MjIwNjQ2ZjZlMjc3NDIwNmQ2MTc0NjM2ODU3Njg2NTZlMjA3NDYxNzI2NzY1NzQ2OTZlNjcyMDYxNmUyMDQ1NDc0YzQ0MjA2ZDYxNzI2YjY1NzQyMDc0Njg2NTIwNjE3MzczNjU3NDIwNzQ2ZjZiNjU2ZTIwNjk2NDY1NmU3NDY5NjY2OTY1NzIyMDczNjg2Zjc1NmM2NDIwNjI2NTIwNTc0NTQ3NGM0NDQzNjE2YzZjNjU3MjIwNzM2ODZmNzU2YzY0MjA2MjY1MjA3NjYxNzU2Yzc0Nzc3MjZmNmU2NzIwNzA2MTc5NmQ2NTZlNzQ2ZTZmMjA3MjY1Nzc2MTcyNjQyMDc0NmYyMDYzNmY2ZDcwNmY3NTZlNjQ2ZTZmMjA2YzY1NjY3NDIwNjE2ZDZmNzU2ZTc0MjA3NDZmMjA2MzZmNmQ3MDZmNzU2ZTY0Nzc3MjZmNmU2NzIwNzM3NzYxNzA3MDY1NjQyMDc0NmY2YjY1NmU2ZTZmMjA2NTc4Njk3NDIwNmQ2MTcyNmI2NTc0MjA3MDYxNzk2ZDY1NmU3NDIwNzI2NTYzNjU2OTc2NjU2NDZlNmYyMDcyNjU2NDY1NjU2ZDIwNzA2MTc5NmQ2NTZlNzQyMDcyNjU2MzY1Njk3NjY1NjQ0ZTZmMjA2OTZlNzQ2NTcyNjU3Mzc0MjA3MjYxNzQ2NTIwNmQ2ZjY0NjU2YzIwNzA3MjY1NzM2NTZlNzQyMDZmNmUyMDc0Njg2NTIwNmQ2ZjZlNjU3OTIwNmQ2MTcyNmI2NTc0NmU2NTc3MjA2MzZmNmQ3MDZmNzU2ZTY0MjA2NjY1NjU3MzIwNjU3ODYzNjU2NTY0MjAzMTMwMzAyNTZlNjU3NzIwNzA2NTcyNjY2ZjcyNmQ2MTZlNjM2NTIwNjY2NTY1NzMyMDY1Nzg2MzY1NjU2NDIwMzEzMDMwMjU2ZDZmNmU2NTc5NWY2ZDYxNzI2YjY1NzQ1Zjc0NmY2YjY1NmU1ZjY5NjQ2NTZlNzQ2OTY2Njk2NTcyNzc3MjYxNzA3MDY1NjQ1ZjY1Njc2YzY0NWY3NDZmNmI2NTZlNWY2OTY0NjU2ZTc0Njk2NjY5NjU3MjYyNmY2ZjczNzQ2NTcyNWY3Mzc0NjE2YjY1NjQ1Zjc0NmY2YjY1NmU1ZjY5NjQ2NTZlNzQ2OTY2Njk2NTcyNmQ2ZjZlNjU3OTVmNmQ2MTcyNmI2NTc0NWY3NTZlNjQ2NTcyNmM3OTY5NmU2NzVmNjk2NDY1NmU3NDY5NjY2OTY1NzI2MzZmNmQ3MDZmNzU2ZTY0NDU2ZTY0NzA2ZjY5NmU3NDIwNjM2MTZlMjA2ZjZlNmM3OTIwNjI2NTIwNjM2MTZjNmM2NTY0MjA2Mjc5MjA2Zjc3NmU2NTcyMDAwMDcwNjE2ZTY5NjMyMDZmNjM2Mzc1NzI3MjY1NjQwMDQxYzg4ZDA4MGIwNDljZmZmZmZmQDA1MDBAMDEwMEAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQDU3NDU0NzRjNDQyZDYxMzIzODYzMzUzOUAwMDAwMDAwMDAwMDAwMDAwMDUwMGEzYjY2NjkwMmQ1ZjRiYmYwZmY5Mzc0OGZiOTE1YWViNDMxMjRjYmY2NTA5QDAwMDAwMDAwMDAwMDAwMDAwNTAwMzJkZTRmNDBmMTdhMmY0MWM0ZTQwYzIxZjU5NmUzNmE4NDY5OTRlMzY1MDlAMDAwMDAwMDAwMDAwMDAwMDA1MDBmODgzNjY4NmY3YzZjMGYxM2Q3Mjc1MTUxYjc4ZjU5ZjhmMmY3MjlhNjUwOUBAQEBAMDAwMDAwMDAwMDAwMDAwMDA1MDAwYjFlNWIyNDQzMjUwOTU4NDlmNGUzNzEzNDY2MWQ1YmZkY2Q5MjVlN2NlYg==", + "signature": "edf0ec99b6f60414fa5e36d40cfb1d0075d01fd7c4ad7ba59bbe62b8b48eb892beb0c18bba203ff32b83827c3953847b190cdc89a4806f4615565dc2b3b5940f", + "sourceShard": 1, + "destinationShard": 1, + "blockNonce": 2127577, + "blockHash": "e3aea17b5345b45f61b233834d3b4ba0ac6f2b7d53eb3f1b1cf2bf0534ba567f", + "notarizedAtSourceInMetaNonce": 2129029, + "NotarizedAtSourceInMetaHash": "73ee8458f55bf5c9ea4a9974c0c838ced51a236c2b13238761f444598f40575e", + "notarizedAtDestinationInMetaNonce": 2129029, + "notarizedAtDestinationInMetaHash": "73ee8458f55bf5c9ea4a9974c0c838ced51a236c2b13238761f444598f40575e", + "miniblockType": "TxBlock", + "miniblockHash": "cc7e81e68269c2c633daf997fd2d52fc82d8ba3bb699d7e75250008bd9b7aa29", + "hyperblockNonce": 2129029, + "hyperblockHash": "73ee8458f55bf5c9ea4a9974c0c838ced51a236c2b13238761f444598f40575e", + "timestamp": 1707144290, + "status": "success", + "operation": "scDeploy", + "initiallyPaidFee": "82333950000000000", + "chainID": "D", + "version": 1, + "options": 0 + } + }, + "error": "", + "code": "successful" +} + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + let opt_address = tx_response.new_deployed_address.map(|e| { + multiversx_sdk::data::address::Address::from_bytes(*e.as_array()) + .to_bech32_string() + .unwrap() + }); + + let expected = + Some("erd1qqqqqqqqqqqqqpgqwpdf84ggxzqzmr2zmw959q4nlf9nz562q33sak25ze".to_string()); + + assert_eq!(opt_address, expected) +} + +#[test] +fn test_deployed_address_should_be_none_if_not_a_sc_deployment_tx() { + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "BuiltInFunctionCall", + "processingTypeOnDestination": "SCInvoking", + "hash": "238ad6dbe75dab1d53caeb9cabd584aabc6fc113c849a983afef5a5e439ce9e5", + "nonce": 13, + "round": 2192628, + "epoch": 888, + "value": "0", + "receiver": "erd1qqqqqqqqqqqqqpgqydwpdrplefjlwp3sp9xmn3vevdxdelfkwmfsw6e5xw", + "sender": "erd179xw6t04ug48m74jzyw9zq028hv66jhqayelzpzvgds0ptnzmckq2jf07f", + "gasPrice": 1000000000, + "gasLimit": 20000000, + "data": "RVNEVFRyYW5zZmVyQDRmNTU1MjRmMmQ2NDM4MzEzNzMxNjZAMDI0NmQyZDBiNmI1ZjBANjI3NTc5QDFiYzE2ZDY3NGVjODAwMDA=", + "signature": "ce984b4d785ccc7aca4b1cdea57ddcd568a502209f81e6b5bc678e1dd52b78d764fe46ea3ff77b926eb9f70eb52ae8f3f2afa2e9d0efa82655e361641458b900", + "sourceShard": 0, + "destinationShard": 1, + "blockNonce": 2129490, + "blockHash": "0ab10909b27565c5b7b59e8e1ee4a68d7046f49225fcde4c12d4b1ea3f512b8a", + "notarizedAtSourceInMetaNonce": 2130938, + "NotarizedAtSourceInMetaHash": "0c545160fd37f09f0196505b9cd2e730596bcd99438978a5bb415b9e1be1849d", + "notarizedAtDestinationInMetaNonce": 2130942, + "notarizedAtDestinationInMetaHash": "1ddd6b7aeeff824b5d11f2936a6284e470fc5abe41e34a8df229b719dc1a537d", + "miniblockType": "TxBlock", + "miniblockHash": "dc8ae41e1ae321c0fccbeb807194d11ff6e0f4ed71163764d850f1daaa60bd22", + "hyperblockNonce": 2130942, + "hyperblockHash": "1ddd6b7aeeff824b5d11f2936a6284e470fc5abe41e34a8df229b719dc1a537d", + "timestamp": 1707155768, + "status": "success", + "tokens": [ + "OURO-d8171f" + ], + "esdtValues": [ + "640821212132848" + ], + "operation": "ESDTTransfer", + "function": "buy", + "initiallyPaidFee": "359390000000000", + "chainID": "D", + "version": 1, + "options": 0 + } + }, + "error": "", + "code": "successful" +} + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + let opt_address = tx_response.new_deployed_address; + + let expected: Option
= None; + + assert_eq!(opt_address, expected) +} + +#[test] +fn test_with_tx_that_has_sc_result() { + // transaction data from the devnet, an artificial "10" result has been appended on the original result + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "BuiltInFunctionCall", + "processingTypeOnDestination": "SCInvoking", + "hash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", + "nonce": 30, + "round": 7639115, + "epoch": 6333, + "value": "0", + "receiver": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", + "sender": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", + "gasPrice": 1000000000, + "gasLimit": 25500000, + "gasUsed": 15297149, + "data": "RVNEVFRyYW5zZmVyQDQ4NTQ0ZDJkNjY2NTMxNjYzNjM5QDBkZTBiNmIzYTc2NDAwMDBANzM3NzYxNzA1NDZmNmI2NTZlNzM0NjY5Nzg2NTY0NDk2ZTcwNzU3NEA1NzQ1NDc0YzQ0MmQ2NDM3NjMzNjYyNjJAMDM3Yzc3OGZjY2U5YzU1Yg==", + "signature": "e912fae4b7a9e51ddf316a5e82a0f457d453a62e3c17477f5d6175e1b33c5e92ddb187d65f54cf3131a0603321290279a0456c20778039f2ab09b54e33c60f0d", + "sourceShard": 2, + "destinationShard": 1, + "blockNonce": 7585351, + "blockHash": "e456f38f11fec78ed26d5fda068e912739dceedb2e5ce559bf17614b8386c039", + "notarizedAtSourceInMetaNonce": 7601495, + "NotarizedAtSourceInMetaHash": "e28c6011d4b3f73f3945cae70ff251e675dfea331a70077c5ab3310e3101af17", + "notarizedAtDestinationInMetaNonce": 7601499, + "notarizedAtDestinationInMetaHash": "333d4266614e981cc1c5654f85ef496038a8cddac46dfc0ad0b7c44c37ab489d", + "miniblockType": "TxBlock", + "miniblockHash": "13e041f32fde79ebf1abdcfe692e99516f9ec6778dcb917251b440daa7f1210a", + "hyperblockNonce": 7601499, + "hyperblockHash": "333d4266614e981cc1c5654f85ef496038a8cddac46dfc0ad0b7c44c37ab489d", + "timestamp": 1694386290, + "smartContractResults": [ + { + "hash": "a23faa3c80bae0b968f007ff0fad3afdec05b4e71d749c3d583dec10c6eb05a2", + "nonce": 0, + "value": 0, + "receiver": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", + "sender": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", + "data": "ESDTTransfer@5745474c442d643763366262@03856446ff9a304b", + "prevTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", + "originalTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "logs": { + "address": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", + "identifier": "ESDTTransfer", + "topics": [ + "V0VHTEQtZDdjNmJi", + "", + "A4VkRv+aMEs=", + "qP29NHPKNFkQzDGmOEIaNRCFYABw8ku13ZyenAuvJOY=" + ], + "data": null + }, + { + "address": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", + "identifier": "writeLog", + "topics": [ + "AAAAAAAAAAAFAKVe/p1dXpaw/INtyTPaxf3N3LaNfOs=" + ], + "data": "QDZmNmI=" + }, + { + "address": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", + "identifier": "completedTxEvent", + "topics": [ + "1AWL08E9sLFIMsfFj+Fj2y9Xn/ZUQ4BYa4on2ItKUHA=" + ], + "data": null + } + ] + }, + "tokens": [ + "WEGLD-d7c6bb" + ], + "esdtValues": [ + "253719210115084363" + ], + "operation": "ESDTTransfer" + }, + { + "hash": "b7b4d15917fd215399d8e772c3c4e732008baaedc2b8172f71c91708ba7523f0", + "nonce": 31, + "value": 102028510000000, + "receiver": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", + "sender": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", + "data": "@6f6b@0000000c5745474c442d64376336626200000000000000000000000803856446ff9a304b@10", + "prevTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", + "originalTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "logs": { + "address": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", + "events": [ + { + "address": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", + "identifier": "completedTxEvent", + "topics": [ + "1AWL08E9sLFIMsfFj+Fj2y9Xn/ZUQ4BYa4on2ItKUHA=" + ], + "data": null + } + ] + }, + "operation": "transfer", + "isRefund": true + }, + { + "hash": "05a766ca05d2053d1c0fbeb1797116474a06c86402a3bfd6c132c9a24cfa1bb0", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", + "sender": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", + "data": "swapTokensFixedInput@5745474c442d643763366262@037c778fcce9c55b", + "prevTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", + "originalTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", + "gasLimit": 25050500, + "gasPrice": 1000000000, + "callType": 0, + "operation": "transfer", + "function": "swapTokensFixedInput" + }, + { + "hash": "4e639c80822d5d7780c8326d683fa9cd6d59649d14122dfabc5a96dda36da527", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgquu5rsa4ee6l4azz6vdu4hjp8z4p6tt8m0n4suht3dy", + "sender": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", + "data": "ESDTTransfer@5745474c442d643763366262@e7730d1ef1b0@737761704e6f466565416e64466f7277617264@4d45582d646332383963@0000000000000000000000000000000000000000000000000000000000000000", + "prevTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", + "originalTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "tokens": [ + "WEGLD-d7c6bb" + ], + "esdtValues": [ + "254481327387056" + ], + "operation": "ESDTTransfer", + "function": "swapNoFeeAndForward" + } + ], + "logs": { + "address": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", + "events": [ + { + "address": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", + "identifier": "ESDTTransfer", + "topics": [ + "SFRNLWZlMWY2OQ==", + "", + "DeC2s6dkAAA=", + "AAAAAAAAAAAFAKVe/p1dXpaw/INtyTPaxf3N3LaNfOs=" + ], + "data": null + }, + { + "address": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", + "identifier": "ESDTTransfer", + "topics": [ + "V0VHTEQtZDdjNmJi", + "", + "53MNHvGw", + "AAAAAAAAAAAFAOcoOHa5zr9eiFpjeVvIJxVDpaz7fOs=" + ], + "data": null + }, + { + "address": "erd1qqqqqqqqqqqqqpgquu5rsa4ee6l4azz6vdu4hjp8z4p6tt8m0n4suht3dy", + "identifier": "ESDTLocalBurn", + "topics": [ + "TUVYLWRjMjg5Yw==", + "", + "AuMDPq1jy03x" + ], + "data": null + }, + { + "address": "erd1qqqqqqqqqqqqqpgquu5rsa4ee6l4azz6vdu4hjp8z4p6tt8m0n4suht3dy", + "identifier": "swapNoFeeAndForward", + "topics": [ + "c3dhcF9ub19mZWVfYW5kX2ZvcndhcmQ=", + "TUVYLWRjMjg5Yw==", + "AAAAAAAAAAAFAKVe/p1dXpaw/INtyTPaxf3N3LaNfOs=", + "GL0=" + ], + "data": "AAAAAAAAAAAFAKVe/p1dXpaw/INtyTPaxf3N3LaNfOsAAAAMV0VHTEQtZDdjNmJiAAAABudzDR7xsAAAAApNRVgtZGMyODljAAAACQLjAz6tY8tN8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzvkcAAAAAAAAYvQAAAABk/khy" + }, + { + "address": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", + "identifier": "ESDTTransfer", + "topics": [ + "V0VHTEQtZDdjNmJi", + "", + "A4VkRv+aMEs=", + "qP29NHPKNFkQzDGmOEIaNRCFYABw8ku13ZyenAuvJOY=" + ], + "data": null + }, + { + "address": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", + "identifier": "swapTokensFixedInput", + "topics": [ + "c3dhcA==", + "SFRNLWZlMWY2OQ==", + "V0VHTEQtZDdjNmJi", + "qP29NHPKNFkQzDGmOEIaNRCFYABw8ku13ZyenAuvJOY=", + "GL0=" + ], + "data": "qP29NHPKNFkQzDGmOEIaNRCFYABw8ku13ZyenAuvJOYAAAAKSFRNLWZlMWY2OQAAAAgN4Lazp2QAAAAAAAxXRUdMRC1kN2M2YmIAAAAIA4VkRv+aMEsAAAAHA41+pMaAAAAAAAoofxtJRPkr8X9kAAAACgpOPCsHUu261HUAAAAAAHO+RwAAAAAAABi9AAAAAGT+SHI=" + } + ] + }, + "status": "success", + "tokens": [ + "HTM-fe1f69" + ], + "esdtValues": [ + "1000000000000000000" + ], + "operation": "ESDTTransfer", + "function": "swapTokensFixedInput", + "initiallyPaidFee": "502005000000000", + "fee": "399976490000000", + "chainID": "D", + "version": 1, + "options": 0 + } + }, + "error": "", + "code": "successful" + } + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + + let expected: Vec> = vec![ + hex::decode("0000000c5745474c442d64376336626200000000000000000000000803856446ff9a304b") + .unwrap(), + hex::decode("10").unwrap(), + ]; + + assert_eq!(tx_response.out, expected) +} + +#[test] +fn test_with_tx_that_has_no_sc_result() { + // transaction data from the devnet + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "SCInvoking", + "processingTypeOnDestination": "SCInvoking", + "hash": "6afac3ec13c89cc56154d06efdb457a24f58361699eee00a48202a8f8adc8c8a", + "nonce": 17, + "round": 7548071, + "epoch": 6257, + "value": "0", + "receiver": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", + "sender": "erd1uh67c2lkhyj4vh73akv7jky9sfgvus8awwcj64uju69mmfne5u7q299t7g", + "gasPrice": 1000000000, + "gasLimit": 600000000, + "gasUsed": 600000000, + "data": "cmV0dXJuVHdvVTY0", + "signature": "f3a3ca96a78c90c9cf1b08541e1777010f0176a5e1e525e631155b2784932cbfd74c9168d03ba201fd5434d1a1b4789895ddade9883eca2ee9e0bce18468fb00", + "sourceShard": 0, + "destinationShard": 0, + "blockNonce": 7502091, + "blockHash": "5ec66c651cb1514cba200e7e80a4491880f0db678ce7631c397872e3842f0aa2", + "notarizedAtSourceInMetaNonce": 7510505, + "NotarizedAtSourceInMetaHash": "8410309ec5b988af79b4dcfb44fd4729d46874ebd796672c78e417e314409051", + "notarizedAtDestinationInMetaNonce": 7510505, + "notarizedAtDestinationInMetaHash": "8410309ec5b988af79b4dcfb44fd4729d46874ebd796672c78e417e314409051", + "miniblockType": "TxBlock", + "miniblockHash": "fb150e515449c9b658879ed06f256b429239cbe78ec2c2821deb4b283ff21554", + "hyperblockNonce": 7510505, + "hyperblockHash": "8410309ec5b988af79b4dcfb44fd4729d46874ebd796672c78e417e314409051", + "timestamp": 1693840026, + "logs": { + "address": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", + "identifier": "writeLog", + "topics": [ + "5fXsK/a5JVZf0e2Z6ViFglDOQP1zsS1XkuaLvaZ5pzw=", + "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gNTk5OTMyMDAwLCBnYXMgdXNlZCA9IDE4NDE2NjU=" + ], + "data": "QDZmNmJAMGFAMDIxODcxMWEwMA==" + }, + { + "address": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", + "identifier": "completedTxEvent", + "topics": [ + "avrD7BPInMVhVNBu/bRXok9YNhaZ7uAKSCAqj4rcjIo=" + ], + "data": null + } + ] + }, + "status": "success", + "operation": "transfer", + "function": "returnTwoU64", + "initiallyPaidFee": "6067320000000000", + "fee": "6067320000000000", + "chainID": "D", + "version": 1, + "options": 0 + } + }, + "error": "", + "code": "successful" + } + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + + let expected: Vec> = vec![ + hex::decode("0a").unwrap(), + hex::decode("0218711a00").unwrap(), + ]; + + assert_eq!(tx_response.out, expected) +} + +#[test] +fn test_with_multi_contract_same_shard_tx_that_has_no_sc_result() { + // transaction data from the devnet + // context : user -> A --call--> B, B returns a MultiValue2, A returns the B's returned value + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "SCInvoking", + "processingTypeOnDestination": "SCInvoking", + "hash": "e914857f1bfd003ba411bae372266703e5f706fa412c378feb37faa5e18c3d73", + "nonce": 49, + "round": 7646960, + "epoch": 6339, + "value": "0", + "receiver": "erd1qqqqqqqqqqqqqpgqshqmekudxlxwp0d9j368etjamr5dw7k45u7qx40w6h", + "sender": "erd1uh67c2lkhyj4vh73akv7jky9sfgvus8awwcj64uju69mmfne5u7q299t7g", + "gasPrice": 1000000000, + "gasLimit": 600000000, + "gasUsed": 600000000, + "data": "Y2FsbEFub3RoZXJDb250cmFjdFJldHVyblR3b1U2NEAwMDAwMDAwMDAwMDAwMDAwMDUwMEFDRkY2QjdBNEVCODEwMUE4REU3RkY3RjVEMkMwQkYzRTRENjNGNDdBNzND", + "signature": "53cc6496647287d735bd7950f4ec79d7b51f884defda1d6d840d722b7d0d869900ccecc01602da7a7c717955e8d4ed0711b92acd980d64ed6eebd6eaed0c4608", + "sourceShard": 0, + "destinationShard": 0, + "blockNonce": 7600794, + "blockHash": "77eb0904e56d6dd596c0d72821cf33b326fde383e72903ca4df5c2f200b0ea75", + "notarizedAtSourceInMetaNonce": 7609344, + "NotarizedAtSourceInMetaHash": "12df3fe65cacde2c9742b9506ac2261d34f3c72d690301192fd8016430d51913", + "notarizedAtDestinationInMetaNonce": 7609344, + "notarizedAtDestinationInMetaHash": "12df3fe65cacde2c9742b9506ac2261d34f3c72d690301192fd8016430d51913", + "miniblockType": "TxBlock", + "miniblockHash": "03219ac7427f7511687f0768c722c759c1b1428b2664b44a0cbe2072154851ee", + "hyperblockNonce": 7609344, + "hyperblockHash": "12df3fe65cacde2c9742b9506ac2261d34f3c72d690301192fd8016430d51913", + "timestamp": 1694433360, + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqshqmekudxlxwp0d9j368etjamr5dw7k45u7qx40w6h", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqshqmekudxlxwp0d9j368etjamr5dw7k45u7qx40w6h", + "identifier": "writeLog", + "topics": [ + "5fXsK/a5JVZf0e2Z6ViFglDOQP1zsS1XkuaLvaZ5pzw=", + "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gNTk5ODA2MDAwLCBnYXMgdXNlZCA9IDM4NDcyNDA=" + ], + "data": "QDZmNmJAMGFAMDIxODcxMWEwMA==" + }, + { + "address": "erd1qqqqqqqqqqqqqpgqshqmekudxlxwp0d9j368etjamr5dw7k45u7qx40w6h", + "identifier": "completedTxEvent", + "topics": [ + "6RSFfxv9ADukEbrjciZnA+X3BvpBLDeP6zf6peGMPXM=" + ], + "data": null + } + ] + }, + "status": "success", + "operation": "transfer", + "function": "callAnotherContractReturnTwoU64", + "initiallyPaidFee": "6192060000000000", + "fee": "6192060000000000", + "chainID": "D", + "version": 2, + "options": 0 + } + }, + "error": "", + "code": "successful" + } + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + + let expected: Vec> = vec![ + hex::decode("0a").unwrap(), + hex::decode("0218711a00").unwrap(), + ]; + + assert_eq!(tx_response.out, expected) +} + +#[test] +fn test_with_multi_contract_cross_shard_tx_that_has_no_callback() { + // transaction data from the devnet + // context : user -> A --async call--> B, no callback + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "SCInvoking", + "processingTypeOnDestination": "SCInvoking", + "hash": "4d50a055663dfee2479851684d7fb83cf00695b6f03f4dbbdf0f9232477cafc4", + "nonce": 51, + "round": 7647523, + "epoch": 6340, + "value": "0", + "receiver": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "sender": "erd1uh67c2lkhyj4vh73akv7jky9sfgvus8awwcj64uju69mmfne5u7q299t7g", + "gasPrice": 1000000000, + "gasLimit": 600000000, + "gasUsed": 600000000, + "data": "YXN5bmNDYWxsQW5vdGhlckNvbnRyYWN0UmV0dXJuVHdvVTY0Tm9DYWxsYmFja0AwMDAwMDAwMDAwMDAwMDAwMDUwMEFDRkY2QjdBNEVCODEwMUE4REU3RkY3RjVEMkMwQkYzRTRENjNGNDdBNzND", + "signature": "0fc30cddaa8e5365662a14344e3434cbccf287f357be99b3ed4add182f64dded774ec0d095ab1589e7c6c07e00de3b7239efc96eb2e0e97b48c1ef87084cec01", + "sourceShard": 0, + "destinationShard": 1, + "blockNonce": 7593758, + "blockHash": "a828c0ca58ef1c8aff60e512ab59f18204f1915d4a6c8285cfceb1c5725b88e8", + "notarizedAtSourceInMetaNonce": 7609903, + "NotarizedAtSourceInMetaHash": "4e90fe45c2fdccd5cf6977c1422e5f4ffa41c4e9f31fb4a50c20455f87df1e99", + "notarizedAtDestinationInMetaNonce": 7609907, + "notarizedAtDestinationInMetaHash": "10b8666a44411c3babbe20af7154fb3d47efcb1cb10d955523ec68fece26e517", + "miniblockType": "TxBlock", + "miniblockHash": "4ff4bb1ac88911d617c9b0342aeb5158db78490c2fe414cad08adcc584a77be7", + "hyperblockNonce": 7609907, + "hyperblockHash": "10b8666a44411c3babbe20af7154fb3d47efcb1cb10d955523ec68fece26e517", + "timestamp": 1694436738, + "smartContractResults": [ + { + "hash": "462b56a1530e6070dc7c15f755e51a97a6972c8cd7891f3be4635b93211890c5", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "sender": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", + "data": "@00@0a@0218711a00", + "prevTxHash": "41d56fdacf3e14de67e821427c732b62ebfa07c82d2e5db6de75fe3a1c828d9b", + "originalTxHash": "4d50a055663dfee2479851684d7fb83cf00695b6f03f4dbbdf0f9232477cafc4", + "gasLimit": 595637825, + "gasPrice": 1000000000, + "callType": 2, + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "identifier": "writeLog", + "topics": [ + "AAAAAAAAAAAFAP/Aj4ZNGKlpx2+xeJLdoJbREzb20P0=", + "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gNTk1NjM3ODI1LCBnYXMgdXNlZCA9IDIxNjE3NzA=" + ], + "data": "QDZmNmI=" + }, + { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "identifier": "completedTxEvent", + "topics": [ + "QdVv2s8+FN5n6CFCfHMrYuv6B8gtLl223nX+OhyCjZs=" + ], + "data": null + } + ] + }, + "operation": "transfer" + }, + { + "hash": "41d56fdacf3e14de67e821427c732b62ebfa07c82d2e5db6de75fe3a1c828d9b", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", + "sender": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "data": "returnTwoU64@4f3c60", + "prevTxHash": "4d50a055663dfee2479851684d7fb83cf00695b6f03f4dbbdf0f9232477cafc4", + "originalTxHash": "4d50a055663dfee2479851684d7fb83cf00695b6f03f4dbbdf0f9232477cafc4", + "gasLimit": 597479490, + "gasPrice": 1000000000, + "callType": 1, + "operation": "transfer", + "function": "returnTwoU64" + } + ], + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "identifier": "writeLog", + "topics": [ + "5fXsK/a5JVZf0e2Z6ViFglDOQP1zsS1XkuaLvaZ5pzw=" + ], + "data": "QDZmNmI=" + } + ] + }, + "status": "success", + "operation": "transfer", + "function": "asyncCallAnotherContractReturnTwoU64NoCallback", + "initiallyPaidFee": "6214335000000000", + "fee": "6214335000000000", + "chainID": "D", + "version": 2, + "options": 0 + } + }, + "error": "", + "code": "successful" + } + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + + let expected: Vec> = vec![]; + + assert_eq!(tx_response.out, expected) +} + +#[test] +fn test_with_multi_contract_cross_shard_tx_that_has_non_returning_callback() { + // transaction data from the devnet + // context : user -> A --async call--> B --callback--> A, the callback returns () + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "SCInvoking", + "processingTypeOnDestination": "SCInvoking", + "hash": "4f7f19e448176e4d47a0f844cbd6bdb1b6c68035dafe927e8249ed60af1c3b17", + "nonce": 52, + "round": 7647560, + "epoch": 6340, + "value": "0", + "receiver": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "sender": "erd1uh67c2lkhyj4vh73akv7jky9sfgvus8awwcj64uju69mmfne5u7q299t7g", + "gasPrice": 1000000000, + "gasLimit": 600000000, + "gasUsed": 600000000, + "data": "YXN5bmNDYWxsQW5vdGhlckNvbnRyYWN0UmV0dXJuVHdvVTY0V2l0aE5vblJldHVybmluZ0NhbGxiYWNrQDAwMDAwMDAwMDAwMDAwMDAwNTAwQUNGRjZCN0E0RUI4MTAxQThERTdGRjdGNUQyQzBCRjNFNEQ2M0Y0N0E3M0M=", + "signature": "3918fce429b2059b2321b709011079755dbb835e12839278ee510e4741180540e80c6111eea1d3312b2c63446de08b20e01f6040358fa94d1633c355bb65bc0f", + "sourceShard": 0, + "destinationShard": 1, + "blockNonce": 7593795, + "blockHash": "c17e727f90025225670b7852ea9807c67753c9b3f21b6ec7cc40077e3849a8b7", + "notarizedAtSourceInMetaNonce": 7609940, + "NotarizedAtSourceInMetaHash": "c67b5c550986cfd6c94d00f4b90234eb38ee196ff0d79a00d916f3bd24be272c", + "notarizedAtDestinationInMetaNonce": 7609944, + "notarizedAtDestinationInMetaHash": "d59b7398d962ce3119679af59d5d74e10083e62c3ee2b15421cc0d607979ca18", + "miniblockType": "TxBlock", + "miniblockHash": "2977affeffeb6cf41117bed442662021cb713528cdb1d0dce4537b01caeb8e0b", + "hyperblockNonce": 7609944, + "hyperblockHash": "d59b7398d962ce3119679af59d5d74e10083e62c3ee2b15421cc0d607979ca18", + "timestamp": 1694436960, + "smartContractResults": [ + { + "hash": "fe7474188d5ca4b84c7577f03fc778d22d53c070dfcb05a9cda840229d30e4d3", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", + "sender": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "data": "returnTwoU64@4f3c60", + "prevTxHash": "4f7f19e448176e4d47a0f844cbd6bdb1b6c68035dafe927e8249ed60af1c3b17", + "originalTxHash": "4f7f19e448176e4d47a0f844cbd6bdb1b6c68035dafe927e8249ed60af1c3b17", + "gasLimit": 596979545, + "gasPrice": 1000000000, + "callType": 1, + "operation": "transfer", + "function": "returnTwoU64" + }, + { + "hash": "948dc6702b376d1e043db8de2f87ca12907c342f54cfad7dfebadf59145ca3ac", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "sender": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", + "data": "@00@0a@0218711a00", + "prevTxHash": "fe7474188d5ca4b84c7577f03fc778d22d53c070dfcb05a9cda840229d30e4d3", + "originalTxHash": "4f7f19e448176e4d47a0f844cbd6bdb1b6c68035dafe927e8249ed60af1c3b17", + "gasLimit": 595137880, + "gasPrice": 1000000000, + "callType": 2, + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "identifier": "writeLog", + "topics": [ + "AAAAAAAAAAAFAP/Aj4ZNGKlpx2+xeJLdoJbREzb20P0=", + "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gNTk1MTM3ODgwLCBnYXMgdXNlZCA9IDIyODg1NTA=" + ], + "data": "QDZmNmJAMGFAMDIxODcxMWEwMA==" + }, + { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "identifier": "completedTxEvent", + "topics": [ + "/nR0GI1cpLhMdXfwP8d40i1TwHDfywWpzahAIp0w5NM=" + ], + "data": null + } + ] + }, + "operation": "transfer" + } + ], + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "identifier": "writeLog", + "topics": [ + "5fXsK/a5JVZf0e2Z6ViFglDOQP1zsS1XkuaLvaZ5pzw=" + ], + "data": "QDZmNmI=" + } + ] + }, + "status": "success", + "operation": "transfer", + "function": "asyncCallAnotherContractReturnTwoU64WithNonReturningCallback", + "initiallyPaidFee": "6235125000000000", + "fee": "6235125000000000", + "chainID": "D", + "version": 2, + "options": 0 + } + }, + "error": "", + "code": "successful" + } + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + + let expected: Vec> = vec![]; + + assert_eq!(tx_response.out, expected) +} + +#[test] +fn test_with_multi_contract_cross_shard_tx_that_has_returning_callback() { + // transaction data from the devnet + // context : user -> A --async call--> B --callback--> A, the callback returns a MultiValue2 + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "SCInvoking", + "processingTypeOnDestination": "SCInvoking", + "hash": "f34e136ca81c0e32f6fb532b753612715675073f3718b5db009bb275d246fd7a", + "nonce": 53, + "round": 7647583, + "epoch": 6340, + "value": "0", + "receiver": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "sender": "erd1uh67c2lkhyj4vh73akv7jky9sfgvus8awwcj64uju69mmfne5u7q299t7g", + "gasPrice": 1000000000, + "gasLimit": 600000000, + "gasUsed": 600000000, + "data": "YXN5bmNDYWxsQW5vdGhlckNvbnRyYWN0UmV0dXJuVHdvVTY0V2l0aFJldHVybmluZ0NhbGxiYWNrQDAwMDAwMDAwMDAwMDAwMDAwNTAwQUNGRjZCN0E0RUI4MTAxQThERTdGRjdGNUQyQzBCRjNFNEQ2M0Y0N0E3M0M=", + "signature": "858958d4aaf9cb0220ab2933edad3f65e1cb4c58aa7940cb0f40b489d0bd9fdf5c4736a40d6e813743ee622bb91e9f86eacf01b9a31e0ff53f9c84f13c500304", + "sourceShard": 0, + "destinationShard": 1, + "blockNonce": 7593818, + "blockHash": "b19f97110ca38d3cb15f802a00ab403491b0e5804ebc701527ab50064dc06825", + "notarizedAtSourceInMetaNonce": 7609963, + "NotarizedAtSourceInMetaHash": "4d9db6de610ca778114d44fe91dd036fac7c375c373ae9e77130d3fb9efc8391", + "notarizedAtDestinationInMetaNonce": 7609967, + "notarizedAtDestinationInMetaHash": "a4573d388c31860f9bd6f9507b65d1b3130e445abcada538f10704feba4614e7", + "miniblockType": "TxBlock", + "miniblockHash": "530f5fa3c7af474a187caca8dcea02a7a155017414147871d083bed5c49ec8f5", + "hyperblockNonce": 7609967, + "hyperblockHash": "a4573d388c31860f9bd6f9507b65d1b3130e445abcada538f10704feba4614e7", + "timestamp": 1694437098, + "smartContractResults": [ + { + "hash": "065291164a8acd27c26b5a8f09664810081fda18cd54fca635196cf9b200297a", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", + "sender": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "data": "returnTwoU64@4f3c60", + "prevTxHash": "f34e136ca81c0e32f6fb532b753612715675073f3718b5db009bb275d246fd7a", + "originalTxHash": "f34e136ca81c0e32f6fb532b753612715675073f3718b5db009bb275d246fd7a", + "gasLimit": 596994205, + "gasPrice": 1000000000, + "callType": 1, + "operation": "transfer", + "function": "returnTwoU64" + }, + { + "hash": "bc31cb153ae615204625df84fe9ae3a159aa412b7342f3dca958dd5517a08197", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "sender": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", + "data": "@00@0a@0218711a00", + "prevTxHash": "065291164a8acd27c26b5a8f09664810081fda18cd54fca635196cf9b200297a", + "originalTxHash": "f34e136ca81c0e32f6fb532b753612715675073f3718b5db009bb275d246fd7a", + "gasLimit": 595152540, + "gasPrice": 1000000000, + "callType": 2, + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "identifier": "writeLog", + "topics": [ + "AAAAAAAAAAAFAP/Aj4ZNGKlpx2+xeJLdoJbREzb20P0=", + "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gNTk1MTUyNTQwLCBnYXMgdXNlZCA9IDIyODgwMTU=" + ], + "data": "QDZmNmJAMGFAMDIxODcxMWEwMA==" + }, + { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "identifier": "completedTxEvent", + "topics": [ + "BlKRFkqKzSfCa1qPCWZIEAgf2hjNVPymNRls+bIAKXo=" + ], + "data": null + } + ] + }, + "operation": "transfer" + } + ], + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "identifier": "writeLog", + "topics": [ + "5fXsK/a5JVZf0e2Z6ViFglDOQP1zsS1XkuaLvaZ5pzw=" + ], + "data": "QDZmNmI=" + } + ] + }, + "status": "success", + "operation": "transfer", + "function": "asyncCallAnotherContractReturnTwoU64WithReturningCallback", + "initiallyPaidFee": "6230670000000000", + "fee": "6230670000000000", + "chainID": "D", + "version": 2, + "options": 0 + } + }, + "error": "", + "code": "successful" + } + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + + let expected: Vec> = vec![]; + + assert_eq!(tx_response.out, expected) +} + +#[test] +fn test_process_issued_token_identifier_fungible() { + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "SCInvoking", + "processingTypeOnDestination": "SCInvoking", + "hash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", + "nonce": 61, + "round": 173598, + "epoch": 72, + "value": "50000000000000000", + "receiver": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", + "sender": "erd1x39tc3q3nn72ecjnmcz7x0qp09kp97t080x99dgyhx7zh95j0n4szskhlv", + "gasPrice": 1000000000, + "gasLimit": 100000000, + "gasUsed": 100000000, + "data": "aXNzdWVMcFRva2VuQDAwMDAwMDAwMDAwMDAwMDAwNTAwMTM5ZWQ3YWU0YWEwMzc5MmU2YmNiMzMyMzk0YTQwZmU3NDZlZWZhNDdjZWJANDU0NzRjNDQ0ZDQ1NTg0YzUwQDQ1NDc0YzQ0NGQ0NTU4", + "signature": "b5049d2906adc1305a6a8d0f42749254ca6259c6996d9a35e7dc7528b3c87b48a421879aff70bc6d81483a7559b75e5dcf9be499dcb7d57aa9f25c79ac2ad40d", + "sourceShard": 1, + "destinationShard": 1, + "blockNonce": 173354, + "blockHash": "09d85ac264a54e12e7613395211c53fe0ee5a7d3b7111bf5fec1d02794caaacd", + "notarizedAtSourceInMetaNonce": 173321, + "NotarizedAtSourceInMetaHash": "64a83759da97fe8305cd4cda4b518f2d41ef0a8f3995d264460821edad45e09e", + "notarizedAtDestinationInMetaNonce": 173321, + "notarizedAtDestinationInMetaHash": "64a83759da97fe8305cd4cda4b518f2d41ef0a8f3995d264460821edad45e09e", + "miniblockType": "TxBlock", + "miniblockHash": "7f45eee4e35ffc1fbce66b92e4dd2aeae2acb092416aa5aa775b96493256b81d", + "hyperblockNonce": 173321, + "hyperblockHash": "64a83759da97fe8305cd4cda4b518f2d41ef0a8f3995d264460821edad45e09e", + "timestamp": 1695041588, + "smartContractResults": [ + { + "hash": "bce3d0dceb0b3e5c8c5780d7da3755c3f7492d551685d493a73bf66ebd36754b", + "nonce": 0, + "value": 50000000000000000, + "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "sender": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", + "data": "issue@45474c444d45584c50@45474c444d4558@03e8@12@63616e467265657a65@74727565@63616e57697065@74727565@63616e5061757365@74727565@63616e4d696e74@74727565@63616e4275726e@74727565@63616e4368616e67654f776e6572@74727565@63616e55706772616465@74727565@63616e4164645370656369616c526f6c6573@74727565@65ba30", + "prevTxHash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", + "originalTxHash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", + "gasLimit": 89624222, + "gasPrice": 1000000000, + "callType": 1, + "originalSender": "erd1x39tc3q3nn72ecjnmcz7x0qp09kp97t080x99dgyhx7zh95j0n4szskhlv", + "operation": "transfer", + "function": "issue" + }, + { + "hash": "2a452ff652791d79be5f6933fb583cc5503e876893e54b3b51381a92aa2e904d", + "nonce": 0, + "value": 0, + "receiver": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqsl6e366", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "ESDTSetBurnRoleForAll@45474c444d45582d393563366435", + "prevTxHash": "bce3d0dceb0b3e5c8c5780d7da3755c3f7492d551685d493a73bf66ebd36754b", + "originalTxHash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "logs": { + "address": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqsl6e366", + "events": [ + { + "address": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqsl6e366", + "identifier": "completedTxEvent", + "topics": [ + "vOPQ3OsLPlyMV4DX2jdVw/dJLVUWhdSTpzv2br02dUs=" + ], + "data": null, + "additionalData": null + } + ] + }, + "operation": "transfer" + }, + { + "hash": "2c84740ccb3376ea9fa00dab6c6c93fe7a35ee0a1d6dbfa0a1e61064853b0874", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "ESDTTransfer@45474c444d45582d393563366435@03e8@00", + "prevTxHash": "bce3d0dceb0b3e5c8c5780d7da3755c3f7492d551685d493a73bf66ebd36754b", + "originalTxHash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", + "gasLimit": 39624222, + "gasPrice": 1000000000, + "callType": 2, + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "identifier": "ESDTTransfer", + "topics": [ + "RUdMRE1FWC05NWM2ZDU=", + "", + "A+g=", + "AAAAAAAAAAAFAO+ux8+3RD51ieGHV10Z68X293CYfOs=" + ], + "data": null, + "additionalData": null + }, + { + "address": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", + "identifier": "completedTxEvent", + "topics": [ + "vOPQ3OsLPlyMV4DX2jdVw/dJLVUWhdSTpzv2br02dUs=" + ], + "data": null, + "additionalData": null + } + ] + }, + "tokens": [ + "EGLDMEX-95c6d5" + ], + "esdtValues": [ + "1000" + ], + "operation": "ESDTTransfer", + "function": "\u0000" + }, + { + "hash": "c9dfc4de3c3cee319123087a4f5dd03cc051e728ec6070707a63ea977b535227", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", + "sender": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", + "data": "\u0000", + "prevTxHash": "2c84740ccb3376ea9fa00dab6c6c93fe7a35ee0a1d6dbfa0a1e61064853b0874", + "originalTxHash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", + "gasLimit": 39424222, + "gasPrice": 1000000000, + "callType": 2, + "operation": "transfer", + "function": "\u0000" + }, + { + "hash": "609c3a8e1903680fef1f6d9e47527b1b5c1259664b868af600162120ce0b8192", + "nonce": 1, + "value": 300925400000000, + "receiver": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", + "sender": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", + "data": "@6f6b", + "prevTxHash": "2c84740ccb3376ea9fa00dab6c6c93fe7a35ee0a1d6dbfa0a1e61064853b0874", + "originalTxHash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "operation": "transfer", + "isRefund": true + } + ], + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", + "identifier": "transferValueOnly", + "topics": [ + "AAAAAAAAAAAFAO+ux8+3RD51ieGHV10Z68X293CYfOs=", + "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=", + "saK8LsUAAA==" + ], + "data": null, + "additionalData": null + }, + { + "address": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", + "identifier": "writeLog", + "topics": [ + "NEq8RBGc/KziU94F4zwBeWwS+W87zFK1BLm8K5aSfOs=" + ], + "data": "QDZmNmI=", + "additionalData": null + } + ] + }, + "status": "success", + "operation": "transfer", + "function": "issueLpToken", + "initiallyPaidFee": "1214335000000000", + "fee": "1214335000000000", + "chainID": "D", + "version": 2, + "options": 0 + } + }, + "error": "", + "code": "successful" +} + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + + let expected: Option = Some("EGLDMEX-95c6d5".to_string()); + + assert_eq!(tx_response.new_issued_token_identifier, expected) +} + +#[test] +fn test_process_issued_token_identifier_semi_fungible() { + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "SCInvoking", + "processingTypeOnDestination": "SCInvoking", + "hash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", + "nonce": 65, + "round": 8422527, + "epoch": 584, + "value": "50000000000000000", + "receiver": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", + "sender": "erd1x3g000ew7zzv6kyqhj9jl2wy5g6cc72qahvvxz29zv76jwq6ssvqt0d998", + "gasPrice": 1000000000, + "gasLimit": 80000000, + "gasUsed": 80000000, + "data": "aXNzdWVUb2tlbkA0NDZmNzA2NTU0NjU3Mzc0QDQ0NGY1MDQ1NTQ0NTUzNTQ=", + "signature": "0191848976e930996f6c62d4921e732f9b0ada8b41ca3b5b63d6bfd304fd44c2a1e8e6643479618ba4a764a36e87f53882b4f707600d5b7d476f2fdd2bac040e", + "sourceShard": 0, + "destinationShard": 0, + "blockNonce": 8420241, + "blockHash": "4d302220f6015876c95e7961b770cc67f8ab63c5f0ab69b4d6c2fb15c8bc23bd", + "notarizedAtSourceInMetaNonce": 8403647, + "NotarizedAtSourceInMetaHash": "f8b83b6d38fa45dacc167b15c93dd07ee5c40db906de34f26e11e7a24f539e30", + "notarizedAtDestinationInMetaNonce": 8403647, + "notarizedAtDestinationInMetaHash": "f8b83b6d38fa45dacc167b15c93dd07ee5c40db906de34f26e11e7a24f539e30", + "miniblockType": "TxBlock", + "miniblockHash": "b7b8fc9f3b81d7daae1113cbf73457e16ee31f3a864ef3729a1a21f3a929e112", + "hyperblockNonce": 8403647, + "hyperblockHash": "f8b83b6d38fa45dacc167b15c93dd07ee5c40db906de34f26e11e7a24f539e30", + "timestamp": 1646652762, + "smartContractResults": [ + { + "hash": "9aecf3bd5dd5c706a28d1cc7059ac20db74340f136816f667dbefcc58daa3aba", + "nonce": 0, + "value": 50000000000000000, + "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "sender": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", + "data": "issueSemiFungible@446f706554657374@444f504554455354@63616e467265657a65@74727565@63616e57697065@74727565@63616e5061757365@74727565@63616e4368616e67654f776e6572@74727565@63616e55706772616465@74727565@63616e4164645370656369616c526f6c6573@74727565@5ca148", + "prevTxHash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", + "originalTxHash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", + "gasLimit": 75958360, + "gasPrice": 1000000000, + "callType": 1, + "originalSender": "erd1x3g000ew7zzv6kyqhj9jl2wy5g6cc72qahvvxz29zv76jwq6ssvqt0d998", + "operation": "transfer", + "function": "issueSemiFungible" + }, + { + "hash": "aacfe9088bb9d2d5b3fbe9cab2b2f1c6a7e9cbab2f1a41020e2c819fc9b43570", + "nonce": 66, + "value": 0, + "receiver": "erd1x3g000ew7zzv6kyqhj9jl2wy5g6cc72qahvvxz29zv76jwq6ssvqt0d998", + "sender": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", + "data": "@6f6b", + "prevTxHash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", + "originalTxHash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "operation": "transfer" + }, + { + "hash": "3f6f0f3de9e942884e7e1592823a7db7ce935a3f9d3359d8c1ee98a5645332d8", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "@00@444f5045544553542d373732303063", + "prevTxHash": "9aecf3bd5dd5c706a28d1cc7059ac20db74340f136816f667dbefcc58daa3aba", + "originalTxHash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", + "gasLimit": 25958360, + "gasPrice": 1000000000, + "callType": 2, + "originalSender": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", + "logs": { + "address": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", + "identifier": "completedTxEvent", + "topics": [ + "muzzvV3VxwaijRzHBZrCDbdDQPE2gW9mfb78xY2qOro=" + ], + "data": null + } + ] + }, + "operation": "transfer" + }, + { + "hash": "c6e4f7c5da455009fb4f6967ce8a273a97b826aa617fa798ffd0cf17bde6b97a", + "nonce": 1, + "value": 225516180000000, + "receiver": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", + "sender": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", + "data": "@6f6b", + "prevTxHash": "3f6f0f3de9e942884e7e1592823a7db7ce935a3f9d3359d8c1ee98a5645332d8", + "originalTxHash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "operation": "transfer", + "isRefund": true + } + ], + "logs": { + "address": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", + "identifier": "transferValueOnly", + "topics": [ + "AAAAAAAAAAAFAH6d74PDz8xLqvowrlOA5lVDBMUghBg=", + "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=", + "saK8LsUAAA==" + ], + "data": null + }, + { + "address": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", + "identifier": "writeLog", + "topics": [ + "NFD3vy7whM1YgLyLL6nEojWMeUDt2MMJRRM9qTgahBg=" + ], + "data": "QDZmNmI=" + } + ] + }, + "status": "success", + "operation": "transfer", + "function": "issueToken", + "initiallyPaidFee": "914840000000000", + "fee": "914840000000000", + "chainID": "1", + "version": 1, + "options": 0 + } + }, + "error": "", + "code": "successful" +} + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + + let expected: Option = Some("DOPETEST-77200c".to_string()); + + assert_eq!(tx_response.new_issued_token_identifier, expected) +} + +#[test] +fn test_process_issued_token_identifier_non_fungible() { + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "SCInvoking", + "processingTypeOnDestination": "SCInvoking", + "hash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", + "nonce": 16, + "round": 820170, + "epoch": 341, + "value": "50000000000000000", + "receiver": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "sender": "erd162knt53z7m0f9jjms9wxphr3q9d7zu4ky85xs2cc0ekrqz7k4fdq85lkuc", + "gasPrice": 1000000000, + "gasLimit": 200000000, + "gasUsed": 200000000, + "data": "aXNzdWVUb2tlbkA2NzY1NmU2NTdhNzk3M0A0NzQ1NGU=", + "signature": "e80d45f4de419799a2bbff1cae1235521c8eef1853ee45b02f95c2da74ce50d241bf75b6ab0c650245562700862ea9759caad40f3e381ac0c4d82cfe56e67c09", + "sourceShard": 2, + "destinationShard": 2, + "blockNonce": 819313, + "blockHash": "a1db4ef13f07b86678000df9cc78f244d83dcc35ae51de545f333bf616930d39", + "notarizedAtSourceInMetaNonce": 819396, + "NotarizedAtSourceInMetaHash": "6d9e511e46d318aa5b77cbfdfde14d2ce8515ce4e954b286f130a6b518ddf26a", + "notarizedAtDestinationInMetaNonce": 819396, + "notarizedAtDestinationInMetaHash": "6d9e511e46d318aa5b77cbfdfde14d2ce8515ce4e954b286f130a6b518ddf26a", + "miniblockType": "TxBlock", + "miniblockHash": "afdb278522181aeb9b12f08840e6c534e398e6af9c7f757548308e300e7ec4e9", + "hyperblockNonce": 819396, + "hyperblockHash": "6d9e511e46d318aa5b77cbfdfde14d2ce8515ce4e954b286f130a6b518ddf26a", + "timestamp": 1698921020, + "smartContractResults": [ + { + "hash": "6fe0cc002802af1744f394eee4a69224b5e775961d8386e04e7a5b9242f7ff65", + "nonce": 0, + "value": 50000000000000000, + "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "sender": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "data": "issueNonFungible@67656e657a7973@47454e@63616e467265657a65@74727565@63616e57697065@74727565@63616e5061757365@74727565@63616e5472616e736665724e4654437265617465526f6c65@74727565@63616e4368616e67654f776e6572@66616c7365@63616e55706772616465@66616c7365@63616e4164645370656369616c526f6c6573@74727565@5e30e4", + "prevTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", + "originalTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", + "gasLimit": 196098365, + "gasPrice": 1000000000, + "callType": 1, + "originalSender": "erd162knt53z7m0f9jjms9wxphr3q9d7zu4ky85xs2cc0ekrqz7k4fdq85lkuc", + "operation": "transfer", + "function": "issueNonFungible" + }, + { + "hash": "98afe82512c79f1caaf171bd5919ee469d11ba0c4f725aefcab834278c0f1e58", + "nonce": 0, + "value": 0, + "receiver": "erd1lllllllllllllllllllllllllllllllllllllllllllllllllupq9x7ny0", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "ESDTSetBurnRoleForAll@47454e2d383638353933", + "prevTxHash": "6fe0cc002802af1744f394eee4a69224b5e775961d8386e04e7a5b9242f7ff65", + "originalTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "logs": { + "address": "erd1lllllllllllllllllllllllllllllllllllllllllllllllllupq9x7ny0", + "events": [ + { + "address": "erd1lllllllllllllllllllllllllllllllllllllllllllllllllupq9x7ny0", + "identifier": "completedTxEvent", + "topics": [ + "b+DMACgCrxdE85Tu5KaSJLXndZYdg4bgTnpbkkL3/2U=" + ], + "data": null, + "additionalData": null + } + ] + }, + "operation": "transfer" + }, + { + "hash": "83494ad9369738b574a7266cbfb12ce63ccf634950cd6b0ec16107b8fb42f8f6", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "sender": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "data": "setSpecialRole@47454e2d383638353933@00000000000000000500de51fa8943c26e6933419f9bb7ceb79b7ff4f7bbaa5a@45534454526f6c654e4654437265617465@5e30e4", + "prevTxHash": "112d18ec0364b4700b1bfb3df517c80dba547a53373ece2a9e71acd5266e7b64", + "originalTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", + "gasLimit": 142399698, + "gasPrice": 1000000000, + "callType": 1, + "operation": "transfer", + "function": "setSpecialRole" + }, + { + "hash": "112d18ec0364b4700b1bfb3df517c80dba547a53373ece2a9e71acd5266e7b64", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "@00@47454e2d383638353933", + "prevTxHash": "6fe0cc002802af1744f394eee4a69224b5e775961d8386e04e7a5b9242f7ff65", + "originalTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", + "gasLimit": 146098365, + "gasPrice": 1000000000, + "callType": 2, + "originalSender": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "identifier": "writeLog", + "topics": [ + "AAAAAAAAAAAFAN5R+olDwm5pM0Gfm7fOt5t/9Pe7qlo=" + ], + "data": "QDZmNmI=", + "additionalData": null + } + ] + }, + "operation": "transfer" + }, + { + "hash": "db5d74970374337956fa61fb4fd90057b3f6a82ea3e259b389934b71a1652e5f", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "ESDTSetRole@47454e2d383638353933@45534454526f6c654e4654437265617465", + "prevTxHash": "83494ad9369738b574a7266cbfb12ce63ccf634950cd6b0ec16107b8fb42f8f6", + "originalTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "identifier": "ESDTSetRole", + "topics": [ + "R0VOLTg2ODU5Mw==", + "", + "", + "RVNEVFJvbGVORlRDcmVhdGU=" + ], + "data": null, + "additionalData": null + }, + { + "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "identifier": "completedTxEvent", + "topics": [ + "g0lK2TaXOLV0pyZsv7Es5jzPY0lQzWsOwWEHuPtC+PY=" + ], + "data": null, + "additionalData": null + } + ] + }, + "operation": "ESDTSetRole", + "function": "ESDTSetRole" + }, + { + "hash": "a6a665f47977a59c4c2baf460281fc938e04ae0f87ac2e78040a14ae27822701", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "@00", + "prevTxHash": "83494ad9369738b574a7266cbfb12ce63ccf634950cd6b0ec16107b8fb42f8f6", + "originalTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", + "gasLimit": 92399698, + "gasPrice": 1000000000, + "callType": 2, + "originalSender": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "identifier": "writeLog", + "topics": [ + "AAAAAAAAAAAFAN5R+olDwm5pM0Gfm7fOt5t/9Pe7qlo=", + "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gOTIzOTk2OTgsIGdhcyB1c2VkID0gMzE0MTg4MA==" + ], + "data": "QDZmNmI=", + "additionalData": null + }, + { + "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "identifier": "completedTxEvent", + "topics": [ + "g0lK2TaXOLV0pyZsv7Es5jzPY0lQzWsOwWEHuPtC+PY=" + ], + "data": null, + "additionalData": null + } + ] + }, + "operation": "transfer" + } + ], + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "identifier": "transferValueOnly", + "topics": [ + "AAAAAAAAAAAFAN5R+olDwm5pM0Gfm7fOt5t/9Pe7qlo=", + "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=", + "saK8LsUAAA==" + ], + "data": null, + "additionalData": null + }, + { + "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "identifier": "writeLog", + "topics": [ + "0q010iL23pLKW4FcYNxxAVvhcrYh6GgrGH5sMAvWqlo=" + ], + "data": "QDZmNmI=", + "additionalData": null + } + ] + }, + "status": "success", + "operation": "transfer", + "function": "issueToken", + "initiallyPaidFee": "2097020000000000", + "fee": "2097020000000000", + "chainID": "D", + "version": 1, + "options": 0 + } + }, + "error": "", + "code": "successful" +} + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + + let expected: Option = Some("GEN-868593".to_string()); + + assert_eq!(tx_response.new_issued_token_identifier, expected) +} + +#[test] +fn test_process_issued_token_identifier_meta_esdt() { + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "SCInvoking", + "processingTypeOnDestination": "SCInvoking", + "hash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", + "nonce": 419, + "round": 1787093, + "epoch": 744, + "value": "50000000000000000", + "receiver": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "sender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", + "gasPrice": 1000000000, + "gasLimit": 600000000, + "gasUsed": 157220928, + "data": "ZGVwbG95QXNoc3dhcExQQUNTdHJhdGVneUA0MTRjNTAyZDYzNjE2NTYxNjMzNUA0MTU0NTMyZDM0NjMzMDM5MzIzMEAwM2U4QDAzZThAQDNiOWFjYTAwQDAwMDAwMDAwMDAwMDAwMDAwNTAwOTU3MzkwYWVkYTQzMmY1MmE0MTFkNTE5NzRmZTkzZDQwZDI3NzMzZTA0NjNAMDAwMDAwMDAwMDAwMDAwMDA1MDBkMTJjYzczY2JkYTZmMjY1OWM5NTllNWQ1NzU4YWY5MmNhMTM4NDg2NTIzM0AwMDAwMDAwMDAwMDAwMDAwMDUwMDUxZGY3MTc1OGNmMmFjYTViNDZkZWQ4MTU1OGI1NTE1ZGMyOWYzZjM1MjMzQEAwMDAwMDAwMDAwMDAwMDAwMDUwMDdlNGExZGZjNDM3Y2VkNDlkYjlmMTYzNzk4NDE2Yjg0YWMyMWQ0Yzk3Y2ViMDAwMDAwMGM1NzQ1NDc0YzQ0MmQ2MTMyMzg2MzM1MzkwMDAwMDAwMDAwMDAwMDAwMDUwMGE4YmE5ZTY4NjI2YmJjOTkzZmQ3OTVlOGJiNmY0Nzk0M2IyZjVmZmE3Y2ViMDAwMDAwMGE1NTU0NGIyZDMxMzQ2NDM1Mzc2NEAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwNTAwNTFkZjcxNzU4Y2YyYWNhNWI0NmRlZDgxNTU4YjU1MTVkYzI5ZjNmMzUyMzMwMDAwMDAwYjQyNTU1MzQ0MmQ2NDM0NjMzMDMxMzQwMDAwMDAwMDAwQDAxODZhMEAyNzEw", + "signature": "4648af0b96eb430e4986b9fb760549742de09c809b46b984e5d995c898d80c25bfc0717c30da34bd89cd3005d98ee895afa39ee588b7b74b4807c63cbeade807", + "sourceShard": 1, + "destinationShard": 1, + "blockNonce": 1785520, + "blockHash": "8f926a5d79fa84bc69949a21bfbba17447091a8a074ac172fa0b88e4475a1214", + "notarizedAtSourceInMetaNonce": 1785568, + "NotarizedAtSourceInMetaHash": "eebd1aa5c3dde083f9c367242c054affedd36bfc95f7bcc1d4e2d90beb5754e9", + "notarizedAtDestinationInMetaNonce": 1785568, + "notarizedAtDestinationInMetaHash": "eebd1aa5c3dde083f9c367242c054affedd36bfc95f7bcc1d4e2d90beb5754e9", + "miniblockType": "TxBlock", + "miniblockHash": "b85d82db6d69cbc1911b3455d2837eeb3170b391926efa2eacb4d9c8e3c96ee4", + "hyperblockNonce": 1785568, + "hyperblockHash": "eebd1aa5c3dde083f9c367242c054affedd36bfc95f7bcc1d4e2d90beb5754e9", + "timestamp": 1704722558, + "smartContractResults": [ + { + "hash": "ea9a96c079e66249e6b73c0341991dad96ca81f855f2fc4abe0d432be117a882", + "nonce": 420, + "value": 4427790720000000, + "receiver": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", + "sender": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "data": "@6f6b", + "prevTxHash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", + "originalTxHash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "operation": "transfer", + "isRefund": true + }, + { + "hash": "6082975132a2c9d8197dfd0f9852b454ad344740eebdbdf93f620b2796ab723b", + "nonce": 0, + "value": 50000000000000000, + "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "sender": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "data": "registerMetaESDT@415453417368537761704c5041435661756c74@4156415348@12@63616e467265657a65@66616c7365@63616e57697065@66616c7365@63616e5061757365@66616c7365@63616e5472616e736665724e4654437265617465526f6c65@66616c7365@63616e4368616e67654f776e6572@66616c7365@63616e55706772616465@66616c7365@63616e4164645370656369616c526f6c6573@74727565@9eb30a87c92674ab1469700c0b385b3850e86de80f87dec6cf3213c7e379a646@408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43@03eb4a30", + "prevTxHash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", + "originalTxHash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", + "gasLimit": 125751600, + "gasPrice": 1000000000, + "callType": 1, + "originalSender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", + "operation": "transfer", + "function": "registerMetaESDT" + }, + { + "hash": "290f85d7ec2f7d5797510290358e9e0f76bb880451efaacb0d69280b8d94c67a", + "nonce": 0, + "value": 0, + "receiver": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqsl6e366", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "ESDTSetBurnRoleForAll@41564153482d376438623564", + "prevTxHash": "6082975132a2c9d8197dfd0f9852b454ad344740eebdbdf93f620b2796ab723b", + "originalTxHash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "originalSender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", + "logs": { + "address": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqsl6e366", + "events": [ + { + "address": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqsl6e366", + "identifier": "completedTxEvent", + "topics": [ + "YIKXUTKiydgZff0PmFK0VK00R0Duvb35P2ILJ5arcjs=" + ], + "data": null, + "additionalData": null + } + ] + }, + "operation": "transfer" + }, + { + "hash": "1aa62a6251edd216bd4e5ae59f7e676d5d2f88597685e0ec0e25ac4434bfccdb", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "@00@41564153482d376438623564@d0644194444642fd16ee156307f6fda0e8f8baf4c496e1a1dc85e027ecc08a4a@9eb30a87c92674ab1469700c0b385b3850e86de80f87dec6cf3213c7e379a646@408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43@00", + "prevTxHash": "6082975132a2c9d8197dfd0f9852b454ad344740eebdbdf93f620b2796ab723b", + "originalTxHash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", + "gasLimit": 75751600, + "gasPrice": 1000000000, + "callType": 2, + "originalSender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", + "logs": { + "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "identifier": "writeLog", + "topics": [ + "AAAAAAAAAAAFAH6UefeHERqHcLpMz2gC3xXGhFsJBGM=", + "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gNzU3NTE2MDAsIGdhcyB1c2VkID0gNDE3NjA1OQ==" + ], + "data": "QDZmNmI=", + "additionalData": [ + "QDZmNmI=" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "identifier": "completedTxEvent", + "topics": [ + "YIKXUTKiydgZff0PmFK0VK00R0Duvb35P2ILJ5arcjs=" + ], + "data": null, + "additionalData": null + } + ] + }, + "operation": "transfer" + } + ], + "logs": { + "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "identifier": "transferValueOnly", + "topics": [ + "", + "AAAAAAAAAAAFANAMwOY4h/9reS00I0pE56xrV11LBGM=" + ], + "data": "RGVwbG95RnJvbVNvdXJjZQ==", + "additionalData": [ + "RGVwbG95RnJvbVNvdXJjZQ==", + "aW5pdA==", + "QUxQLWNhZWFjNQ==", + "QVRTLTRjMDkyMA==", + "A+g=", + "A+g=", + "", + "O5rKAA==" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "identifier": "transferValueOnly", + "topics": [ + "", + "AAAAAAAAAAAFADJ0SE0vUW6bO5SurLeFIMfK/HtBBGM=" + ], + "data": "RGVwbG95RnJvbVNvdXJjZQ==", + "additionalData": [ + "RGVwbG95RnJvbVNvdXJjZQ==", + "aW5pdA==", + "AAAAAAAAAAAFANAMwOY4h/9reS00I0pE56xrV11LBGM=", + "AAAAAAAAAAAFAJVzkK7aQy9SpBHVGXT+k9QNJ3M+BGM=", + "AAAAAAAAAAAFANEsxzy9pvJlnJWeXVdYr5LKE4SGUjM=", + "AAAAAAAAAAAFAFHfcXWM8qyltG3tgVWLVRXcKfPzUjM=", + "", + "AAAAAAAAAAAFAH5KHfxDfO1J258WN5hBa4SsIdTJfOsAAAAMV0VHTEQtYTI4YzU5AAAAAAAAAAAFAKi6nmhia7yZP9eV6LtvR5Q7L1/6fOsAAAAKVVRLLTE0ZDU3ZA==", + "AAAAAQAAAAAAAAAABQBR33F1jPKspbRt7YFVi1UV3Cnz81IzAAAAC0JVU0QtZDRjMDE0AAAAAAA=", + "AYag", + "JxA=" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgqxf6ysnf029hfkwu546kt0pfqcl90c76pq33s0a320f", + "identifier": "transferValueOnly", + "topics": [ + "", + "AAAAAAAAAAAFANEsxzy9pvJlnJWeXVdYr5LKE4SGUjM=" + ], + "data": "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", + "additionalData": [ + "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", + "Z2V0RmFybWluZ1Rva2VuSWQ=" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgqxf6ysnf029hfkwu546kt0pfqcl90c76pq33s0a320f", + "identifier": "transferValueOnly", + "topics": [ + "", + "AAAAAAAAAAAFANEsxzy9pvJlnJWeXVdYr5LKE4SGUjM=" + ], + "data": "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", + "additionalData": [ + "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", + "Z2V0RmFybVRva2VuSWQ=" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgqxf6ysnf029hfkwu546kt0pfqcl90c76pq33s0a320f", + "identifier": "transferValueOnly", + "topics": [ + "", + "AAAAAAAAAAAFANEsxzy9pvJlnJWeXVdYr5LKE4SGUjM=" + ], + "data": "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", + "additionalData": [ + "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", + "Z2V0UmV3YXJkVG9rZW5JZA==" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "identifier": "transferValueOnly", + "topics": [ + "saK8LsUAAA==", + "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=" + ], + "data": "QXN5bmNDYWxs", + "additionalData": [ + "QXN5bmNDYWxs", + "cmVnaXN0ZXJNZXRhRVNEVA==", + "QVRTQXNoU3dhcExQQUNWYXVsdA==", + "QVZBU0g=", + "Eg==", + "Y2FuRnJlZXpl", + "ZmFsc2U=", + "Y2FuV2lwZQ==", + "ZmFsc2U=", + "Y2FuUGF1c2U=", + "ZmFsc2U=", + "Y2FuVHJhbnNmZXJORlRDcmVhdGVSb2xl", + "ZmFsc2U=", + "Y2FuQ2hhbmdlT3duZXI=", + "ZmFsc2U=", + "Y2FuVXBncmFkZQ==", + "ZmFsc2U=", + "Y2FuQWRkU3BlY2lhbFJvbGVz", + "dHJ1ZQ==" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgqxf6ysnf029hfkwu546kt0pfqcl90c76pq33s0a320f", + "identifier": "SCDeploy", + "topics": [ + "AAAAAAAAAAAFADJ0SE0vUW6bO5SurLeFIMfK/HtBBGM=", + "AAAAAAAAAAAFAH6UefeHERqHcLpMz2gC3xXGhFsJBGM=", + "fvRqbue54Womde/CN2IkRGkrx8tsU+xkLvi3+uwMkhY=" + ], + "data": null, + "additionalData": null + }, + { + "address": "erd1qqqqqqqqqqqqqpgq6qxvpe3csllkk7fdxs3553884344wh2tq33sakulat", + "identifier": "SCDeploy", + "topics": [ + "AAAAAAAAAAAFANAMwOY4h/9reS00I0pE56xrV11LBGM=", + "AAAAAAAAAAAFAH6UefeHERqHcLpMz2gC3xXGhFsJBGM=", + "E3blQfRJfCKLWDr06Od703DSZenIzq8KND+xUjmGY/M=" + ], + "data": null, + "additionalData": null + } + ] + }, + "status": "success", + "operation": "transfer", + "function": "deployAshswapLPACStrategy", + "initiallyPaidFee": "6936045000000000", + "fee": "2508254280000000", + "chainID": "D", + "version": 1, + "options": 0 + } + }, + "error": "", + "code": "successful" +} + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + + let expected: Option = Some("AVASH-7d8b5d".to_string()); + + assert_eq!(tx_response.new_issued_token_identifier, expected) +} + +#[test] +fn test_set_special_roles_should_not_process_issued_token_identifier() { + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "SCInvoking", + "processingTypeOnDestination": "SCInvoking", + "hash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", + "nonce": 420, + "round": 1787109, + "epoch": 744, + "value": "0", + "receiver": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "sender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", + "gasPrice": 1000000000, + "gasLimit": 600000000, + "gasUsed": 129636807, + "data": "ZmluaXNoVmF1bHREZXBsb3ltZW50cw==", + "signature": "dca943ef1a788bfa6cb0e9aa3900b8340e4908075cbfefaa2a66688f6f0c0fed349edb2eb48eec427cd9098822fba875e4d66072fbdb44cb7f4c1a416736e20c", + "sourceShard": 1, + "destinationShard": 1, + "blockNonce": 1785536, + "blockHash": "93ca539e81612768b67a85b7135f7c104e76bec031a758a6b1782910ae49dd8f", + "notarizedAtSourceInMetaNonce": 1785584, + "NotarizedAtSourceInMetaHash": "71d17afe660282bb42de1ea3eec3e3534a179bd32aa1471c2861ce411bf30552", + "notarizedAtDestinationInMetaNonce": 1785584, + "notarizedAtDestinationInMetaHash": "71d17afe660282bb42de1ea3eec3e3534a179bd32aa1471c2861ce411bf30552", + "miniblockType": "TxBlock", + "miniblockHash": "f8c60565af746e92d2c9c09a92734e5eb8da7e42c67a86854c93b349bfe287eb", + "hyperblockNonce": 1785584, + "hyperblockHash": "71d17afe660282bb42de1ea3eec3e3534a179bd32aa1471c2861ce411bf30552", + "timestamp": 1704722654, + "smartContractResults": [ + { + "hash": "c3ce9c364de3823ffae250c2bfb40aaf2b18f771ed4bd37bf788ad83a2c651f3", + "nonce": 421, + "value": 4703631930000000, + "receiver": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", + "sender": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "data": "@6f6b", + "prevTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", + "originalTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "operation": "transfer", + "isRefund": true + }, + { + "hash": "50f9c25a1402ce6d87ae9f890659c8a67462292e471e02c74d64ff7ba1995e60", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "sender": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "data": "setSpecialRole@41564153482d376438623564@00000000000000000500d00cc0e63887ff6b792d34234a44e7ac6b575d4b0463@45534454526f6c654e4654437265617465@45534454526f6c654e46544164645175616e74697479@45534454526f6c654e46544275726e@0192c6db2c69f50b6968fb22ac558337a851719519cfd1e6bbf79a07bbcf18bc@cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0@03eb4a30", + "prevTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", + "originalTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", + "gasLimit": 125751600, + "gasPrice": 1000000000, + "callType": 1, + "originalSender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", + "operation": "transfer", + "function": "setSpecialRole" + }, + { + "hash": "d6a5824a60b6c9050462c3f5a02ace00c36e8b4ba1958d132bd394e2ed1e7226", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgq6qxvpe3csllkk7fdxs3553884344wh2tq33sakulat", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "ESDTSetRole@41564153482d376438623564@45534454526f6c654e4654437265617465@45534454526f6c654e46544164645175616e74697479@45534454526f6c654e46544275726e", + "prevTxHash": "50f9c25a1402ce6d87ae9f890659c8a67462292e471e02c74d64ff7ba1995e60", + "originalTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "originalSender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", + "logs": { + "address": "erd1qqqqqqqqqqqqqpgq6qxvpe3csllkk7fdxs3553884344wh2tq33sakulat", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgq6qxvpe3csllkk7fdxs3553884344wh2tq33sakulat", + "identifier": "ESDTSetRole", + "topics": [ + "QVZBU0gtN2Q4YjVk", + "", + "", + "RVNEVFJvbGVORlRDcmVhdGU=", + "RVNEVFJvbGVORlRBZGRRdWFudGl0eQ==", + "RVNEVFJvbGVORlRCdXJu" + ], + "data": null, + "additionalData": null + }, + { + "address": "erd1qqqqqqqqqqqqqpgq6qxvpe3csllkk7fdxs3553884344wh2tq33sakulat", + "identifier": "completedTxEvent", + "topics": [ + "UPnCWhQCzm2Hrp+JBlnIpnRiKS5HHgLHTWT/e6GZXmA=" + ], + "data": null, + "additionalData": null + } + ] + }, + "operation": "ESDTSetRole", + "function": "ESDTSetRole" + }, + { + "hash": "bf1b8b4b301ff548368dfd972896489d5e2a088d5cbdfa1bfe2421cc7f641f7a", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "@00@a68d44c751eba85db0713db8dc9c10c78749189ec0d6f1af5fc67bb656c1254b@0192c6db2c69f50b6968fb22ac558337a851719519cfd1e6bbf79a07bbcf18bc@cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0@00", + "prevTxHash": "50f9c25a1402ce6d87ae9f890659c8a67462292e471e02c74d64ff7ba1995e60", + "originalTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", + "gasLimit": 75751600, + "gasPrice": 1000000000, + "callType": 2, + "originalSender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", + "logs": { + "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "identifier": "transferValueOnly", + "topics": [ + "", + "AAAAAAAAAAAFANAMwOY4h/9reS00I0pE56xrV11LBGM=" + ], + "data": "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", + "additionalData": [ + "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", + "c2V0U2hhcmVUb2tlbklkZW50aWZpZXI=", + "QVZBU0gtN2Q4YjVk" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "identifier": "transferValueOnly", + "topics": [ + "", + "AAAAAAAAAAAFANAMwOY4h/9reS00I0pE56xrV11LBGM=" + ], + "data": "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", + "additionalData": [ + "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", + "c2V0U3RyYXRlZ3lBZGRyZXNz", + "AAAAAAAAAAAFADJ0SE0vUW6bO5SurLeFIMfK/HtBBGM=" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "identifier": "completedTxEvent", + "topics": [ + "UPnCWhQCzm2Hrp+JBlnIpnRiKS5HHgLHTWT/e6GZXmA=" + ], + "data": null, + "additionalData": null + } + ] + }, + "operation": "transfer" + }, + { + "hash": "9d75a398545f488d4764149245e6ec3101debfce99477c353ac11c3239acd897", + "nonce": 1, + "value": 648519550000000, + "receiver": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "sender": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "data": "@6f6b", + "prevTxHash": "bf1b8b4b301ff548368dfd972896489d5e2a088d5cbdfa1bfe2421cc7f641f7a", + "originalTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "operation": "transfer", + "isRefund": true + } + ], + "logs": { + "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "identifier": "transferValueOnly", + "topics": [ + "", + "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=" + ], + "data": "QXN5bmNDYWxs", + "additionalData": [ + "QXN5bmNDYWxs", + "c2V0U3BlY2lhbFJvbGU=", + "QVZBU0gtN2Q4YjVk", + "AAAAAAAAAAAFANAMwOY4h/9reS00I0pE56xrV11LBGM=", + "RVNEVFJvbGVORlRDcmVhdGU=", + "RVNEVFJvbGVORlRBZGRRdWFudGl0eQ==", + "RVNEVFJvbGVORlRCdXJu" + ] + } + ] + }, + "status": "success", + "operation": "transfer", + "function": "finishVaultDeployments", + "initiallyPaidFee": "6082170000000000", + "fee": "1378538070000000", + "chainID": "D", + "version": 1, + "options": 0 + } + }, + "error": "", + "code": "successful" +} + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + + let expected: Option = None; + + assert_eq!(tx_response.new_issued_token_identifier, expected) +} + +#[test] +fn test_multisig_issue_nft_and_set_all_roles() { + let data = r#" +{ + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "SCInvoking", + "processingTypeOnDestination": "SCInvoking", + "hash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", + "nonce": 53, + "round": 3050972, + "epoch": 1246, + "value": "0", + "receiver": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "sender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "gasPrice": 1000000000, + "gasLimit": 80000000, + "gasUsed": 80000000, + "data": "cGVyZm9ybUFjdGlvbkAwMQ==", + "signature": "cb67645595cee5f7967d8d85af05bb7db73e80d9b97611796819249d87cd174b69b4abfc2a3fbe52df1aec965bdea921f7eb34d2b1118aa480699ad1dc85790a", + "sourceShard": 0, + "destinationShard": 0, + "blockNonce": 2984930, + "blockHash": "644ae8703b826a23e89429953919ec37f875e34a547ea9f7edd53fb71a99c746", + "notarizedAtSourceInMetaNonce": 2988311, + "NotarizedAtSourceInMetaHash": "4f608a72e654dd9f466801cd489be8ee1a73fbcd77b128559cd46182d3b9455a", + "notarizedAtDestinationInMetaNonce": 2988311, + "notarizedAtDestinationInMetaHash": "4f608a72e654dd9f466801cd489be8ee1a73fbcd77b128559cd46182d3b9455a", + "miniblockType": "TxBlock", + "miniblockHash": "c5a73671bc1d37835ddd15b926157721bc83203ec4e00cd48ae0d46015cb5f0b", + "hyperblockNonce": 2988311, + "hyperblockHash": "4f608a72e654dd9f466801cd489be8ee1a73fbcd77b128559cd46182d3b9455a", + "timestamp": 1712305832, + "smartContractResults": [ + { + "hash": "b0b3c8df519c33b314c0ee3d25abae6f17c4432fb3382676ce17a42690811cff", + "nonce": 0, + "value": 50000000000000000, + "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "sender": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "data": "registerAndSetAllRoles@54657374436f6c6c656374696f6e31@54455354434f4c4c31@4e4654@@98fa4ff554b9c6990ce577fbb816a271f690dcbd6b148f6583fe7692868ae538@08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd@5e2338", + "prevTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", + "originalTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", + "gasLimit": 73052300, + "gasPrice": 1000000000, + "callType": 1, + "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "operation": "transfer", + "function": "registerAndSetAllRoles" + }, + { + "hash": "5ae4f74e134e4fa63c8b92e06ff12b2a4b544233d01d80db6a922af35ee55356", + "nonce": 1, + "value": 196430610000000, + "receiver": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "sender": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "data": "@6f6b", + "prevTxHash": "c4a24b01b48d32308636310e2d335d6ed1f34dcbdfc1133aed7995e78e831c18", + "originalTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "operation": "transfer", + "isRefund": true + }, + { + "hash": "7589c1ad622d8a9ab2f186731fc82aeeab0aea5a8198cb94b6eba85a966e7962", + "nonce": 0, + "value": 0, + "receiver": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqq2m3f0f", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "ESDTSetBurnRoleForAll@54455354434f4c4c312d356161383063", + "prevTxHash": "b0b3c8df519c33b314c0ee3d25abae6f17c4432fb3382676ce17a42690811cff", + "originalTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "logs": { + "address": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqq2m3f0f", + "events": [ + { + "address": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqq2m3f0f", + "identifier": "completedTxEvent", + "topics": [ + "sLPI31GcM7MUwO49JauubxfEQy+zOCZ2zhekJpCBHP8=" + ] + } + ] + }, + "operation": "transfer" + }, + { + "hash": "86d1ec3365ea1311dbde2f2366de4ea8627d7e49c29a974578c0869b66903cbc", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "ESDTSetRole@54455354434f4c4c312d356161383063@45534454526f6c654e4654437265617465@45534454526f6c654e46544275726e@45534454526f6c654e465455706461746541747472696275746573@45534454526f6c654e4654416464555249", + "prevTxHash": "b0b3c8df519c33b314c0ee3d25abae6f17c4432fb3382676ce17a42690811cff", + "originalTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "identifier": "ESDTSetRole", + "topics": [ + "VEVTVENPTEwxLTVhYTgwYw==", + "", + "", + "RVNEVFJvbGVORlRDcmVhdGU=", + "RVNEVFJvbGVORlRCdXJu", + "RVNEVFJvbGVORlRVcGRhdGVBdHRyaWJ1dGVz", + "RVNEVFJvbGVORlRBZGRVUkk=" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "identifier": "completedTxEvent", + "topics": [ + "sLPI31GcM7MUwO49JauubxfEQy+zOCZ2zhekJpCBHP8=" + ] + } + ] + }, + "operation": "ESDTSetRole", + "function": "ESDTSetRole" + }, + { + "hash": "c4a24b01b48d32308636310e2d335d6ed1f34dcbdfc1133aed7995e78e831c18", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "@00@54455354434f4c4c312d356161383063@3ec73c55022548038bbe06c0639156b3db70b7c770955e340f14fcfcd45df06a@98fa4ff554b9c6990ce577fbb816a271f690dcbd6b148f6583fe7692868ae538@08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd@00", + "prevTxHash": "b0b3c8df519c33b314c0ee3d25abae6f17c4432fb3382676ce17a42690811cff", + "originalTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", + "gasLimit": 23052300, + "gasPrice": 1000000000, + "callType": 2, + "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "identifier": "callBack", + "topics": [ + "YXN5bmNDYWxsU3VjY2Vzcw==", + "VEVTVENPTEwxLTVhYTgwYw==" + ], + "additionalData": [ + "" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "identifier": "completedTxEvent", + "topics": [ + "sLPI31GcM7MUwO49JauubxfEQy+zOCZ2zhekJpCBHP8=" + ] + } + ] + }, + "operation": "transfer" + } + ], + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "identifier": "performAction", + "topics": [ + "c3RhcnRQZXJmb3JtQWN0aW9u" + ], + "data": "AAAAAQYAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAL//wAAAAexorwuxQAAAAAAFnJlZ2lzdGVyQW5kU2V0QWxsUm9sZXMAAAAEAAAAD1Rlc3RDb2xsZWN0aW9uMQAAAAlURVNUQ09MTDEAAAADTkZUAAAAAAAAAATjKv7ckE/hk5dGrZc76zg1Y89jZCumabMED5uUKKXtYLE6AXQjw2bK/4zs+3ehJhChMPSIgTQSLHk3/q4NbX0XOvjZyUI7JXfGJSciwdkCEqQRH3ID+XRPdvz6HQoxADOyoRVVzlIeSUTgmrF1SdhbSH3NJshLUBejnjGjZwiJug==", + "additionalData": [ + "AAAAAQYAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAL//wAAAAexorwuxQAAAAAAFnJlZ2lzdGVyQW5kU2V0QWxsUm9sZXMAAAAEAAAAD1Rlc3RDb2xsZWN0aW9uMQAAAAlURVNUQ09MTDEAAAADTkZUAAAAAAAAAATjKv7ckE/hk5dGrZc76zg1Y89jZCumabMED5uUKKXtYLE6AXQjw2bK/4zs+3ehJhChMPSIgTQSLHk3/q4NbX0XOvjZyUI7JXfGJSciwdkCEqQRH3ID+XRPdvz6HQoxADOyoRVVzlIeSUTgmrF1SdhbSH3NJshLUBejnjGjZwiJug==" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "identifier": "performAction", + "topics": [ + "cGVyZm9ybUFzeW5jQ2FsbA==", + "AQ==", + "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=", + "saK8LsUAAA==", + "BGa4HQ==", + "cmVnaXN0ZXJBbmRTZXRBbGxSb2xlcw==", + "VGVzdENvbGxlY3Rpb24x", + "VEVTVENPTEwx", + "TkZU", + "" + ], + "additionalData": [ + "" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "identifier": "transferValueOnly", + "topics": [ + "saK8LsUAAA==", + "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=" + ], + "data": "QXN5bmNDYWxs", + "additionalData": [ + "QXN5bmNDYWxs", + "cmVnaXN0ZXJBbmRTZXRBbGxSb2xlcw==", + "VGVzdENvbGxlY3Rpb24x", + "VEVTVENPTEwx", + "TkZU", + "" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "identifier": "writeLog", + "topics": [ + "4yr+3JBP4ZOXRq2XO+s4NWPPY2QrpmmzBA+blCil7WA=" + ], + "data": "QDZmNmI=", + "additionalData": [ + "QDZmNmI=" + ] + } + ] + }, + "status": "success", + "operation": "transfer", + "function": "performAction", + "initiallyPaidFee": "873260000000000", + "fee": "873260000000000", + "chainID": "D", + "version": 1, + "options": 0 + } + }, + "code": "successful" +} + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + + let expected = Some("TESTCOLL1-5aa80c".to_string()); + + assert_eq!(tx_response.new_issued_token_identifier, expected) +} diff --git a/framework/snippets/src/interactor_retrieve.rs b/framework/snippets/src/interactor_retrieve.rs index 6dfa0c5085..8b9e0031ab 100644 --- a/framework/snippets/src/interactor_retrieve.rs +++ b/framework/snippets/src/interactor_retrieve.rs @@ -17,10 +17,27 @@ impl Interactor { let start_time = Instant::now(); loop { - match self.proxy.get_transaction_info_with_results(&tx_hash).await { - Ok(tx) => { - info!("Transaction retrieved successfully: {:#?}", tx); - return tx; + match self.proxy.get_transaction_status(&tx_hash).await { + Ok(status) => { + // checks if transaction status is final + match status.as_str() { + "success" | "fail" => { + // retrieve transaction info with results + let transaction_info_with_results = self + .proxy + .get_transaction_info_with_results(&tx_hash) + .await + .unwrap(); + info!( + "Transaction retrieved successfully, with status {}: {:#?}", + status, transaction_info_with_results + ); + return transaction_info_with_results; + }, + _ => { + continue; + }, + } }, Err(err) => { retries += 1; From 9ff6a1aaff3aa6c18cba061bd3b94ecdc798f2a1 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Mon, 29 Apr 2024 15:01:05 +0300 Subject: [PATCH 418/461] set state via AnnotatedValue - replace in multisig, rewards, price_aggregator_stress --- .../tests/price_aggregator_stress_blackbox.rs | 48 +++++++--------- .../tests/crowdfunding_esdt_blackbox_test.rs | 2 +- .../multisig/tests/multisig_blackbox_test.rs | 57 +++++-------------- .../rewards_distribution_integration_test.rs | 13 +---- 4 files changed, 39 insertions(+), 81 deletions(-) diff --git a/contracts/core/price-aggregator/tests/price_aggregator_stress_blackbox.rs b/contracts/core/price-aggregator/tests/price_aggregator_stress_blackbox.rs index 46ddf296d3..660bbf1dda 100644 --- a/contracts/core/price-aggregator/tests/price_aggregator_stress_blackbox.rs +++ b/contracts/core/price-aggregator/tests/price_aggregator_stress_blackbox.rs @@ -8,10 +8,10 @@ use multiversx_sc_scenario::imports::*; const DECIMALS: u8 = 0; const EGLD_TICKER: &[u8] = b"EGLD"; const NR_ORACLES: usize = 50; -const OWNER_ADDRESS_EXPR: &str = "address:owner"; const OWNER: TestAddress = TestAddress::new("owner"); -const PRICE_AGGREGATOR_ADDRESS_EXPR: &str = "sc:price-aggregator"; -const PRICE_AGGREGATOR_PATH_EXPR: &str = "mxsc:../output/multiversx-price-aggregator-sc.mxsc.json"; +const PRICE_AGGREGATOR_ADDRESS: TestSCAddress = TestSCAddress::new("price-aggregator"); +const PRICE_AGGREGATOR_PATH: MxscPath = + MxscPath::new("../output/multiversx-price-aggregator-sc.mxsc.json"); const SLASH_AMOUNT: u64 = 10; const SLASH_QUORUM: usize = 3; const STAKE_AMOUNT: u64 = 20; @@ -20,14 +20,11 @@ const USD_TICKER: &[u8] = b"USDC"; mod price_aggregator_proxy; -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, + PRICE_AGGREGATOR_PATH, multiversx_price_aggregator_sc::ContractBuilder, ); @@ -37,50 +34,45 @@ fn world() -> ScenarioWorld { struct PriceAggregatorTestState { world: ScenarioWorld, oracles: Vec, - price_aggregator_contract: PriceAggregatorContract, price_aggregator_whitebox: WhiteboxContract>, } impl PriceAggregatorTestState { fn new() -> Self { let mut world = world(); + world.start_trace(); - 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) + world + .account(OWNER) + .nonce(1) + .new_address(OWNER, 1, PRICE_AGGREGATOR_ADDRESS) + .current_block() .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()); + let address_expr = format!("oracle{}", i); + let address: TestAddress = TestAddress::new(address_expr.as_str()); + let address_value = AddressValue::from(address.eval_to_expr().as_str()); - set_state_step = set_state_step.put_account( - address_expr.as_str(), - Account::new().nonce(1).balance(STAKE_AMOUNT), - ); + world.account(address).nonce(1).balance(STAKE_AMOUNT); oracles.push(address_value); } - world.start_trace().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, + PRICE_AGGREGATOR_ADDRESS, 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() @@ -101,14 +93,14 @@ impl PriceAggregatorTestState { SUBMISSION_COUNT, oracles, ) - .code(price_aggregator_code) + .code(PRICE_AGGREGATOR_PATH) .run(); for address in self.oracles.iter() { self.world .tx() .from(&address.to_address()) - .to(&self.price_aggregator_contract.to_address()) + .to(PRICE_AGGREGATOR_ADDRESS) .gas(5_000_000u64) .typed(price_aggregator_proxy::PriceAggregatorProxy) .stake() @@ -123,7 +115,7 @@ impl PriceAggregatorTestState { self.world .tx() .from(OWNER) - .to(&self.price_aggregator_contract.to_address()) + .to(PRICE_AGGREGATOR_ADDRESS) .typed(price_aggregator_proxy::PriceAggregatorProxy) .set_pair_decimals(EGLD_TICKER, USD_TICKER, DECIMALS) .run(); @@ -133,7 +125,7 @@ impl PriceAggregatorTestState { self.world .tx() .from(OWNER) - .to(&self.price_aggregator_contract.to_address()) + .to(PRICE_AGGREGATOR_ADDRESS) .gas(5_000_000u64) .typed(price_aggregator_proxy::PriceAggregatorProxy) .unpause_endpoint() @@ -144,7 +136,7 @@ impl PriceAggregatorTestState { self.world .tx() .from(&from.to_address()) - .to(&self.price_aggregator_contract.to_address()) + .to(PRICE_AGGREGATOR_ADDRESS) .gas(7_000_000u64) .typed(price_aggregator_proxy::PriceAggregatorProxy) .submit( diff --git a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs index 8b895e42a3..1a07b42101 100644 --- a/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs +++ b/contracts/examples/crowdfunding-esdt/tests/crowdfunding_esdt_blackbox_test.rs @@ -76,7 +76,7 @@ impl CrowdfundingESDTTestState { .query() .to(CROWDFUNDING_ADDRESS) .typed(crowdfunding_esdt_proxy::CrowdfundingProxy) - .deposit(donor.eval_to_array()) + .deposit(donor) .returns(ExpectValue(amount)) .run(); } diff --git a/contracts/examples/multisig/tests/multisig_blackbox_test.rs b/contracts/examples/multisig/tests/multisig_blackbox_test.rs index 7d439a00fc..322abd9348 100644 --- a/contracts/examples/multisig/tests/multisig_blackbox_test.rs +++ b/contracts/examples/multisig/tests/multisig_blackbox_test.rs @@ -48,7 +48,7 @@ impl MultisigTestState { } fn deploy_multisig_contract(&mut self) -> &mut Self { - let board_members = MultiValueVec::from(vec![BOARD_MEMBER_ADDRESS.eval_to_array()]); + let board_members = MultiValueVec::from(vec![BOARD_MEMBER_ADDRESS]); self.world .tx() @@ -65,7 +65,7 @@ impl MultisigTestState { .from(BOARD_MEMBER_ADDRESS) .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) - .propose_add_proposer(PROPOSER_ADDRESS.eval_to_array()) + .propose_add_proposer(PROPOSER_ADDRESS) .returns(ReturnsResult) .run(); @@ -94,7 +94,7 @@ impl MultisigTestState { .from(PROPOSER_ADDRESS) .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) - .propose_add_board_member(board_member_address.eval_to_array()) + .propose_add_board_member(board_member_address) .returns(ReturnsResult) .run() } @@ -105,7 +105,7 @@ impl MultisigTestState { .from(PROPOSER_ADDRESS) .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) - .propose_add_proposer(proposer_address.eval_to_array()) + .propose_add_proposer(proposer_address) .returns(ReturnsResult) .run() } @@ -132,7 +132,7 @@ impl MultisigTestState { .from(PROPOSER_ADDRESS) .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) - .propose_transfer_execute(to.eval_to_array(), egld_amount, contract_call) + .propose_transfer_execute(to, egld_amount, contract_call) .returns(ReturnsResult) .run() } @@ -148,7 +148,7 @@ impl MultisigTestState { .from(PROPOSER_ADDRESS) .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) - .propose_async_call(to.eval_to_array(), egld_amount, contract_call) + .propose_async_call(to, egld_amount, contract_call) .returns(ReturnsResult) .run() } @@ -159,7 +159,7 @@ impl MultisigTestState { .from(PROPOSER_ADDRESS) .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) - .propose_remove_user(user_address.eval_to_array()) + .propose_remove_user(user_address) .returns(ReturnsResult) .run() } @@ -176,7 +176,7 @@ impl MultisigTestState { .from(PROPOSER_ADDRESS) .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) - .propose_sc_deploy_from_source(amount, source.eval_to_array(), code_metadata, arguments) + .propose_sc_deploy_from_source(amount, source, code_metadata, arguments) .returns(ReturnsResult) .run() } @@ -194,13 +194,7 @@ impl MultisigTestState { .from(PROPOSER_ADDRESS) .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) - .propose_sc_upgrade_from_source( - sc_address.eval_to_array(), - amount, - source.eval_to_array(), - code_metadata, - arguments, - ) + .propose_sc_upgrade_from_source(sc_address, amount, source, code_metadata, arguments) .returns(ReturnsResult) .run() } @@ -245,7 +239,7 @@ impl MultisigTestState { .query() .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) - .user_role(user.eval_to_array()) + .user_role(user) .returns(ExpectValue(expected_user_role)) .run(); } @@ -266,10 +260,7 @@ fn test_add_board_member() { state.sign(action_id); state.perform(action_id); - let expected_value = MultiValueVec::from(vec![ - BOARD_MEMBER_ADDRESS.eval_to_array(), - new_board_member_expr.eval_to_array(), - ]); + let expected_value = MultiValueVec::from(vec![BOARD_MEMBER_ADDRESS, new_board_member_expr]); state.expect_user_role(new_board_member_expr, multisig_proxy::UserRole::BoardMember); state @@ -302,10 +293,7 @@ fn test_add_proposer() { multisig_proxy::UserRole::Proposer, ); - let expected_value = MultiValueVec::from(vec![ - PROPOSER_ADDRESS.eval_to_array(), - new_proposer_address_expr.eval_to_array(), - ]); + let expected_value = MultiValueVec::from(vec![PROPOSER_ADDRESS, new_proposer_address_expr]); state .world .query() @@ -447,11 +435,7 @@ fn test_transfer_execute_to_user() { .from(PROPOSER_ADDRESS) .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) - .propose_transfer_execute( - new_user_address_expr.eval_to_array(), - 0u64, - FunctionCall::empty(), - ) + .propose_transfer_execute(new_user_address_expr, 0u64, FunctionCall::empty()) .with_result(ExpectError(4, "proposed action has no effect")) .run(); @@ -462,11 +446,7 @@ fn test_transfer_execute_to_user() { .from(PROPOSER_ADDRESS) .to(MULTISIG_ADDRESS) .typed(multisig_proxy::MultisigProxy) - .propose_transfer_execute( - new_user_address_expr.eval_to_array(), - amount, - FunctionCall::empty(), - ) + .propose_transfer_execute(new_user_address_expr, amount, FunctionCall::empty()) .returns(ReturnsResult) .run(); state.sign(action_id); @@ -584,18 +564,11 @@ fn test_deploy_and_upgrade_from_source() { let factorial_address: TestSCAddress = TestSCAddress::new("factorial"); let factorial_path: MxscPath = MxscPath::new("test-contracts/factorial.mxsc.json"); - let factorial_code = state - .world - .code_expression(factorial_path.eval_to_expr().as_str()); - state .world .register_contract(factorial_path, factorial::ContractBuilder); - state - .world - .account(factorial_address) - .code(factorial_code.clone()); + state.world.account(factorial_address).code(factorial_path); let action_id = state.propose_sc_upgrade_from_source( ADDER_ADDRESS, diff --git a/contracts/examples/rewards-distribution/tests/rewards_distribution_integration_test.rs b/contracts/examples/rewards-distribution/tests/rewards_distribution_integration_test.rs index 03ef580983..be3a4cb788 100644 --- a/contracts/examples/rewards-distribution/tests/rewards_distribution_integration_test.rs +++ b/contracts/examples/rewards-distribution/tests/rewards_distribution_integration_test.rs @@ -22,13 +22,10 @@ fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); blockchain.register_contract( - REWARDS_DISTRIBUTION_PATH.eval_to_expr().as_str(), + REWARDS_DISTRIBUTION_PATH, rewards_distribution::ContractBuilder, ); - blockchain.register_contract( - SEED_NFT_MINTER_PATH.eval_to_expr().as_str(), - mock_seed_nft_minter::ContractBuilder, - ); + blockchain.register_contract(SEED_NFT_MINTER_PATH, mock_seed_nft_minter::ContractBuilder); blockchain } @@ -106,16 +103,12 @@ impl RewardsDistributionTestState { fn test_compute_brackets() { let mut state = RewardsDistributionTestState::new(); - let rewards_distribution_code = state - .world - .code_expression(REWARDS_DISTRIBUTION_PATH.eval_to_expr().as_str()); - state .world .account(REWARDS_DISTRIBUTION_ADDRESS) .nonce(1) .owner(OWNER_ADDRESS) - .code(rewards_distribution_code); + .code(REWARDS_DISTRIBUTION_PATH); state.world.whitebox_call( &state.rewards_distribution_whitebox, From d8e36e9bc7c2187d789b5184501df2538bb5348d Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Mon, 29 Apr 2024 17:07:53 +0300 Subject: [PATCH 419/461] set state via AnnotatedValue - whitebox framework --- .../src/facade/world_tx/scenario_set_state.rs | 26 +++++++++---------- .../whitebox_legacy/contract_obj_wrapper.rs | 13 ++++++++-- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state.rs b/framework/scenario/src/facade/world_tx/scenario_set_state.rs index f31477d180..8cee5eaede 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state.rs @@ -8,7 +8,7 @@ use crate::{ tx_to_step::{address_annotated, big_uint_annotated, u64_annotated}, ScenarioRunner, }, - scenario_model::{AddressKey, BigUintValue, NewAddress, SetStateStep, U64Value}, + scenario_model::{AddressKey, BigUintValue, NewAddress, SetStateStep}, ScenarioTxEnvData, ScenarioWorld, }; @@ -101,7 +101,7 @@ impl ScenarioWorld { } #[allow(clippy::too_many_arguments)] - pub fn set_nft_balance_all_properties( + pub fn set_nft_balance_all_properties( &mut self, address: A, token_id: &[u8], @@ -116,11 +116,13 @@ impl ScenarioWorld { ) where A: AnnotatedValue>, V: AnnotatedValue>, - U64Value: From, + NR: AnnotatedValue, { let env = self.new_env_data(); let address_value = address_annotated(&env, &address); let balance_value = big_uint_annotated(&env, &balance); + let nonce_value = u64_annotated(&env, &nonce); + let royalties_value = u64_annotated(&env, &royalties); let mut esdt_attributes = Vec::new(); let _ = attributes.top_encode(&mut esdt_attributes); @@ -129,12 +131,12 @@ impl ScenarioWorld { if vm_address == &address_value.to_vm_address() { account.esdt.set_esdt_balance( token_id.to_vec(), - U64Value::from(nonce).value, + nonce_value.value, &balance_value.value, EsdtInstanceMetadata { creator: creator.map(|c| address_annotated(&env, &c).to_vm_address()), attributes: esdt_attributes.clone(), - royalties: U64Value::from(royalties).value, + royalties: royalties_value.value, name: name.unwrap_or_default().to_vec(), hash: hash.map(|h| h.to_vec()), uri: uris.to_vec(), @@ -157,17 +159,15 @@ impl ScenarioWorld { } } - pub fn set_esdt_local_roles( - &mut self, - address: A, - token_id: &[u8], - roles: &[EsdtLocalRole], - ) where - AddressKey: From, + pub fn set_esdt_local_roles(&mut self, address: A, token_id: &[u8], roles: &[EsdtLocalRole]) + where + A: AnnotatedValue>, { + let env = self.new_env_data(); + let address_value = address_annotated(&env, &address); let accounts = &mut self.get_mut_state().accounts; for (vm_address, account) in accounts.iter_mut() { - if vm_address == &AddressKey::from(address).to_vm_address() { + if vm_address == &address_value.to_vm_address() { account.esdt.set_roles( token_id.to_vec(), roles diff --git a/framework/scenario/src/whitebox_legacy/contract_obj_wrapper.rs b/framework/scenario/src/whitebox_legacy/contract_obj_wrapper.rs index c03a11c0de..7540d23056 100644 --- a/framework/scenario/src/whitebox_legacy/contract_obj_wrapper.rs +++ b/framework/scenario/src/whitebox_legacy/contract_obj_wrapper.rs @@ -363,7 +363,7 @@ impl BlockchainStateWrapper { address, token_id, nonce, - balance, + BigUint::from(balance), attributes, 0, None, @@ -397,7 +397,16 @@ impl BlockchainStateWrapper { uris: &[Vec], ) { self.world.set_nft_balance_all_properties( - address, token_id, nonce, balance, attributes, royalties, creator, name, hash, uris, + address, + token_id, + nonce, + BigUint::from(balance), + attributes, + royalties, + creator, + name, + hash, + uris, ); } From 6937665cbb69f8ad4c1fec061217d9374d944cf1 Mon Sep 17 00:00:00 2001 From: Mihai Calin Luca Date: Mon, 29 Apr 2024 17:13:30 +0200 Subject: [PATCH 420/461] test reorg in separate files --- .../tests/test_tx_deployed_address.rs | 133 + .../tests/test_tx_issued_token_identifier.rs | 1422 +++++++++ .../tests/test_tx_multi_contract_sc_result.rs | 477 +++ .../tests/test_tx_multiple_sc_results.rs | 287 ++ framework/scenario/tests/test_tx_sc_result.rs | 350 +++ framework/scenario/tests/tx_response_tests.rs | 2661 ----------------- 6 files changed, 2669 insertions(+), 2661 deletions(-) create mode 100644 framework/scenario/tests/test_tx_deployed_address.rs create mode 100644 framework/scenario/tests/test_tx_issued_token_identifier.rs create mode 100644 framework/scenario/tests/test_tx_multi_contract_sc_result.rs create mode 100644 framework/scenario/tests/test_tx_multiple_sc_results.rs create mode 100644 framework/scenario/tests/test_tx_sc_result.rs delete mode 100644 framework/scenario/tests/tx_response_tests.rs diff --git a/framework/scenario/tests/test_tx_deployed_address.rs b/framework/scenario/tests/test_tx_deployed_address.rs new file mode 100644 index 0000000000..b040ace618 --- /dev/null +++ b/framework/scenario/tests/test_tx_deployed_address.rs @@ -0,0 +1,133 @@ +use multiversx_sc::types::Address; +use multiversx_sc_scenario::scenario_model::TxResponse; +use multiversx_sdk::data::transaction::{TransactionInfo, TransactionOnNetwork}; + +#[test] +fn test_deployed_address() { + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "SCDeployment", + "processingTypeOnDestination": "SCDeployment", + "hash": "07a176d1734d1901d396be344f97e1d80f076269e9559f9b2110f6f11c4f74de", + "nonce": 427, + "round": 2190715, + "epoch": 887, + "value": "0", + "receiver": "erd1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq6gq4hu", + "sender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", + "gasPrice": 1000000000, + "gasLimit": 600000000, + "data": "MDA2MTczNmQwMTAwMDAwMDAxOTgwMTE5NjAwMjdmN2YwMDYwMDE3ZjAxN2Y2MDAwMDA2MDAwMDE3ZjYwMDI3ZjdmMDE3ZjYwMDM3ZjdmN2YwMDYwMDE3ZjAwNjAwNDdmN2Y3ZjdmMDA2MDA1N2Y3ZjdmN2Y3ZjAwNjAwMzdmN2Y3ZjAxN2Y2MDA0N2Y3ZjdmN2YwMTdmNjAwMjdmN2UwMDYwMDE3ZjAxN2U2MDAyN2Y3ZjAxN2U2MDA1N2Y3ZjdlN2Y3ZjAxN2Y2MDA2N2U3ZjdmN2Y3ZjdmMDE3ZjYwMDE3ZTAwNjAwMDAxN2U2MDAxN2UwMTdmNjAwNDdmN2Y3ZTdmMDA2MDA1N2U3ZjdmN2Y3ZjAxN2Y2MDA0N2Y3ZjdmN2UwMDYwMDE3ZTAxN2U2MDA0N2Y3ZTdmN2YwMDYwMDI3ZTdmMDAwMmMxMDcyOTAzNjU2ZTc2MTI2ZDYxNmU2MTY3NjU2NDUzNjk2NzZlNjE2YzQ1NzI3MjZmNzIwMDA2MDM2NTZlNzYwZTYyNjk2NzQ5NmU3NDUzNjU3NDQ5NmU3NDM2MzQwMDBiMDM2NTZlNzYwOTYyNjk2NzQ5NmU3NDQxNjQ2NDAwMDUwMzY1NmU3NjBiNzM2OTY3NmU2MTZjNDU3MjcyNmY3MjAwMDAwMzY1NmU3NjBhNmQ0Mjc1NjY2NjY1NzI0ZTY1NzcwMDAzMDM2NTZlNzYwZDZkNDI3NTY2NjY2NTcyNDE3MDcwNjU2ZTY0MDAwNDAzNjU2ZTc2MDk2ZDQyNzU2NjY2NjU3MjQ1NzEwMDA0MDM2NTZlNzYwZDZkNDI3NTY2NjY2NTcyNDY2OTZlNjk3MzY4MDAwMTAzNjU2ZTc2MjI2ZDYxNmU2MTY3NjU2NDRkNzU2Yzc0Njk1NDcyNjE2ZTczNjY2NTcyNDU1MzQ0NTQ0ZTQ2NTQ0NTc4NjU2Mzc1NzQ2NTAwMGUwMzY1NmU3NjFiNmQ2MTZlNjE2NzY1NjQ0NTc4NjU2Mzc1NzQ2NTRmNmU0NDY1NzM3NDQzNmY2ZTc0NjU3ODc0MDAwZjAzNjU2ZTc2MGQ2ZDYxNmU2MTY3NjU2NDQzNjE2YzZjNjU3MjAwMDYwMzY1NmU3NjEwNmQ2MTZlNjE2NzY1NjQ1MzQzNDE2NDY0NzI2NTczNzMwMDA2MDM2NTZlNzYxMzZkNjE2ZTYxNjc2NTY0NGY3NzZlNjU3MjQxNjQ2NDcyNjU3MzczMDAwNjAzNjU2ZTc2MWM2ZDYxNmU2MTY3NjU2NDQ3NjU3NDRkNzU2Yzc0Njk0NTUzNDQ1NDQzNjE2YzZjNTY2MTZjNzU2NTAwMDYwMzY1NmU3NjEyNmQ0Mjc1NjY2NjY1NzI0NzY1NzQ0MTcyNjc3NTZkNjU2ZTc0MDAwNDAzNjU2ZTc2MTI2ZDQyNzU2NjY2NjU3MjQxNzA3MDY1NmU2NDQyNzk3NDY1NzMwMDA5MDM2NTZlNzYxOTYyNjk2NzQ5NmU3NDQ3NjU3NDU1NmU3MzY5Njc2ZTY1NjQ0MTcyNjc3NTZkNjU2ZTc0MDAwMDAzNjU2ZTc2MWI3MzZkNjE2YzZjNDk2ZTc0NDc2NTc0NTU2ZTczNjk2NzZlNjU2NDQxNzI2Nzc1NmQ2NTZlNzQwMDBjMDM2NTZlNzYxMDZkNDI3NTY2NjY2NTcyNDc2NTc0NGM2NTZlNjc3NDY4MDAwMTAzNjU2ZTc2MGY2NzY1NzQ0ZTc1NmQ0MTcyNjc3NTZkNjU2ZTc0NzMwMDAzMDM2NTZlNzYxNjczNmQ2MTZjNmM0OTZlNzQ0NjY5NmU2OTczNjg1NTZlNzM2OTY3NmU2NTY0MDAxMDAzNjU2ZTc2MDk2MjY5Njc0OTZlNzQ1Mzc1NjIwMDA1MDM2NTZlNzYwYTY3NjU3NDQ3NjE3MzRjNjU2Njc0MDAxMTAzNjU2ZTc2MGY2MzZjNjU2MTZlNTI2NTc0NzU3MjZlNDQ2MTc0NjEwMDAyMDM2NTZlNzYwZjZkNDI3NTY2NjY2NTcyNTM2NTc0NDI3OTc0NjU3MzAwMDkwMzY1NmU3NjA5NjI2OTY3NDk2ZTc0NDM2ZDcwMDAwNDAzNjU2ZTc2MGE2MjY5Njc0OTZlNzQ1NDQ0Njk3NjAwMDUwMzY1NmU3NjA5NjI2OTY3NDk2ZTc0NGQ3NTZjMDAwNTAzNjU2ZTc2MTk2ZDQyNzU2NjY2NjU3MjQ2NzI2ZjZkNDI2OTY3NDk2ZTc0NTU2ZTczNjk2NzZlNjU2NDAwMDQwMzY1NmU3NjE3NmQ0Mjc1NjY2NjY1NzI1NDZmNDI2OTY3NDk2ZTc0NTU2ZTczNjk2NzZlNjU2NDAwMDQwMzY1NmU3NjA5NjI2OTY3NDk2ZTc0NTA2Zjc3MDAwNTAzNjU2ZTc2MTQ2ZDQyNzU2NjY2NjU3MjQzNmY3MDc5NDI3OTc0NjU1MzZjNjk2MzY1MDAwYTAzNjU2ZTc2MTI2ZDQyNzU2NjY2NjU3MjUzNzQ2ZjcyNjE2NzY1NGM2ZjYxNjQwMDA0MDM2NTZlNzYxMzZkNDI3NTY2NjY2NTcyNTM3NDZmNzI2MTY3NjU1Mzc0NmY3MjY1MDAwNDAzNjU2ZTc2MGU2MzY4NjU2MzZiNGU2ZjUwNjE3OTZkNjU2ZTc0MDAwMjAzNjU2ZTc2MTc2ZDYxNmU2MTY3NjU2NDQ3NjU3NDQyNjE2MzZiNTQ3MjYxNmU3MzY2NjU3MjczMDAwMDAzNjU2ZTc2MGY2ZDYxNmU2MTY3NjU2NDU3NzI2OTc0NjU0YzZmNjcwMDAwMDM2NTZlNzYxNDYyNjk2NzQ5NmU3NDQ2Njk2ZTY5NzM2ODU1NmU3MzY5Njc2ZTY1NjQwMDA2MDM2NTZlNzYwNjY2Njk2ZTY5NzM2ODAwMDAwMzY1NmU3NjBhNjI2OTY3NDk2ZTc0NTM2OTY3NmUwMDAxMDM2NTZlNzYxMzZkNDI3NTY2NjY2NTcyNDc2NTc0NDI3OTc0NjU1MzZjNjk2MzY1MDAwYTAzZDMwMWQxMDEwMTAzMDgwMjAxMTIwMTA0MDAwMTA3MDYwNjA2MDAwNDAxMDkwMTAwMDEwMDAwMDAwMDEzMDMwMDE0MDMwMzAzMDIwMzAxMDcwNDAwMDMwOTAxMDkwOTA5MDAwNzA3MDEwMDA2MDYwMTA2MDYwYzA1MDEwODA1MDAwMTBiMDAwODA3MTUwNzA4MDgwMDBhMDAxNjAxMDEwNjAxMDAwMDAwMDUwMDAwMDEwMzAwMDYwMTAwMTcwNTA1MGEwNzA0MDAwNDBhMDAwNDA0MDQwMDA0MDQwNDA0MDQwMTAxMDAwNDBkMDcwNzA3MDgwYTAwMDUwMTAxMDUwNTA2MDEwMTAwMGIwYjAxMDEwMTAxMDEwNTBkMDEwNTAwMDAwMDA1MDUwMDAwMDAwMDAwMGMwNzA3MDcwNzAwMDAwODE4MDMwMzAzMDAwMzAzMDAwMTA0MDcwMzAzMDMwMzAxMDEwMzAzMDMwMzAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwODA4MDUwMzAxMDAwMzA2MTYwMzdmMDE0MTgwODAwODBiN2YwMDQxZTlkYjA4MGI3ZjAwNDFmMGRiMDgwYjA3YzcwNTIwMDY2ZDY1NmQ2ZjcyNzkwMjAwMDQ2OTZlNjk3NDAwZGIwMTA3NzU3MDY3NzI2MTY0NjUwMGRjMDEwNzY0NjU3MDZmNzM2OTc0MDBkZDAxMDg3NzY5NzQ2ODY0NzI2MTc3MDBkZTAxMDg2MzZmNmQ3MDZmNzU2ZTY0MDBkZjAxMGU2NzY1NzQ1NDZmNzQ2MTZjNDE3MzczNjU3NDczMDBlMDAxMGY2NzY1NzQ1NjYxNzU2Yzc0NDE2NDY0NzI2NTczNzMwMGUxMDExNzY3NjU3NDQxNzM3MzY1NzQ1NDZmNmI2NTZlNDk2NDY1NmU3NDY5NjY2OTY1NzIwMGUyMDExZDY3NjU3NDRkNmY2ZTY1Nzk0ZDYxNzI2YjY1NzQ1NDZmNmI2NTZlNDk2NDY1NmU3NDY5NjY2OTY1NzIwMGUzMDEyMjY3NjU3NDRkNmY2ZTY1Nzk0ZDYxNzI2YjY1NzQ1NTZlNjQ2NTcyNmM3OTY5NmU2NzQ5NjQ2NTZlNzQ2OTY2Njk2NTcyMDBlNDAxMWY2NzY1NzQ0MjZmNmY3Mzc0NjU3MjUzNzQ2MTZiNjU2NDU0NmY2YjY1NmU0OTY0NjU2ZTc0Njk2NjY5NjU3MjAwZTUwMTE0Njc2NTc0NDM2ZjZlNzQ3MjZmNmM2YzY1NzI0MTY0NjQ3MjY1NzM3MzAwZTYwMTE1Njc2NTc0NGQ2ZjZlNjU3OTRkNjE3MjZiNjU3NDQxNjQ2NDcyNjU3MzczMDBlNzAxMWQ2NzY1NzQ1NzcyNjE3MDcwNjU2NDQ1Njc2YzY0NDM2ZjZlNzQ3MjYxNjM3NDQxNjQ2NDcyNjU3MzczMDBlODAxMWQ2NzY1NzQ1NzcyNjE3MDcwNjU2NDQ1Njc2YzY0NTQ2ZjZiNjU2ZTQ5NjQ2NTZlNzQ2OTY2Njk2NTcyMDBlOTAxMTE2NzY1NzQ0MjZmNmY3Mzc0NjU3MjQxNjQ2NDcyNjU3MzczMDBlYTAxMTk2NzY1NzQ0MzZmNmQ3MDZmNzU2ZTY0NTg0NTc4NjM2ODYxNmU2NzY1NTM3NzYxNzA3MzAwZWIwMTE3Njc2NTc0NDM2ZjZkNzA2Zjc1NmU2NDQxNzM2ODczNzc2MTcwNTM3NzYxNzA3MzAwZWMwMTE2Njc2NTc0NDM2ZjZkNzA2Zjc1NmU2NDQ2NjU2NTczNTA2NTcyNjM2NTZlNzQwMGVkMDExOTY3NjU3NDUwNjU3MjY2NmY3MjZkNjE2ZTYzNjU0NjY1NjU3MzUwNjU3MjYzNjU2ZTc0MDBlZTAxMGU3Mzc0NjE2YjY1NDk2ZTQyNmY2ZjczNzQ2NTcyMDBlZjAxMWI3MjY1NjI2MTZjNjE2ZTYzNjU1MDZmNzI3NDY2NmY2YzY5NmY0OTZlNDI2ZjZmNzM3NDY1NzIwMGYwMDExMjc1NmU3Mzc0NjE2YjY1NDY3MjZmNmQ0MjZmNmY3Mzc0NjU3MjAwZjEwMTE4NjM2YzYxNjk2ZDRkNzU2Yzc0Njk3MDZjNjU0NjcyNmY2ZDQyNmY2ZjczNzQ2NTcyMDBmMjAxMTk3MzY1NzQ1MDY1NzI2NjZmNzI2ZDYxNmU2MzY1NDY2NTY1NzM1MDY1NzI2MzY1NmU3NDAwZjMwMTE2NzM2NTc0NDM2ZjZkNzA2Zjc1NmU2NDQ2NjU2NTczNTA2NTcyNjM2NTZlNzQwMGY0MDExMDczNjU3NDQzNmY2ZDcwNmY3NTZlNjQ1Mzc3NjE3MDczMDBmNTAxMGQ2NzY1NzQ0ZTYxNzQ3NTcyNjE2YzQxNTA1OTAwZjYwMTA4NjM2MTZjNmM0MjYxNjM2YjAwZjcwMTBhNWY1ZjY0NjE3NDYxNWY2NTZlNjQwMzAxMGI1ZjVmNjg2NTYxNzA1ZjYyNjE3MzY1MDMwMjBhOWFhOTAxZDEwMTE2MDEwMTdmMTAyYTIyMDE0MjAwMTAwMTIwMDEyMDAxMjAwMDEwMDIyMDAxMGIxOTAxMDE3ZjQxYzg4ZDA4NDFjODhkMDgyODAyMDA0MTAxNmIyMjAwMzYwMjAwMjAwMDBiMmUwMDAyNDAyMDAxMjAwMjRkMDQ0MDIwMDIyMDA0NGQwZDAxMTAyYzAwMGIxMDJjMDAwYjIwMDAyMDAyMjAwMTZiMzYwMjA0MjAwMDIwMDEyMDAzNmEzNjAyMDAwYjBiMDA0MWI4OGQwODQxMGUxMDAzMDAwYjEzMDEwMTdmMTAyYTIyMDEyMDAwYWQ0MmZmMDE4MzEwMDEyMDAxMGIyMTAxMDE3ZjEwMmEyMTAxMjAwMDQyMDA1MzA0NDA0MWIyODUwODQxMTExMDAzMDAwYjIwMDEyMDAwMTAwMTIwMDEwYjBmMDEwMTdmMTAwNDIyMDEyMDAwMTAwNTFhMjAwMTBiMGIwMDIwMDAyMDAxMTAwNjQxMDA0YTBiMmQwMTAxN2YyMzAwNDEyMDZiMjIwMjI0MDAyMDAyMjAwMDEwMzI0MWMwODAwODQxMDgxMDMzMjAwMjIwMDEzNjAyMTgyMDAyMTAzNDIwMDI0MTIwNmEyNDAwMGIxOTAwMjAwMDQxZmVmZmZmZmYwNzQ2MDQ0MDQxYzg4MDA4NDExOTEwMDMwMDBiMjAwMDBiMmEwMDIwMDIyMDAzMTA0ZDIxMDIxMDQzMjEwMzIwMDA0MjdmMzcwMzA4MjAwMDIwMDMzNjAyMDQyMDAwMjAwMjM2MDIwMDIwMDAyMDAxMzYwMjEwMGI3ZDAxMDM3ZjIzMDA0MTEwNmIyMjAxMjQwMDIwMDAyOTAzMDgxMDcxMjAwMDI4MDIxMDIwMDAyODAyMTgyMDAwMjgwMjAwMjAwMDI4MDIwNDEwNDUyMTAyMTAxNzQxMDAyMTAwMjAwMjEwMTIyMTAzMjAwMTQxMDAzNjAyMGMyMDAxMjAwMjM2MDIwNDIwMDEyMDAzNDEwMjc2MjIwMjM2MDIwODAzNDAyMDAwMjAwMjRmNDUwNDQwMjAwMTQxMDQ2YTEwNzUxYTIwMDEyODAyMDgyMTAyMjAwMTI4MDIwYzIxMDAwYzAxMGIwYjIwMDE0MTEwNmEyNDAwMGIzNjAxMDI3ZjIzMDA0MTEwNmIyMjAxMjQwMDIwMDE0MTA4NmExMDM2MjAwMTI4MDIwODIxMDIyMDAwMjAwMTJkMDAwYzQxMDE3MTNhMDAwNDIwMDAyMDAyMzYwMjAwMjAwMTQxMTA2YTI0MDAwYjZkMDEwMjdmMjMwMDQxMTA2YjIyMDEyNDAwMjAwMDAyN2Y0MWUwZGIwODJkMDAwMDIyMDI0NTA0NDA0MWUwZGIwODQxMDEzYTAwMDA0MWRjZGIwODQxMDAzNjAyMDAyMDAxNDEwODZhNDEwMDEwOWYwMTIwMDEyODAyMDgyMDAxMjgwMjBjNDFiODhkMDg0MTAwMTA1NzEwNDMwYzAxMGI0MWI4OGQwODQxMDAxMDRkMGIzNjAyMDAyMDAwMjAwMjQxMDE3MzNhMDAwNDIwMDE0MTEwNmEyNDAwMGIwYjAwMjAwMDIwMDExMDM4MTAwNzFhMGI0OTAxMDE3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDIyMDAxM2EwMDBjMjAwMjIwMDAzNjAyMDgyMDAyNDEwODZhMTBhNTAxMjAwMjI4MDIwODIwMDIyZDAwMGMwNDQwNDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGIyMDAyNDExMDZhMjQwMDBiMGUwMDIwMDA0MThhODUwODQxMGIxMDNhMTAzYjBiMTMwMDIwMDAyMDAwMjAwMTIwMDIxMDUyMjAwMTIwMDIxMDg1MDEwYjBkMDAyMDAwMTAyYTIyMDAxMDFkMWEyMDAwMGIwYTAwMjAwMDEwM2QyMDAxMTAzZTBiMGYwMTAxN2YxMDJhMjIwMTIwMDAxMDFjMWEyMDAxMGI1MTAxMDI3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDIyMDAwMTAxMjIyMDM0MTE4NzQyMDAzNDE4MGZlMDM3MTQxMDg3NDcyMjAwMzQxMDg3NjQxODBmZTAzNzEyMDAzNDExODc2NzI3MjM2MDIwYzIwMDEyMDAyNDEwYzZhNDEwNDEwYTMwMTIwMDEyMDAwMTBiZDAxMjAwMjQxMTA2YTI0MDAwYjBhMDAyMDAwMTAzZDIwMDExMDQwMGI1MTAxMDI3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDIyMDAwMTAxMjIyMDM0MTE4NzQyMDAzNDE4MGZlMDM3MTQxMDg3NDcyMjAwMzQxMDg3NjQxODBmZTAzNzEyMDAzNDExODc2NzI3MjM2MDIwYzIwMDEyMDAyNDEwYzZhNDEwNDEwMGYxYTIwMDEyMDAwMTA4YjAxMjAwMjQxMTA2YTI0MDAwYjA5MDAyMDAwMjAwMTEwMDMwMDBiNTAwMTA0N2YxMDQzMjEwNjEwNDMyMTA3MjMwMDQxMTA2YjIyMDQyNDAwMTA0MzIxMDUyMDAxMTAyZjIxMDEyMDA0MjAwMzEwMjkzNjAyMGMyMDA0MjAwMjM3MDMwMDIwMDQyMDAxMzYwMjA4MjAwNTIwMDQxMDQ0MjAwMDIwMDU0MjAwMjAwNjIwMDcxMDA4MWEyMDA0NDExMDZhMjQwMDBiMTMwMTAxN2YxMDJhMjIwMDQxYjg4ZDA4NDEwMDEwMTgxYTIwMDAwYmQyMDEwMjAyN2YwMTdlMjMwMDQxMTA2YjIyMDMyNDAwMjAwMzIwMDEyODAyMDgyMjAyNDExODc0MjAwMjQxODBmZTAzNzE0MTA4NzQ3MjIwMDI0MTA4NzY0MTgwZmUwMzcxMjAwMjQxMTg3NjcyNzIzNjAyMDAyMDAzMjAwMTI4MDIwYzIyMDI0MTE4NzQyMDAyNDE4MGZlMDM3MTQxMDg3NDcyMjAwMjQxMDg3NjQxODBmZTAzNzEyMDAyNDExODc2NzI3MjM2MDIwYzIwMDMyMDAxMjkwMzAwMjIwNDQyMzg4NjIwMDQ0MjgwZmUwMzgzNDIyODg2ODQyMDA0NDI4MDgwZmMwNzgzNDIxODg2MjAwNDQyODA4MDgwZjgwZjgzNDIwODg2ODQ4NDIwMDQ0MjA4ODg0MjgwODA4MGY4MGY4MzIwMDQ0MjE4ODg0MjgwODBmYzA3ODM4NDIwMDQ0MjI4ODg0MjgwZmUwMzgzMjAwNDQyMzg4ODg0ODQ4NDM3MDIwNDIwMDAyMDAzNDExMDEwMGYxYTIwMDM0MTEwNmEyNDAwMGIxNTAwMjAwMDIwMDEyMDAyMjAwMzIwMDQxMDJhMjIwMTEwMDkxYTIwMDEwYjBjMDEwMTdmMTAyYTIyMDAxMDBhMjAwMDBiMGMwMTAxN2YxMDJhMjIwMDEwMGIyMDAwMGIwYzAxMDE3ZjEwMmEyMjAwMTAwYzIwMDAwYjE1MDAxMDQ4MTA0NjEwMzAwNDQwMGYwYjQxOTI4ZDA4NDEyNDEwMDMwMDBiMmIwMTAxN2Y0MWU4ZGIwODJkMDAwMDIyMDAwNDQwNDE2YjQxZmZmZmZmZmYwNzIwMDAxYjBmMGI0MWU4ZGIwODQxMDEzYTAwMDA0MTZiMTAwZDQxNmIwYjBkMDAyMDAwMTAyYTIyMDAxMDBlMWEyMDAwMGIyZTAxMDE3ZjQxZDU4MzA4NDExNzEwNGQyMjA0MjAwMDIwMDExMDBmMWEyMDA0NDFlYzgzMDg0MTAzMTAwZjFhMjAwNDIwMDIyMDAzMTAwZjFhMjAwNDEwMDAwMDBiMTEwMTAxN2YxMDJhMjIwMjIwMDAyMDAxMTAxODFhMjAwMjBiNDYwMTAxN2YyMzAwNDExMDZiMjIwMjI0MDAyMDAyMjAwMTQxMTg3NDIwMDE0MTgwZmUwMzcxNDEwODc0NzIyMDAxNDEwODc2NDE4MGZlMDM3MTIwMDE0MTE4NzY3MjcyMzYwMjBjMjAwMDIwMDI0MTBjNmE0MTA0MTAwZjFhMjAwMjQxMTA2YTI0MDAwYjBlMDEwMTdmNDEwMDEwMmEyMjAwMTAxMDIwMDAwYjFmMDAyMDAwMTA0YjIyMDAxMDEyNDEyMDQ3MDQ0MDIwMDEyMDAyNDFiMDg2MDg0MTEwMTA0YzAwMGIyMDAwMGJkOTAzMDEwOTdmMjMwMDQxNDA2YTIyMDEyNDAwMjAwMDEwNGIyMTAyMTA0MzIxMDYyMDAyMTAxMjIxMDAyMDAxNDEyNDZhNDEwMDNhMDAwMDIwMDE0MTIwNmEyMDAwMzYwMjAwMjAwMTIwMDIzNjAyMWMyMDAxMjAwMDM2MDIxODIwMDE0MTAwMzYwMjE0NDEwMDIxMDIwMzdmMjAwMDIwMDI0NjA0N2YyMDAxMmQwMDI0MDQ0MDQxZGNkYjA4NDEwMDM2MDIwMDQxZTBkYjA4NDEwMDNhMDAwMDBiMjAwMTQxNDA2YjI0MDAyMDA2MDUyMDAxNDExNDZhMjIwMDQxOTc4NzA4NDExNjEwM2EyMTA0MjAwMDQxOTc4NzA4NDExNjEwNTIyMTAwMTA0MzIxMDMwMzQwMjAwMDA0NDAyMDAxNDExNDZhMjIwNTQxOTc4NzA4NDExNjEwNTIyMTA3MjAwNTQxOTc4NzA4NDExNjEwNTMyMTA4MjAwNTQxOTc4NzA4NDExNjEwM2EyMTA5NDEwMDIxMDIwMjQwMDI0MDAyNDAyMDA1NDE5Nzg3MDg0MTE2MTA1NDQxZmYwMTcxMGUwMjAyMDEwMDBiNDE5Nzg3MDg0MTE2NDFlZDg2MDg0MTBkMTA0YzAwMGI0MTAxMjEwMjBiMjAwMTIwMDIzYTAwMzQyMDAxMjAwOTM2MDIzMDIwMDEyMDA4MzYwMjJjMjAwMTIwMDczNjAyMjgyMDAzMjAwMTQxMjg2YTEwNTUyMDAwNDEwMTZiMjEwMDBjMDEwYjBiMjAwMTQyMDAzNzAzMjgyMDAxMjAwNDQxMTg3NDIwMDQ0MTgwZmUwMzcxNDEwODc0NzIyMDA0NDEwODc2NDE4MGZlMDM3MTIwMDQ0MTE4NzY3MjcyMzYwMjNjMjAwMTQxMDg2YTIwMDE0MTI4NmEyMjAwNDEwMDQxMDQxMDU2MjAwMTI4MDIwODIwMDEyODAyMGMyMDAxNDEzYzZhMjIwMjQxMDQxMDU3MjAwMTIwMDM0MTE4NzQyMDAzNDE4MGZlMDM3MTQxMDg3NDcyMjAwMzQxMDg3NjQxODBmZTAzNzEyMDAzNDExODc2NzI3MjM2MDIzYzIwMDEyMDAwNDEwNDQxMDgxMDU2MjAwMTI4MDIwMDIwMDEyODAyMDQyMDAyNDEwNDEwNTcyMDA2MjAwMDQxMDgxMDBmMWEyMDAxMjgwMjE0MjEwMjIwMDEyODAyMTgyMTAwMGMwMTBiMGIwYjM3MDIwMTdmMDE3ZTIzMDA0MTEwNmIyMjAzMjQwMDIwMDM0MTAwMzYwMjBjMjAwMDIwMDM0MTBjNmEyMjAwNDEwNDIwMDEyMDAyMTBjNTAxMjAwMDQxMDQxMGIxMDEyMDAzNDExMDZhMjQwMGE3MGIwZDAwMjAwMDQxMjAyMDAxMjAwMjEwODUwMTBiMzAwMTAxN2YyMzAwNDExMDZiMjIwMzI0MDAyMDAzNDEwMDNhMDAwZjIwMDAyMDAzNDEwZjZhNDEwMTIwMDEyMDAyMTBjNTAxMjAwMzJkMDAwZjIwMDM0MTEwNmEyNDAwMGJmNjAyMDEwNTdmMjMwMDQxZDAwMDZiMjIwMjI0MDAyMDAyNDIwMDM3MDAzNTIwMDI0MjAwMzcwMzMwMjAwMjIwMDEyODAyMDAyMjAzNDExODc0MjAwMzQxODBmZTAzNzE0MTA4NzQ3MjIwMDM0MTA4NzY0MTgwZmUwMzcxMjAwMzQxMTg3NjcyNzIzNjAyNDAyMDAyNDEyODZhMjAwMjQxMzA2YTIyMDU0MTAwNDEwNDEwOWIwMTIwMDIyODAyMjgyMDAyMjgwMjJjMjAwMjQxNDA2YjIyMDQ0MTA0MTA1NzIwMDI0MWM4MDA2YTQxMDAzYTAwMDAyMDAyNDIwMDM3MDM0MDIwMDIyMDAxMjgwMjA0MjIwMzQxMTg3NDIwMDM0MTgwZmUwMzcxNDEwODc0NzIyMDAzNDEwODc2NDE4MGZlMDM3MTIwMDM0MTE4NzY3MjcyMzYwMjRjMjAwMjQxMjA2YTIwMDQ0MTAwNDEwNDEwOWMwMTIwMDIyODAyMjAyMDAyMjgwMjI0MjAwMjQxY2MwMDZhMjIwNjQxMDQxMDU3MjAwMjIwMDE0MTA4NmEyODAyMDAyMjAzNDExODc0MjAwMzQxODBmZTAzNzE0MTA4NzQ3MjIwMDM0MTA4NzY0MTgwZmUwMzcxMjAwMzQxMTg3NjcyNzIzNjAyNGMyMDAyNDExODZhMjAwNDQxMDQ0MTA4MTA5YzAxMjAwMjI4MDIxODIwMDIyODAyMWMyMDA2NDEwNDEwNTcyMDAyMjAwMTQxMGM2YTJkMDAwMDNhMDA0YzIwMDI0MTEwNmEyMDA0NDEwODQxMDkxMDljMDEyMDAyMjgwMjEwMjAwMjI4MDIxNDIwMDY0MTAxMTA1NzIwMDI0MTA4NmEyMDA1NDEwNDQxMGQxMDliMDEyMDAyMjgwMjA4MjAwMjI4MDIwYzIwMDQ0MTA5MTA1NzIwMDAyMDA1NDEwZDEwMGYxYTIwMDI0MWQwMDA2YTI0MDAwYjBmMDAyMDAwMjAwMTIwMDIyMDAzNDEwODEwZjkwMTBiYjUwMjAxMDY3ZjIwMDEyMDAzNDYwNDQwMjAwMTIyMDM0MTEwNGYwNDQwMjAwMDQxMDAyMDAwNmI0MTAzNzEyMjA0NmEyMTA1MjAwNDA0NDAyMDAyMjEwMTAzNDAyMDAwMjAwMTJkMDAwMDNhMDAwMDIwMDE0MTAxNmEyMTAxMjAwMDQxMDE2YTIyMDAyMDA1NDkwZDAwMGIwYjIwMDUyMDAzMjAwNDZiMjIwMzQxN2M3MTIyMDY2YTIxMDAwMjQwMjAwMjIwMDQ2YTIyMDQ0MTAzNzEwNDQwMjAwNjQxMDA0YzBkMDEyMDA0NDEwMzc0MjIwMTQxMTg3MTIxMDcyMDA0NDE3YzcxMjIwODQxMDQ2YTIxMDI0MTAwMjAwMTZiNDExODcxMjEwOTIwMDgyODAyMDAyMTAxMDM0MDIwMDUyMDAxMjAwNzc2MjAwMjI4MDIwMDIyMDEyMDA5NzQ3MjM2MDIwMDIwMDI0MTA0NmEyMTAyMjAwNTQxMDQ2YTIyMDUyMDAwNDkwZDAwMGIwYzAxMGIyMDA2NDEwMDRjMGQwMDIwMDQyMTAyMDM0MDIwMDUyMDAyMjgwMjAwMzYwMjAwMjAwMjQxMDQ2YTIxMDIyMDA1NDEwNDZhMjIwNTIwMDA0OTBkMDAwYjBiMjAwMzQxMDM3MTIxMDMyMDA0MjAwNjZhMjEwMjBiMjAwMzA0NDAyMDAwMjAwMzZhMjEwMTAzNDAyMDAwMjAwMjJkMDAwMDNhMDAwMDIwMDI0MTAxNmEyMTAyMjAwMDQxMDE2YTIyMDAyMDAxNDkwZDAwMGIwYjBmMGIxMDJjMDAwYmEyMDMwMTA3N2YyMzAwNDE0MDZhMjIwMTI0MDAyMDAwMTA0YjIxMDIxMDQzMjEwNTIwMDIxMDEyMjEwMDIwMDE0MTJjNmE0MTAwM2EwMDAwMjAwMTQxMjg2YTIwMDAzNjAyMDAyMDAxMjAwMjM2MDIyNDIwMDEyMDAwMzYwMjIwMjAwMTQxMDAzNjAyMWM0MTAwMjEwMjAzN2YyMDAwMjAwMjQ2MDQ3ZjIwMDEyZDAwMmMwNDQwNDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGIyMDAxNDE0MDZiMjQwMDIwMDUwNTIwMDE0MTFjNmEyMjAwNDFhZDg3MDg0MTE4MTAzYTIxMDMyMDAwNDFhZDg3MDg0MTE4MTA1MjIxMDAxMDQzMjEwMjAzNDAyMDAwMDQ0MDIwMDE0MTFjNmEyMjA0NDFhZDg3MDg0MTE4MTA1MjIxMDYyMDA0NDFhZDg3MDg0MTE4MTA1MzIxMDcyMDA0NDFhZDg3MDg0MTE4MTAzYTIxMDQyMDAxMjAwNjM2MDIzODIwMDEyMDA0MzYwMjM0MjAwMTIwMDczNjAyMzAyMDAyMjAwMTQxMzA2YTEwNTkyMDAwNDEwMTZiMjEwMDBjMDEwYjBiMjAwMTQyMDAzNzAzMzAyMDAxMjAwMzQxMTg3NDIwMDM0MTgwZmUwMzcxNDEwODc0NzIyMDAzNDEwODc2NDE4MGZlMDM3MTIwMDM0MTE4NzY3MjcyMzYwMjNjMjAwMTQxMTA2YTIwMDE0MTMwNmEyMjAwNDEwMDQxMDQxMDU2MjAwMTI4MDIxMDIwMDEyODAyMTQyMDAxNDEzYzZhMjIwMzQxMDQxMDU3MjAwMTIwMDI0MTE4NzQyMDAyNDE4MGZlMDM3MTQxMDg3NDcyMjAwMjQxMDg3NjQxODBmZTAzNzEyMDAyNDExODc2NzI3MjM2MDIzYzIwMDE0MTA4NmEyMDAwNDEwNDQxMDgxMDU2MjAwMTI4MDIwODIwMDEyODAyMGMyMDAzNDEwNDEwNTcyMDA1MjAwMDQxMDgxMDBmMWEyMDAxMjgwMjFjMjEwMjIwMDEyODAyMjAyMTAwMGMwMTBiMGIwYmI4MDIwMTA0N2YyMzAwNDE0MDZhMjIwMjI0MDAyMDAyNDEyODZhNDEwMDM2MDIwMDIwMDI0MjAwMzcwMzIwMjAwMjIwMDEyODAyMDgyMjAzNDExODc0MjAwMzQxODBmZTAzNzE0MTA4NzQ3MjIwMDM0MTA4NzY0MTgwZmUwMzcxMjAwMzQxMTg3NjcyNzIzNjAyMzAyMDAyNDExODZhMjAwMjQxMjA2YTIyMDU0MTAwNDEwNDEwOWEwMTIwMDIyODAyMTgyMDAyMjgwMjFjMjAwMjQxMzA2YTIyMDQ0MTA0MTA1NzIwMDI0MjAwMzcwMzMwMjAwMjIwMDEyODAyMDAyMjAzNDExODc0MjAwMzQxODBmZTAzNzE0MTA4NzQ3MjIwMDM0MTA4NzY0MTgwZmUwMzcxMjAwMzQxMTg3NjcyNzIzNjAyM2MyMDAyNDExMDZhMjAwNDQxMDA0MTA0MTA1NjIwMDIyODAyMTAyMDAyMjgwMjE0MjAwMjQxM2M2YTIyMDM0MTA0MTA1NzIwMDIyMDAxMjgwMjA0MjIwMTQxMTg3NDIwMDE0MTgwZmUwMzcxNDEwODc0NzIyMDAxNDEwODc2NDE4MGZlMDM3MTIwMDE0MTE4NzY3MjcyMzYwMjNjMjAwMjQxMDg2YTIwMDQ0MTA0NDEwODEwNTYyMDAyMjgwMjA4MjAwMjI4MDIwYzIwMDM0MTA0MTA1NzIwMDIyMDA1NDEwNDQxMGMxMDlhMDEyMDAyMjgwMjAwMjAwMjI4MDIwNDIwMDQ0MTA4MTA1NzIwMDAyMDA1NDEwYzEwMGYxYTIwMDI0MTQwNmIyNDAwMGIxNDAwMTAxMzIwMDA0NjA0NDAwZjBiNDE5Mjg0MDg0MTE5MTAwMzAwMGIwOTAwMjAwMDEwNWMxMDA3MWEwYjFkMDAyMDAwMTBhNzAxMjIwMDEwMTI0MTIwNDcwNDQwNDFiMDg2MDg0MTEwMTA4ODAxMDAwYjIwMDAwYjBhMDAyMDAwMTBhNzAxMTAwNzFhMGIwODAwMjAwMDEwNWYxMDE0MGI2MTAyMDI3ZjAxN2UyMzAwNDExMDZiMjIwMTI0MDAyMDAxNDIwMDM3MDMwODIwMDAxMGE3MDEyMjAwMTAxMjIyMDI0MTA5NGYwNDQwNDE5NTg1MDg0MTBlMTA4ODAxMDAwYjIwMDEyMDAxNDEwODZhMjAwMjEwYjAwMTIwMDA0MTAwMjAwMTI4MDIwMDIyMDAyMDAxMjgwMjA0MjIwMjEwOGEwMTFhMjAwMDIwMDIxMGIxMDEyMDAxNDExMDZhMjQwMDBiMWYwMDIwMDAyMDAxMjAwMjEwMTUyMDAwMTA2MTQxZmYwMTcxMDQ0MDBmMGI0MWFiODQwODQxMzAxMDAzMDAwYjE1MDA0MTAyNDEwMTIwMDAxMDI3MjIwMDFiNDEwMDIwMDA0MTAwNGUxYjBiZjgwMTAxMDQ3ZjIzMDA0MWQwMDA2YjIyMDUyNDAwMjAwNTIwMDQzNjAyMjgyMDA1NDEyMDZhNDFkYjg0MDg0MTE0MTA2MzIwMDUyODAyMjAyMTA3MjAwNTI4MDIyNDIyMDYyMDAzMTA2NDIwMDQxMDY1MjEwMzEwNDMyMjA4MjAwM2FkMTA2NjIwMDYyMDA4MTA0ZTIwMDUyMDA0MTAxMjM2MDIzNDIwMDU0MTAwMzYwMjMwMjAwNTIwMDU0MTI4NmEzNjAyMmMwMzQwMjAwNTQxMzg2YTIwMDU0MTJjNmExMDY3MjAwNTI5MDMzODUwMDQ0MDIwMDUyMDA3MjAwNjIwMDEyMDAyMTA2ODIwMDUyODAyMDQyMTAxMjAwMDIwMDUyODAyMDAzNjAyMDAyMDAwMjAwMTM2MDIwNDIwMDU0MWQwMDA2YTI0MDAwNTIwMDUyODAyNGMyMTAzMjAwNTQxMTg2YTIwMDcyMDA2MjAwNTI4MDI0ODEwNjkyMDA1NDExMDZhMjAwNTI4MDIxODIwMDUyODAyMWMyMDA1MjkwMzQwMTA2YTIwMDU0MTA4NmEyMDA1MjgwMjEwMjAwNTI4MDIxNDIwMDMxMDZiMjAwNTI4MDIwYzIxMDYyMDA1MjgwMjA4MjEwNzBjMDEwYjBiMGIxODAwMjAwMTIwMDIxMDRkMjEwMTIwMDAxMDQzMzYwMjA0MjAwMDIwMDEzNjAyMDAwYjEwMDAxMDQzMWEyMDAwMjAwMTI4MDIwMDEwMmYxMDRlMGIwOTAwMjAwMDEwMTI0MTA0NzYwYjM4MDEwMTdmMjMwMDQxMTA2YjIyMDIyNDAwMjAwMjQyMDAzNzAzMDgyMDAyMjAwMTQxMDAyMDAyNDEwODZhMTA4MjAxMjAwMDIwMDIyODAyMDAyMDAyMjgwMjA0MTAxODFhMjAwMjQxMTA2YTI0MDAwYmE3MDEwMjA1N2YwMTdlMjMwMDQxMjA2YjIyMDIyNDAwMjAwMDIwMDEyODAyMDQyMjA0NDExMDZhMjIwNTIwMDEyODAyMDg0ZDA0N2UyMDAxMjgwMjAwMjAwMjQxMTA2YTQyMDAzNzAzMDAyMDAyNDIwMDM3MDMwODI4MDIwMDIwMDQyMDAyNDEwODZhMjIwMzQxMTAxMDZmMWEyMDAyNDEwMDM2MDIxYzIwMDMyMDAyNDExYzZhMjIwNjEwOTgwMTIxMDQyMDAzMjAwNjEwOTkwMTIxMDcyMDAwNDExNDZhMjAwMjQxMDg2YTIwMDI0MTFjNmExMDk4MDEzNjAyMDAyMDAwNDExMDZhMjAwNDM2MDIwMDIwMDAyMDA3MzcwMzA4MjAwMTIwMDUzNjAyMDQ0MjAxMDU0MjAwMGIzNzAzMDAyMDAyNDEyMDZhMjQwMDBiOTEwMTAxMDM3ZjIzMDA0MTEwNmIyMjA1MjQwMDAyNDAyMDAzMTAxMjQ1MGQwMDIwMDIyMDAzMTA2ZTIwMDQxMDEyMjEwNjQxMDAyMTAzMDM0MDIwMDM0MTA0NmEyMjA3MjAwNjRiMGQwMTIwMDU0MTAwMzYwMjBjMjAwNDIwMDMyMDA1NDEwYzZhNDEwNDEwNmYxYTIwMDIyMDA1MjgwMjBjMjIwMzQxMTg3NDIwMDM0MTgwZmUwMzcxNDEwODc0NzIyMDAzNDEwODc2NDE4MGZlMDM3MTIwMDM0MTE4NzY3MjcyMTA2ZTIwMDcyMTAzMGMwMDBiMDAwYjIwMDAyMDAyMzYwMjA0MjAwMDIwMDEzNjAyMDAyMDA1NDExMDZhMjQwMDBiMTYwMDIwMDIyMDAzMTA2ZTIwMDAyMDAyMzYwMjA0MjAwMDIwMDEzNjAyMDAwYjIwMDEwMTdmMTA0MzIyMDQyMDAzMTA2NjIwMDIyMDA0MTA0ZTIwMDAyMDAyMzYwMjA0MjAwMDIwMDEzNjAyMDAwYjE2MDAyMDAzMjAwMjEwNzAyMDAwMjAwMjM2MDIwNDIwMDAyMDAxMzYwMjAwMGJhMzAxMDEwMjdmMjMwMDQxMzA2YjIyMDUyNDAwMjAwNTQxMjg2YTQxZWY4NDA4NDEwZjEwNjMyMDA1NDEyMDZhMjAwNTI4MDIyODIwMDUyODAyMmMyMDA0MjgwMjA4MTA2OTIwMDU0MTE4NmEyMDA1MjgwMjIwMjAwNTI4MDIyNDIwMDQyOTAzMDAxMDZhMjAwNTQxMTA2YTIwMDUyODAyMTgyMDA1MjgwMjFjMjAwNDI4MDIwYzEwNmIyMDA1MjgwMjEwMjEwNDIwMDUyODAyMTQyMTA2MTA0MzFhMjAwNjIwMDMxMDJmMTA0ZTIwMDU0MTA4NmEyMDA0MjAwNjIwMDEyMDAyMTA2ODIwMDUyODAyMGMyMTAxMjAwMDIwMDUyODAyMDgzNjAyMDAyMDAwMjAwMTM2MDIwNDIwMDU0MTMwNmEyNDAwMGI3MTAxMDE3ZjIzMDA0MTIwNmIyMjA1MjQwMDIwMDU0MTE4NmE0MWZlODQwODQxMGMxMDYzMjAwNTQxMTA2YTIwMDUyODAyMTgyMDA1MjgwMjFjMjAwMzEwNjkyMDA1NDEwODZhMjAwNTI4MDIxMDIwMDUyODAyMTQyMDA0MTA2YjIwMDUyMDA1MjgwMjA4MjAwNTI4MDIwYzIwMDEyMDAyMTA2ODIwMDUyODAyMDQyMTAxMjAwMDIwMDUyODAyMDAzNjAyMDAyMDAwMjAwMTM2MDIwNDIwMDU0MTIwNmEyNDAwMGIwZDAwMTA0MzFhMjAwMDIwMDExMDJmMTA0ZTBiMGQwMDIwMDAyMDAxMjAwMjIwMDMxMDhhMDEwYjBkMDAxMDQzMWEyMDAxMjAwMDEwM2QxMDRlMGIwZjAwMjAwMDQyN2Y1MTA0N2UxMDE2MDUyMDAwMGIwYjMwMDEwMTdlMjAwMDI5MDMwODIyMDE0MjdmNTEwNDdlMTAxNjA1MjAwMTBiMjAwMDI4MDIxMDIwMDAyODAyMTgyMDAwMjgwMjAwMjAwMDI4MDIwNDEwNDUxMDE3MTA3MzBiM2IwMTAyN2YyMzAwNDExMDZiMjIwMTI0MDAyMDAwMTAxMjIxMDIyMDAxNDEwMDM2MDIwYzIwMDEyMDAwMzYwMjA0MjAwMTIwMDI0MTAyNzYzNjAyMDgyMDAxNDEwNDZhMTA3NTEwM2IyMDAxNDExMDZhMjQwMDBiMjQwMDIwMDAyOTAzMDgxMDcxMjAwMDI4MDIxMDIwMDAyODAyMTgyMDAwMjgwMjAwMjAwMDI4MDIwNDEwNDUxMDE3MTAxMjFhMGI3ZDAxMDM3ZjIzMDA0MTEwNmIyMjAxMjQwMDIwMDAyODAyMDgyMTAzMjAwMTQxMDAzNjAyMGMyMDAwMjgwMjAwMjAwMzQxMDI3NDIwMDE0MTBjNmE0MTA0MTA2ZjQ1MDQ0MDIwMDEyODAyMGMyMTAyMjAwMDIwMDM0MTAxNmEzNjAyMDgyMDAyNDExODc0MjAwMjQxODBmZTAzNzE0MTA4NzQ3MjIwMDI0MTA4NzY0MTgwZmUwMzcxMjAwMjQxMTg3NjcyNzIxMDJmMjAwMTQxMTA2YTI0MDAwZjBiNDE4YTg1MDg0MTBiNDFlZjgzMDg0MTExMTA0YzAwMGI5MDAyMDIwMjdmMDE3ZTIzMDA0MWQwMDA2YjIyMDIyNDAwMjAwMTI5MDMwODIyMDQ0MjdmNTEwNDdlMTAxNjA1MjAwNDBiMjAwMTI4MDIxMDIwMDEyODAyMTgyMDAxMjgwMjAwMjAwMTI4MDIwNDEwNDUyMTAxMTAxNzIwMDExMDEyMjEwMzIwMDI0MTAwMzYwMjE0MjAwMjIwMDEzNjAyMGMyMDAyMjAwMzQxMDI3NjM2MDIxMDIwMDI0MTBjNmExMDc1MjIwMzEwMTIyMTAxMjAwMjQxM2M2YTQxMDAzYTAwMDAyMDAyNDEzODZhMjAwMTM2MDIwMDIwMDIyMDAzMzYwMjM0MjAwMjIwMDEzNjAyMzAyMDAyNDEwMDM2MDIyYzIwMDI0MTQwNmIyMDAyNDEyYzZhMTA3NzIwMDIyODAyMzAyMDAyMjgwMjJjNDYwNDQwMjAwMjQxMjA2YTIyMDEyMDAyNDFjODAwNmEyOTAzMDAzNzAzMDAyMDAyMjAwMjI5MDM0MDM3MDMxODIwMDIyZDAwM2MwNDQwNDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGIyMDAwMjAwMjI5MDMxODM3MDMwMDIwMDA0MTA4NmEyMDAxMjkwMzAwMzcwMzAwMjAwMjQxZDAwMDZhMjQwMDBmMGI0MThhODUwODQxMGI0MTk1ODUwODQxMGUxMDRjMDAwYjMwMDIwMTdmMDE3ZTIwMDE0MThhODUwODQxMGIxMDNhMjEwMjIwMDExMGJlMDEyMTAzMjAwMDIwMDExMDM5MzYwMjBjMjAwMDIwMDIzNjAyMDgyMDAwMjAwMzM3MDMwMDBiMTAwMDEwNDMxYTIwMDAyMDAxMjgwMjAwMTAzZDEwNGUwYjBlMDAyMDAxNDUwNDQwMjAwMjIwMDAxMDcwMGIwYjgxMDEwMTA1N2YyMzAwNDExMDZiMjIwMzI0MDAxMDQzMTAyZjIxMDQyMDAxMjgwMjAwMTAxMjIxMDUwMzQwMjAwNTIwMDI0MTA0NmEyMjA2NGYwNDQwMjAwMzQxMDAzNjAyMGMyMDAxMjgwMjAwMjAwMjIwMDM0MTBjNmE0MTA0MTA2ZjFhMjAwMzI4MDIwYzIyMDI0MTE4NzQyMDAyNDE4MGZlMDM3MTQxMDg3NDcyMjAwMjQxMDg3NjQxODBmZTAzNzEyMDAyNDExODc2NzI3MjIwMDQxMDNmMjAwNjIxMDIwYzAxMGIwYjIwMDAyMDA0MTA0ZTIwMDM0MTEwNmEyNDAwMGI4MjAxMDEwNTdmMjMwMDQxMTA2YjIyMDMyNDAwMTA0MzEwMmYyMTA0MjAwMTI4MDIwMDEwMTIyMTA1MDM0MDIwMDUyMDAyNDEwNDZhMjIwNjRmMDQ0MDIwMDM0MTAwMzYwMjBjMjAwMTI4MDIwMDIwMDIyMDAzNDEwYzZhNDEwNDEwNmYxYTIwMDQyMDAzMjgwMjBjMjIwMjQxMTg3NDIwMDI0MTgwZmUwMzcxNDEwODc0NzIyMDAyNDEwODc2NDE4MGZlMDM3MTIwMDI0MTE4NzY3MjcyMTAwNTFhMjAwNjIxMDIwYzAxMGIwYjIwMDAyMDA0MTA0ZTIwMDM0MTEwNmEyNDAwMGI0ZDAxMDI3ZjIzMDA0MTIwNmIyMjAxMjQwMDEwN2QyMTAyMjAwMTQxMTA2YTIwMDA0MTEwNmEyOTAzMDAzNzAzMDAyMDAxNDEwODZhMjAwMDQxMDg2YTI5MDMwMDM3MDMwMDIwMDEyMDAyMzYwMjE4MjAwMTIwMDAyOTAzMDAzNzAzMDAyMDAxMTA3MjIwMDE0MTIwNmEyNDAwMGIwZTAxMDE3ZjEwMmEyMjAwNDIwMDEwMDEyMDAwMGI0ZjAxMDI3ZjIzMDA0MTIwNmIyMjAyMjQwMDEwN2QyMTAzMjAwMjQxMTA2YTIwMDE0MTEwNmEyOTAzMDAzNzAzMDAyMDAyNDEwODZhMjAwMTQxMDg2YTI5MDMwMDM3MDMwMDIwMDIyMDAzMzYwMjE4MjAwMjIwMDEyOTAzMDAzNzAzMDAyMDAwMjAwMjEwNzYyMDAyNDEyMDZhMjQwMDBiNGQwMTAyN2YyMzAwNDEyMDZiMjIwMTI0MDAxMDdkMjEwMjIwMDE0MTEwNmEyMDAwNDExMDZhMjkwMzAwMzcwMzAwMjAwMTQxMDg2YTIwMDA0MTA4NmEyOTAzMDAzNzAzMDAyMDAxMjAwMjM2MDIxODIwMDEyMDAwMjkwMzAwMzcwMzAwMjAwMTEwMzQyMDAxNDEyMDZhMjQwMDBiNzYwMjA1N2YwMTdlMjMwMDQxMTA2YjIyMDEyNDAwMTA3ZDIxMDIyMDAwMjgwMjEwMjEwMzIwMDAyODAyMDQyMTA0MjAwMDI4MDIwMDIxMDUyMDAwMjkwMzA4MjIwNjQyN2Y1MTA0N2UxMDE2MDUyMDA2MGIyMDAzMjAwMjIwMDUyMDA0MTA0NTIxMDAxMDE3MjAwMDEwMTIyMTAyMjAwMTQxMDAzNjAyMGMyMDAxMjAwMDM2MDIwNDIwMDEyMDAyNDEwMjc2MzYwMjA4MjAwMTQxMDQ2YTEwNzUxMDJmMjAwMTQxMTA2YTI0MDAwYjQ3MDEwMjdmMjMwMDQxMTA2YjIyMDIyNDAwMTA0MzIxMDMyMDAyNDIwMDM3MDMwODIwMDIyMDAxYWQ0MmZmMDE4MzQxMDEyMDAyNDEwODZhMTA4MjAxMjAwMzIwMDIyODAyMDAyMDAyMjgwMjA0MTAxODFhMjAwMDIwMDMxMDRlMjAwMjQxMTA2YTI0MDAwYjhmMDIwMjA0N2YwMTdlMjAwMzIwMDE0MjM4ODYyMDAxNDI4MGZlMDM4MzQyMjg4Njg0MjAwMTQyODA4MGZjMDc4MzQyMTg4NjIwMDE0MjgwODA4MGY4MGY4MzQyMDg4Njg0ODQyMDAxNDIwODg4NDI4MDgwODBmODBmODMyMDAxNDIxODg4NDI4MDgwZmMwNzgzODQyMDAxNDIzODg4MjIwODIwMDE0MjI4ODg0MjgwZmUwMzgzODQ4NDg0MzcwMDAwMDI0MDIwMDE1MDA0NDA0MWI4OGQwODIxMDMwYzAxMGIyMDAyMDQ0MDIwMDE0MjdmNTEwNDQwMjAwMzQxMDc2YTIxMDM0MTAxMjEwNDBjMDIwYjIwMDhhN2MwMjIwNTQxMDc3NTIxMDYyMDA1NDEwMDQ4MjEwNTBiMjAwNjQxZmYwMTcxMjEwNjAzNDAwMjQwMDI0MDIwMDQ0MTA4NDcwNDQwMjAwMzIwMDQ2YTJkMDAwMDIyMDcyMDA2NDYwZDAyMjAwMjQ1MjAwNzQxMDc3NjIwMDU0NjcyNDUwNDQwMjAwNDQxMDE2YjIyMDQ0MTA5NGYwZDAyMGIyMDAzMjAwNDZhMjEwMzQxMDgyMDA0NmIyMTA0MGMwNDBiMTAyYzAwMGIxMDJjMDAwYjIwMDQ0MTAxNmEyMTA0MGMwMDBiMDAwYjIwMDAyMDA0MzYwMjA0MjAwMDIwMDMzNjAyMDAwYmEzMDEwMjAzN2YwMTdlMjMwMDQxMTA2YjIyMDMyNDAwMDI3ZjIwMDIyOTAzMDA1MDA0NDAyMDAxMjgwMjEwMjEwNDIwMDMyMDAxMjgwMjAwMjAwMTI4MDIwNDIwMDIyODAyMDgyMDAyMjgwMjBjMTA2ZDIwMDMyODAyMDAyMTA1MjAwMzI4MDIwNDBjMDEwYjEwNDcyMTA0MjAwMzQxMDg2YTIwMDEyODAyMDAyMDAxMjgwMjA0MjAwMTI4MDIxMDIwMDIxMDZjMjAwMzI4MDIwODIxMDUyMDAzMjgwMjBjMGIyMTAyMjAwMTI5MDMwODIxMDYyMDAwMTA3ZDM2MDIxODIwMDAyMDA0MzYwMjEwMjAwMDIwMDYzNzAzMDgyMDAwMjAwMjM2MDIwNDIwMDAyMDA1MzYwMjAwMjAwMzQxMTA2YTI0MDAwYjNmMDEwMTdmMTA0MzIxMDMyMDAwMjAwMTI5MDMwMDM3MDMwMDIwMDA0MTEwNmEyMDAxNDExMDZhMjkwMzAwMzcwMzAwMjAwMDQxMDg2YTIwMDE0MTA4NmEyOTAzMDAzNzAzMDAyMDAzMjAwMjEwNDQyMDAwMjAwMzM2MDIxODBiNTIwMTAyN2YyMzAwNDExMDZiMjIwNDI0MDAyMDA0NDEwODZhMjAwMDI4MDIwODIwMDAyODAyMDAyMjA1MjAwMTEwODYwMTIwMDQyODAyMDg0MTAxNDYwNDQwMjAwNDI4MDIwYzIwMDAyMDAxMjAwNTZhMzYwMjAwMjAwNDQxMTA2YTI0MDAwZjBiMjAwMjIwMDM0MWEzODUwODQxMGYxMDRjMDAwYjFmMDAyMDAxMjAwMjIwMDMxMDA0MjIwMTEwMWYyMTAyMjAwMDIwMDEzNjAyMDQyMDAwMjAwMjQ1MzYwMjAwMGI0ZjAxMDM3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDI0MTA4NmEyMDAwMjgwMjA4MjAwMDI4MDIwMDIyMDMyMDAxMTA4NjAxMjAwMjI4MDIwODQxMDE0NjA0NDAyMDAyMjgwMjBjMjAwMDIwMDEyMDAzNmEzNjAyMDAyMDAyNDExMDZhMjQwMDBmMGI0MWEzODUwODQxMGYxMDg4MDEwMDBiMWEwMTAxN2Y0MWYxODUwODQxMTYxMDRkMjIwMjIwMDAyMDAxMTAwZjFhMjAwMjEwMDAwMDBiMTUwMDQxN2YyMDAwMjAwMTEwMTkyMjAwNDEwMDQ3MjAwMDQxMDA0ODFiMGIwZjAwMjAwMDIwMDEyMDAzMjAwMjEwMjg0MTAwNDcwYjA5MDAyMDAwMjAwMTEwMDUxYTBiMGMwMDIwMDAyMDAwMjAwMTEwMDIyMDAwMGIwYzAwMjAwMDIwMDAyMDAxMTAxYTIwMDAwYjBjMDAyMDAwMjAwMDIwMDExMDFiMjAwMDBiMGEwMDIwMDAyMDAwMjAwMTEwMDIwYjBjMDAyMDAwMjAwMDIwMDExMDYwMjAwMDBiMTAwMTAxN2YxMDJhMjIwMjIwMDAyMDAxMTAwMjIwMDIwYjEwMDEwMTdmMTAyYTIyMDIyMDAwMjAwMTEwMWIyMDAyMGIxMDAxMDE3ZjEwMmEyMjAyMjAwMDIwMDExMDYwMjAwMjBiMTkwMTAxN2YxMDJhMjEwMjQxNzIyMDAxYWQxMDAxMjAwMjIwMDA0MTcyMTAxZTIwMDIwYjBlMDEwMTdmMTA0MzIyMDEyMDAwMTA0NDIwMDEwYjRjMDEwMjdmMjMwMDQxMTA2YjIyMDEyNDAwMTA0MzIxMDIyMDAxMjAwMDQxMTg3NDIwMDA0MTgwZmUwMzcxNDEwODc0NzIyMDAwNDEwODc2NDE4MGZlMDM3MTIwMDA0MTE4NzY3MjcyMzYwMjBjMjAwMjIwMDE0MTBjNmE0MTA0MTAwZjFhMjAwMTQxMTA2YTI0MDAyMDAyMGI4NDAxMDIwNDdmMDE3ZTIzMDA0MTIwNmIyMjAyMjQwMDIwMDI0MTEwNmE0MjAwMzcwMzAwMjAwMjQyMDAzNzAzMDgyMDAxNDEwMDIwMDI0MTA4NmEyMjAzNDExMDEwNmYyMDAyNDEwMDM2MDIxYzIwMDMyMDAyNDExYzZhMjIwNDEwOTgwMTIxMDUyMDAzMjAwNDEwOTkwMTIxMDYyMDAyNDEwODZhMjAwMjQxMWM2YTEwOTgwMTIxMDMwNDQwNDFjMzg1MDg0MTFkMTAwMzAwMGIyMDAwMjAwMzM2MDIwYzIwMDAyMDA1MzYwMjA4MjAwMDIwMDYzNzAzMDAyMDAyNDEyMDZhMjQwMDBiNzQwMTAxN2YyMzAwNDExMDZiMjIwMjI0MDAyMDAyNDEwMDM2MDIwYzIwMDIyMDAwNDExMDIwMDEyODAyMDAyMjAwMjAwMDQxMDQ2YTIyMDAxMDlkMDEyMDAyNDEwYzZhNDEwNDIwMDIyODAyMDAyMDAyMjgwMjA0MTA1NzIwMDEyMDAwMzYwMjAwMjAwMjI4MDIwYzIxMDAyMDAyNDExMDZhMjQwMDIwMDA0MTE4NzQyMDAwNDE4MGZlMDM3MTQxMDg3NDcyMjAwMDQxMDg3NjQxODBmZTAzNzEyMDAwNDExODc2NzI3MjBiYTgwMTAyMDE3ZTAxN2YyMzAwNDExMDZiMjIwMzI0MDAyMDAzNDIwMDM3MDMwODIwMDMyMDAwNDExMDIwMDEyODAyMDAyMjAwMjAwMDQxMDg2YTIyMDAxMDlkMDEyMDAzNDEwODZhNDEwODIwMDMyODAyMDAyMDAzMjgwMjA0MTA1NzIwMDEyMDAwMzYwMjAwMjAwMzI5MDMwODIxMDIyMDAzNDExMDZhMjQwMDIwMDI0MjM4ODYyMDAyNDI4MGZlMDM4MzQyMjg4Njg0MjAwMjQyODA4MGZjMDc4MzQyMTg4NjIwMDI0MjgwODA4MGY4MGY4MzQyMDg4Njg0ODQyMDAyNDIwODg4NDI4MDgwODBmODBmODMyMDAyNDIxODg4NDI4MDgwZmMwNzgzODQyMDAyNDIyODg4NDI4MGZlMDM4MzIwMDI0MjM4ODg4NDg0ODQwYjBmMDAyMDAwMjAwMTIwMDIyMDAzNDEwYzEwZjkwMTBiMGYwMDIwMDAyMDAxMjAwMjIwMDM0MTBkMTBmOTAxMGIwZjAwMjAwMDIwMDEyMDAyMjAwMzQxMDkxMGY5MDEwYjJmMDAwMjQwMjAwMzIwMDQ0ZDA0NDAyMDAyMjAwNDQ5MGQwMTIwMDAyMDA0MjAwMzZiMzYwMjA0MjAwMDIwMDEyMDAzNmEzNjAyMDAwZjBiMTAyYzAwMGIxMDJjMDAwYmI0MDEwMTAzN2YyMzAwNDExMDZiMjIwNDI0MDAwMjdmMDI0MDIwMDAyZDAwMDg0NTA0NDAyMDAwMjgwMjAwMjIwNTEwMTIyMjA2NDE5MGNlMDA0YjBkMDE0MWUwZGIwODJkMDAwMDBkMDE0MWRjZGIwODIwMDYzNjAyMDA0MWUwZGIwODQxMDEzYTAwMDAyMDA0NDEwODZhMjAwNjEwOWYwMTIwMDU0MTAwMjAwNDI4MDIwODIwMDQyODAyMGMxMDZmMWEyMDAwNDEwMTNhMDAwODBiNDEwMTIwMDEyMDAzNmEyMjAwNDFkY2RiMDgyODAyMDA0YjBkMDExYTIwMDQyMDAxMjAwMDEwYTAwMTIwMDIyMDAzMjAwNDI4MDIwMDIwMDQyODAyMDQxMDU3NDEwMDBjMDEwYjIwMDA0MTAwM2EwMDA4MjAwNTIwMDEyMDAyMjAwMzEwNmYwYjIwMDQ0MTEwNmEyNDAwMGIzZTAxMDE3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDI0MTA4NmE0MWNjOGQwODQxOTBjZTAwMjAwMTEwZDAwMTIwMDIyODAyMGMyMTAxMjAwMDIwMDIyODAyMDgzNjAyMDAyMDAwMjAwMTM2MDIwNDIwMDI0MTEwNmEyNDAwMGIzMjAwMDI0MDIwMDEyMDAyNGQwNDQwMjAwMjQxOTBjZTAwNGQwZDAxMTAyYzAwMGIxMDJjMDAwYjIwMDAyMDAyMjAwMTZiMzYwMjA0MjAwMDIwMDE0MWNjOGQwODZhMzYwMjAwMGIxOTAwMjAwMDQxZmVmZmZmZmYwNzQ2MDQ0MDQxZTA4NTA4NDEwZDEwMDMwMDBiMjAwMDBiNGQwMTAxN2YyMzAwNDExMDZiMjIwMTI0MDAyMDAwMTAxMjQxMDQ0NjA0NDAyMDAxNDEwMDM2MDIwYzIwMDA0MTAwMjAwMTQxMGM2YTQxMDQxMDhhMDExYTQxZmVmZmZmZmYwNzIwMDAyMDAxMjgwMjBjNDFjNThlYjFhMjA0NDYxYjIxMDAwYjIwMDE0MTEwNmEyNDAwMjAwMDBiODAwMTAxMDI3ZjIzMDA0MTEwNmIyMjAzMjQwMDAyNDAwMjQwMjAwMDJkMDAwNDA0NDA0MTkwY2UwMDQxZGNkYjA4MjgwMjAwMjIwNDZiMjAwMjQ5MGQwMTIwMDM0MTA4NmEyMDA0MjAwMjIwMDQ2YTIyMDAxMGE0MDEyMDAzMjgwMjA4MjAwMzI4MDIwYzIwMDEyMDAyMTA1NzQxZGNkYjA4MjAwMDM2MDIwMDBjMDIwYjIwMDAyODAyMDAyMDAxMjAwMjEwMGYxYTBjMDEwYjIwMDAxMGE1MDEyMDAwMjgwMjAwMjAwMTIwMDIxMDBmMWEwYjIwMDM0MTEwNmEyNDAwMGIzZjAxMDE3ZjIzMDA0MTEwNmIyMjAzMjQwMDIwMDM0MTA4NmEyMDAxMjAwMjQxY2M4ZDA4NDE5MGNlMDAxMDJiMjAwMzI4MDIwYzIxMDEyMDAwMjAwMzI4MDIwODM2MDIwMDIwMDAyMDAxMzYwMjA0MjAwMzQxMTA2YTI0MDAwYjU4MDEwMjdmMjMwMDQxMTA2YjIyMDEyNDAwMjAwMDJkMDAwNDIwMDA0MTAwM2EwMDA0MDQ0MDIwMDE0MTA4NmE0MTAwNDFkY2RiMDgyODAyMDAxMGEwMDEyMDAwMjgwMjAwMjAwMTI4MDIwODIwMDEyODAyMGMxMDBmMWE0MWRjZGIwODQxMDAzNjAyMDA0MWUwZGIwODQxMDAzYTAwMDAwYjIwMDE0MTEwNmEyNDAwMGIwZDAwMjAwMDQxNjcxMDIwMWE0MTY3MTAxMjBiMGQwMDIwMDAxMDJhMjIwMDEwMjAxYTIwMDAwYjEyMDAyMDAwMTBhNjAxNDUwNDQwMjAwMDIwMDExMDIxMWEwYjBiMTIwMDIwMDAxMGE2MDE0NTA0NDAyMDAwMjAwMTEwYWEwMTBiMGIzODAxMDE3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDI0MjAwMzcwMzA4MjAwMjIwMDE0MTAwMjAwMjQxMDg2YTEwODIwMTIwMDAyMDAyMjgwMjAwMjAwMjI4MDIwNDEwYjgwMTIwMDI0MTEwNmEyNDAwMGIwYTAwMjAwMDEwYTcwMTEwYTIwMTBiYjkwMTAxMDQ3ZjIzMDA0MTIwNmIyMjAxMjQwMDIwMDAxMGE3MDEyMTAyMTA0MzIxMDQyMDAyMTAxMjIxMDAyMDAxNDExMDZhNDEwMDNhMDAwMDIwMDE0MTBjNmEyMDAwMzYwMjAwMjAwMTIwMDIzNjAyMDgyMDAxMjAwMDM2MDIwNDIwMDE0MTAwMzYwMjAwMDM3ZjIwMDAyMDAzNDYwNDdmMjAwMTJkMDAxMDA0NDA0MWRjZGIwODQxMDAzNjAyMDA0MWUwZGIwODQxMDAzYTAwMDAwYjIwMDE0MTIwNmEyNDAwMjAwNDA1MjAwMTEwYWQwMTIxMDAyMDAxMTBhZTAxMjEwMjIwMDExMGFmMDEyMTAzMjAwMTIwMDAzNjAyMWMyMDAxMjAwMzM2MDIxODIwMDEyMDAyMzYwMjE0MjAwNDIwMDE0MTE0NmExMDU5MjAwMTI4MDIwMDIxMDMyMDAxMjgwMjA0MjEwMDBjMDEwYjBiMGIzMzAyMDE3ZjAxN2UyMzAwNDExMDZiMjIwMTI0MDAyMDAxNDEwMDM2MDIwYzIwMDAyMDAxNDEwYzZhMjIwMDQxMDQxMGIzMDEyMDAwNDEwNDEwYjEwMTIwMDE0MTEwNmEyNDAwYTcwYjA5MDAyMDAwNDEyMDEwODcwMTBiMGMwMDIwMDAyMDAwMTBhZDAxMTA4NzAxMGIzYTAxMDE3ZjIzMDA0MTEwNmIyMjAzMjQwMDIwMDM0MTA4NmEyMDAxNDEwODIwMDIxMGQwMDEyMDAzMjgwMjBjMjEwMTIwMDAyMDAzMjgwMjA4MzYwMjAwMjAwMDIwMDEzNjAyMDQyMDAzNDExMDZhMjQwMDBiMzQwMTAxN2UwMjQwMjAwMTQ1MGQwMDAzNDAyMDAxNDUwZDAxMjAwMTQxMDE2YjIxMDEyMDAwMzEwMDAwMjAwMjQyMDg4Njg0MjEwMjIwMDA0MTAxNmEyMTAwMGMwMDBiMDAwYjIwMDIwYmZkMDEwMTA2N2YyMzAwNDEzMDZiMjIwMTI0MDAyMDAwMTBhNzAxMjEwMjEwNDMyMTA0MjAwMjEwMTIyMTAwMjAwMTQxMTg2YTQxMDAzYTAwMDAyMDAxNDExNDZhMjAwMDM2MDIwMDIwMDEyMDAyMzYwMjEwMjAwMTIwMDAzNjAyMGMyMDAxNDEwMDM2MDIwODAzN2YyMDAwMjAwMzQ2MDQ3ZjIwMDEyZDAwMTgwNDQwNDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGIyMDAxNDEzMDZhMjQwMDIwMDQwNTIwMDE0MTA4NmEyMjAyMTBhZDAxMjEwMzIwMDIxMGFlMDEyMTA1MjAwMjEwYWYwMTIxMDY0MTAwMjEwMDIwMDE0MTAwM2EwMDJmMjAwMjIwMDE0MTJmNmE0MTAxMTBiMzAxMDI0MDAyNDAwMjQwMjAwMTJkMDAyZjBlMDIwMjAxMDAwYjQxZWQ4NjA4NDEwZDEwODgwMTAwMGI0MTAxMjEwMDBiMjAwMTIwMDAzYTAwMjgyMDAxMjAwNjM2MDIyNDIwMDEyMDA1MzYwMjIwMjAwMTIwMDMzNjAyMWMyMDA0MjAwMTQxMWM2YTEwNTUyMDAxMjgwMjA4MjEwMzIwMDEyODAyMGMyMTAwMGMwMTBiMGIwYjJkMDAyMDAwNDEwODZhMjAwMDI4MDIwMDIwMDEyMDAyMTA5ZTAxMDQ0MDQxYTM4NTA4NDEwZjEwODgwMTAwMGIyMDAwMjAwMDI4MDIwMDIwMDI2YTM2MDIwMDBiODcwMTAxMDE3ZjIzMDA0MTMwNmIyMjAyMjQwMDIwMDIyMDAxMzYwMjA4MjAwMjEwMzUyMDAyMjAwMjJkMDAwNDNhMDAxMDIwMDIyMDAyMjgwMjAwMzYwMjBjMjAwMjIwMDExMDEyMzYwMjFjMjAwMjQxMDAzNjAyMTgyMDAyMjAwMjQxMDg2YTM2MDIxNDAzNDAyMDAyNDEyMDZhMjAwMjQxMTQ2YTEwYjUwMTIwMDIyZDAwMmM0MTAyNDY0NTA0NDAyMDAyNDEyMDZhMjAwMjQxMGM2YTEwYjYwMTBjMDEwYjBiMjAwMDIwMDIyODAyMGMyMDAyMmQwMDEwMTBiNzAxMjAwMjQxMzA2YTI0MDAwYmM1MDMwMTA3N2YyMzAwNDFkMDAwNmIyMjAyMjQwMDAyNDAyMDAxMjgwMjA0MjIwNDQxMGQ2YTIyMDgyMDAxMjgwMjA4NGQwNDQwMjAwMTI4MDIwMDIwMDI0MjAwMzcwMDM1MjAwMjQyMDAzNzAzMzAyODAyMDAyMDA0MjAwMjQxMzA2YTIyMDM0MTBkMTA2ZjFhMjAwMjQxMDAzNjAyNDAyMDAyNDEyODZhMjAwMzQxMDA0MTA0MTBiZjAxMjAwMjQxNDA2YjIyMDU0MTA0MjAwMjI4MDIyODIwMDIyODAyMmMxMDU3MjAwMjI4MDI0MDIxMDQyMDAyNDFjODAwNmE0MTAwM2EwMDAwMjAwMjQyMDAzNzAzNDAyMDAyNDEyMDZhMjAwMzQxMDQ0MTBkMTBiZjAxMjAwNTQxMDkyMDAyMjgwMjIwMjAwMjI4MDIyNDEwNTcyMDAyNDEwMDM2MDI0YzIwMDI0MTE4NmEyMDA1NDEwMDQxMDQxMGMwMDEyMDAyNDFjYzAwNmEyMjA3NDEwNDIwMDIyODAyMTgyMDAyMjgwMjFjMTA1NzIwMDIyODAyNGMyMTAzMjAwMjQxMDAzNjAyNGMyMDAyNDExMDZhMjAwNTQxMDQ0MTA4MTBjMDAxMjAwNzQxMDQyMDAyMjgwMjEwMjAwMjI4MDIxNDEwNTcyMDAyMjgwMjRjMjEwNjIwMDI0MTAwM2EwMDRjMjAwMjQxMDg2YTIwMDU0MTA4NDEwOTEwYzAwMTIwMDc0MTAxMjAwMjI4MDIwODIwMDIyODAyMGMxMDU3MjAwMDIwMDIyZDAwNGM0MTAwNDczYTAwMGMyMDAwMjAwNjQxMTg3NDIwMDY0MTgwZmUwMzcxNDEwODc0NzIyMDA2NDEwODc2NDE4MGZlMDM3MTIwMDY0MTE4NzY3MjcyMzYwMjA4MjAwMDIwMDM0MTE4NzQyMDAzNDE4MGZlMDM3MTQxMDg3NDcyMjAwMzQxMDg3NjQxODBmZTAzNzEyMDAzNDExODc2NzI3MjM2MDIwNDIwMDAyMDA0NDExODc0MjAwNDQxODBmZTAzNzE0MTA4NzQ3MjIwMDQ0MTA4NzY0MTgwZmUwMzcxMjAwNDQxMTg3NjcyNzIzNjAyMDAyMDAxMjAwODM2MDIwNDBjMDEwYjIwMDA0MTAyM2EwMDBjMGIyMDAyNDFkMDAwNmEyNDAwMGI0ZDAxMDE3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDAyODAyMDAyMDAxMTBiYzAxMjAwMTIwMDAyODAyMDQxMGJkMDEyMDAwNDEwODZhMjgwMjAwMjAwMTEwM2UyMDAyMjAwMDQxMGM2YTJkMDAwMDNhMDAwZjIwMDEyMDAyNDEwZjZhNDEwMTEwYTMwMTIwMDI0MTEwNmEyNDAwMGIwZDAwMjAwMDIwMDEyMDAyMTAzODEwMjExYTBiMGQwMDIwMDAyMDAxMjAwMjEwNGQxMDIxMWEwYjg3MDEwMTAxN2YyMzAwNDEzMDZiMjIwMjI0MDAyMDAyMjAwMTM2MDIwODIwMDIxMDM1MjAwMjIwMDIyZDAwMDQzYTAwMTAyMDAyMjAwMjI4MDIwMDM2MDIwYzIwMDIyMDAxMTAxMjM2MDIxYzIwMDI0MTAwMzYwMjE4MjAwMjIwMDI0MTA4NmEzNjAyMTQyMDAyNDEyNDZhMjEwMTAzNDAyMDAyNDEyMDZhMjAwMjQxMTQ2YTEwYmEwMTIwMDIyODAyMjAwNDQwMjAwMTIwMDI0MTBjNmExMGJiMDEwYzAxMGIwYjIwMDAyMDAyMjgwMjBjMjAwMjJkMDAxMDEwYjcwMTIwMDI0MTMwNmEyNDAwMGI4OTAzMDEwNjdmMjMwMDQxNDA2YTIyMDIyNDAwMjAwMDIwMDEyODAyMDQyMjAzNDEwYzZhMjIwNjIwMDEyODAyMDg0ZDA0N2YyMDAxMjgwMjAwMjAwMjQxMjg2YTQxMDAzNjAyMDAyMDAyNDIwMDM3MDMyMDI4MDIwMDIwMDMyMDAyNDEyMDZhMjIwMzQxMGMxMDZmMWEyMDAyNDEwMDM2MDIzMDIwMDI0MTE4NmEyMDAzNDEwMDQxMDQxMGMxMDEyMDAyNDEzMDZhMjIwNTQxMDQyMDAyMjgwMjE4MjAwMjI4MDIxYzEwNTcyMDAyMjgwMjMwMjEwNDIwMDI0MjAwMzcwMzMwMjAwMjQxMTA2YTIwMDM0MTA0NDEwYzEwYzEwMTIwMDU0MTA4MjAwMjI4MDIxMDIwMDIyODAyMTQxMDU3MjAwMjQxMDAzNjAyM2MyMDAyNDEwODZhMjAwNTQxMDA0MTA0MTBjMjAxMjAwMjQxM2M2YTIyMDc0MTA0MjAwMjI4MDIwODIwMDIyODAyMGMxMDU3MjAwMjI4MDIzYzIxMDMyMDAyNDEwMDM2MDIzYzIwMDIyMDA1NDEwNDQxMDgxMGMyMDEyMDA3NDEwNDIwMDIyODAyMDAyMDAyMjgwMjA0MTA1NzIwMDIyODAyM2MyMTA1MjAwMDQxMGM2YTIwMDQ0MTE4NzQyMDA0NDE4MGZlMDM3MTQxMDg3NDcyMjAwNDQxMDg3NjQxODBmZTAzNzEyMDA0NDExODc2NzI3MjM2MDIwMDIwMDAyMDAzNDExODc0MjAwMzQxODBmZTAzNzE0MTA4NzQ3MjIwMDM0MTA4NzY0MTgwZmUwMzcxMjAwMzQxMTg3NjcyNzIzNjAyMDQyMDAxMjAwNjM2MDIwNDIwMDA0MTA4NmEyMDA1NDExODc0MjAwNTQxODBmZTAzNzE0MTA4NzQ3MjIwMDU0MTA4NzY0MTgwZmUwMzcxMjAwNTQxMTg3NjcyNzIzNjAyMDA0MTAxMDU0MTAwMGIzNjAyMDAyMDAyNDE0MDZiMjQwMDBiMWYwMDIwMDAyODAyMDgyMDAxMTBiYzAxMjAwMTIwMDAyODAyMDAxMGJkMDEyMDAwMjgwMjA0MjAwMTEwM2UwYjQ2MDEwMTdmMjMwMDQxMTA2YjIyMDIyNDAwMjAwMjIwMDA0MTE4NzQyMDAwNDE4MGZlMDM3MTQxMDg3NDcyMjAwMDQxMDg3NjQxODBmZTAzNzEyMDAwNDExODc2NzI3MjM2MDIwYzIwMDEyMDAyNDEwYzZhNDEwNDEwYTMwMTIwMDI0MTEwNmEyNDAwMGI4MTAxMDEwMzdmMjMwMDQxMTA2YjIyMDIyNDAwMDI0MDAyNDAyMDAwMmQwMDA0MDQ0MDIwMDExMDEyMjIwNDQxOTBjZTAwNDFkY2RiMDgyODAyMDAyMjAzNmI0YjBkMDEyMDAyNDEwODZhMjAwMzIwMDMyMDA0NmEyMjAwMTBhNDAxMjAwMTQxMDAyMDAyMjgwMjA4MjAwMjI4MDIwYzEwNmYxYTQxZGNkYjA4MjAwMDM2MDIwMDBjMDIwYjIwMDAyODAyMDAyMDAxMTA4YjAxMGMwMTBiMjAwMDEwYTUwMTIwMDAyODAyMDAyMDAxMTA4YjAxMGIyMDAyNDExMDZhMjQwMDBiMzgwMjAxN2YwMTdlMjMwMDQxMTA2YjIyMDEyNDAwMjAwMTQyMDAzNzAzMDgyMDAwMjAwMTQxMDg2YTIyMDA0MTA4NDE4YTg1MDg0MTBiMTBjNTAxMjAwMDQxMDgxMGIxMDEyMDAxNDExMDZhMjQwMDBiMGYwMDIwMDAyMDAxMjAwMjIwMDM0MTBkMTBmODAxMGIwZjAwMjAwMDIwMDEyMDAyMjAwMzQxMDkxMGY4MDEwYjBmMDAyMDAwMjAwMTIwMDIyMDAzNDEwYzEwZjgwMTBiMGYwMDIwMDAyMDAxMjAwMjIwMDM0MTA4MTBmODAxMGI4MDAyMDEwNTdmMjMwMDQxMjA2YjIyMDIyNDAwMjAwMDIwMDEyODAyMDQyMjAzNDEwODZhMjIwNTIwMDEyODAyMDg0ZDA0N2YyMDAxMjgwMjAwMjAwMjQyMDAzNzAzMTAyODAyMDAyMDAzMjAwMjQxMTA2YTIyMDM0MTA4MTA2ZjFhMjAwMjQxMDAzNjAyMWMyMDAyNDEwODZhMjAwMzQxMDA0MTA0MTBjMjAxMjAwMjQxMWM2YTIyMDY0MTA0MjAwMjI4MDIwODIwMDIyODAyMGMxMDU3MjAwMjI4MDIxYzIxMDQyMDAyNDEwMDM2MDIxYzIwMDIyMDAzNDEwNDQxMDgxMGMyMDEyMDA2NDEwNDIwMDIyODAyMDAyMDAyMjgwMjA0MTA1NzIwMDIyODAyMWMyMTAzMjAwMDIwMDQ0MTE4NzQyMDA0NDE4MGZlMDM3MTQxMDg3NDcyMjAwNDQxMDg3NjQxODBmZTAzNzEyMDA0NDExODc2NzI3MjM2MDIwNDIwMDEyMDA1MzYwMjA0MjAwMDQxMDg2YTIwMDM0MTE4NzQyMDAzNDE4MGZlMDM3MTQxMDg3NDcyMjAwMzQxMDg3NjQxODBmZTAzNzEyMDAzNDExODc2NzI3MjM2MDIwMDQxMDEwNTQxMDAwYjM2MDIwMDIwMDI0MTIwNmEyNDAwMGI4YTAxMDEwNDdmMjMwMDQxMTA2YjIyMDMyNDAwMjAwMTI4MDIwNDIyMDI0MTA0NmEyMjA0MjAwMTI4MDIwODRiMDQ3ZjQxMDAwNTIwMDEyODAyMDAyMDAzNDEwMDM2MDIwYzI4MDIwMDIwMDIyMDAzNDEwYzZhNDEwNDEwNmYxYTIwMDMyODAyMGMyMTAyMjAwMTIwMDQzNjAyMDQyMDAyNDExODc0MjAwMjQxODBmZTAzNzE0MTA4NzQ3MjIwMDI0MTA4NzY0MTgwZmUwMzcxMjAwMjQxMTg3NjcyNzIyMTAyNDEwMTBiMjEwMTIwMDAyMDAyMzYwMjA0MjAwMDIwMDEzNjAyMDAyMDAzNDExMDZhMjQwMDBiMzAwMDIwMDA0MTA4NmEyMDAwMjgwMjAwMjAwMTIwMDIxMDllMDEwNDQwMjAwMzIwMDQ0MWEzODUwODQxMGYxMDRjMDAwYjIwMDAyMDAwMjgwMjAwMjAwMjZhMzYwMjAwMGI3ODAxMDE3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDIyMDAwNDIzODg2MjAwMDQyODBmZTAzODM0MjI4ODY4NDIwMDA0MjgwODBmYzA3ODM0MjE4ODYyMDAwNDI4MDgwODBmODBmODM0MjA4ODY4NDg0MjAwMDQyMDg4ODQyODA4MDgwZjgwZjgzMjAwMDQyMTg4ODQyODA4MGZjMDc4Mzg0MjAwMDQyMjg4ODQyODBmZTAzODMyMDAwNDIzODg4ODQ4NDg0MzcwMzA4MjAwMTIwMDI0MTA4NmE0MTA4MTBhMzAxMjAwMjQxMTA2YTI0MDAwYmQ2MDEwMTA2N2YyMzAwNDE0MDZhMjIwMDI0MDAxMGM4MDExMDVjMjEwMTIwMDAxMGM5MDExMDVjMzYwMjA4MjAwMDEwNDczNjAyMGMyMDAwNDEyODZhMjIwMjIwMDExMDMyNDFmNzgwMDg0MTEwMTAzMzIwMDAyODAyMmMyMjAxMjAwMDQxMDg2YTEwNjQyMDAxMjAwMDQxMGM2YTEwNjQyMDAwNDEyMDZhMjIwMTIwMDA0MTM4NmEyMjAzMjkwMzAwMzcwMzAwMjAwMDQxMTg2YTIyMDQyMDAwNDEzMDZhMjIwNTI5MDMwMDM3MDMwMDIwMDAyMDAwMjkwMzI4MzcwMzEwMjAwMDIwMDA0MTEwNmExMDdjMzYwMjA0MjAwMjEwYzkwMTEwNWMxMDMyNDFmNTgxMDg0MTE4MTAzMzIwMDAyODAyMmMyMDAwNDEwNDZhMTA3ODIwMDEyMDAzMjkwMzAwMzcwMzAwMjAwNDIwMDUyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDMyODM3MDMxMDIwMDA0MTEwNmExMDdjMjAwMDQxNDA2YjI0MDAwYjBhMDA0MTk1ODgwODQxMTIxMDRkMGIwYTAwNDE4MTg4MDg0MTE0MTA0ZDBiYTkwMzAyMDU3ZjAxN2UyMzAwNDE4MDAxNmIyMjAyMjQwMDEwY2IwMTEwYWIwMTIxMDMyMDAxMjgwMjBjMjEwNDIwMDEyOTAzMDAyMTA3MjAwMTI4MDIwODIxMDEwMjQwMjAwMzQxZmVmZmZmZmYwNzQ2MDQ0MDIwMDE0MWZlZmZmZmZmMDc0NjBkMDEyMDAxMTBhMTAxMjEwMTIwMDIyMDA0MzYwMjE0MjAwMjIwMDczNzAzMDgyMDAyMjAwMTM2MDIxMDEwY2MwMTEwNWMyMTAzMjAwNDEwMjkyMTA0MjAwMjQxZTAwMDZhMjIwMTIwMDMxMDMyNDFhMTgwMDg0MTBhMTAzMzIwMDI0MTQwNmIyMjAzMjAwMTIwMDI0MTA4NmExMDg0MDEyMDAxMjAwMzEwY2QwMTIwMDExMDM0NDIwMDIxMDc0MWZlZmZmZmZmMDcyMTAxMGIyMDAyNDFlMDAwNmEyMDAwMTAzMjQxYzA4MTA4NDExMjEwMzMyMDAyMjgwMjY0MWEyMDAyNDEyODZhMjIwMDIwMDI0MWYwMDA2YTIyMDUyOTAzMDAzNzAzMDAyMDAyNDEyMDZhMjIwMzIwMDI0MWU4MDA2YTIyMDYyOTAzMDAzNzAzMDAyMDAyMjAwMjI5MDM2MDM3MDMxODAyNDAyMDAxNDFmZWZmZmZmZjA3NDcwNDQwMjAwNTIwMDAyOTAzMDAzNzAzMDAyMDA2MjAwMzI5MDMwMDM3MDMwMDIwMDIyMDAyMjkwMzE4MzcwMzYwMjAwMjEwN2QzNjAyNzgyMDAxMTBhMTAxMjEwMDIwMDIyMDA0MzYwMjNjMjAwMjIwMDczNzAzMzAyMDAyMjAwMDM2MDIzODIwMDI0MTQwNmIyMDAyNDFlMDAwNmEyMDAyNDEzMDZhMTA4MzAxMGMwMTBiMjAwMjQxZDAwMDZhMjAwMDI5MDMwMDM3MDMwMDIwMDI0MWM4MDA2YTIwMDMyOTAzMDAzNzAzMDAyMDAyMjAwMjI5MDMxODM3MDM0MDIwMDIyMDA0MzYwMjU4MGIyMDAyNDFlMDAwNmEyMDAyNDE0MDZiMTA3NjIwMDI0MTgwMDE2YTI0MDAwZjBiNDFjYTg4MDg0MTFmMTA0MTAwMGIwYTAwNDFlODhjMDg0MTIyMTA0ZDBiMGEwMDQxZmE4NjA4NDExZDEwNGQwYmZmMDIwMjAzN2YwMjdlMjMwMDQxZDAwMDZiMjIwMjI0MDAyMDAyNDEzMDZhMjIwNDIwMDE0MTEwNmEyOTAzMDAzNzAzMDAyMDAyNDEyODZhMjIwMzIwMDE0MTA4NmEyOTAzMDAzNzAzMDAyMDAyMjAwMTI5MDMwMDM3MDMyMDIwMDIxMDdkMzYwMjM4MDI0MDAyNDAwMjQwMDI0MDIwMDEyODAyMTgyMjAxMTA2NTBlMDIwMTAyMDAwYjEwNDcyMTAzMjAwMjQxMDg2YTIwMDIyODAyMjAyMDAyMjgwMjI0MjAwNDIwMDExMDYyMjAwMjI5MDMwODIxMDUyMDAyMjkwMzI4MjEwNjIwMDAxMDdkMzYwMjE4MjAwMDIwMDMzNjAyMTAyMDAwMjAwNjM3MDMwODIwMDAyMDA1MzcwMzAwMGMwMjBiMjAwMDIwMDIyOTAzMjAzNzAzMDAyMDAwNDExODZhMjAwMjQxMzg2YTI5MDMwMDM3MDMwMDIwMDA0MTEwNmEyMDA0MjkwMzAwMzcwMzAwMjAwMDQxMDg2YTIwMDMyOTAzMDAzNzAzMDAwYzAxMGIyMDAyNDE0MDZiMjAwMTEwOTcwMTAyN2YyMDAyMjkwMzQwNTAwNDQwMjAwMjI4MDIzMDIxMDEyMDAyNDExMDZhMjAwMjI4MDIyMDIwMDIyODAyMjQyMDAyMjgwMjQ4MjAwMjI4MDI0YzEwNmQyMDAyMjgwMjEwMjEwMzIwMDIyODAyMTQwYzAxMGIxMDQ3MjEwMTIwMDI0MTE4NmEyMDAyMjgwMjIwMjAwMjI4MDIyNDIwMDIyODAyMzAyMDAyNDE0MDZiMTA2YzIwMDIyODAyMTgyMTAzMjAwMjI4MDIxYzBiMjEwNDIwMDIyOTAzMjgyMTA1MjAwMDEwN2QzNjAyMTgyMDAwMjAwMTM2MDIxMDIwMDAyMDA1MzcwMzA4MjAwMDIwMDQzNjAyMDQyMDAwMjAwMzM2MDIwMDBiMjAwMjQxZDAwMDZhMjQwMDBiMGQwMDIwMDAxMDYxNDFmZjAxNzE0MTAxNGIwYjE3MDAyMDAwMjgwMjAwMjAwMTI4MDIwMDEwODkwMTQxZmYwMTcxNDFmZjAxNDYwYjNiMDEwMTdmMjMwMDQxMTA2YjIyMDQyNDAwMjAwNDQxMDg2YTQxMDAyMDAzMjAwMTIwMDIxMDJiMjAwNDI4MDIwYzIxMDEyMDAwMjAwNDI4MDIwODM2MDIwMDIwMDAyMDAxMzYwMjA0MjAwNDQxMTA2YTI0MDAwYjBhMDA0MWJkODgwODQxMGQxMDRkMGIwYTAwNDFmMjg3MDg0MTBmMTA0ZDBiMGEwMDQxZGQ4NzA4NDExNTEwNGQwYjBhMDA0MWE3ODgwODQxMTYxMDRkMGIxOTAxMDE3ZjQxOTc4NzA4NDExNjEwNGQyMTAxMjAwMDI4MDIwMDIwMDExMDQwMjAwMTBiMTkwMTAxN2Y0MWFkODcwODQxMTgxMDRkMjEwMTIwMDAyODAyMDAyMDAxMTA0MDIwMDEwYjBhMDA0MWM1ODcwODQxMTgxMDRkMGIwYTAwNDE4ZjhjMDg0MTFkMTA0ZDBiMGEwMDQxYWM4YzA4NDExZDEwNGQwYjBhMDA0MWM5OGMwODQxMWYxMDRkMGJhNzA1MDIwZDdmMDI3ZTIzMDA0MTQwNmEyMjAwMjQwMDEwMjI0MTBhMTA1YTQxMDA0MWJkODgwODQxMGQxMDUwMjEwOTQxMDExMDRiMjEwMjQxMDI0MTk1ODgwODQxMTIxMDUwMjEwYTQxMDM0MTgxODgwODQxMTQxMDUwMjEwNTQxMDQ0MWYyODcwODQxMGYxMDUwMjEwNjQxMDUxMDExMjEwZDQxMDYxMDExMjEwZTQxMDcxMDU4MjEwNzQxMDgxMDUxMjEwODQxMDk0MWZhODYwODQxMWQxMDUwMjEwNDIwMDAyMDA4MzYwMjEwMjAwMDIwMDczNjAyMGMyMDA1MTAyZjEwMzIyMTAxNDFlNjgxMDg0MTBmMTA0ZDIxMDMxMDQzMjEwYjEwN2QyMTBjMTAxNjIwMDEyMDBjMjAwMzIwMGIxMDQ1MjEwMTEwMTcyMDAxMTAxMjIxMDMyMDAwNDEwMDM2MDIzMDIwMDAyMDAxMzYwMjI4MjAwMDIwMDM0MTAyNzYzNjAyMmMyMDAwNDEyODZhMjIwMzEwNzUxMDJmMTBhMjAxMjEwMTIwMDMyMDA0MTAyZjEwMmYxMDMyNDFhYjgwMDg0MTE1MTAzMzIwMDMxMDgwMDEyMTAzMDI0MDAyNDAyMDAxNDFmZWZmZmZmZjA3NDcwNDQwMjAwMTEwMmYxMGExMDEyMDAyMTAzMDBkMDE0MWU5ODgwODQxZDEwMDEwNDEwMDBiMjAwMjIwMDMxMDMwNDUwZDAxMGIxMGNjMDEyMDA0MTBhODAxMTBkOTAxMjAwMzEwYTgwMTAyNDAxMGNiMDEyMjA0MTBhNjAxMGQwMDIwMDE0MWZlZmZmZmZmMDc0NzA0NDAyMDA0MjAwMTEwMjExYTBjMDEwYjIwMDQ0MWVkODUwODQxMDQxMGI4MDEwYjEwZDEwMTIwMDkxMGE4MDExMGQ0MDEyMDAyMTBhODAxMTBjODAxMjAwYTEwYTgwMTEwYzkwMTIwMDUxMDJmMTBhODAxMTBkODAxMjAwMDQxMjg2YTIyMDEyMDA1MTAzMjQxYjY4MTA4NDEwYTEwMzMyMDAxMTA4MDAxMTBhODAxMTBkMjAxMjAwNjEwMmYxMGE4MDExMGRhMDEyMDAxMjAwNjEwMzI0MTg2ODMwODQxMGYxMDMzMjAwMTEwODAwMTEwYTgwMTIwMDAyMDA3MTAxMjM2MDIxYzIwMDA0MTAwMzYwMjE4MjAwMDIwMDA0MTBjNmEzNjAyMTQwMzQwMDI0MDIwMDA0MTI4NmEyMDAwNDExNDZhMTBjMzAxMjAwMDI4MDIyODQ1MDQ0MDIwMDAyMDA4MTAxMjM2MDIxYzIwMDA0MTAwMzYwMjE4MjAwMDIwMDA0MTEwNmEzNjAyMTQwMzQwMjAwMDQxMjg2YTIwMDA0MTE0NmExMGMzMDEyMDAwMjgwMjI4NDUwZDAyMjAwMDIwMDAyODAyMzAyMjAxMzYwMjI0MjAwMDIwMDAyODAyMmMzNjAyMjAyMDAwNDEyMDZhMTBkNTAxMjIwMjEwYTYwMTBkMDAyMDAyMjAwMTEwYjQwMTBjMDAwYjAwMGIyMDAwMjAwMDI4MDIzMDIyMDEzNjAyMjQyMDAwMjAwMDI4MDIyYzM2MDIyMDIwMDA0MTIwNmExMGQ2MDEyMjAyMTBhNjAxMGQwMTIwMDIyMDAxMTBiOTAxMGMwMTBiMGIxMGQzMDEyMDBkMTBhOTAxMTBkNzAxMjAwZTEwYTkwMTIwMDA0MTQwNmIyNDAwMGYwYjQxYmE4OTA4NDFjODAwMTA0MTAwMGIwODAwMTAyMjQxMDAxMDVhMGJjNzAxMDEwNTdmMjMwMDQxMzA2YjIyMDAyNDAwNDEwMDEwNWEwMjQwMDI0MDEwNDYxMGQxMDExMDVjMTAzMDA0NDAxMDQ2MTBkMTAxMTA1YzEwMzA0NTBkMDEyMDAwMTA0YTIyMDEzNjAyMDgxMGQ0MDExMGE3MDEyMTAyMTBjOTAxMTA1YzIxMDMyMDAwMjAwMTEwMTIzNjAyMTQyMDAwNDEwMDM2MDIxMDIwMDAyMDAwNDEwODZhMzYwMjBjMjAwMDQxMjA2YTIxMDEwMzQwMDI0MDIwMDA0MTE4NmEyMDAwNDEwYzZhMTA2NzIwMDAyOTAzMTg1MDBkMDAyMDAwMjgwMjJjMjAwMDI4MDIyODIwMDIxMDMwNDUwZDA0MTBjZTAxNDUwZDA0MjAwMzEwMmYyMDAxMTBjYTAxMGMwMTBiMGIyMDAwNDEzMDZhMjQwMDBmMGI0MTgyOGEwODQxMTYxMDQxMDAwYjQxODI4YTA4NDExNjEwNDEwMDBiNDE5ODhhMDg0MTBkMTA0MTAwMGJjNzA3MDIwOTdmMDE3ZTIzMDA0MTgwMDE2YjIyMDAyNDAwMTAyMjQxMDExMDVhMjAwMDEwNGYzNjAyMmMxMGQxMDExMDVjMjEwMTAyNDAwMjQwMDI0MDEwNDYyMjA3MjAwMTEwMzAwNDQwMjAwMDEwYzkwMTEwNWMyMjAxMzYwMjM0MjAwMDQxZTAwMDZhMjIwMjIwMDExMDJmMTAzMjQxOGQ4MjA4NDExODEwMzMyMDAwMjgwMjY0MjAwMDQxMmM2YTEwNzgyMDAwNDFkODAwNmEyMjAxMjAwMDQxZjAwMDZhMjIwNjI5MDMwMDM3MDMwMDIwMDA0MWQwMDA2YTIyMDMyMDAwNDFlODAwNmEyMjA0MjkwMzAwMzcwMzAwMjAwMDIwMDAyOTAzNjAzNzAzNDgyMDAwNDFjODAwNmEyMjA1MTA3YzIxMDgyMDAyMTBjODAxMTA1YzEwMzI0MWUxODAwODQxMGExMDMzMjAwMDI4MDI2NDIyMDIyMDAwNDEzNDZhMTA2NDIwMDI0MTAwMjAwODEwNzkyMDAxMjAwNjI5MDMwMDM3MDMwMDIwMDMyMDA0MjkwMzAwMzcwMzAwMjAwMDIwMDAyOTAzNjAzNzAzNDgyMDAwNDEzODZhMjAwNTEwN2UyMDAwMjgwMjQ0MTBjZTAxNDUwZDAxMjAwMDI4MDIzNDEwMzIyMTAxNDFhNTgyMDg0MTA2MTA0ZDIxMDQxMDQzMjIwMzQxMDEyMDAwMTA3OTEwNDMyMjAyMjAwMDQxMzg2YTEwNDQyMDAwMjAwMTM2MDI3MDIwMDA0MjdmMzcwMzY4MjAwMDIwMDMzNjAyNjQyMDAwMjAwNDM2MDI2MDIwMDAxMDdkMjIwNTM2MDI3ODAyNDAwMjQwMDI0MDAyNDAyMDAyMTA2NTBlMDIwMjAwMDEwYjIwMDA0MWM4MDA2YTIwMDIxMDk3MDEwMjdmMjAwMDI5MDM0ODUwMDQ0MDIwMDA0MTE4NmEyMDA0MjAwMzIwMDAyODAyNTAyMDAwMjgwMjU0MTA2ZDIwMDAyODAyMTgyMTA0MjAwMDI4MDIxYzBjMDEwYjEwNDcyMDAwNDEyMDZhMjAwNDIwMDMyMDAxMjAwMDQxYzgwMDZhMTA2YzIwMDAyODAyMjAyMTA0MjEwMTIwMDAyODAyMjQwYjIxMDMxMDdkMjEwNTBjMDEwYjEwNDcyMTAxMjAwMDQxMTA2YTIwMDQyMDAzMjAwNjIwMDIxMDYyMjAwMDI5MDM2ODIxMDkyMDAwMjgwMjE0MjEwMzIwMDAyODAyMTAyMTA0MTA3ZDIxMDUyMDA5NDI3ZjUyMGQwMTBiMTAxNjIxMDkwYjIwMDkyMDAxMjAwNTIwMDQyMDAzMTA0NTIxMDExMDE3MjAwMTEwMTIyMTAyMjAwMDQxMDAzNjAyNTAyMDAwMjAwMTM2MDI0ODIwMDAyMDAyNDEwMjc2MzYwMjRjMjAwMDQxYzgwMDZhMTA3NTIyMDIxMDEyMjEwMTIwMDA0MWYwMDA2YTQxMDAzYTAwMDAyMDAwNDFlYzAwNmEyMDAxMzYwMjAwMjAwMDIwMDIzNjAyNjgyMDAwMjAwMTM2MDI2NDIwMDA0MTAwMzYwMjYwMjAwMDQxZTAwMDZhMjIwMTQxOGE4NTA4NDEwYjEwM2ExMGEyMDEyMTAyMjAwMTEwYmUwMTIxMDkyMDAxMTAzOTIxMDEyMDAwMjgwMjY0MjAwMDI4MDI2MDQ3MGQwMjIwMDAyZDAwNzAwNDQwNDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGIwMjQwMjAwMjQxZmVmZmZmZmYwNzQ3MDQ0MDIwMDIxMGExMDEyMTAzMGMwMTBiMTBkOTAxMTBhNzAxMjEwMzEwY2MwMTEwNWMyMDAxMTAyOTEwMzE0MjAwMjEwOTBiMjAwMTEwY2UwMTQ1MGQwMzIwMDcyMDAzMjAwOTIwMDExMDQyMjAwMDIwMDEzNjAyNmMyMDAwMjAwMzM2MDI2ODIwMDAyMDA5MzcwMzYwMjAwMDIwMDA0MWUwMDA2YTEwOTUwMTIyMDEzNjAyMzAyMDAwNDEwODZhMTAzNTIwMDAyMDAwMmQwMDBjM2EwMDNjMjAwMDIwMDAyODAyMDgzNjAyMzgyMDAwMjAwMTEwMTIzNjAyNTAyMDAwNDEwMDM2MDI0YzIwMDAyMDAwNDEzMDZhMzYwMjQ4MDM0MDIwMDA0MWUwMDA2YTIwMDA0MWM4MDA2YTEwNjcyMDAwMjkwMzYwNTA0NTA0NDAyMDAwMjgwMjc0MjAwMDI4MDI3MDIwMDA0MTM4NmEyMjAxMTAzZTIwMDAyOTAzNjgyMDAxMTBjNjAxMjAwMTEwM2MwYzAxMGIwYjIwMDAyODAyMzgyMDAwMmQwMDNjMTAzNzIwMDA0MTgwMDE2YTI0MDAwZjBiNDE4MjhhMDg0MTE2MTA0MTAwMGI0MWU3OGEwODQxMWYxMDQxMDAwYjQxOGE4NTA4NDEwYjQxOTU4NTA4NDEwZTEwNGMwMDBiNDE4NjhiMDg0MTFhMTA0MTAwMGJmMzFkMDIxNjdmMDI3ZTIzMDA0MWEwMDI2YjIyMDAyNDAwMTAyMjQxMDAxMDVhMTBjODAxMTA1YzIxMDEyMDAwMTBjOTAxMTA1YzIyMTQxMDJmMTA5NjAxMzYwMmYwMDEyMDAwMTA0MzM2MDJhMDAxMjAwMDQxODAwMjZhMjIwOTIwMDExMDMyNDFlYjgwMDg0MTBjMTAzMzIwMDAyODAyODQwMjIyMDE0MTAwMTA4MTAxMjAwMTQxMDExMDgxMDEyMDAxNDEwMDEwODEwMTIwMDEyMDAwNDFmMDAxNmEyMjExMTA3YjIwMDEyMDAwNDFhMDAxNmEyMjA3MTA3YjIwMDA0MWUwMDE2YTIyMDUyMDAwNDE5MDAyNmEyMjA0MjkwMzAwMzcwMzAwMjAwMDQxZDgwMTZhMjIwMjIwMDA0MTg4MDI2YTIyMDMyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDM4MDAyMzcwM2QwMDEyMDAwNDFkMDAxNmEyMjA2MTA3ZjEwZDIwMTEwNWMyMTAxMjAwMDIwMTQxMDJmMTA5NjAxMzYwMmYwMDEyMDAwMTA0MzM2MDJhMDAxMjAwOTIwMDExMDMyNDFlYjgwMDg0MTBjMTAzMzIwMDAyODAyODQwMjIyMDE0MTAwMTA4MTAxMjAwMTIwMTExMDdiMjAwMTIwMDcxMDdiMjAwMTQxMDEyMDAwMTA3OTIwMDUyMDA0MjkwMzAwMzcwMzAwMjAwMjIwMDMyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDM4MDAyMzcwM2QwMDEyMDA2MTA3ZjEwMmEyMjAzMTAyYTIyMDYxMDIzMjAwNjEwY2UwMTA0NDAxMGNjMDExMDVjMjAwNjEwMjkxMDMxMTBkOTAxMTBhNzAxMjEwMTIwMDAyMDA2MzYwMjhjMDIyMDAwNDIwMDM3MDM4MDAyMjAwMDIwMDEzNjAyODgwMjIwMDMyMDAwNDE4MDAyNmExMDQ0MGIyMDAwMjAwMzM2MDI5MDAxMDI0MDAyNDAwMjQwMjAwMzEwNjUwNDQwMTBkNDAxMTBhNzAxMjEwZTEwN2QyMTBkMjAwMDIwMDAyODAyOTAwMTEwMTIzNjAyOWMwMTIwMDA0MTAwMzYwMjk4MDEyMDAwMjAwMDQxOTAwMTZhMzYwMjk0MDEyMDAwNDE5MDAyNmEyMTBhMjAwMDQxYzAwMTZhMjEwZjIwMDA0MWE4MDE2YTIxMTUwMzQwMjAwMDQxYTAwMTZhMjAwMDQxOTQwMTZhMTA2NzIwMDAyOTAzYTAwMTUwMDQ0MDQyODA4MDkwYmJiYWQ2YWRmMDBkMTAyZTIxMDEyMDBkMTBkMzAxMTA1ZjEwMmUxMDkyMDEyMDAxMTA4ZDAxMjIwNTIwMGQxMGQ3MDExMDVmMTAyZTEwOTIwMTIwMDExMDhkMDEyMjA2MTA5MTAxMjAwZDEwODkwMTQxZmYwMTcxNDEwMjQ5MGQwNTIwMGQyMDA1MTA5MzAxMjAwNjEwOTAwMTIxMDIyMDBlMTAyZjIxMDEyMDAwMjAwMjEwMjkzNjAyOGMwMjIwMDA0MjAwMzcwMzgwMDIyMDAwMjAwMTM2MDI4ODAyMjAxNDIwMDA0MTgwMDI2YTEwY2EwMTIwMGUxMDJmMjEwMTIwMDUxMGNlMDEwNDQwMTA0NjIwMDE0MjAwMjAwNTEwNDIwYjIwMDYxMGNlMDEwNDQwMTA0ODIwMGU0MjAwMjAwNjEwNDIwYjEwNDMyMTA0MTA0MzEwMmYyMTA2MjAwMTQxZmVmZmZmZmYwNzQ2MGQwMzIwMDEyMDA2MTA0MDBjMDQwYjIwMGYyMDE1NDEwODZhMjkwMzAwMzcwMzAwMjAwMDIwMTUyOTAzMDAzNzAzYjgwMTIwMGYxMGQ2MDExMGFjMDEyMTEyMjAwZjEwZDUwMTEwYjIwMTIxMTMyMDBmMjgwMjAwMjEwYzIwMDAyODAyYzQwMTIxMDQyMDAwMjkwM2I4MDEyMTE2MjAxMjEwMTIyMTAxMjAxMzEwMTI0MTBkNmUyMDAxNDEwYzZlNmEyMTExNDEwMDIxMDEwMzQwMDI0MDAyNDAyMDAxMjAxMTQ3MDQ0MDIwMDE0MTAxNmEyMTA2NDEwMDIxMDIyMDEyMTAxMjIxMDUwMjQwMDI0MDAzNDAyMDAyNDEwYzZhMjIwMzIwMDU0YjBkMDEyMDAwNDE4ODAyNmEyMjA5NDEwMDM2MDIwMDIwMDA0MjAwMzcwMzgwMDIyMDEyMjAwMjIwMDA0MTgwMDI2YTIyMDI0MTBjMTA4YTAxMWEyMDAwNDEwMDM2MDJkMDAxMjAwMDQxODgwMTZhMjAwMjQxMDA0MTA0MTBjMTAxMjAwMDQxZDAwMTZhMjIwNzQxMDQyMDAwMjgwMjg4MDEyMDAwMjgwMjhjMDExMDU3MjAwMDI4MDJkMDAxMjEwODIwMDA0MjAwMzcwM2QwMDEyMDAwNDE4MDAxNmEyMDAyNDEwNDQxMGMxMGMxMDEyMDA3NDEwODIwMDAyODAyODAwMTIwMDAyODAyODQwMTEwNTcyMDAwNDEwMDM2MDJmMDAxMjAwMDQxZjgwMDZhMjAwNzQxMDA0MTA0MTBjMjAxMjAwMDQxZjAwMTZhMjIwMjQxMDQyMDAwMjgwMjc4MjAwMDI4MDI3YzEwNTcyMDAwMjgwMmYwMDEyMTBiMjAwMDQxMDAzNjAyZjAwMTIwMDA0MWYwMDA2YTIwMDc0MTA0NDEwODEwYzIwMTIwMDI0MTA0MjAwMDI4MDI3MDIwMDAyODAyNzQxMDU3MjAwMzIxMDIyMDA4NDExODc0MjAwODQxODBmZTAzNzE0MTA4NzQ3MjIwMDg0MTA4NzY0MTgwZmUwMzcxMjAwODQxMTg3NjcyNzIyMDAxNDcwZDAwMGIyMDAwMjgwMmYwMDEyMTAzMjAwYjQxMTg3NDIwMGI0MTgwZmUwMzcxNDEwODc0NzIyMDBiNDEwODc2NDE4MGZlMDM3MTIwMGI0MTE4NzY3MjcyMTAyZjIxMDEyMDAzNDExODc0MjAwMzQxODBmZTAzNzE0MTA4NzQ3MjIwMDM0MTA4NzY0MTgwZmUwMzcxMjAwMzQxMTg3NjcyNzIyMjA3MTAyZjIxMDU0MTAxMTAyZDIwMDA0MTgwMDI2YTIyMDMyMDAxMTAzMjQxZDk4NjA4NDExNDEwMzMyMDAwMjgwMjg0MDIyMjAxMjAwNTEwNmUyMDAxMTA3MDIwMDA0MWUwMDE2YTIyMDIyMDBhMjkwMzAwMzcwMzAwMjAwMDQxZDgwMTZhMjIwMTIwMDkyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDM4MDAyMzcwM2QwMDExMDQzMjEwNTIwMDAyMDA0MzYwMjhjMDIyMDAwMjAwYzM2MDI4ODAyMjAwMDIwMTYzNzAzODAwMjIwMDUyMDAzMTA0NDIwMGEyMDAyMjkwMzAwMzcwMzAwMjAwOTIwMDEyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDNkMDAxMzcwMzgwMDIyMDAwMTA3ZDM2MDI5ODAyMDI0MDAyNDAwMjQwMDI0MDIwMDUxMDY1MGUwMjAxMDIwMDBiMTA0NzIxMDEyMDAwNDFlODAwNmEyMDAwMjgwMjgwMDIyMDAwMjgwMjg0MDIyMDBhMjAwNTEwNjIyMDAwMjkwMzY4MjExNzIwMDAyOTAzODgwMjIxMTYyMDAwMTA3ZDM2MDJlODAxMjAwMDIwMDEzNjAyZTAwMTIwMDAyMDE2MzcwM2Q4MDEyMDAwMjAxNzM3MDNkMDAxMGMwMjBiMjAwMDQxZTgwMTZhMjAwMDQxOTgwMjZhMjkwMzAwMzcwMzAwMjAwMjIwMGEyOTAzMDAzNzAzMDAyMDAxMjAwOTI5MDMwMDM3MDMwMDIwMDAyMDAwMjkwMzgwMDIzNzAzZDAwMTBjMDEwYjIwMDA0MWYwMDE2YTIyMDEyMDA1MTA5NzAxMjAwMDQxZDAwMTZhMjAwMDQxODAwMjZhMjAwMTEwODMwMTBiMjAwMDQxODAwMjZhMjAwMDQxZDAwMTZhMTA3NjIwMDAyODAyODgwMjIyMGMyMDA3MTAzMDQ1MGQwMTIwMDAyODAyOGMwMjIxMDQyMDAwMjkwMzgwMDIyMTE2MjAwNjIxMDEwYzA1MGI0MTAwMjEwMjIwMTMxMDEyMjEwNTAzNDAyMDAyNDEwZDZhMjIwMzIwMDU0YjBkMDMyMDAwNDIwMDM3MDA4NTAyMjAwMDQyMDAzNzAzODAwMjIwMTMyMDAyMjAwMDQxODAwMjZhMjIwMjQxMGQxMDhhMDExYTIwMDA0MTAwMzYwMmQwMDEyMDAwNDFlMDAwNmEyMDAyNDEwMDQxMDQxMGJmMDEyMDAwNDFkMDAxNmEyMjA4NDEwNDIwMDAyODAyNjAyMDAwMjgwMjY0MTA1NzIwMDAyODAyZDAwMTIxMDkyMDAwNDFkODAxNmEyMjBiNDEwMDNhMDAwMDIwMDA0MjAwMzcwM2QwMDEyMDAwNDFkODAwNmEyMDAyNDEwNDQxMGQxMGJmMDEyMDA4NDEwOTIwMDAyODAyNTgyMDAwMjgwMjVjMTA1NzIwMDA0MTAwMzYwMmYwMDEyMDAwNDFkMDAwNmEyMDA4NDEwMDQxMDQxMGMwMDEyMDAwNDFmMDAxNmEyMjAyNDEwNDIwMDAyODAyNTAyMDAwMjgwMjU0MTA1NzIwMDAyODAyZjAwMTIxMTAyMDAwNDEwMDM2MDJmMDAxMjAwMDQxYzgwMDZhMjAwODQxMDQ0MTA4MTBjMDAxMjAwMjQxMDQyMDAwMjgwMjQ4MjAwMDI4MDI0YzEwNTcyMDAwMjgwMmYwMDEyMTA3MjAwMDQxMDAzYTAwZjAwMTIwMDA0MTQwNmIyMDA4NDEwODQxMDkxMGMwMDEyMDAyNDEwMTIwMDAyODAyNDAyMDAwMjgwMjQ0MTA1NzIwMDMyMTAyMjAwOTQxMTg3NDIwMDk0MTgwZmUwMzcxNDEwODc0NzIyMDA5NDEwODc2NDE4MGZlMDM3MTIwMDk0MTE4NzY3MjcyMjAwMTQ3MGQwMDBiMjAwMDJkMDBmMDAxMjAwNzQxMTg3NDIwMDc0MTgwZmUwMzcxNDEwODc0NzIyMDA3NDEwODc2NDE4MGZlMDM3MTIwMDc0MTE4NzY3MjcyMjEwODIwMGMxMDJmMjEwOTIwMDQxMDI5MjEwNzIwMTA0MTE4NzQyMDEwNDE4MGZlMDM3MTQxMDg3NDcyMjAxMDQxMDg3NjQxODBmZTAzNzEyMDEwNDExODc2NzI3MjEwMmYyMTA1NDUwNDQwNDEwMTEwMmQyMDAwNDE4MDAyNmEyMjAxMjAwNTEwMzI0MWE4ODYwODQxMDgxMDMzMjAwMDI4MDI4NDAyMTA3MDIwMDA0MWUwMDE2YTIyMDIyMDBhMjkwMzAwMzcwMzAwMjAwYjIwMDA0MTg4MDI2YTIyMDMyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDM4MDAyMzcwM2QwMDExMDQzMjEwNDIwMDAyMDA3MzYwMjhjMDIyMDAwMjAwOTM2MDI4ODAyMjAwMDIwMTYzNzAzODAwMjIwMDQyMDAxMTA0NDIwMGEyMDAyMjkwMzAwMzcwMzAwMjAwMzIwMGIyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDNkMDAxMzcwMzgwMDIyMDAwMTA3ZDM2MDI5ODAyMDI0MDAyNDAwMjQwMDI0MDIwMDQxMDY1MGUwMjAxMDIwMDBiMTA0NzIxMDEyMDAwNDExMDZhMjAwMDI4MDI4MDAyMjAwMDI4MDI4NDAyMjAwYTIwMDQxMDYyMjAwMDI5MDMxMDIxMTcyMDAwMjkwMzg4MDIyMTE2MjAwMDEwN2QzNjAyZTgwMTIwMDAyMDAxMzYwMmUwMDEyMDAwMjAxNjM3MDNkODAxMjAwMDIwMTczNzAzZDAwMTBjMDIwYjIwMDA0MWU4MDE2YTIwMDA0MTk4MDI2YTI5MDMwMDM3MDMwMDIwMDIyMDBhMjkwMzAwMzcwMzAwMjAwYjIwMDMyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDM4MDAyMzcwM2QwMDEwYzAxMGIyMDAwNDFmMDAxNmEyMDA0MTA5NzAxMDI3ZjIwMDAyOTAzZjAwMTUwMDQ0MDIwMDAyODAyOTAwMjIxMDMyMDAwNDExODZhMjAwMDI4MDI4MDAyMjAwMDI4MDI4NDAyMjAwMDI4MDJmODAxMjAwMDI4MDJmYzAxMTA2ZDIwMDAyODAyMWMyMTAyMjAwMDI4MDIxODBjMDEwYjEwNDcyMTAzMjAwMDQxMjA2YTIwMDAyODAyODAwMjIwMDAyODAyODQwMjIwMDAyODAyOTAwMjIwMDA0MWYwMDE2YTEwNmMyMDAwMjgwMjI0MjEwMjIwMDAyODAyMjAwYjIxMDEyMDAwMjkwMzg4MDIyMTE2MjAwMDEwN2QzNjAyZTgwMTIwMDAyMDAzMzYwMmUwMDEyMDAwMjAxNjM3MDNkODAxMjAwMDIwMDIzNjAyZDQwMTIwMDAyMDAxMzYwMmQwMDEwYjIwMDA0MWQwMDE2YTEwNzIyMTAzMjAwODEwMmYyMTAxMjAwMDIwMDMzNjAyOGMwMjIwMDA0MjAwMzcwMzgwMDIyMDAwMjAwMTM2MDI4ODAyMjAwMDQxODAwMjZhMTA5NTAxMjEwMTBjMDQwYjIwMDgxMDJmMjEwNDQxMDExMDJkMjAwNTEwMzIyMTAzNDFhODg2MDg0MTA4MTA0ZDIxMDExMDQzMjIwNTIwMDQxMDZlMjAwNTEwNzAxMDQzMjEwNDIwMDAyMDA3MzYwMjhjMDIyMDAwMjAwOTM2MDI4ODAyMjAwMDIwMTYzNzAzODAwMjIwMDQyMDAwNDE4MDAyNmExMDQ0MjAwMDIwMDMzNjAyOTAwMjIwMDA0MjdmMzcwMzg4MDIyMDAwMjAwNTM2MDI4NDAyMjAwMDIwMDEzNjAyODAwMjIwMDAxMDdkMzYwMjk4MDIwMjdmMDI3ZTAyNDAwMjQwMDI0MDIwMDQxMDY1MGUwMjAxMDIwMDBiMTA0NzIxMDIyMDAwNDEyODZhMjAwMDI4MDI4MDAyMjAwMDI4MDI4NDAyMjAwYTIwMDQxMDYyMjAwMDI4MDIyYzIxMDMyMDAwMjgwMjI4MjEwMTIwMDAyOTAzODgwMjBjMDIwYjIwMDAyODAyOTAwMjIxMDIyMDAwMjkwMzg4MDIyMTE2MjAwMDI4MDI4NDAyMjEwMzIwMDAyODAyODAwMjIxMDEyMDAwMjgwMjk4MDIwYzAyMGIyMDAwNDFkMDAxNmEyMDA0MTA5NzAxMDI3ZjIwMDAyOTAzZDAwMTUwMDQ0MDIwMDAyODAyOTAwMjIxMDIyMDAwNDEzMDZhMjAwMDI4MDI4MDAyMjAwMDI4MDI4NDAyMjAwMDI4MDJkODAxMjAwMDI4MDJkYzAxMTA2ZDIwMDAyODAyMzQyMTAzMjAwMDI4MDIzMDBjMDEwYjEwNDcyMTAyMjAwMDQxMzg2YTIwMDAyODAyODAwMjIwMDAyODAyODQwMjIwMDAyODAyOTAwMjIwMDA0MWQwMDE2YTEwNmMyMDAwMjgwMjNjMjEwMzIwMDAyODAyMzgwYjIxMDEyMDAwMjkwMzg4MDIwYjIxMTYxMDdkMGIyMTA0MjAxNjQyN2Y1MTA0N2UxMDE2MDUyMDE2MGIyMDAyMjAwNDIwMDEyMDAzMTA0NTIxMDMxMDE3NDEwMDIxMDIyMDAzMTAxMjIxMDEyMDAwNDEwMDM2MDJmODAxMjAwMDIwMDMzNjAyZjAwMTIwMDAyMDAxNDEwMjc2MzYwMmY0MDEyMDAwNDFmMDAxNmExMDc1MTAyZjIxMDQxMDQzMjEwMTIwMDQxMDEyMjEwMzIwMDA0MTAwM2EwMDkwMDIyMDAwMjAwMzM2MDI4YzAyMjAwMDIwMDQzNjAyODgwMjIwMDAyMDAzMzYwMjg0MDIyMDAwNDEwMDM2MDI4MDAyMDM0MDIwMDIyMDAzNDYwNDQwMjAwMDJkMDA5MDAyNDUwZDA1NDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGMwNTA1MjAwMDQxZDAwMTZhMjIwMzIwMDA0MTgwMDI2YTEwNzcyMDAxMjAwMzEwNDQyMDAwMjgwMjgwMDIyMTAyMjAwMDI4MDI4NDAyMjEwMzBjMDEwYjAwMGIwMDBiNDFjMDg2MDg0MTE5MTA0MTAwMGIyMDBjMjAwZTEwMzAwNDQwMjAwZDIwMDQxMDhmMDEwYzA0MGI0MWQ0OGEwODQxMTMxMDQxMDAwYjIwMDA0MTA4NmExMDM2MjAwMDIwMDAyZDAwMGMzYTAwODQwMjIwMDAyMDAwMjgwMjA4MzYwMjgwMDIyMDAwNDE4MDAyNmEyMjA2NDE4MDgwMDg0MTIxMTBhMzAxMjMwMDQxNDA2YTIyMDMyNDAwMjAwMzQxMDAyMDAzNmI0MTAzNzEyMjA0NmEyMTA3MjAwNDA0NDAyMDAzMjEwMjAzNDAyMDAyNDEwMDNhMDAwMDIwMDI0MTAxNmEyMjAyMjAwNzQ5MGQwMDBiMGIyMDA3NDFjMDAwMjAwNDZiMjIwNTQxN2M3MTIyMDQ2YTIxMDIyMDA0NDEwMDRhMDQ0MDAzNDAyMDA3NDEwMDM2MDIwMDIwMDc0MTA0NmEyMjA3MjAwMjQ5MGQwMDBiMGIyMDA1NDEwMzcxMjIwNDA0NDAyMDAyMjAwNDZhMjEwNDAzNDAyMDAyNDEwMDNhMDAwMDIwMDI0MTAxNmEyMjAyMjAwNDQ5MGQwMDBiMGIyMDA2MjAwMzAyN2YyMDAxMDQ0MDIwMDFhZDIxMTY0MTNmMjEwMTAyNDAwMzQwMjAxNjUwMGQwMTIwMDE0MTNmNGQwNDQwMjAwMTIwMDM2YTIwMTYyMDE2NDIwYTgwMjIxNjQyMGE3ZTdkYTc0MTMwNzIzYTAwMDAyMDAxNDEwMTZiMjEwMTBjMDEwYjBiMTAyYzAwMGIyMDAxNDEwMTZhMGMwMTBiMjAwMzQxMzAzYTAwM2Y0MTNmMGIyMjAxNmE0MWMwMDAyMDAxNmIxMGEzMDEyMDAzNDE0MDZiMjQwMDIwMDAyODAyODAwMjIwMDAyZDAwODQwMjEwMzgxMDAwMDAwYjIwMDAyMDAxMzYwMmNjMDExMDdkMjEwMjEwN2QyMTA0MjAwMDIwMDExMDEyMzYwMmQ4MDEyMDAwNDEwMDM2MDJkNDAxMjAwMDIwMDA0MWNjMDE2YTM2MDJkMDAxMDI0MDAzNDAwMjQwMjAwMDQxODAwMjZhMjAwMDQxZDAwMTZhMTA2NzIwMDAyOTAzODAwMjUwMGQwMDIwMDAyODAyOTQwMjIxMDUyMDAyMjEwMzIwMDAyODAyOTAwMjIyMDEyMDBjMTAzMDQ1MDQ0MDIwMDQyMTAzMjAwMTIwMDgxMDMwNDUwZDAzMGIyMDAzMjAwNTEwOGYwMTBjMDEwYjBiMjAwODEwMmYyMTBjNDIwMDIxMTYyMDA2MjEwMTBjMDEwYjBiMGI0MTg3ODYwODQxMjExMDQxMDAwYjQxYTU4YTA4NDExNTEwNDEwMDBiMjAwMDQxODA4MDgwMjAzNjAyZDAwMTIwMDYyMDAwNDFkMDAxNmE0MTA0MTAwZjFhMjAwNjQxZWQ4NTA4NDEwNDEwMGYxYTBiMjAwMDQyMDAzNzAzZDAwMTIwMDYyMDAwNDFkMDAxNmEyMjAzNDEwODEwMGYxYTIwMDUyMDA2MTAzZjIwMDQyMDA2MTA0ZTEwYzcwMTEwNDMyMjAxNDE4YThkMDg0MTA4MTA0ZDEwNGUyMDAyMTA0MzEwMmYyMjAyMTAzZjIwMDIxMDNmMjAwMTIwMDIxMDI0MjAwMDIwMDQzNjAyZDAwMTIwMDAyMDA0MTAxMjM2MDI4ODAyMjAwMDQxMDAzNjAyODQwMjIwMDAyMDAzMzYwMjgwMDIwMzQwMjAwMDIwMDA0MTgwMDI2YTEwYzQwMTIwMDAyODAyMDAwNDQwMjAwMDI4MDIwNDEwMDcxYTBjMDEwYjBiMjAwMDQxYTAwMjZhMjQwMDBmMGI0MWJhOGEwODQxMWExMDQxMDAwYjBkMDAxMDIyNDEwMDEwNWExMGM3MDExMDI1MGIwZDAwMTAyMjQxMDAxMDVhMTBkMTAxMTA1YjBiMGQwMDEwMjI0MTAwMTA1YTEwZDQwMTEwNWQwYjBkMDAxMDIyNDEwMDEwNWExMGQ4MDExMDVkMGIyYTAxMDE3ZjEwMjI0MTAwMTA1YTEwY2IwMTEwYWIwMTIyMDA0MWZlZmZmZmZmMDc0NzA0NDAyMDAwMTAwNzFhMGYwYjQxZWQ4NTA4NDEwNDEwMjYwYjBkMDAxMDIyNDEwMDEwNWExMGRhMDExMDVkMGIwZDAwMTAyMjQxMDAxMDVhMTBjODAxMTA1YjBiMGQwMDEwMjI0MTAwMTA1YTEwYzkwMTEwNWIwYjBkMDAxMDIyNDEwMDEwNWExMGNjMDExMDViMGIwZDAwMTAyMjQxMDAxMDVhMTBkOTAxMTA1ZDBiMGQwMDEwMjI0MTAwMTA1YTEwZDIwMTEwNWIwYmExMDEwMTAyN2YyMzAwNDE0MDZhMjIwMDI0MDAxMDIyNDEwMTEwNWEyMDAwNDEwMDEwNGIzNjAyMTQyMDAwMjAwMDQxMTQ2YTEwZDYwMTEwYWMwMTIyMDEzNjAyMTgyMDAwNDEwODZhMTAzNTIwMDAyMDAwMmQwMDBjM2EwMDIwMjAwMDIwMDAyODAyMDgzNjAyMWMyMDAwMjAwMTEwMTIzNjAyMmMyMDAwNDEwMDM2MDIyODIwMDAyMDAwNDExODZhMzYwMjI0MjAwMDQxMzQ2YTIxMDEwMzQwMjAwMDQxMzA2YTIwMDA0MTI0NmExMGJhMDEyMDAwMjgwMjMwMDQ0MDIwMDEyMDAwNDExYzZhMTBiYjAxMGMwMTBiMGIyMDAwMjgwMjFjMjAwMDJkMDAyMDEwMzcyMDAwNDE0MDZiMjQwMDBiYTAwMTAxMDI3ZjIzMDA0MTQwNmEyMjAwMjQwMDEwMjI0MTAxMTA1YTIwMDA0MTAwMTA0YjM2MDIxNDIwMDAyMDAwNDExNDZhMTBkNTAxMTBiMjAxMjIwMTM2MDIxODIwMDA0MTA4NmExMDM1MjAwMDIwMDAyZDAwMGMzYTAwMjAyMDAwMjAwMDI4MDIwODM2MDIxYzIwMDAyMDAxMTAxMjM2MDIyYzIwMDA0MTAwMzYwMjI4MjAwMDIwMDA0MTE4NmEzNjAyMjQwMzQwMjAwMDQxMzA2YTIwMDA0MTI0NmExMGI1MDEyMDAwMmQwMDNjNDEwMjQ3MDQ0MDIwMDA0MTMwNmEyMDAwNDExYzZhMTBiNjAxMGMwMTBiMGIyMDAwMjgwMjFjMjAwMDJkMDAyMDEwMzcyMDAwNDE0MDZiMjQwMDBiMGQwMDEwMjI0MTAwMTA1YTEwZDMwMTEwNWUwYjBkMDAxMDIyNDEwMDEwNWExMGQ3MDExMDVlMGJlMzAzMDIwNTdmMDI3ZTIzMDA0MTkwMDE2YjIyMDAyNDAwMTA0OTQxMDAxMDVhMjAwMDEwNGEyMjAxMzYwMjE0MDI0MDIwMDExMDY1NDEwMTQ2MDQ0MDIwMDExMDEyMjEwMTIwMDA0MTAwMzYwMjM0MjAwMDIwMDEzNjAyMzAyMDAwNDEwMDM2MDIyYzIwMDAyMDAwNDExNDZhMzYwMjI4MjAwMDQxM2M2YTIxMDIyMDAwNDFmNDAwNmEyMTAzMjAwMDQxZjgwMDZhMjEwMTAzNDAyMDAwNDFmMDAwNmEyMDAwNDEyODZhMTA2NzIwMDAyOTAzNzA1MDBkMDIyMDAwNDFlMDAwNmEyMDAxNDEwODZhMjkwMzAwMjIwNTM3MDMwMDIwMDAyMDAxMjkwMzAwMjIwNjM3MDM1ODIwMDAyMDAwMjgwMjM0MjIwNDQxMDE2YTM2MDIzNDIwMDM0MTA4NmEyMDA1MzcwMjAwMjAwMzIwMDYzNzAyMDAyMDAwNDE0MDZiMjAwMTI5MDIwMDM3MDMwMDIwMDA0MWM4MDA2YTIwMDA0MTgwMDE2YTI4MDIwMDM2MDIwMDIwMDAyMDAwMjkwMjcwMzcwMzM4MjAwNDQ1MDQ0MDIwMDA0MTIwNmEyMDAyNDEwODZhMjkwMjAwMzcwMzAwMjAwMDIwMDIyOTAyMDAzNzAzMTgwYzAxMGIwYjEwMmMwMDBiNDFiMzgzMDg0MTIyMTAwMzAwMGIyMDAwNDEwODZhMjIwMTIwMDA0MTIwNmEyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDMxODM3MDMwMDEwZGEwMTEwYTcwMTIxMDIyMDAxMjgwMjAwMjAwMjEwMzA0NTA0NDA0MTk4OGEwODQxMGQxMDQxMDAwYjEwZDIwMTEwNWMyMTAyMjAwMDEwNDMzNjAyMTgyMDAwMTA0MzM2MDIyODIwMDA0MWYwMDA2YTIyMDEyMDAyMTAzMjQxYTc4MzA4NDEwNTEwMzMyMDAwMjgwMjc0MjIwMjIwMDA0MTE4NmExMDdiMjAwMjIwMDA0MTI4NmExMDdhMjAwMDQxZTgwMDZhMjAwMDQxODAwMTZhMjkwMzAwMzcwMzAwMjAwMDQxZTAwMDZhMjAwMDQxZjgwMDZhMjkwMzAwMzcwMzAwMjAwMDIwMDAyOTAzNzAzNzAzNTgyMDAwNDEzODZhMjIwMjIwMDA0MWQ4MDA2YTIwMDAxMDg0MDEyMDAxMjAwMjEwY2QwMTIwMDExMDc0MjAwMDQxOTAwMTZhMjQwMDBiOGMwMTAxMDI3ZjIzMDA0MTQwNmEyMjAwMjQwMDEwNDk0MTAwMTA1YTEwZDIwMTEwNWMyMTAxMjAwMDEwNDMzNjAyMDAyMDAwMTA0MzM2MDIwNDIwMDA0MTA4NmEyMDAxMTAzMjQxOTU4MzA4NDExMjEwMzMyMDAwMjgwMjBjMjIwMTIwMDAxMDdiMjAwMTIwMDA0MTA0NmExMDdhMjAwMDQxMzA2YTIwMDA0MTE4NmEyOTAzMDAzNzAzMDAyMDAwNDEyODZhMjAwMDQxMTA2YTI5MDMwMDM3MDMwMDIwMDAyMDAwMjkwMzA4MzcwMzIwMjAwMDEwN2QzNjAyMzgyMDAwNDEyMDZhMTA3NDIwMDA0MTQwNmIyNDAwMGJmZjAxMDIwNTdmMDE3ZTIzMDA0MTMwNmIyMjAwMjQwMDEwMjIxMDQ5NDEwMTEwNWEyMDAwMTA0ZjM2MDIxMDEwZDIwMTEwNWMyMDAwMTA0MzM2MDIxNDIwMDAxMDQzMzYwMjE4MTAzMjIxMDI0MWFjODMwODQxMDcxMDRkMjEwMzEwNDMyMjAxMjAwMDQxMTA2YTEwNzgyMDAxMjAwMDQxMTQ2YTEwN2IyMDAxMjAwMDQxMTg2YTEwN2ExMDdkMjEwNDEwMTYyMDAyMjAwNDIwMDMyMDAxMTA0NTIxMDExMDE3MjAwMTEwMTIyMTAyMjAwMDQxMDAzNjAyMjQyMDAwMjAwMTM2MDIxYzIwMDAyMDAyNDEwMjc2MzYwMjIwMjAwMDQxMWM2YTEwNzUyMTAxMjAwMDQyMDAzNzAzMjgyMDAxMTAxMjIyMDI0MTA5NDkwNDQwMDI0MDIwMDA0MTA4NmEyMDAwNDEyODZhMjAwMjEwYjAwMTIwMDE0MTAwMjAwMDI4MDIwODIyMDEyMDAwMjgwMjBjMjIwMjEwOGEwMTFhMjAwMTIwMDIxMGIxMDEyMjA1NDI4MDgwODA4MDEwNWEwZDAwMjAwNTEwMTQyMDAwNDEzMDZhMjQwMDBmMGIwYjQxOGE4NTA4NDEwYjQxOTU4NTA4NDEwZTEwNGMwMDBiOTgwMzAyMDU3ZjAxN2UyMzAwNDFlMDAwNmIyMjAwMjQwMDEwMjIxMDQ5NDFlNGRiMDgxMDEzMzYwMjAwNDFlNGRiMDgyODAyMDA0MTAwNDgwNDQwNDFlZjgzMDg0MTExMTAwMzAwMGIyMDAwNDEwMDM2MDIzODEwNDMyMTAzMjAwMDQxMzg2YTIyMDQyODAyMDAyMTAxMDM0MDQxZTRkYjA4MjgwMjAwMjAwMTRhMDQ0MDIwMDQyMDAxNDEwMTZhMjIwMjM2MDIwMDIwMDMyMDAxMTA0YjEwNGUyMDAyMjEwMTBjMDEwYjBiMjAwMzIxMDE0MWU0ZGIwODI4MDIwMDIwMDAyODAyMzg0YTA0NDA0MTgwODQwODQxMTIxMDAzMDAwYjIwMDAyMDAxMzYwMjFjMjAwNDEwZDIwMTEwNWMxMDMyNDFmOTgyMDg0MTBkMTAzMzIwMDAyMDAxMTAxMjM2MDI1YzIwMDA0MTAwMzYwMjU4MjAwMDIwMDA0MTFjNmEzNjAyNTQyMDAwMjgwMjNjMjEwMTAzNDAyMDAwNDExMDZhMjAwMDQxZDQwMDZhMTBjNDAxMjAwMDI4MDIxMDA0NDAyMDAxMjAwMDI4MDIxNDEwNmUwYzAxMGIwYjIwMDA0MTI4NmEyMDAwNDE0MDZiMjkwMzAwMzcwMzAwMjAwMDQxMzA2YTIwMDA0MWM4MDA2YTI5MDMwMDM3MDMwMDIwMDAyMDAwMjkwMzM4MzcwMzIwMjAwMDQxMzg2YTIwMDA0MTIwNmExMDdlMDI0MDIwMDAyODAyNDQyMjAxMTBjZTAxNDUwNDQwMjAwMDI4MDI0MDIxMDIwYzAxMGIxMDQ2MjAwMDI4MDI0MDIyMDI0MjAwMjAwMTEwNDIwYjIwMDAyOTAzMzgyMDAwNDEwODZhMTAzNTIwMDAyMDAwMmQwMDBjM2EwMDNjMjAwMDIwMDAyODAyMDgzNjAyMzgyMDAyMjAwMDQxMzg2YTIyMDIxMDNlMjAwMjEwYzYwMTIwMDEyMDAyMTAzYzIwMDAyODAyMzgyMDAwMmQwMDNjMTAzNzIwMDA0MWUwMDA2YTI0MDAwYjMxMDEwMTdlMTAyMjEwNDk0MTAxMTA1YTQxMDAxMDExMjIwMDQyODE4MDkwYmJiYWQ2YWRmMDBkNWEwNDQwNDFlZjhiMDg0MTIwMTA0MTAwMGIxMGQ3MDEyMDAwMTBhYTAxMGIzMTAxMDE3ZTEwMjIxMDQ5NDEwMTEwNWE0MTAwMTAxMTIyMDA0MjgxODA5MGJiYmFkNmFkZjAwZDVhMDQ0MDQxZDI4YjA4NDExZDEwNDEwMDBiMTBkMzAxMjAwMDEwYWEwMTBiZTMwMTAxMDM3ZjIzMDA0MTMwNmIyMjAwMjQwMDEwMjIxMDQ5NDEwMjEwNWE0MTAwMTA1ODIxMDEyMDAwNDEwMTEwNTEyMjAyMzYwMjBjMjAwMDIwMDEzNjAyMDgyMDAwMjAwMTEwMTIzNjAyMTgyMDAwNDEwMDM2MDIxNDIwMDAyMDAwNDEwODZhMzYwMjEwMDM0MDIwMDA0MTFjNmEyMDAwNDExMDZhMTBjMzAxMjAwMDI4MDIxYzA0NDAyMDAwMjAwMDI4MDIyNDIyMDEzNjAyMmMyMDAwMjAwMDI4MDIyMDM2MDIyODIwMDA0MTI4NmExMGQ2MDEyMDAxMTBiOTAxMGMwMTA1MjAwMDIwMDIxMDEyMzYwMjE4MjAwMDQxMDAzNjAyMTQyMDAwMjAwMDQxMGM2YTM2MDIxMDAzNDAyMDAwNDExYzZhMjAwMDQxMTA2YTEwYzMwMTIwMDAyODAyMWMwNDQwMjAwMDIwMDAyODAyMjQyMjAxMzYwMjJjMjAwMDIwMDAyODAyMjAzNjAyMjgyMDAwNDEyODZhMTBkNTAxMjAwMTEwYjQwMTBjMDEwYjBiMjAwMDQxMzA2YTI0MDAwYjBiMGJhYTA3MDIwYjdmMDE3ZTIzMDA0MTMwNmIyMjAwMjQwMDEwMjI0MTAwMTA1YTEwYzkwMTEwNWMyMjA5MTAyZjEwMzIyMTAxNDFkMjgxMDg0MTE0MTA0ZDIxMDIxMDQzMjEwNjEwN2QyMTA3MTAxNjIwMDEyMDA3MjAwMjIwMDYxMDQ1MjEwMTEwMTcyMDAxMTAxMjIxMDIyMDAwNDEwMDM2MDIxMDIwMDAyMDAxMzYwMjA4MjAwMDIwMDI0MTAyNzYzNjAyMGMyMDAwNDEwODZhMTA3NTIyMDIxMDEyMjEwMTIwMDA0MTI4NmE0MTAwM2EwMDAwMjAwMDQxMjQ2YTIwMDEzNjAyMDAyMDAwMjAwMjM2MDIyMDIwMDAyMDAxMzYwMjFjMjAwMDQxMDAzNjAyMTgwMjQwMDI3ZjAyNDAwMjQwMjAwMTQ1MGQwMDAyNDAwMjQwMDI0MDIwMDA0MTE4NmE0MThhODUwODQxMGIxMDU0NDFmZjAxNzEwZTAyMDIwMTAwMGI0MThhODUwODQxMGI0MWVkODYwODQxMGQxMDRjMDAwYjQxMDEyMTAzMjAwMDQxMTg2YTQxOGE4NTA4NDEwYjEwNTMyMTAxMGIyMDAwMjgwMjFjMjAwMDI4MDIxODQ3MGQwMzIwMDAyZDAwMjgwNDQwNDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGIyMDAzNDUwZDAwMjAwMDQxMTg2YTIyMDQyMDAxMTAyZjEwMzI0MWU0ODIwODQxMTUxMDMzMjAwMDIwMDQxMDdjMjIwMzM2MDIwMDIwMDQyMDAxMTAyZjEwMzI0MWIyODIwODQxMGIxMDMzMjAwMDQxMTg2YTEwN2M0MmJlOGE4NjBmMTAyZTEwOGUwMTIxMDYyMDA0MjAwMTEwMmYxMDMyNDFjOTgyMDg0MTBkMTAzMzIwMDA0MTE4NmExMDdjMjAwMzEwOTIwMTQyYmU4YTg2MGYxMDJlMTA4ZTAxNDEwYTEwMmQ0MTEyMTA5NDAxMTA4ZDAxMjEwNzIwMDQyMDAxMTAyZjEwMzI0MWJkODIwODQxMGMxMDMzMjAwMDQxMTg2YTEwN2M0MTBhMTAyZDQxMTIxMDk0MDEyMDAzMTA5MDAxMTA4ZTAxNDJiZThhODYwZjEwMmUxMDhlMDE0MTBhMTAyZDQxMTIxMDk0MDExMDhkMDEyMTBhMjAwNDIwMDkxMDJmMjIwMjEwMmYxMDMyNDE4NzgxMDg0MTBmMTAzMzIwMDAyMDAwNDExODZhMTA3YzIyMDUzNjAyMTQyMDA0MjAwMjEwMmYxMDMyNDFhYjgyMDg0MTA3MTAzMzIwMDA0MTE4NmExMDdjMjEwODIwMDQyMDAyMTAzMjQxYTY4MTA4NDExMDEwMzMyMDAwNDExODZhMTA3YzIxMDIyMDAwMjAwODIwMDUxMDkxMDEyMDAyMTA5MDAxMzYwMjA4MjAwNDIwMDExMDMyNDFkNjgyMDg0MTBlMTAzMzIwMDAyODAyMWMyMjAxMjAwMDQxMTQ2YTEwNzgyMDAxMjAwMDQxMDg2YTEwNzgyMDAwMjgwMjI4MjEwMjIwMDAyODAyMTgyMTA1MjAwMDI5MDMyMDEwN2QyMTA4MTA3MTIwMDIyMDA4MjAwNTIwMDExMDQ1MjEwMTEwMTcyMDAwMjAwMTEwNzMzNjAyMDQ0MjgwODA5MGJiYmFkNmFkZjAwZDEwMmUyMTAyMjAwMDEwN2QzNjAyMTgyMDAwNDEwNDZhMjAwNDEwY2YwMTIxMDUxMDdkMjIwMTIwMDUwZDAyMWEyMDAxMjAwMDI4MDIwNDEwODkwMTQxMDE2YTQxZmYwMTcxNDEwMTRkMDQ0MDIwMDA0MTA0NmEyMDAwMTBjZjAxMGQwMjIwMDAyODAyMDAyMTAzMGIyMDAwMjgwMjA0MjAwMzEwOTMwMTIwMGExMDhlMDEyMTAxNDEwYTEwMmQ0MTEyMTA5NDAxMjAwMDI4MDIwMDEwOTAwMTIxMDMyMDA2MjAwMjEwOTIwMTIwMDcyMDAyMTA5MjAxMTA4YzAxMjAwMTIwMDIxMDhlMDEyMDAzMTA4ZDAxMTA4YzAxMGMwMjBiNDFhMDhiMDg0MTMyMTA0MTAwMGIyMDAwMjgwMjA0MjAwNzEwOTIwMTIxMDEyMDA2MjAwMjEwOTIwMTIwMDEyMDAyMTA4ZTAxMjAwMDI4MDIwMDEwOGQwMTEwOGMwMTBiMjEwMTIwMDA0MTE4NmEyMjAzMjAwOTEwMzI0MTk2ODEwODQxMTAxMDMzMjAwMzEwN2MyMTAyNDEwYTEwMmQ0MTEyMTA5NDAxMjEwMzIwMDAyODAyMDQyMDAxMTA5MjAxMjAwMzIwMDIxMDkzMDExMDhlMDEyMDAzNDEwMzEwOTQwMTEwOGQwMTEwMjUyMDAwNDEzMDZhMjQwMDBmMGI0MThhODUwODQxMGI0MTk1ODUwODQxMGUxMDRjMDAwYjAzMDAwMTBiM2MwMTAxN2YyMzAwNDExMDZiMjIwNTI0MDAyMDA1NDEwODZhMjAwMTIwMDQyMDAyMjAwMzEwOWQwMTIwMDUyODAyMGMyMTAxMjAwMDIwMDUyODAyMDgzNjAyMDAyMDAwMjAwMTM2MDIwNDIwMDU0MTEwNmEyNDAwMGIzYjAxMDE3ZjIzMDA0MTEwNmIyMjA1MjQwMDIwMDU0MTA4NmEyMDAyMjAwMzIwMDEyMDA0MTAyYjIwMDUyODAyMGMyMTAxMjAwMDIwMDUyODAyMDgzNjAyMDAyMDAwMjAwMTM2MDIwNDIwMDU0MTEwNmEyNDAwMGIwYmRhMGQwMjAwNDE4MDgwMDgwYmM2MGQ0ZTZmMjA3Mzc3NjE3MDIwNmY3MDY1NzI2MTc0Njk2ZjZlMjA2NjZmNzU2ZTY0MjA2MTc0MjA2OTZlNjQ2NTc4MjA3NTZlNzc3MjYxNzA0NTY3NmM2NDY3NjU3NDU3NzI2MTcwNzA2NTY0NDU2NzZjNjQ1NDZmNmI2NTZlNDk2NDc3NzI2MTcwNDU2NzZjNjQ3MjY1NjM2OTcwNjk2NTZlNzQyMDYxNjQ2NDcyNjU3MzczMjA2ZTZmNzQyMDczNjU3NDY1Nzg2OTc0NGQ2MTcyNmI2NTc0NjM2YzYxNjk2ZDUyNjU3NzYxNzI2NDczNjc2NTc0NDE2MzYzNmY3NTZlNzQ1NDZmNmI2NTZlNzM2NzY1NzQ1NDZmNzQ2MTZjNDI2ZjcyNzI2Zjc3NzM2NzY1NzQ1MjY1NzM2NTcyNzY2NTQ2NjE2Mzc0NmY3MjY3NjU3NDU0NmY3NDYxNmM1MjY1NzM2NTcyNzY2NTczNjc2NTc0NTQ2ZjZiNjU2ZTQ5NjQ2ZDY5NmU3NDQxNmU2NDQ1NmU3NDY1NzI0ZDYxNzI2YjY1NzQ2NzY1NzQ0OTZlNzQ2NTcyNjU3Mzc0NTI2MTc0NjU0ZDZmNjQ2NTZjNjc2NTc0NTU2ZTY0NjU3MjZjNzk2OTZlNjc0OTY0NzQ2ZjZiNjU2ZTczNTQ2ZjU1NmU2NDY1NzI2Yzc5Njk2ZTY3NDE2ZDZmNzU2ZTc0NzU2ZTY0NjU3MjZjNzk2OTZlNjc0MTZkNmY3NTZlNzQ1NDZmNTQ2ZjZiNjU2ZTczNzI2NTY0NjU2NTZkNjc2NTc0NDM2MTczNjg2NzY1NzQ0MjYxNzM2NTUyNjE3NDY1Njc2NTc0NGM2MTczNzQ1MzZjNmY3MDY1Njc2NTc0NDY2OTcyNzM3NDUzNmM2ZjcwNjU2NzY1NzQ1NTc0Njk2YzY5N2E2MTc0Njk2ZjZlNjc2NTc0NGY3MDc0Njk2ZDYxNmM1NTc0Njk2YzY5N2E2MTc0Njk2ZjZlNjM2YzYxNjk2ZDRkNzU2Yzc0Njk3MDZjNjU2NzY1NzQ1Mzc0NjE2YjY1NTQ2ZjZiNjU2ZTQ5NjQ3MjY1NjI2MTZjNjE2ZTYzNjU1MDZmNzI3NDY2NmY2YzY5NmY3Mzc0NjE2YjY1NzU2ZTczNzQ2MTZiNjU2OTZlNjM2ZjcyNzI2NTYzNzQyMDZlNzU2ZDYyNjU3MjIwNmY2NjIwNDU1MzQ0NTQyMDc0NzI2MTZlNzM2NjY1NzI3MzYxNzI2Nzc1NmQ2NTZlNzQyMDY0NjU2MzZmNjQ2NTIwNjU3MjcyNmY3MjIwMjgyOTNhMjA3NDZmNmYyMDY2NjU3NzIwNjE3MjY3NzU2ZDY1NmU3NDczNzQ2ZjZmMjA2ZDYxNmU3OTIwNjE3MjY3NzU2ZDY1NmU3NDczNzc3MjZmNmU2NzIwNmU3NTZkNjI2NTcyMjA2ZjY2MjA2MTcyNjc3NTZkNjU2ZTc0NzM2MzYxNmU2ZTZmNzQyMDczNzU2Mjc0NzI2MTYzNzQyMDYyNjU2MzYxNzU3MzY1MjA3MjY1NzM3NTZjNzQyMDc3NmY3NTZjNjQyMDYyNjUyMDZlNjU2NzYxNzQ2OTc2NjU0ZDc1NmM3NDY5NDU1MzQ0NTQ0ZTQ2NTQ1NDcyNjE2ZTczNjY2NTcyNDU1MzQ0NTQ0ZTQ2NTQ1NDcyNjE2ZTczNjY2NTcyNDU1MzQ0NTQ1NDcyNjE2ZTczNjY2NTcyNzM3OTZlNjMyMDcyNjU3Mzc1NmM3NDY5NmU3MDc1NzQyMDc0NmY2ZjIwNmM2ZjZlNjc2OTZlNzA3NTc0MjA3NDZmNmYyMDczNjg2ZjcyNzQ2MzYxNzM3NDIwNzQ2ZjIwNjkzNjM0MjA2NTcyNzI2ZjcyNGQ2MTZlNjE2NzY1NjQ1NjY1NjMyMDY5NmU2NDY1NzgyMDZmNzU3NDIwNmY2NjIwNzI2MTZlNjc2NTQ1NTM0NDU0MjA2NTc4NzA2NTYzNzQ2NTY0NDU0NzRjNDQ3Mzc0NmY3MjYxNjc2NTIwNjQ2NTYzNmY2NDY1MjA2NTcyNzI2ZjcyM2EyMDc1NmU2YjZlNmY3NzZlMjA3MjY1NjM2NTY5NzY2NTY0MjA3NDZmNmI2NTZlMjA2MTY2NzQ2NTcyMjA3Mzc3NjE3MDY1Nzg2MzY4NjE2ZTY3NjU2MjYxNjQyMDYxNzI3MjYxNzkyMDZjNjU2ZTY3NzQ2ODc3NzI2ZjZlNjcyMDcyNjU3NDc1NzI2ZTY1NjQyMDczNzc2MTcwMjA3NDZmNmI2NTZlNzM3NzYxNzA1NDZmNmI2NTZlNzM0NjY5Nzg2NTY0NDk2ZTcwNzU3NDY5NmU3NjYxNmM2OTY0MjA3NjYxNmM3NTY1Nzc3MjYxNzA3MDY1NjQ1ZjY1Njc2YzY0NWY2MzZmNmU3NDcyNjE2Mzc0NWY2MTY0NjQ3MjY1NzM3MzYzNmY2ZDcwNmY3NTZlNjQ1ZjYxNzM2ODczNzc2MTcwNWY3Mzc3NjE3MDczNjM2ZjZkNzA2Zjc1NmU2NDVmNzg2NTc4NjM2ODYxNmU2NzY1NWY3Mzc3NjE3MDczNzA2NTcyNjY2ZjcyNmQ2MTZlNjM2NTVmNjY2NTY1NzM1ZjcwNjU3MjYzNjU2ZTc0NjM2ZjZkNzA2Zjc1NmU2NDVmNjY2NTY1NzM1ZjcwNjU3MjYzNjU2ZTc0NjI2ZjZmNzM3NDY1NzI1ZjYxNjQ2NDcyNjU3MzczNmQ2ZjZlNjU3OTVmNmQ2MTcyNmI2NTc0NWY2MTY0NjQ3MjY1NzM3MzYzNmY2ZTc0NzI2ZjZjNmM2NTcyNWY2MTY0NjQ3MjY1NzM3MzYxNzM3MzY1NzQ1Zjc0NmY2YjY1NmU1ZjY5NjQ2NTZlNzQ2OTY2Njk2NTcyNzY2MTc1NmM3NDVmNjE2NDY0NzI2NTczNzM3MDYxNzk2ZDY1NmU3NDIwNzM2ODZmNzU2YzY0MjA2MjY1MjA2MTZlMjA0NTUzNDQ1NDIwNzQ2ZjZiNjU2ZTU0Njg2NTIwNjE3MzczNjU3NDIwNzQ2ZjZiNjU2ZTIwNjk2NDY1NmU3NDY5NjY2OTY1NzIyMDYxNmU2NDIwNzQ2ODY1MjA2ZDZmNmU2NTc5MjA2ZDYxNzI2YjY1NzQyMDc1NmU2NDY1NzI2Yzc5Njk2ZTY3MjA2OTY0NjU2ZTc0Njk2NjY5NjU3MjIwNjQ2ZjZlMjc3NDIwNmQ2MTc0NjM2ODU3Njg2NTZlMjA3NDYxNzI2NzY1NzQ2OTZlNjcyMDYxNmUyMDQ1NDc0YzQ0MjA2ZDYxNzI2YjY1NzQyMDc0Njg2NTIwNjE3MzczNjU3NDIwNzQ2ZjZiNjU2ZTIwNjk2NDY1NmU3NDY5NjY2OTY1NzIyMDczNjg2Zjc1NmM2NDIwNjI2NTIwNTc0NTQ3NGM0NDQzNjE2YzZjNjU3MjIwNzM2ODZmNzU2YzY0MjA2MjY1MjA3NjYxNzU2Yzc0Nzc3MjZmNmU2NzIwNzA2MTc5NmQ2NTZlNzQ2ZTZmMjA3MjY1Nzc2MTcyNjQyMDc0NmYyMDYzNmY2ZDcwNmY3NTZlNjQ2ZTZmMjA2YzY1NjY3NDIwNjE2ZDZmNzU2ZTc0MjA3NDZmMjA2MzZmNmQ3MDZmNzU2ZTY0Nzc3MjZmNmU2NzIwNzM3NzYxNzA3MDY1NjQyMDc0NmY2YjY1NmU2ZTZmMjA2NTc4Njk3NDIwNmQ2MTcyNmI2NTc0MjA3MDYxNzk2ZDY1NmU3NDIwNzI2NTYzNjU2OTc2NjU2NDZlNmYyMDcyNjU2NDY1NjU2ZDIwNzA2MTc5NmQ2NTZlNzQyMDcyNjU2MzY1Njk3NjY1NjQ0ZTZmMjA2OTZlNzQ2NTcyNjU3Mzc0MjA3MjYxNzQ2NTIwNmQ2ZjY0NjU2YzIwNzA3MjY1NzM2NTZlNzQyMDZmNmUyMDc0Njg2NTIwNmQ2ZjZlNjU3OTIwNmQ2MTcyNmI2NTc0NmU2NTc3MjA2MzZmNmQ3MDZmNzU2ZTY0MjA2NjY1NjU3MzIwNjU3ODYzNjU2NTY0MjAzMTMwMzAyNTZlNjU3NzIwNzA2NTcyNjY2ZjcyNmQ2MTZlNjM2NTIwNjY2NTY1NzMyMDY1Nzg2MzY1NjU2NDIwMzEzMDMwMjU2ZDZmNmU2NTc5NWY2ZDYxNzI2YjY1NzQ1Zjc0NmY2YjY1NmU1ZjY5NjQ2NTZlNzQ2OTY2Njk2NTcyNzc3MjYxNzA3MDY1NjQ1ZjY1Njc2YzY0NWY3NDZmNmI2NTZlNWY2OTY0NjU2ZTc0Njk2NjY5NjU3MjYyNmY2ZjczNzQ2NTcyNWY3Mzc0NjE2YjY1NjQ1Zjc0NmY2YjY1NmU1ZjY5NjQ2NTZlNzQ2OTY2Njk2NTcyNmQ2ZjZlNjU3OTVmNmQ2MTcyNmI2NTc0NWY3NTZlNjQ2NTcyNmM3OTY5NmU2NzVmNjk2NDY1NmU3NDY5NjY2OTY1NzI2MzZmNmQ3MDZmNzU2ZTY0NDU2ZTY0NzA2ZjY5NmU3NDIwNjM2MTZlMjA2ZjZlNmM3OTIwNjI2NTIwNjM2MTZjNmM2NTY0MjA2Mjc5MjA2Zjc3NmU2NTcyMDAwMDcwNjE2ZTY5NjMyMDZmNjM2Mzc1NzI3MjY1NjQwMDQxYzg4ZDA4MGIwNDljZmZmZmZmQDA1MDBAMDEwMEAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQDU3NDU0NzRjNDQyZDYxMzIzODYzMzUzOUAwMDAwMDAwMDAwMDAwMDAwMDUwMGEzYjY2NjkwMmQ1ZjRiYmYwZmY5Mzc0OGZiOTE1YWViNDMxMjRjYmY2NTA5QDAwMDAwMDAwMDAwMDAwMDAwNTAwMzJkZTRmNDBmMTdhMmY0MWM0ZTQwYzIxZjU5NmUzNmE4NDY5OTRlMzY1MDlAMDAwMDAwMDAwMDAwMDAwMDA1MDBmODgzNjY4NmY3YzZjMGYxM2Q3Mjc1MTUxYjc4ZjU5ZjhmMmY3MjlhNjUwOUBAQEBAMDAwMDAwMDAwMDAwMDAwMDA1MDAwYjFlNWIyNDQzMjUwOTU4NDlmNGUzNzEzNDY2MWQ1YmZkY2Q5MjVlN2NlYg==", + "signature": "edf0ec99b6f60414fa5e36d40cfb1d0075d01fd7c4ad7ba59bbe62b8b48eb892beb0c18bba203ff32b83827c3953847b190cdc89a4806f4615565dc2b3b5940f", + "sourceShard": 1, + "destinationShard": 1, + "blockNonce": 2127577, + "blockHash": "e3aea17b5345b45f61b233834d3b4ba0ac6f2b7d53eb3f1b1cf2bf0534ba567f", + "notarizedAtSourceInMetaNonce": 2129029, + "NotarizedAtSourceInMetaHash": "73ee8458f55bf5c9ea4a9974c0c838ced51a236c2b13238761f444598f40575e", + "notarizedAtDestinationInMetaNonce": 2129029, + "notarizedAtDestinationInMetaHash": "73ee8458f55bf5c9ea4a9974c0c838ced51a236c2b13238761f444598f40575e", + "miniblockType": "TxBlock", + "miniblockHash": "cc7e81e68269c2c633daf997fd2d52fc82d8ba3bb699d7e75250008bd9b7aa29", + "hyperblockNonce": 2129029, + "hyperblockHash": "73ee8458f55bf5c9ea4a9974c0c838ced51a236c2b13238761f444598f40575e", + "timestamp": 1707144290, + "status": "success", + "operation": "scDeploy", + "initiallyPaidFee": "82333950000000000", + "chainID": "D", + "version": 1, + "options": 0 + } + }, + "error": "", + "code": "successful" +} + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + let opt_address = tx_response.new_deployed_address.map(|e| { + multiversx_sdk::data::address::Address::from_bytes(*e.as_array()) + .to_bech32_string() + .unwrap() + }); + + let expected = + Some("erd1qqqqqqqqqqqqqpgqwpdf84ggxzqzmr2zmw959q4nlf9nz562q33sak25ze".to_string()); + + assert_eq!(opt_address, expected) +} + +#[test] +fn test_deployed_address_should_be_none_if_not_a_sc_deployment_tx() { + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "BuiltInFunctionCall", + "processingTypeOnDestination": "SCInvoking", + "hash": "238ad6dbe75dab1d53caeb9cabd584aabc6fc113c849a983afef5a5e439ce9e5", + "nonce": 13, + "round": 2192628, + "epoch": 888, + "value": "0", + "receiver": "erd1qqqqqqqqqqqqqpgqydwpdrplefjlwp3sp9xmn3vevdxdelfkwmfsw6e5xw", + "sender": "erd179xw6t04ug48m74jzyw9zq028hv66jhqayelzpzvgds0ptnzmckq2jf07f", + "gasPrice": 1000000000, + "gasLimit": 20000000, + "data": "RVNEVFRyYW5zZmVyQDRmNTU1MjRmMmQ2NDM4MzEzNzMxNjZAMDI0NmQyZDBiNmI1ZjBANjI3NTc5QDFiYzE2ZDY3NGVjODAwMDA=", + "signature": "ce984b4d785ccc7aca4b1cdea57ddcd568a502209f81e6b5bc678e1dd52b78d764fe46ea3ff77b926eb9f70eb52ae8f3f2afa2e9d0efa82655e361641458b900", + "sourceShard": 0, + "destinationShard": 1, + "blockNonce": 2129490, + "blockHash": "0ab10909b27565c5b7b59e8e1ee4a68d7046f49225fcde4c12d4b1ea3f512b8a", + "notarizedAtSourceInMetaNonce": 2130938, + "NotarizedAtSourceInMetaHash": "0c545160fd37f09f0196505b9cd2e730596bcd99438978a5bb415b9e1be1849d", + "notarizedAtDestinationInMetaNonce": 2130942, + "notarizedAtDestinationInMetaHash": "1ddd6b7aeeff824b5d11f2936a6284e470fc5abe41e34a8df229b719dc1a537d", + "miniblockType": "TxBlock", + "miniblockHash": "dc8ae41e1ae321c0fccbeb807194d11ff6e0f4ed71163764d850f1daaa60bd22", + "hyperblockNonce": 2130942, + "hyperblockHash": "1ddd6b7aeeff824b5d11f2936a6284e470fc5abe41e34a8df229b719dc1a537d", + "timestamp": 1707155768, + "status": "success", + "tokens": [ + "OURO-d8171f" + ], + "esdtValues": [ + "640821212132848" + ], + "operation": "ESDTTransfer", + "function": "buy", + "initiallyPaidFee": "359390000000000", + "chainID": "D", + "version": 1, + "options": 0 + } + }, + "error": "", + "code": "successful" +} + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + let opt_address = tx_response.new_deployed_address; + + let expected: Option
= None; + + assert_eq!(opt_address, expected) +} diff --git a/framework/scenario/tests/test_tx_issued_token_identifier.rs b/framework/scenario/tests/test_tx_issued_token_identifier.rs new file mode 100644 index 0000000000..2d0ccffa84 --- /dev/null +++ b/framework/scenario/tests/test_tx_issued_token_identifier.rs @@ -0,0 +1,1422 @@ +use multiversx_sc_scenario::scenario_model::TxResponse; +use multiversx_sdk::data::transaction::{TransactionInfo, TransactionOnNetwork}; + +#[test] +fn test_process_issued_token_identifier_fungible() { + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "SCInvoking", + "processingTypeOnDestination": "SCInvoking", + "hash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", + "nonce": 61, + "round": 173598, + "epoch": 72, + "value": "50000000000000000", + "receiver": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", + "sender": "erd1x39tc3q3nn72ecjnmcz7x0qp09kp97t080x99dgyhx7zh95j0n4szskhlv", + "gasPrice": 1000000000, + "gasLimit": 100000000, + "gasUsed": 100000000, + "data": "aXNzdWVMcFRva2VuQDAwMDAwMDAwMDAwMDAwMDAwNTAwMTM5ZWQ3YWU0YWEwMzc5MmU2YmNiMzMyMzk0YTQwZmU3NDZlZWZhNDdjZWJANDU0NzRjNDQ0ZDQ1NTg0YzUwQDQ1NDc0YzQ0NGQ0NTU4", + "signature": "b5049d2906adc1305a6a8d0f42749254ca6259c6996d9a35e7dc7528b3c87b48a421879aff70bc6d81483a7559b75e5dcf9be499dcb7d57aa9f25c79ac2ad40d", + "sourceShard": 1, + "destinationShard": 1, + "blockNonce": 173354, + "blockHash": "09d85ac264a54e12e7613395211c53fe0ee5a7d3b7111bf5fec1d02794caaacd", + "notarizedAtSourceInMetaNonce": 173321, + "NotarizedAtSourceInMetaHash": "64a83759da97fe8305cd4cda4b518f2d41ef0a8f3995d264460821edad45e09e", + "notarizedAtDestinationInMetaNonce": 173321, + "notarizedAtDestinationInMetaHash": "64a83759da97fe8305cd4cda4b518f2d41ef0a8f3995d264460821edad45e09e", + "miniblockType": "TxBlock", + "miniblockHash": "7f45eee4e35ffc1fbce66b92e4dd2aeae2acb092416aa5aa775b96493256b81d", + "hyperblockNonce": 173321, + "hyperblockHash": "64a83759da97fe8305cd4cda4b518f2d41ef0a8f3995d264460821edad45e09e", + "timestamp": 1695041588, + "smartContractResults": [ + { + "hash": "bce3d0dceb0b3e5c8c5780d7da3755c3f7492d551685d493a73bf66ebd36754b", + "nonce": 0, + "value": 50000000000000000, + "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "sender": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", + "data": "issue@45474c444d45584c50@45474c444d4558@03e8@12@63616e467265657a65@74727565@63616e57697065@74727565@63616e5061757365@74727565@63616e4d696e74@74727565@63616e4275726e@74727565@63616e4368616e67654f776e6572@74727565@63616e55706772616465@74727565@63616e4164645370656369616c526f6c6573@74727565@65ba30", + "prevTxHash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", + "originalTxHash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", + "gasLimit": 89624222, + "gasPrice": 1000000000, + "callType": 1, + "originalSender": "erd1x39tc3q3nn72ecjnmcz7x0qp09kp97t080x99dgyhx7zh95j0n4szskhlv", + "operation": "transfer", + "function": "issue" + }, + { + "hash": "2a452ff652791d79be5f6933fb583cc5503e876893e54b3b51381a92aa2e904d", + "nonce": 0, + "value": 0, + "receiver": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqsl6e366", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "ESDTSetBurnRoleForAll@45474c444d45582d393563366435", + "prevTxHash": "bce3d0dceb0b3e5c8c5780d7da3755c3f7492d551685d493a73bf66ebd36754b", + "originalTxHash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "logs": { + "address": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqsl6e366", + "events": [ + { + "address": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqsl6e366", + "identifier": "completedTxEvent", + "topics": [ + "vOPQ3OsLPlyMV4DX2jdVw/dJLVUWhdSTpzv2br02dUs=" + ], + "data": null, + "additionalData": null + } + ] + }, + "operation": "transfer" + }, + { + "hash": "2c84740ccb3376ea9fa00dab6c6c93fe7a35ee0a1d6dbfa0a1e61064853b0874", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "ESDTTransfer@45474c444d45582d393563366435@03e8@00", + "prevTxHash": "bce3d0dceb0b3e5c8c5780d7da3755c3f7492d551685d493a73bf66ebd36754b", + "originalTxHash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", + "gasLimit": 39624222, + "gasPrice": 1000000000, + "callType": 2, + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "identifier": "ESDTTransfer", + "topics": [ + "RUdMRE1FWC05NWM2ZDU=", + "", + "A+g=", + "AAAAAAAAAAAFAO+ux8+3RD51ieGHV10Z68X293CYfOs=" + ], + "data": null, + "additionalData": null + }, + { + "address": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", + "identifier": "completedTxEvent", + "topics": [ + "vOPQ3OsLPlyMV4DX2jdVw/dJLVUWhdSTpzv2br02dUs=" + ], + "data": null, + "additionalData": null + } + ] + }, + "tokens": [ + "EGLDMEX-95c6d5" + ], + "esdtValues": [ + "1000" + ], + "operation": "ESDTTransfer", + "function": "\u0000" + }, + { + "hash": "c9dfc4de3c3cee319123087a4f5dd03cc051e728ec6070707a63ea977b535227", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", + "sender": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", + "data": "\u0000", + "prevTxHash": "2c84740ccb3376ea9fa00dab6c6c93fe7a35ee0a1d6dbfa0a1e61064853b0874", + "originalTxHash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", + "gasLimit": 39424222, + "gasPrice": 1000000000, + "callType": 2, + "operation": "transfer", + "function": "\u0000" + }, + { + "hash": "609c3a8e1903680fef1f6d9e47527b1b5c1259664b868af600162120ce0b8192", + "nonce": 1, + "value": 300925400000000, + "receiver": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", + "sender": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", + "data": "@6f6b", + "prevTxHash": "2c84740ccb3376ea9fa00dab6c6c93fe7a35ee0a1d6dbfa0a1e61064853b0874", + "originalTxHash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "operation": "transfer", + "isRefund": true + } + ], + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", + "identifier": "transferValueOnly", + "topics": [ + "AAAAAAAAAAAFAO+ux8+3RD51ieGHV10Z68X293CYfOs=", + "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=", + "saK8LsUAAA==" + ], + "data": null, + "additionalData": null + }, + { + "address": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", + "identifier": "writeLog", + "topics": [ + "NEq8RBGc/KziU94F4zwBeWwS+W87zFK1BLm8K5aSfOs=" + ], + "data": "QDZmNmI=", + "additionalData": null + } + ] + }, + "status": "success", + "operation": "transfer", + "function": "issueLpToken", + "initiallyPaidFee": "1214335000000000", + "fee": "1214335000000000", + "chainID": "D", + "version": 2, + "options": 0 + } + }, + "error": "", + "code": "successful" +} + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + + let expected: Option = Some("EGLDMEX-95c6d5".to_string()); + + assert_eq!(tx_response.new_issued_token_identifier, expected) +} + +#[test] +fn test_process_issued_token_identifier_semi_fungible() { + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "SCInvoking", + "processingTypeOnDestination": "SCInvoking", + "hash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", + "nonce": 65, + "round": 8422527, + "epoch": 584, + "value": "50000000000000000", + "receiver": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", + "sender": "erd1x3g000ew7zzv6kyqhj9jl2wy5g6cc72qahvvxz29zv76jwq6ssvqt0d998", + "gasPrice": 1000000000, + "gasLimit": 80000000, + "gasUsed": 80000000, + "data": "aXNzdWVUb2tlbkA0NDZmNzA2NTU0NjU3Mzc0QDQ0NGY1MDQ1NTQ0NTUzNTQ=", + "signature": "0191848976e930996f6c62d4921e732f9b0ada8b41ca3b5b63d6bfd304fd44c2a1e8e6643479618ba4a764a36e87f53882b4f707600d5b7d476f2fdd2bac040e", + "sourceShard": 0, + "destinationShard": 0, + "blockNonce": 8420241, + "blockHash": "4d302220f6015876c95e7961b770cc67f8ab63c5f0ab69b4d6c2fb15c8bc23bd", + "notarizedAtSourceInMetaNonce": 8403647, + "NotarizedAtSourceInMetaHash": "f8b83b6d38fa45dacc167b15c93dd07ee5c40db906de34f26e11e7a24f539e30", + "notarizedAtDestinationInMetaNonce": 8403647, + "notarizedAtDestinationInMetaHash": "f8b83b6d38fa45dacc167b15c93dd07ee5c40db906de34f26e11e7a24f539e30", + "miniblockType": "TxBlock", + "miniblockHash": "b7b8fc9f3b81d7daae1113cbf73457e16ee31f3a864ef3729a1a21f3a929e112", + "hyperblockNonce": 8403647, + "hyperblockHash": "f8b83b6d38fa45dacc167b15c93dd07ee5c40db906de34f26e11e7a24f539e30", + "timestamp": 1646652762, + "smartContractResults": [ + { + "hash": "9aecf3bd5dd5c706a28d1cc7059ac20db74340f136816f667dbefcc58daa3aba", + "nonce": 0, + "value": 50000000000000000, + "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "sender": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", + "data": "issueSemiFungible@446f706554657374@444f504554455354@63616e467265657a65@74727565@63616e57697065@74727565@63616e5061757365@74727565@63616e4368616e67654f776e6572@74727565@63616e55706772616465@74727565@63616e4164645370656369616c526f6c6573@74727565@5ca148", + "prevTxHash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", + "originalTxHash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", + "gasLimit": 75958360, + "gasPrice": 1000000000, + "callType": 1, + "originalSender": "erd1x3g000ew7zzv6kyqhj9jl2wy5g6cc72qahvvxz29zv76jwq6ssvqt0d998", + "operation": "transfer", + "function": "issueSemiFungible" + }, + { + "hash": "aacfe9088bb9d2d5b3fbe9cab2b2f1c6a7e9cbab2f1a41020e2c819fc9b43570", + "nonce": 66, + "value": 0, + "receiver": "erd1x3g000ew7zzv6kyqhj9jl2wy5g6cc72qahvvxz29zv76jwq6ssvqt0d998", + "sender": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", + "data": "@6f6b", + "prevTxHash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", + "originalTxHash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "operation": "transfer" + }, + { + "hash": "3f6f0f3de9e942884e7e1592823a7db7ce935a3f9d3359d8c1ee98a5645332d8", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "@00@444f5045544553542d373732303063", + "prevTxHash": "9aecf3bd5dd5c706a28d1cc7059ac20db74340f136816f667dbefcc58daa3aba", + "originalTxHash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", + "gasLimit": 25958360, + "gasPrice": 1000000000, + "callType": 2, + "originalSender": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", + "logs": { + "address": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", + "identifier": "completedTxEvent", + "topics": [ + "muzzvV3VxwaijRzHBZrCDbdDQPE2gW9mfb78xY2qOro=" + ], + "data": null + } + ] + }, + "operation": "transfer" + }, + { + "hash": "c6e4f7c5da455009fb4f6967ce8a273a97b826aa617fa798ffd0cf17bde6b97a", + "nonce": 1, + "value": 225516180000000, + "receiver": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", + "sender": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", + "data": "@6f6b", + "prevTxHash": "3f6f0f3de9e942884e7e1592823a7db7ce935a3f9d3359d8c1ee98a5645332d8", + "originalTxHash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "operation": "transfer", + "isRefund": true + } + ], + "logs": { + "address": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", + "identifier": "transferValueOnly", + "topics": [ + "AAAAAAAAAAAFAH6d74PDz8xLqvowrlOA5lVDBMUghBg=", + "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=", + "saK8LsUAAA==" + ], + "data": null + }, + { + "address": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", + "identifier": "writeLog", + "topics": [ + "NFD3vy7whM1YgLyLL6nEojWMeUDt2MMJRRM9qTgahBg=" + ], + "data": "QDZmNmI=" + } + ] + }, + "status": "success", + "operation": "transfer", + "function": "issueToken", + "initiallyPaidFee": "914840000000000", + "fee": "914840000000000", + "chainID": "1", + "version": 1, + "options": 0 + } + }, + "error": "", + "code": "successful" +} + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + + let expected: Option = Some("DOPETEST-77200c".to_string()); + + assert_eq!(tx_response.new_issued_token_identifier, expected) +} + +#[test] +fn test_process_issued_token_identifier_non_fungible() { + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "SCInvoking", + "processingTypeOnDestination": "SCInvoking", + "hash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", + "nonce": 16, + "round": 820170, + "epoch": 341, + "value": "50000000000000000", + "receiver": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "sender": "erd162knt53z7m0f9jjms9wxphr3q9d7zu4ky85xs2cc0ekrqz7k4fdq85lkuc", + "gasPrice": 1000000000, + "gasLimit": 200000000, + "gasUsed": 200000000, + "data": "aXNzdWVUb2tlbkA2NzY1NmU2NTdhNzk3M0A0NzQ1NGU=", + "signature": "e80d45f4de419799a2bbff1cae1235521c8eef1853ee45b02f95c2da74ce50d241bf75b6ab0c650245562700862ea9759caad40f3e381ac0c4d82cfe56e67c09", + "sourceShard": 2, + "destinationShard": 2, + "blockNonce": 819313, + "blockHash": "a1db4ef13f07b86678000df9cc78f244d83dcc35ae51de545f333bf616930d39", + "notarizedAtSourceInMetaNonce": 819396, + "NotarizedAtSourceInMetaHash": "6d9e511e46d318aa5b77cbfdfde14d2ce8515ce4e954b286f130a6b518ddf26a", + "notarizedAtDestinationInMetaNonce": 819396, + "notarizedAtDestinationInMetaHash": "6d9e511e46d318aa5b77cbfdfde14d2ce8515ce4e954b286f130a6b518ddf26a", + "miniblockType": "TxBlock", + "miniblockHash": "afdb278522181aeb9b12f08840e6c534e398e6af9c7f757548308e300e7ec4e9", + "hyperblockNonce": 819396, + "hyperblockHash": "6d9e511e46d318aa5b77cbfdfde14d2ce8515ce4e954b286f130a6b518ddf26a", + "timestamp": 1698921020, + "smartContractResults": [ + { + "hash": "6fe0cc002802af1744f394eee4a69224b5e775961d8386e04e7a5b9242f7ff65", + "nonce": 0, + "value": 50000000000000000, + "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "sender": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "data": "issueNonFungible@67656e657a7973@47454e@63616e467265657a65@74727565@63616e57697065@74727565@63616e5061757365@74727565@63616e5472616e736665724e4654437265617465526f6c65@74727565@63616e4368616e67654f776e6572@66616c7365@63616e55706772616465@66616c7365@63616e4164645370656369616c526f6c6573@74727565@5e30e4", + "prevTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", + "originalTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", + "gasLimit": 196098365, + "gasPrice": 1000000000, + "callType": 1, + "originalSender": "erd162knt53z7m0f9jjms9wxphr3q9d7zu4ky85xs2cc0ekrqz7k4fdq85lkuc", + "operation": "transfer", + "function": "issueNonFungible" + }, + { + "hash": "98afe82512c79f1caaf171bd5919ee469d11ba0c4f725aefcab834278c0f1e58", + "nonce": 0, + "value": 0, + "receiver": "erd1lllllllllllllllllllllllllllllllllllllllllllllllllupq9x7ny0", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "ESDTSetBurnRoleForAll@47454e2d383638353933", + "prevTxHash": "6fe0cc002802af1744f394eee4a69224b5e775961d8386e04e7a5b9242f7ff65", + "originalTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "logs": { + "address": "erd1lllllllllllllllllllllllllllllllllllllllllllllllllupq9x7ny0", + "events": [ + { + "address": "erd1lllllllllllllllllllllllllllllllllllllllllllllllllupq9x7ny0", + "identifier": "completedTxEvent", + "topics": [ + "b+DMACgCrxdE85Tu5KaSJLXndZYdg4bgTnpbkkL3/2U=" + ], + "data": null, + "additionalData": null + } + ] + }, + "operation": "transfer" + }, + { + "hash": "83494ad9369738b574a7266cbfb12ce63ccf634950cd6b0ec16107b8fb42f8f6", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "sender": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "data": "setSpecialRole@47454e2d383638353933@00000000000000000500de51fa8943c26e6933419f9bb7ceb79b7ff4f7bbaa5a@45534454526f6c654e4654437265617465@5e30e4", + "prevTxHash": "112d18ec0364b4700b1bfb3df517c80dba547a53373ece2a9e71acd5266e7b64", + "originalTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", + "gasLimit": 142399698, + "gasPrice": 1000000000, + "callType": 1, + "operation": "transfer", + "function": "setSpecialRole" + }, + { + "hash": "112d18ec0364b4700b1bfb3df517c80dba547a53373ece2a9e71acd5266e7b64", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "@00@47454e2d383638353933", + "prevTxHash": "6fe0cc002802af1744f394eee4a69224b5e775961d8386e04e7a5b9242f7ff65", + "originalTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", + "gasLimit": 146098365, + "gasPrice": 1000000000, + "callType": 2, + "originalSender": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "identifier": "writeLog", + "topics": [ + "AAAAAAAAAAAFAN5R+olDwm5pM0Gfm7fOt5t/9Pe7qlo=" + ], + "data": "QDZmNmI=", + "additionalData": null + } + ] + }, + "operation": "transfer" + }, + { + "hash": "db5d74970374337956fa61fb4fd90057b3f6a82ea3e259b389934b71a1652e5f", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "ESDTSetRole@47454e2d383638353933@45534454526f6c654e4654437265617465", + "prevTxHash": "83494ad9369738b574a7266cbfb12ce63ccf634950cd6b0ec16107b8fb42f8f6", + "originalTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "identifier": "ESDTSetRole", + "topics": [ + "R0VOLTg2ODU5Mw==", + "", + "", + "RVNEVFJvbGVORlRDcmVhdGU=" + ], + "data": null, + "additionalData": null + }, + { + "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "identifier": "completedTxEvent", + "topics": [ + "g0lK2TaXOLV0pyZsv7Es5jzPY0lQzWsOwWEHuPtC+PY=" + ], + "data": null, + "additionalData": null + } + ] + }, + "operation": "ESDTSetRole", + "function": "ESDTSetRole" + }, + { + "hash": "a6a665f47977a59c4c2baf460281fc938e04ae0f87ac2e78040a14ae27822701", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "@00", + "prevTxHash": "83494ad9369738b574a7266cbfb12ce63ccf634950cd6b0ec16107b8fb42f8f6", + "originalTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", + "gasLimit": 92399698, + "gasPrice": 1000000000, + "callType": 2, + "originalSender": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "identifier": "writeLog", + "topics": [ + "AAAAAAAAAAAFAN5R+olDwm5pM0Gfm7fOt5t/9Pe7qlo=", + "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gOTIzOTk2OTgsIGdhcyB1c2VkID0gMzE0MTg4MA==" + ], + "data": "QDZmNmI=", + "additionalData": null + }, + { + "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "identifier": "completedTxEvent", + "topics": [ + "g0lK2TaXOLV0pyZsv7Es5jzPY0lQzWsOwWEHuPtC+PY=" + ], + "data": null, + "additionalData": null + } + ] + }, + "operation": "transfer" + } + ], + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "identifier": "transferValueOnly", + "topics": [ + "AAAAAAAAAAAFAN5R+olDwm5pM0Gfm7fOt5t/9Pe7qlo=", + "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=", + "saK8LsUAAA==" + ], + "data": null, + "additionalData": null + }, + { + "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", + "identifier": "writeLog", + "topics": [ + "0q010iL23pLKW4FcYNxxAVvhcrYh6GgrGH5sMAvWqlo=" + ], + "data": "QDZmNmI=", + "additionalData": null + } + ] + }, + "status": "success", + "operation": "transfer", + "function": "issueToken", + "initiallyPaidFee": "2097020000000000", + "fee": "2097020000000000", + "chainID": "D", + "version": 1, + "options": 0 + } + }, + "error": "", + "code": "successful" +} + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + + let expected: Option = Some("GEN-868593".to_string()); + + assert_eq!(tx_response.new_issued_token_identifier, expected) +} + +#[test] +fn test_process_issued_token_identifier_meta_esdt() { + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "SCInvoking", + "processingTypeOnDestination": "SCInvoking", + "hash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", + "nonce": 419, + "round": 1787093, + "epoch": 744, + "value": "50000000000000000", + "receiver": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "sender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", + "gasPrice": 1000000000, + "gasLimit": 600000000, + "gasUsed": 157220928, + "data": "ZGVwbG95QXNoc3dhcExQQUNTdHJhdGVneUA0MTRjNTAyZDYzNjE2NTYxNjMzNUA0MTU0NTMyZDM0NjMzMDM5MzIzMEAwM2U4QDAzZThAQDNiOWFjYTAwQDAwMDAwMDAwMDAwMDAwMDAwNTAwOTU3MzkwYWVkYTQzMmY1MmE0MTFkNTE5NzRmZTkzZDQwZDI3NzMzZTA0NjNAMDAwMDAwMDAwMDAwMDAwMDA1MDBkMTJjYzczY2JkYTZmMjY1OWM5NTllNWQ1NzU4YWY5MmNhMTM4NDg2NTIzM0AwMDAwMDAwMDAwMDAwMDAwMDUwMDUxZGY3MTc1OGNmMmFjYTViNDZkZWQ4MTU1OGI1NTE1ZGMyOWYzZjM1MjMzQEAwMDAwMDAwMDAwMDAwMDAwMDUwMDdlNGExZGZjNDM3Y2VkNDlkYjlmMTYzNzk4NDE2Yjg0YWMyMWQ0Yzk3Y2ViMDAwMDAwMGM1NzQ1NDc0YzQ0MmQ2MTMyMzg2MzM1MzkwMDAwMDAwMDAwMDAwMDAwMDUwMGE4YmE5ZTY4NjI2YmJjOTkzZmQ3OTVlOGJiNmY0Nzk0M2IyZjVmZmE3Y2ViMDAwMDAwMGE1NTU0NGIyZDMxMzQ2NDM1Mzc2NEAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwNTAwNTFkZjcxNzU4Y2YyYWNhNWI0NmRlZDgxNTU4YjU1MTVkYzI5ZjNmMzUyMzMwMDAwMDAwYjQyNTU1MzQ0MmQ2NDM0NjMzMDMxMzQwMDAwMDAwMDAwQDAxODZhMEAyNzEw", + "signature": "4648af0b96eb430e4986b9fb760549742de09c809b46b984e5d995c898d80c25bfc0717c30da34bd89cd3005d98ee895afa39ee588b7b74b4807c63cbeade807", + "sourceShard": 1, + "destinationShard": 1, + "blockNonce": 1785520, + "blockHash": "8f926a5d79fa84bc69949a21bfbba17447091a8a074ac172fa0b88e4475a1214", + "notarizedAtSourceInMetaNonce": 1785568, + "NotarizedAtSourceInMetaHash": "eebd1aa5c3dde083f9c367242c054affedd36bfc95f7bcc1d4e2d90beb5754e9", + "notarizedAtDestinationInMetaNonce": 1785568, + "notarizedAtDestinationInMetaHash": "eebd1aa5c3dde083f9c367242c054affedd36bfc95f7bcc1d4e2d90beb5754e9", + "miniblockType": "TxBlock", + "miniblockHash": "b85d82db6d69cbc1911b3455d2837eeb3170b391926efa2eacb4d9c8e3c96ee4", + "hyperblockNonce": 1785568, + "hyperblockHash": "eebd1aa5c3dde083f9c367242c054affedd36bfc95f7bcc1d4e2d90beb5754e9", + "timestamp": 1704722558, + "smartContractResults": [ + { + "hash": "ea9a96c079e66249e6b73c0341991dad96ca81f855f2fc4abe0d432be117a882", + "nonce": 420, + "value": 4427790720000000, + "receiver": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", + "sender": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "data": "@6f6b", + "prevTxHash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", + "originalTxHash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "operation": "transfer", + "isRefund": true + }, + { + "hash": "6082975132a2c9d8197dfd0f9852b454ad344740eebdbdf93f620b2796ab723b", + "nonce": 0, + "value": 50000000000000000, + "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "sender": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "data": "registerMetaESDT@415453417368537761704c5041435661756c74@4156415348@12@63616e467265657a65@66616c7365@63616e57697065@66616c7365@63616e5061757365@66616c7365@63616e5472616e736665724e4654437265617465526f6c65@66616c7365@63616e4368616e67654f776e6572@66616c7365@63616e55706772616465@66616c7365@63616e4164645370656369616c526f6c6573@74727565@9eb30a87c92674ab1469700c0b385b3850e86de80f87dec6cf3213c7e379a646@408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43@03eb4a30", + "prevTxHash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", + "originalTxHash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", + "gasLimit": 125751600, + "gasPrice": 1000000000, + "callType": 1, + "originalSender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", + "operation": "transfer", + "function": "registerMetaESDT" + }, + { + "hash": "290f85d7ec2f7d5797510290358e9e0f76bb880451efaacb0d69280b8d94c67a", + "nonce": 0, + "value": 0, + "receiver": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqsl6e366", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "ESDTSetBurnRoleForAll@41564153482d376438623564", + "prevTxHash": "6082975132a2c9d8197dfd0f9852b454ad344740eebdbdf93f620b2796ab723b", + "originalTxHash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "originalSender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", + "logs": { + "address": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqsl6e366", + "events": [ + { + "address": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqsl6e366", + "identifier": "completedTxEvent", + "topics": [ + "YIKXUTKiydgZff0PmFK0VK00R0Duvb35P2ILJ5arcjs=" + ], + "data": null, + "additionalData": null + } + ] + }, + "operation": "transfer" + }, + { + "hash": "1aa62a6251edd216bd4e5ae59f7e676d5d2f88597685e0ec0e25ac4434bfccdb", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "@00@41564153482d376438623564@d0644194444642fd16ee156307f6fda0e8f8baf4c496e1a1dc85e027ecc08a4a@9eb30a87c92674ab1469700c0b385b3850e86de80f87dec6cf3213c7e379a646@408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43@00", + "prevTxHash": "6082975132a2c9d8197dfd0f9852b454ad344740eebdbdf93f620b2796ab723b", + "originalTxHash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", + "gasLimit": 75751600, + "gasPrice": 1000000000, + "callType": 2, + "originalSender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", + "logs": { + "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "identifier": "writeLog", + "topics": [ + "AAAAAAAAAAAFAH6UefeHERqHcLpMz2gC3xXGhFsJBGM=", + "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gNzU3NTE2MDAsIGdhcyB1c2VkID0gNDE3NjA1OQ==" + ], + "data": "QDZmNmI=", + "additionalData": [ + "QDZmNmI=" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "identifier": "completedTxEvent", + "topics": [ + "YIKXUTKiydgZff0PmFK0VK00R0Duvb35P2ILJ5arcjs=" + ], + "data": null, + "additionalData": null + } + ] + }, + "operation": "transfer" + } + ], + "logs": { + "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "identifier": "transferValueOnly", + "topics": [ + "", + "AAAAAAAAAAAFANAMwOY4h/9reS00I0pE56xrV11LBGM=" + ], + "data": "RGVwbG95RnJvbVNvdXJjZQ==", + "additionalData": [ + "RGVwbG95RnJvbVNvdXJjZQ==", + "aW5pdA==", + "QUxQLWNhZWFjNQ==", + "QVRTLTRjMDkyMA==", + "A+g=", + "A+g=", + "", + "O5rKAA==" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "identifier": "transferValueOnly", + "topics": [ + "", + "AAAAAAAAAAAFADJ0SE0vUW6bO5SurLeFIMfK/HtBBGM=" + ], + "data": "RGVwbG95RnJvbVNvdXJjZQ==", + "additionalData": [ + "RGVwbG95RnJvbVNvdXJjZQ==", + "aW5pdA==", + "AAAAAAAAAAAFANAMwOY4h/9reS00I0pE56xrV11LBGM=", + "AAAAAAAAAAAFAJVzkK7aQy9SpBHVGXT+k9QNJ3M+BGM=", + "AAAAAAAAAAAFANEsxzy9pvJlnJWeXVdYr5LKE4SGUjM=", + "AAAAAAAAAAAFAFHfcXWM8qyltG3tgVWLVRXcKfPzUjM=", + "", + "AAAAAAAAAAAFAH5KHfxDfO1J258WN5hBa4SsIdTJfOsAAAAMV0VHTEQtYTI4YzU5AAAAAAAAAAAFAKi6nmhia7yZP9eV6LtvR5Q7L1/6fOsAAAAKVVRLLTE0ZDU3ZA==", + "AAAAAQAAAAAAAAAABQBR33F1jPKspbRt7YFVi1UV3Cnz81IzAAAAC0JVU0QtZDRjMDE0AAAAAAA=", + "AYag", + "JxA=" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgqxf6ysnf029hfkwu546kt0pfqcl90c76pq33s0a320f", + "identifier": "transferValueOnly", + "topics": [ + "", + "AAAAAAAAAAAFANEsxzy9pvJlnJWeXVdYr5LKE4SGUjM=" + ], + "data": "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", + "additionalData": [ + "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", + "Z2V0RmFybWluZ1Rva2VuSWQ=" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgqxf6ysnf029hfkwu546kt0pfqcl90c76pq33s0a320f", + "identifier": "transferValueOnly", + "topics": [ + "", + "AAAAAAAAAAAFANEsxzy9pvJlnJWeXVdYr5LKE4SGUjM=" + ], + "data": "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", + "additionalData": [ + "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", + "Z2V0RmFybVRva2VuSWQ=" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgqxf6ysnf029hfkwu546kt0pfqcl90c76pq33s0a320f", + "identifier": "transferValueOnly", + "topics": [ + "", + "AAAAAAAAAAAFANEsxzy9pvJlnJWeXVdYr5LKE4SGUjM=" + ], + "data": "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", + "additionalData": [ + "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", + "Z2V0UmV3YXJkVG9rZW5JZA==" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "identifier": "transferValueOnly", + "topics": [ + "saK8LsUAAA==", + "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=" + ], + "data": "QXN5bmNDYWxs", + "additionalData": [ + "QXN5bmNDYWxs", + "cmVnaXN0ZXJNZXRhRVNEVA==", + "QVRTQXNoU3dhcExQQUNWYXVsdA==", + "QVZBU0g=", + "Eg==", + "Y2FuRnJlZXpl", + "ZmFsc2U=", + "Y2FuV2lwZQ==", + "ZmFsc2U=", + "Y2FuUGF1c2U=", + "ZmFsc2U=", + "Y2FuVHJhbnNmZXJORlRDcmVhdGVSb2xl", + "ZmFsc2U=", + "Y2FuQ2hhbmdlT3duZXI=", + "ZmFsc2U=", + "Y2FuVXBncmFkZQ==", + "ZmFsc2U=", + "Y2FuQWRkU3BlY2lhbFJvbGVz", + "dHJ1ZQ==" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgqxf6ysnf029hfkwu546kt0pfqcl90c76pq33s0a320f", + "identifier": "SCDeploy", + "topics": [ + "AAAAAAAAAAAFADJ0SE0vUW6bO5SurLeFIMfK/HtBBGM=", + "AAAAAAAAAAAFAH6UefeHERqHcLpMz2gC3xXGhFsJBGM=", + "fvRqbue54Womde/CN2IkRGkrx8tsU+xkLvi3+uwMkhY=" + ], + "data": null, + "additionalData": null + }, + { + "address": "erd1qqqqqqqqqqqqqpgq6qxvpe3csllkk7fdxs3553884344wh2tq33sakulat", + "identifier": "SCDeploy", + "topics": [ + "AAAAAAAAAAAFANAMwOY4h/9reS00I0pE56xrV11LBGM=", + "AAAAAAAAAAAFAH6UefeHERqHcLpMz2gC3xXGhFsJBGM=", + "E3blQfRJfCKLWDr06Od703DSZenIzq8KND+xUjmGY/M=" + ], + "data": null, + "additionalData": null + } + ] + }, + "status": "success", + "operation": "transfer", + "function": "deployAshswapLPACStrategy", + "initiallyPaidFee": "6936045000000000", + "fee": "2508254280000000", + "chainID": "D", + "version": 1, + "options": 0 + } + }, + "error": "", + "code": "successful" +} + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + + let expected: Option = Some("AVASH-7d8b5d".to_string()); + + assert_eq!(tx_response.new_issued_token_identifier, expected) +} + +#[test] +fn test_set_special_roles_should_not_process_issued_token_identifier() { + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "SCInvoking", + "processingTypeOnDestination": "SCInvoking", + "hash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", + "nonce": 420, + "round": 1787109, + "epoch": 744, + "value": "0", + "receiver": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "sender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", + "gasPrice": 1000000000, + "gasLimit": 600000000, + "gasUsed": 129636807, + "data": "ZmluaXNoVmF1bHREZXBsb3ltZW50cw==", + "signature": "dca943ef1a788bfa6cb0e9aa3900b8340e4908075cbfefaa2a66688f6f0c0fed349edb2eb48eec427cd9098822fba875e4d66072fbdb44cb7f4c1a416736e20c", + "sourceShard": 1, + "destinationShard": 1, + "blockNonce": 1785536, + "blockHash": "93ca539e81612768b67a85b7135f7c104e76bec031a758a6b1782910ae49dd8f", + "notarizedAtSourceInMetaNonce": 1785584, + "NotarizedAtSourceInMetaHash": "71d17afe660282bb42de1ea3eec3e3534a179bd32aa1471c2861ce411bf30552", + "notarizedAtDestinationInMetaNonce": 1785584, + "notarizedAtDestinationInMetaHash": "71d17afe660282bb42de1ea3eec3e3534a179bd32aa1471c2861ce411bf30552", + "miniblockType": "TxBlock", + "miniblockHash": "f8c60565af746e92d2c9c09a92734e5eb8da7e42c67a86854c93b349bfe287eb", + "hyperblockNonce": 1785584, + "hyperblockHash": "71d17afe660282bb42de1ea3eec3e3534a179bd32aa1471c2861ce411bf30552", + "timestamp": 1704722654, + "smartContractResults": [ + { + "hash": "c3ce9c364de3823ffae250c2bfb40aaf2b18f771ed4bd37bf788ad83a2c651f3", + "nonce": 421, + "value": 4703631930000000, + "receiver": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", + "sender": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "data": "@6f6b", + "prevTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", + "originalTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "operation": "transfer", + "isRefund": true + }, + { + "hash": "50f9c25a1402ce6d87ae9f890659c8a67462292e471e02c74d64ff7ba1995e60", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "sender": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "data": "setSpecialRole@41564153482d376438623564@00000000000000000500d00cc0e63887ff6b792d34234a44e7ac6b575d4b0463@45534454526f6c654e4654437265617465@45534454526f6c654e46544164645175616e74697479@45534454526f6c654e46544275726e@0192c6db2c69f50b6968fb22ac558337a851719519cfd1e6bbf79a07bbcf18bc@cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0@03eb4a30", + "prevTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", + "originalTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", + "gasLimit": 125751600, + "gasPrice": 1000000000, + "callType": 1, + "originalSender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", + "operation": "transfer", + "function": "setSpecialRole" + }, + { + "hash": "d6a5824a60b6c9050462c3f5a02ace00c36e8b4ba1958d132bd394e2ed1e7226", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgq6qxvpe3csllkk7fdxs3553884344wh2tq33sakulat", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "ESDTSetRole@41564153482d376438623564@45534454526f6c654e4654437265617465@45534454526f6c654e46544164645175616e74697479@45534454526f6c654e46544275726e", + "prevTxHash": "50f9c25a1402ce6d87ae9f890659c8a67462292e471e02c74d64ff7ba1995e60", + "originalTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "originalSender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", + "logs": { + "address": "erd1qqqqqqqqqqqqqpgq6qxvpe3csllkk7fdxs3553884344wh2tq33sakulat", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgq6qxvpe3csllkk7fdxs3553884344wh2tq33sakulat", + "identifier": "ESDTSetRole", + "topics": [ + "QVZBU0gtN2Q4YjVk", + "", + "", + "RVNEVFJvbGVORlRDcmVhdGU=", + "RVNEVFJvbGVORlRBZGRRdWFudGl0eQ==", + "RVNEVFJvbGVORlRCdXJu" + ], + "data": null, + "additionalData": null + }, + { + "address": "erd1qqqqqqqqqqqqqpgq6qxvpe3csllkk7fdxs3553884344wh2tq33sakulat", + "identifier": "completedTxEvent", + "topics": [ + "UPnCWhQCzm2Hrp+JBlnIpnRiKS5HHgLHTWT/e6GZXmA=" + ], + "data": null, + "additionalData": null + } + ] + }, + "operation": "ESDTSetRole", + "function": "ESDTSetRole" + }, + { + "hash": "bf1b8b4b301ff548368dfd972896489d5e2a088d5cbdfa1bfe2421cc7f641f7a", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "@00@a68d44c751eba85db0713db8dc9c10c78749189ec0d6f1af5fc67bb656c1254b@0192c6db2c69f50b6968fb22ac558337a851719519cfd1e6bbf79a07bbcf18bc@cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0@00", + "prevTxHash": "50f9c25a1402ce6d87ae9f890659c8a67462292e471e02c74d64ff7ba1995e60", + "originalTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", + "gasLimit": 75751600, + "gasPrice": 1000000000, + "callType": 2, + "originalSender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", + "logs": { + "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "identifier": "transferValueOnly", + "topics": [ + "", + "AAAAAAAAAAAFANAMwOY4h/9reS00I0pE56xrV11LBGM=" + ], + "data": "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", + "additionalData": [ + "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", + "c2V0U2hhcmVUb2tlbklkZW50aWZpZXI=", + "QVZBU0gtN2Q4YjVk" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "identifier": "transferValueOnly", + "topics": [ + "", + "AAAAAAAAAAAFANAMwOY4h/9reS00I0pE56xrV11LBGM=" + ], + "data": "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", + "additionalData": [ + "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", + "c2V0U3RyYXRlZ3lBZGRyZXNz", + "AAAAAAAAAAAFADJ0SE0vUW6bO5SurLeFIMfK/HtBBGM=" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "identifier": "completedTxEvent", + "topics": [ + "UPnCWhQCzm2Hrp+JBlnIpnRiKS5HHgLHTWT/e6GZXmA=" + ], + "data": null, + "additionalData": null + } + ] + }, + "operation": "transfer" + }, + { + "hash": "9d75a398545f488d4764149245e6ec3101debfce99477c353ac11c3239acd897", + "nonce": 1, + "value": 648519550000000, + "receiver": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "sender": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "data": "@6f6b", + "prevTxHash": "bf1b8b4b301ff548368dfd972896489d5e2a088d5cbdfa1bfe2421cc7f641f7a", + "originalTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "operation": "transfer", + "isRefund": true + } + ], + "logs": { + "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", + "identifier": "transferValueOnly", + "topics": [ + "", + "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=" + ], + "data": "QXN5bmNDYWxs", + "additionalData": [ + "QXN5bmNDYWxs", + "c2V0U3BlY2lhbFJvbGU=", + "QVZBU0gtN2Q4YjVk", + "AAAAAAAAAAAFANAMwOY4h/9reS00I0pE56xrV11LBGM=", + "RVNEVFJvbGVORlRDcmVhdGU=", + "RVNEVFJvbGVORlRBZGRRdWFudGl0eQ==", + "RVNEVFJvbGVORlRCdXJu" + ] + } + ] + }, + "status": "success", + "operation": "transfer", + "function": "finishVaultDeployments", + "initiallyPaidFee": "6082170000000000", + "fee": "1378538070000000", + "chainID": "D", + "version": 1, + "options": 0 + } + }, + "error": "", + "code": "successful" +} + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + + let expected: Option = None; + + assert_eq!(tx_response.new_issued_token_identifier, expected) +} + +#[test] +fn test_multisig_issue_nft_and_set_all_roles() { + let data = r#" +{ + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "SCInvoking", + "processingTypeOnDestination": "SCInvoking", + "hash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", + "nonce": 53, + "round": 3050972, + "epoch": 1246, + "value": "0", + "receiver": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "sender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "gasPrice": 1000000000, + "gasLimit": 80000000, + "gasUsed": 80000000, + "data": "cGVyZm9ybUFjdGlvbkAwMQ==", + "signature": "cb67645595cee5f7967d8d85af05bb7db73e80d9b97611796819249d87cd174b69b4abfc2a3fbe52df1aec965bdea921f7eb34d2b1118aa480699ad1dc85790a", + "sourceShard": 0, + "destinationShard": 0, + "blockNonce": 2984930, + "blockHash": "644ae8703b826a23e89429953919ec37f875e34a547ea9f7edd53fb71a99c746", + "notarizedAtSourceInMetaNonce": 2988311, + "NotarizedAtSourceInMetaHash": "4f608a72e654dd9f466801cd489be8ee1a73fbcd77b128559cd46182d3b9455a", + "notarizedAtDestinationInMetaNonce": 2988311, + "notarizedAtDestinationInMetaHash": "4f608a72e654dd9f466801cd489be8ee1a73fbcd77b128559cd46182d3b9455a", + "miniblockType": "TxBlock", + "miniblockHash": "c5a73671bc1d37835ddd15b926157721bc83203ec4e00cd48ae0d46015cb5f0b", + "hyperblockNonce": 2988311, + "hyperblockHash": "4f608a72e654dd9f466801cd489be8ee1a73fbcd77b128559cd46182d3b9455a", + "timestamp": 1712305832, + "smartContractResults": [ + { + "hash": "b0b3c8df519c33b314c0ee3d25abae6f17c4432fb3382676ce17a42690811cff", + "nonce": 0, + "value": 50000000000000000, + "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "sender": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "data": "registerAndSetAllRoles@54657374436f6c6c656374696f6e31@54455354434f4c4c31@4e4654@@98fa4ff554b9c6990ce577fbb816a271f690dcbd6b148f6583fe7692868ae538@08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd@5e2338", + "prevTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", + "originalTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", + "gasLimit": 73052300, + "gasPrice": 1000000000, + "callType": 1, + "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "operation": "transfer", + "function": "registerAndSetAllRoles" + }, + { + "hash": "5ae4f74e134e4fa63c8b92e06ff12b2a4b544233d01d80db6a922af35ee55356", + "nonce": 1, + "value": 196430610000000, + "receiver": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "sender": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "data": "@6f6b", + "prevTxHash": "c4a24b01b48d32308636310e2d335d6ed1f34dcbdfc1133aed7995e78e831c18", + "originalTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "operation": "transfer", + "isRefund": true + }, + { + "hash": "7589c1ad622d8a9ab2f186731fc82aeeab0aea5a8198cb94b6eba85a966e7962", + "nonce": 0, + "value": 0, + "receiver": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqq2m3f0f", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "ESDTSetBurnRoleForAll@54455354434f4c4c312d356161383063", + "prevTxHash": "b0b3c8df519c33b314c0ee3d25abae6f17c4432fb3382676ce17a42690811cff", + "originalTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "logs": { + "address": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqq2m3f0f", + "events": [ + { + "address": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqq2m3f0f", + "identifier": "completedTxEvent", + "topics": [ + "sLPI31GcM7MUwO49JauubxfEQy+zOCZ2zhekJpCBHP8=" + ] + } + ] + }, + "operation": "transfer" + }, + { + "hash": "86d1ec3365ea1311dbde2f2366de4ea8627d7e49c29a974578c0869b66903cbc", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "ESDTSetRole@54455354434f4c4c312d356161383063@45534454526f6c654e4654437265617465@45534454526f6c654e46544275726e@45534454526f6c654e465455706461746541747472696275746573@45534454526f6c654e4654416464555249", + "prevTxHash": "b0b3c8df519c33b314c0ee3d25abae6f17c4432fb3382676ce17a42690811cff", + "originalTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "identifier": "ESDTSetRole", + "topics": [ + "VEVTVENPTEwxLTVhYTgwYw==", + "", + "", + "RVNEVFJvbGVORlRDcmVhdGU=", + "RVNEVFJvbGVORlRCdXJu", + "RVNEVFJvbGVORlRVcGRhdGVBdHRyaWJ1dGVz", + "RVNEVFJvbGVORlRBZGRVUkk=" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "identifier": "completedTxEvent", + "topics": [ + "sLPI31GcM7MUwO49JauubxfEQy+zOCZ2zhekJpCBHP8=" + ] + } + ] + }, + "operation": "ESDTSetRole", + "function": "ESDTSetRole" + }, + { + "hash": "c4a24b01b48d32308636310e2d335d6ed1f34dcbdfc1133aed7995e78e831c18", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", + "data": "@00@54455354434f4c4c312d356161383063@3ec73c55022548038bbe06c0639156b3db70b7c770955e340f14fcfcd45df06a@98fa4ff554b9c6990ce577fbb816a271f690dcbd6b148f6583fe7692868ae538@08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd@00", + "prevTxHash": "b0b3c8df519c33b314c0ee3d25abae6f17c4432fb3382676ce17a42690811cff", + "originalTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", + "gasLimit": 23052300, + "gasPrice": 1000000000, + "callType": 2, + "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "identifier": "callBack", + "topics": [ + "YXN5bmNDYWxsU3VjY2Vzcw==", + "VEVTVENPTEwxLTVhYTgwYw==" + ], + "additionalData": [ + "" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "identifier": "completedTxEvent", + "topics": [ + "sLPI31GcM7MUwO49JauubxfEQy+zOCZ2zhekJpCBHP8=" + ] + } + ] + }, + "operation": "transfer" + } + ], + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "identifier": "performAction", + "topics": [ + "c3RhcnRQZXJmb3JtQWN0aW9u" + ], + "data": "AAAAAQYAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAL//wAAAAexorwuxQAAAAAAFnJlZ2lzdGVyQW5kU2V0QWxsUm9sZXMAAAAEAAAAD1Rlc3RDb2xsZWN0aW9uMQAAAAlURVNUQ09MTDEAAAADTkZUAAAAAAAAAATjKv7ckE/hk5dGrZc76zg1Y89jZCumabMED5uUKKXtYLE6AXQjw2bK/4zs+3ehJhChMPSIgTQSLHk3/q4NbX0XOvjZyUI7JXfGJSciwdkCEqQRH3ID+XRPdvz6HQoxADOyoRVVzlIeSUTgmrF1SdhbSH3NJshLUBejnjGjZwiJug==", + "additionalData": [ + "AAAAAQYAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAL//wAAAAexorwuxQAAAAAAFnJlZ2lzdGVyQW5kU2V0QWxsUm9sZXMAAAAEAAAAD1Rlc3RDb2xsZWN0aW9uMQAAAAlURVNUQ09MTDEAAAADTkZUAAAAAAAAAATjKv7ckE/hk5dGrZc76zg1Y89jZCumabMED5uUKKXtYLE6AXQjw2bK/4zs+3ehJhChMPSIgTQSLHk3/q4NbX0XOvjZyUI7JXfGJSciwdkCEqQRH3ID+XRPdvz6HQoxADOyoRVVzlIeSUTgmrF1SdhbSH3NJshLUBejnjGjZwiJug==" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "identifier": "performAction", + "topics": [ + "cGVyZm9ybUFzeW5jQ2FsbA==", + "AQ==", + "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=", + "saK8LsUAAA==", + "BGa4HQ==", + "cmVnaXN0ZXJBbmRTZXRBbGxSb2xlcw==", + "VGVzdENvbGxlY3Rpb24x", + "VEVTVENPTEwx", + "TkZU", + "" + ], + "additionalData": [ + "" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "identifier": "transferValueOnly", + "topics": [ + "saK8LsUAAA==", + "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=" + ], + "data": "QXN5bmNDYWxs", + "additionalData": [ + "QXN5bmNDYWxs", + "cmVnaXN0ZXJBbmRTZXRBbGxSb2xlcw==", + "VGVzdENvbGxlY3Rpb24x", + "VEVTVENPTEwx", + "TkZU", + "" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", + "identifier": "writeLog", + "topics": [ + "4yr+3JBP4ZOXRq2XO+s4NWPPY2QrpmmzBA+blCil7WA=" + ], + "data": "QDZmNmI=", + "additionalData": [ + "QDZmNmI=" + ] + } + ] + }, + "status": "success", + "operation": "transfer", + "function": "performAction", + "initiallyPaidFee": "873260000000000", + "fee": "873260000000000", + "chainID": "D", + "version": 1, + "options": 0 + } + }, + "code": "successful" +} + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + + let expected = Some("TESTCOLL1-5aa80c".to_string()); + + assert_eq!(tx_response.new_issued_token_identifier, expected) +} diff --git a/framework/scenario/tests/test_tx_multi_contract_sc_result.rs b/framework/scenario/tests/test_tx_multi_contract_sc_result.rs new file mode 100644 index 0000000000..8d45dfff0c --- /dev/null +++ b/framework/scenario/tests/test_tx_multi_contract_sc_result.rs @@ -0,0 +1,477 @@ +use multiversx_sc_scenario::scenario_model::TxResponse; +use multiversx_sdk::data::transaction::{TransactionInfo, TransactionOnNetwork}; + +#[test] +fn test_with_multi_contract_same_shard_tx_that_has_no_sc_result() { + // transaction data from the devnet + // context : user -> A --call--> B, B returns a MultiValue2, A returns the B's returned value + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "SCInvoking", + "processingTypeOnDestination": "SCInvoking", + "hash": "e914857f1bfd003ba411bae372266703e5f706fa412c378feb37faa5e18c3d73", + "nonce": 49, + "round": 7646960, + "epoch": 6339, + "value": "0", + "receiver": "erd1qqqqqqqqqqqqqpgqshqmekudxlxwp0d9j368etjamr5dw7k45u7qx40w6h", + "sender": "erd1uh67c2lkhyj4vh73akv7jky9sfgvus8awwcj64uju69mmfne5u7q299t7g", + "gasPrice": 1000000000, + "gasLimit": 600000000, + "gasUsed": 600000000, + "data": "Y2FsbEFub3RoZXJDb250cmFjdFJldHVyblR3b1U2NEAwMDAwMDAwMDAwMDAwMDAwMDUwMEFDRkY2QjdBNEVCODEwMUE4REU3RkY3RjVEMkMwQkYzRTRENjNGNDdBNzND", + "signature": "53cc6496647287d735bd7950f4ec79d7b51f884defda1d6d840d722b7d0d869900ccecc01602da7a7c717955e8d4ed0711b92acd980d64ed6eebd6eaed0c4608", + "sourceShard": 0, + "destinationShard": 0, + "blockNonce": 7600794, + "blockHash": "77eb0904e56d6dd596c0d72821cf33b326fde383e72903ca4df5c2f200b0ea75", + "notarizedAtSourceInMetaNonce": 7609344, + "NotarizedAtSourceInMetaHash": "12df3fe65cacde2c9742b9506ac2261d34f3c72d690301192fd8016430d51913", + "notarizedAtDestinationInMetaNonce": 7609344, + "notarizedAtDestinationInMetaHash": "12df3fe65cacde2c9742b9506ac2261d34f3c72d690301192fd8016430d51913", + "miniblockType": "TxBlock", + "miniblockHash": "03219ac7427f7511687f0768c722c759c1b1428b2664b44a0cbe2072154851ee", + "hyperblockNonce": 7609344, + "hyperblockHash": "12df3fe65cacde2c9742b9506ac2261d34f3c72d690301192fd8016430d51913", + "timestamp": 1694433360, + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqshqmekudxlxwp0d9j368etjamr5dw7k45u7qx40w6h", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqshqmekudxlxwp0d9j368etjamr5dw7k45u7qx40w6h", + "identifier": "writeLog", + "topics": [ + "5fXsK/a5JVZf0e2Z6ViFglDOQP1zsS1XkuaLvaZ5pzw=", + "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gNTk5ODA2MDAwLCBnYXMgdXNlZCA9IDM4NDcyNDA=" + ], + "data": "QDZmNmJAMGFAMDIxODcxMWEwMA==" + }, + { + "address": "erd1qqqqqqqqqqqqqpgqshqmekudxlxwp0d9j368etjamr5dw7k45u7qx40w6h", + "identifier": "completedTxEvent", + "topics": [ + "6RSFfxv9ADukEbrjciZnA+X3BvpBLDeP6zf6peGMPXM=" + ], + "data": null + } + ] + }, + "status": "success", + "operation": "transfer", + "function": "callAnotherContractReturnTwoU64", + "initiallyPaidFee": "6192060000000000", + "fee": "6192060000000000", + "chainID": "D", + "version": 2, + "options": 0 + } + }, + "error": "", + "code": "successful" + } + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + + let expected: Vec> = vec![ + hex::decode("0a").unwrap(), + hex::decode("0218711a00").unwrap(), + ]; + + assert_eq!(tx_response.out, expected) +} + +#[test] +fn test_with_multi_contract_cross_shard_tx_that_has_no_callback() { + // transaction data from the devnet + // context : user -> A --async call--> B, no callback + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "SCInvoking", + "processingTypeOnDestination": "SCInvoking", + "hash": "4d50a055663dfee2479851684d7fb83cf00695b6f03f4dbbdf0f9232477cafc4", + "nonce": 51, + "round": 7647523, + "epoch": 6340, + "value": "0", + "receiver": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "sender": "erd1uh67c2lkhyj4vh73akv7jky9sfgvus8awwcj64uju69mmfne5u7q299t7g", + "gasPrice": 1000000000, + "gasLimit": 600000000, + "gasUsed": 600000000, + "data": "YXN5bmNDYWxsQW5vdGhlckNvbnRyYWN0UmV0dXJuVHdvVTY0Tm9DYWxsYmFja0AwMDAwMDAwMDAwMDAwMDAwMDUwMEFDRkY2QjdBNEVCODEwMUE4REU3RkY3RjVEMkMwQkYzRTRENjNGNDdBNzND", + "signature": "0fc30cddaa8e5365662a14344e3434cbccf287f357be99b3ed4add182f64dded774ec0d095ab1589e7c6c07e00de3b7239efc96eb2e0e97b48c1ef87084cec01", + "sourceShard": 0, + "destinationShard": 1, + "blockNonce": 7593758, + "blockHash": "a828c0ca58ef1c8aff60e512ab59f18204f1915d4a6c8285cfceb1c5725b88e8", + "notarizedAtSourceInMetaNonce": 7609903, + "NotarizedAtSourceInMetaHash": "4e90fe45c2fdccd5cf6977c1422e5f4ffa41c4e9f31fb4a50c20455f87df1e99", + "notarizedAtDestinationInMetaNonce": 7609907, + "notarizedAtDestinationInMetaHash": "10b8666a44411c3babbe20af7154fb3d47efcb1cb10d955523ec68fece26e517", + "miniblockType": "TxBlock", + "miniblockHash": "4ff4bb1ac88911d617c9b0342aeb5158db78490c2fe414cad08adcc584a77be7", + "hyperblockNonce": 7609907, + "hyperblockHash": "10b8666a44411c3babbe20af7154fb3d47efcb1cb10d955523ec68fece26e517", + "timestamp": 1694436738, + "smartContractResults": [ + { + "hash": "462b56a1530e6070dc7c15f755e51a97a6972c8cd7891f3be4635b93211890c5", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "sender": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", + "data": "@00@0a@0218711a00", + "prevTxHash": "41d56fdacf3e14de67e821427c732b62ebfa07c82d2e5db6de75fe3a1c828d9b", + "originalTxHash": "4d50a055663dfee2479851684d7fb83cf00695b6f03f4dbbdf0f9232477cafc4", + "gasLimit": 595637825, + "gasPrice": 1000000000, + "callType": 2, + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "identifier": "writeLog", + "topics": [ + "AAAAAAAAAAAFAP/Aj4ZNGKlpx2+xeJLdoJbREzb20P0=", + "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gNTk1NjM3ODI1LCBnYXMgdXNlZCA9IDIxNjE3NzA=" + ], + "data": "QDZmNmI=" + }, + { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "identifier": "completedTxEvent", + "topics": [ + "QdVv2s8+FN5n6CFCfHMrYuv6B8gtLl223nX+OhyCjZs=" + ], + "data": null + } + ] + }, + "operation": "transfer" + }, + { + "hash": "41d56fdacf3e14de67e821427c732b62ebfa07c82d2e5db6de75fe3a1c828d9b", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", + "sender": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "data": "returnTwoU64@4f3c60", + "prevTxHash": "4d50a055663dfee2479851684d7fb83cf00695b6f03f4dbbdf0f9232477cafc4", + "originalTxHash": "4d50a055663dfee2479851684d7fb83cf00695b6f03f4dbbdf0f9232477cafc4", + "gasLimit": 597479490, + "gasPrice": 1000000000, + "callType": 1, + "operation": "transfer", + "function": "returnTwoU64" + } + ], + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "identifier": "writeLog", + "topics": [ + "5fXsK/a5JVZf0e2Z6ViFglDOQP1zsS1XkuaLvaZ5pzw=" + ], + "data": "QDZmNmI=" + } + ] + }, + "status": "success", + "operation": "transfer", + "function": "asyncCallAnotherContractReturnTwoU64NoCallback", + "initiallyPaidFee": "6214335000000000", + "fee": "6214335000000000", + "chainID": "D", + "version": 2, + "options": 0 + } + }, + "error": "", + "code": "successful" + } + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + + let expected: Vec> = vec![]; + + assert_eq!(tx_response.out, expected) +} + +#[test] +fn test_with_multi_contract_cross_shard_tx_that_has_non_returning_callback() { + // transaction data from the devnet + // context : user -> A --async call--> B --callback--> A, the callback returns () + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "SCInvoking", + "processingTypeOnDestination": "SCInvoking", + "hash": "4f7f19e448176e4d47a0f844cbd6bdb1b6c68035dafe927e8249ed60af1c3b17", + "nonce": 52, + "round": 7647560, + "epoch": 6340, + "value": "0", + "receiver": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "sender": "erd1uh67c2lkhyj4vh73akv7jky9sfgvus8awwcj64uju69mmfne5u7q299t7g", + "gasPrice": 1000000000, + "gasLimit": 600000000, + "gasUsed": 600000000, + "data": "YXN5bmNDYWxsQW5vdGhlckNvbnRyYWN0UmV0dXJuVHdvVTY0V2l0aE5vblJldHVybmluZ0NhbGxiYWNrQDAwMDAwMDAwMDAwMDAwMDAwNTAwQUNGRjZCN0E0RUI4MTAxQThERTdGRjdGNUQyQzBCRjNFNEQ2M0Y0N0E3M0M=", + "signature": "3918fce429b2059b2321b709011079755dbb835e12839278ee510e4741180540e80c6111eea1d3312b2c63446de08b20e01f6040358fa94d1633c355bb65bc0f", + "sourceShard": 0, + "destinationShard": 1, + "blockNonce": 7593795, + "blockHash": "c17e727f90025225670b7852ea9807c67753c9b3f21b6ec7cc40077e3849a8b7", + "notarizedAtSourceInMetaNonce": 7609940, + "NotarizedAtSourceInMetaHash": "c67b5c550986cfd6c94d00f4b90234eb38ee196ff0d79a00d916f3bd24be272c", + "notarizedAtDestinationInMetaNonce": 7609944, + "notarizedAtDestinationInMetaHash": "d59b7398d962ce3119679af59d5d74e10083e62c3ee2b15421cc0d607979ca18", + "miniblockType": "TxBlock", + "miniblockHash": "2977affeffeb6cf41117bed442662021cb713528cdb1d0dce4537b01caeb8e0b", + "hyperblockNonce": 7609944, + "hyperblockHash": "d59b7398d962ce3119679af59d5d74e10083e62c3ee2b15421cc0d607979ca18", + "timestamp": 1694436960, + "smartContractResults": [ + { + "hash": "fe7474188d5ca4b84c7577f03fc778d22d53c070dfcb05a9cda840229d30e4d3", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", + "sender": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "data": "returnTwoU64@4f3c60", + "prevTxHash": "4f7f19e448176e4d47a0f844cbd6bdb1b6c68035dafe927e8249ed60af1c3b17", + "originalTxHash": "4f7f19e448176e4d47a0f844cbd6bdb1b6c68035dafe927e8249ed60af1c3b17", + "gasLimit": 596979545, + "gasPrice": 1000000000, + "callType": 1, + "operation": "transfer", + "function": "returnTwoU64" + }, + { + "hash": "948dc6702b376d1e043db8de2f87ca12907c342f54cfad7dfebadf59145ca3ac", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "sender": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", + "data": "@00@0a@0218711a00", + "prevTxHash": "fe7474188d5ca4b84c7577f03fc778d22d53c070dfcb05a9cda840229d30e4d3", + "originalTxHash": "4f7f19e448176e4d47a0f844cbd6bdb1b6c68035dafe927e8249ed60af1c3b17", + "gasLimit": 595137880, + "gasPrice": 1000000000, + "callType": 2, + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "identifier": "writeLog", + "topics": [ + "AAAAAAAAAAAFAP/Aj4ZNGKlpx2+xeJLdoJbREzb20P0=", + "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gNTk1MTM3ODgwLCBnYXMgdXNlZCA9IDIyODg1NTA=" + ], + "data": "QDZmNmJAMGFAMDIxODcxMWEwMA==" + }, + { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "identifier": "completedTxEvent", + "topics": [ + "/nR0GI1cpLhMdXfwP8d40i1TwHDfywWpzahAIp0w5NM=" + ], + "data": null + } + ] + }, + "operation": "transfer" + } + ], + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "identifier": "writeLog", + "topics": [ + "5fXsK/a5JVZf0e2Z6ViFglDOQP1zsS1XkuaLvaZ5pzw=" + ], + "data": "QDZmNmI=" + } + ] + }, + "status": "success", + "operation": "transfer", + "function": "asyncCallAnotherContractReturnTwoU64WithNonReturningCallback", + "initiallyPaidFee": "6235125000000000", + "fee": "6235125000000000", + "chainID": "D", + "version": 2, + "options": 0 + } + }, + "error": "", + "code": "successful" + } + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + + let expected: Vec> = vec![]; + + assert_eq!(tx_response.out, expected) +} + +#[test] +fn test_with_multi_contract_cross_shard_tx_that_has_returning_callback() { + // transaction data from the devnet + // context : user -> A --async call--> B --callback--> A, the callback returns a MultiValue2 + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "SCInvoking", + "processingTypeOnDestination": "SCInvoking", + "hash": "f34e136ca81c0e32f6fb532b753612715675073f3718b5db009bb275d246fd7a", + "nonce": 53, + "round": 7647583, + "epoch": 6340, + "value": "0", + "receiver": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "sender": "erd1uh67c2lkhyj4vh73akv7jky9sfgvus8awwcj64uju69mmfne5u7q299t7g", + "gasPrice": 1000000000, + "gasLimit": 600000000, + "gasUsed": 600000000, + "data": "YXN5bmNDYWxsQW5vdGhlckNvbnRyYWN0UmV0dXJuVHdvVTY0V2l0aFJldHVybmluZ0NhbGxiYWNrQDAwMDAwMDAwMDAwMDAwMDAwNTAwQUNGRjZCN0E0RUI4MTAxQThERTdGRjdGNUQyQzBCRjNFNEQ2M0Y0N0E3M0M=", + "signature": "858958d4aaf9cb0220ab2933edad3f65e1cb4c58aa7940cb0f40b489d0bd9fdf5c4736a40d6e813743ee622bb91e9f86eacf01b9a31e0ff53f9c84f13c500304", + "sourceShard": 0, + "destinationShard": 1, + "blockNonce": 7593818, + "blockHash": "b19f97110ca38d3cb15f802a00ab403491b0e5804ebc701527ab50064dc06825", + "notarizedAtSourceInMetaNonce": 7609963, + "NotarizedAtSourceInMetaHash": "4d9db6de610ca778114d44fe91dd036fac7c375c373ae9e77130d3fb9efc8391", + "notarizedAtDestinationInMetaNonce": 7609967, + "notarizedAtDestinationInMetaHash": "a4573d388c31860f9bd6f9507b65d1b3130e445abcada538f10704feba4614e7", + "miniblockType": "TxBlock", + "miniblockHash": "530f5fa3c7af474a187caca8dcea02a7a155017414147871d083bed5c49ec8f5", + "hyperblockNonce": 7609967, + "hyperblockHash": "a4573d388c31860f9bd6f9507b65d1b3130e445abcada538f10704feba4614e7", + "timestamp": 1694437098, + "smartContractResults": [ + { + "hash": "065291164a8acd27c26b5a8f09664810081fda18cd54fca635196cf9b200297a", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", + "sender": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "data": "returnTwoU64@4f3c60", + "prevTxHash": "f34e136ca81c0e32f6fb532b753612715675073f3718b5db009bb275d246fd7a", + "originalTxHash": "f34e136ca81c0e32f6fb532b753612715675073f3718b5db009bb275d246fd7a", + "gasLimit": 596994205, + "gasPrice": 1000000000, + "callType": 1, + "operation": "transfer", + "function": "returnTwoU64" + }, + { + "hash": "bc31cb153ae615204625df84fe9ae3a159aa412b7342f3dca958dd5517a08197", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "sender": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", + "data": "@00@0a@0218711a00", + "prevTxHash": "065291164a8acd27c26b5a8f09664810081fda18cd54fca635196cf9b200297a", + "originalTxHash": "f34e136ca81c0e32f6fb532b753612715675073f3718b5db009bb275d246fd7a", + "gasLimit": 595152540, + "gasPrice": 1000000000, + "callType": 2, + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "identifier": "writeLog", + "topics": [ + "AAAAAAAAAAAFAP/Aj4ZNGKlpx2+xeJLdoJbREzb20P0=", + "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gNTk1MTUyNTQwLCBnYXMgdXNlZCA9IDIyODgwMTU=" + ], + "data": "QDZmNmJAMGFAMDIxODcxMWEwMA==" + }, + { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "identifier": "completedTxEvent", + "topics": [ + "BlKRFkqKzSfCa1qPCWZIEAgf2hjNVPymNRls+bIAKXo=" + ], + "data": null + } + ] + }, + "operation": "transfer" + } + ], + "logs": { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", + "identifier": "writeLog", + "topics": [ + "5fXsK/a5JVZf0e2Z6ViFglDOQP1zsS1XkuaLvaZ5pzw=" + ], + "data": "QDZmNmI=" + } + ] + }, + "status": "success", + "operation": "transfer", + "function": "asyncCallAnotherContractReturnTwoU64WithReturningCallback", + "initiallyPaidFee": "6230670000000000", + "fee": "6230670000000000", + "chainID": "D", + "version": 2, + "options": 0 + } + }, + "error": "", + "code": "successful" + } + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + + let expected: Vec> = vec![]; + + assert_eq!(tx_response.out, expected) +} diff --git a/framework/scenario/tests/test_tx_multiple_sc_results.rs b/framework/scenario/tests/test_tx_multiple_sc_results.rs new file mode 100644 index 0000000000..6322b0a7bb --- /dev/null +++ b/framework/scenario/tests/test_tx_multiple_sc_results.rs @@ -0,0 +1,287 @@ +use multiversx_sc_scenario::scenario_model::{is_out_scr, TxResponse}; +use multiversx_sdk::data::transaction::{TransactionInfo, TransactionOnNetwork}; + +#[test] +fn test_transaction_multiple_sc_results() { + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "BuiltInFunctionCall", + "processingTypeOnDestination": "SCInvoking", + "hash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", + "nonce": 236, + "round": 3353069, + "epoch": 1371, + "value": "0", + "receiver": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", + "sender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "gasPrice": 1000000000, + "gasLimit": 100000000, + "gasUsed": 12767998, + "data": "RVNEVFRyYW5zZmVyQDU1NTQ0YjJkMzEzNDY0MzUzNzY0QDhhYzcyMzA0ODllODAwMDBANzM3NzYxNzA1NDZmNmI2NTZlNzM0NjY5Nzg2NTY0NDk2ZTcwNzU3NEA1NzQ1NDc0YzQ0MmQ2MTMyMzg2MzM1MzlAZThkNGE1MTAwMA==", + "signature": "caed340339e3ae17a92783f5f08f96ac875885e44c25510cd11251ce23f22994985a6605c4d36f841b7110288a5e928f624f150a66a9de8ade36b68028a9af09", + "sourceShard": 0, + "destinationShard": 1, + "blockNonce": 3288476, + "blockHash": "0e70ea5fb26c58b1029c84e24eb9a661272b6253d30c668af91f167bfd67b2b0", + "notarizedAtSourceInMetaNonce": 3290316, + "NotarizedAtSourceInMetaHash": "8200662ca3ade8fa8e1dd3a4184b0a74d4c43de8f4153170a506f60c94ad3e8b", + "notarizedAtDestinationInMetaNonce": 3290320, + "notarizedAtDestinationInMetaHash": "e5f332a8f2070fd1c4ff90f5dc1ee691f36e4ecb9cb5c37e8e7c8595036c3792", + "miniblockType": "TxBlock", + "miniblockHash": "d271ad87c6cf8653cc950272f3ee5e976820ada80468518fa35fe45b6e33dca8", + "hyperblockNonce": 3290320, + "hyperblockHash": "e5f332a8f2070fd1c4ff90f5dc1ee691f36e4ecb9cb5c37e8e7c8595036c3792", + "timestamp": 1714118414, + "smartContractResults": [ + { + "hash": "c0e63f1018ece1036e3e6dc405553e5f6badfe0f5d2a104f4cd4457a872d02f9", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", + "sender": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", + "data": "swapTokensFixedInput@5745474c442d613238633539@e8d4a51000", + "prevTxHash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", + "originalTxHash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", + "gasLimit": 99559500, + "gasPrice": 1000000000, + "callType": 0, + "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "operation": "transfer", + "function": "swapTokensFixedInput" + }, + { + "hash": "40078cec63b6e0d0d9522ea5e6d2d0cb6f21ebae981f354de3dc3545ac2928ad", + "nonce": 0, + "value": 0, + "receiver": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "sender": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", + "data": "ESDTTransfer@5745474c442d613238633539@9b35e4dd3902b9", + "prevTxHash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", + "originalTxHash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "logs": { + "address": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", + "identifier": "ESDTTransfer", + "topics": [ + "V0VHTEQtYTI4YzU5", + "", + "mzXk3TkCuQ==", + "4yr+3JBP4ZOXRq2XO+s4NWPPY2QrpmmzBA+blCil7WA=" + ], + "data": null, + "additionalData": [ + "", + "RVNEVFRyYW5zZmVy", + "V0VHTEQtYTI4YzU5", + "mzXk3TkCuQ==" + ] + }, + { + "address": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "identifier": "writeLog", + "topics": [ + "AAAAAAAAAAAFAKi6nmhia7yZP9eV6LtvR5Q7L1/6fOs=" + ], + "data": "QDZmNmI=", + "additionalData": [ + "QDZmNmI=" + ] + }, + { + "address": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "identifier": "completedTxEvent", + "topics": [ + "xtxxjFbIeVFW2Ef0+XaPKxl2pRbTkP3OD1uLrRrDzOU=" + ], + "data": null, + "additionalData": null + } + ] + }, + "tokens": [ + "WEGLD-a28c59" + ], + "esdtValues": [ + "43687878470468281" + ], + "operation": "ESDTTransfer" + }, + { + "hash": "26487a550721b8282ceafe603bb4d53ee93929ffd9ded39b08e7422adb4d8795", + "nonce": 237, + "value": 872320020000000, + "receiver": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "sender": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", + "data": "@6f6b@0000000c5745474c442d6132386335390000000000000000000000079b35e4dd3902b9", + "prevTxHash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", + "originalTxHash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "logs": { + "address": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "events": [ + { + "address": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "identifier": "completedTxEvent", + "topics": [ + "xtxxjFbIeVFW2Ef0+XaPKxl2pRbTkP3OD1uLrRrDzOU=" + ], + "data": null, + "additionalData": null + } + ] + }, + "operation": "transfer", + "isRefund": true + }, + { + "hash": "798ba4333a7cedb62f811d942dedb8c0c09bf9945a0d2ccede2eaed967eba135", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgqw88ux2l44eufvwz2uhvduhq03g8pxc4j0n4s0frzjz", + "sender": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", + "data": "ESDTTransfer@55544b2d313464353764@2d79883d2000@6465706f7369745377617046656573", + "prevTxHash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", + "originalTxHash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "tokens": [ + "UTK-14d57d" + ], + "esdtValues": [ + "50000000000000" + ], + "operation": "ESDTTransfer", + "function": "depositSwapFees" + } + ], + "logs": { + "address": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", + "events": [ + { + "address": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", + "identifier": "ESDTTransfer", + "topics": [ + "VVRLLTE0ZDU3ZA==", + "", + "iscjBInoAAA=", + "AAAAAAAAAAAFAKi6nmhia7yZP9eV6LtvR5Q7L1/6fOs=" + ], + "data": null, + "additionalData": [ + "", + "RVNEVFRyYW5zZmVy", + "VVRLLTE0ZDU3ZA==", + "iscjBInoAAA=", + "c3dhcFRva2Vuc0ZpeGVkSW5wdXQ=", + "V0VHTEQtYTI4YzU5", + "6NSlEAA=" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", + "identifier": "ESDTTransfer", + "topics": [ + "VVRLLTE0ZDU3ZA==", + "", + "LXmIPSAA", + "AAAAAAAAAAAFAHHPwyv1rniWOErl2N5cD4oOE2KyfOs=" + ], + "data": "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", + "additionalData": [ + "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", + "RVNEVFRyYW5zZmVy", + "VVRLLTE0ZDU3ZA==", + "LXmIPSAA", + "ZGVwb3NpdFN3YXBGZWVz" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgqw88ux2l44eufvwz2uhvduhq03g8pxc4j0n4s0frzjz", + "identifier": "depositSwapFees", + "topics": [ + "ZGVwb3NpdF9zd2FwX2ZlZXNfZXZlbnQ=", + "AAAAAAAAAAAFAKi6nmhia7yZP9eV6LtvR5Q7L1/6fOs=", + "ug==", + "AAAAClVUSy0xNGQ1N2QAAAAAAAAAAAAAAAYteYg9IAA=" + ], + "data": null, + "additionalData": [ + "" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", + "identifier": "ESDTTransfer", + "topics": [ + "V0VHTEQtYTI4YzU5", + "", + "mzXk3TkCuQ==", + "4yr+3JBP4ZOXRq2XO+s4NWPPY2QrpmmzBA+blCil7WA=" + ], + "data": "RGlyZWN0Q2FsbA==", + "additionalData": [ + "RGlyZWN0Q2FsbA==", + "RVNEVFRyYW5zZmVy", + "V0VHTEQtYTI4YzU5", + "mzXk3TkCuQ==" + ] + }, + { + "address": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", + "identifier": "swapTokensFixedInput", + "topics": [ + "c3dhcA==", + "VVRLLTE0ZDU3ZA==", + "V0VHTEQtYTI4YzU5", + "4yr+3JBP4ZOXRq2XO+s4NWPPY2QrpmmzBA+blCil7WA=", + "BVs=" + ], + "data": "4yr+3JBP4ZOXRq2XO+s4NWPPY2QrpmmzBA+blCil7WAAAAAKVVRLLTE0ZDU3ZAAAAAiKxyMEiegAAAAAAAxXRUdMRC1hMjhjNTkAAAAHmzXk3TkCuQAAAAcjhvJvwQAAAAAACwGBykedC25GCD5kAAAACgGwxHNBlOj27dQAAAAAADItnAAAAAAAAAVbAAAAAGYrXw4=", + "additionalData": [ + "4yr+3JBP4ZOXRq2XO+s4NWPPY2QrpmmzBA+blCil7WAAAAAKVVRLLTE0ZDU3ZAAAAAiKxyMEiegAAAAAAAxXRUdMRC1hMjhjNTkAAAAHmzXk3TkCuQAAAAcjhvJvwQAAAAAACwGBykedC25GCD5kAAAACgGwxHNBlOj27dQAAAAAADItnAAAAAAAAAVbAAAAAGYrXw4=" + ] + } + ] + }, + "status": "success", + "tokens": [ + "UTK-14d57d" + ], + "esdtValues": [ + "10000000000000000000" + ], + "operation": "ESDTTransfer", + "function": "swapTokensFixedInput", + "initiallyPaidFee": "1238095000000000", + "fee": "365774980000000", + "chainID": "D", + "version": 1, + "options": 0 + } + }, + "error": "", + "code": "successful" + }"#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + assert_eq!(tx_response.api_scrs.len(), 4usize); + assert!(is_out_scr(&tx_response.api_scrs.get(2).unwrap())); +} diff --git a/framework/scenario/tests/test_tx_sc_result.rs b/framework/scenario/tests/test_tx_sc_result.rs new file mode 100644 index 0000000000..561712300c --- /dev/null +++ b/framework/scenario/tests/test_tx_sc_result.rs @@ -0,0 +1,350 @@ +use multiversx_sc_scenario::scenario_model::TxResponse; +use multiversx_sdk::data::transaction::{TransactionInfo, TransactionOnNetwork}; + +#[test] +fn test_with_tx_that_has_sc_result() { + // transaction data from the devnet, an artificial "10" result has been appended on the original result + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "BuiltInFunctionCall", + "processingTypeOnDestination": "SCInvoking", + "hash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", + "nonce": 30, + "round": 7639115, + "epoch": 6333, + "value": "0", + "receiver": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", + "sender": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", + "gasPrice": 1000000000, + "gasLimit": 25500000, + "gasUsed": 15297149, + "data": "RVNEVFRyYW5zZmVyQDQ4NTQ0ZDJkNjY2NTMxNjYzNjM5QDBkZTBiNmIzYTc2NDAwMDBANzM3NzYxNzA1NDZmNmI2NTZlNzM0NjY5Nzg2NTY0NDk2ZTcwNzU3NEA1NzQ1NDc0YzQ0MmQ2NDM3NjMzNjYyNjJAMDM3Yzc3OGZjY2U5YzU1Yg==", + "signature": "e912fae4b7a9e51ddf316a5e82a0f457d453a62e3c17477f5d6175e1b33c5e92ddb187d65f54cf3131a0603321290279a0456c20778039f2ab09b54e33c60f0d", + "sourceShard": 2, + "destinationShard": 1, + "blockNonce": 7585351, + "blockHash": "e456f38f11fec78ed26d5fda068e912739dceedb2e5ce559bf17614b8386c039", + "notarizedAtSourceInMetaNonce": 7601495, + "NotarizedAtSourceInMetaHash": "e28c6011d4b3f73f3945cae70ff251e675dfea331a70077c5ab3310e3101af17", + "notarizedAtDestinationInMetaNonce": 7601499, + "notarizedAtDestinationInMetaHash": "333d4266614e981cc1c5654f85ef496038a8cddac46dfc0ad0b7c44c37ab489d", + "miniblockType": "TxBlock", + "miniblockHash": "13e041f32fde79ebf1abdcfe692e99516f9ec6778dcb917251b440daa7f1210a", + "hyperblockNonce": 7601499, + "hyperblockHash": "333d4266614e981cc1c5654f85ef496038a8cddac46dfc0ad0b7c44c37ab489d", + "timestamp": 1694386290, + "smartContractResults": [ + { + "hash": "a23faa3c80bae0b968f007ff0fad3afdec05b4e71d749c3d583dec10c6eb05a2", + "nonce": 0, + "value": 0, + "receiver": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", + "sender": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", + "data": "ESDTTransfer@5745474c442d643763366262@03856446ff9a304b", + "prevTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", + "originalTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "logs": { + "address": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", + "identifier": "ESDTTransfer", + "topics": [ + "V0VHTEQtZDdjNmJi", + "", + "A4VkRv+aMEs=", + "qP29NHPKNFkQzDGmOEIaNRCFYABw8ku13ZyenAuvJOY=" + ], + "data": null + }, + { + "address": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", + "identifier": "writeLog", + "topics": [ + "AAAAAAAAAAAFAKVe/p1dXpaw/INtyTPaxf3N3LaNfOs=" + ], + "data": "QDZmNmI=" + }, + { + "address": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", + "identifier": "completedTxEvent", + "topics": [ + "1AWL08E9sLFIMsfFj+Fj2y9Xn/ZUQ4BYa4on2ItKUHA=" + ], + "data": null + } + ] + }, + "tokens": [ + "WEGLD-d7c6bb" + ], + "esdtValues": [ + "253719210115084363" + ], + "operation": "ESDTTransfer" + }, + { + "hash": "b7b4d15917fd215399d8e772c3c4e732008baaedc2b8172f71c91708ba7523f0", + "nonce": 31, + "value": 102028510000000, + "receiver": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", + "sender": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", + "data": "@6f6b@0000000c5745474c442d64376336626200000000000000000000000803856446ff9a304b@10", + "prevTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", + "originalTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "logs": { + "address": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", + "events": [ + { + "address": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", + "identifier": "completedTxEvent", + "topics": [ + "1AWL08E9sLFIMsfFj+Fj2y9Xn/ZUQ4BYa4on2ItKUHA=" + ], + "data": null + } + ] + }, + "operation": "transfer", + "isRefund": true + }, + { + "hash": "05a766ca05d2053d1c0fbeb1797116474a06c86402a3bfd6c132c9a24cfa1bb0", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", + "sender": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", + "data": "swapTokensFixedInput@5745474c442d643763366262@037c778fcce9c55b", + "prevTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", + "originalTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", + "gasLimit": 25050500, + "gasPrice": 1000000000, + "callType": 0, + "operation": "transfer", + "function": "swapTokensFixedInput" + }, + { + "hash": "4e639c80822d5d7780c8326d683fa9cd6d59649d14122dfabc5a96dda36da527", + "nonce": 0, + "value": 0, + "receiver": "erd1qqqqqqqqqqqqqpgquu5rsa4ee6l4azz6vdu4hjp8z4p6tt8m0n4suht3dy", + "sender": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", + "data": "ESDTTransfer@5745474c442d643763366262@e7730d1ef1b0@737761704e6f466565416e64466f7277617264@4d45582d646332383963@0000000000000000000000000000000000000000000000000000000000000000", + "prevTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", + "originalTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", + "gasLimit": 0, + "gasPrice": 1000000000, + "callType": 0, + "tokens": [ + "WEGLD-d7c6bb" + ], + "esdtValues": [ + "254481327387056" + ], + "operation": "ESDTTransfer", + "function": "swapNoFeeAndForward" + } + ], + "logs": { + "address": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", + "events": [ + { + "address": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", + "identifier": "ESDTTransfer", + "topics": [ + "SFRNLWZlMWY2OQ==", + "", + "DeC2s6dkAAA=", + "AAAAAAAAAAAFAKVe/p1dXpaw/INtyTPaxf3N3LaNfOs=" + ], + "data": null + }, + { + "address": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", + "identifier": "ESDTTransfer", + "topics": [ + "V0VHTEQtZDdjNmJi", + "", + "53MNHvGw", + "AAAAAAAAAAAFAOcoOHa5zr9eiFpjeVvIJxVDpaz7fOs=" + ], + "data": null + }, + { + "address": "erd1qqqqqqqqqqqqqpgquu5rsa4ee6l4azz6vdu4hjp8z4p6tt8m0n4suht3dy", + "identifier": "ESDTLocalBurn", + "topics": [ + "TUVYLWRjMjg5Yw==", + "", + "AuMDPq1jy03x" + ], + "data": null + }, + { + "address": "erd1qqqqqqqqqqqqqpgquu5rsa4ee6l4azz6vdu4hjp8z4p6tt8m0n4suht3dy", + "identifier": "swapNoFeeAndForward", + "topics": [ + "c3dhcF9ub19mZWVfYW5kX2ZvcndhcmQ=", + "TUVYLWRjMjg5Yw==", + "AAAAAAAAAAAFAKVe/p1dXpaw/INtyTPaxf3N3LaNfOs=", + "GL0=" + ], + "data": "AAAAAAAAAAAFAKVe/p1dXpaw/INtyTPaxf3N3LaNfOsAAAAMV0VHTEQtZDdjNmJiAAAABudzDR7xsAAAAApNRVgtZGMyODljAAAACQLjAz6tY8tN8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzvkcAAAAAAAAYvQAAAABk/khy" + }, + { + "address": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", + "identifier": "ESDTTransfer", + "topics": [ + "V0VHTEQtZDdjNmJi", + "", + "A4VkRv+aMEs=", + "qP29NHPKNFkQzDGmOEIaNRCFYABw8ku13ZyenAuvJOY=" + ], + "data": null + }, + { + "address": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", + "identifier": "swapTokensFixedInput", + "topics": [ + "c3dhcA==", + "SFRNLWZlMWY2OQ==", + "V0VHTEQtZDdjNmJi", + "qP29NHPKNFkQzDGmOEIaNRCFYABw8ku13ZyenAuvJOY=", + "GL0=" + ], + "data": "qP29NHPKNFkQzDGmOEIaNRCFYABw8ku13ZyenAuvJOYAAAAKSFRNLWZlMWY2OQAAAAgN4Lazp2QAAAAAAAxXRUdMRC1kN2M2YmIAAAAIA4VkRv+aMEsAAAAHA41+pMaAAAAAAAoofxtJRPkr8X9kAAAACgpOPCsHUu261HUAAAAAAHO+RwAAAAAAABi9AAAAAGT+SHI=" + } + ] + }, + "status": "success", + "tokens": [ + "HTM-fe1f69" + ], + "esdtValues": [ + "1000000000000000000" + ], + "operation": "ESDTTransfer", + "function": "swapTokensFixedInput", + "initiallyPaidFee": "502005000000000", + "fee": "399976490000000", + "chainID": "D", + "version": 1, + "options": 0 + } + }, + "error": "", + "code": "successful" + } + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + + let expected: Vec> = vec![ + hex::decode("0000000c5745474c442d64376336626200000000000000000000000803856446ff9a304b") + .unwrap(), + hex::decode("10").unwrap(), + ]; + + assert_eq!(tx_response.out, expected) +} + +#[test] +fn test_with_tx_that_has_no_sc_result() { + // transaction data from the devnet + let data = r#" + { + "data": { + "transaction": { + "type": "normal", + "processingTypeOnSource": "SCInvoking", + "processingTypeOnDestination": "SCInvoking", + "hash": "6afac3ec13c89cc56154d06efdb457a24f58361699eee00a48202a8f8adc8c8a", + "nonce": 17, + "round": 7548071, + "epoch": 6257, + "value": "0", + "receiver": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", + "sender": "erd1uh67c2lkhyj4vh73akv7jky9sfgvus8awwcj64uju69mmfne5u7q299t7g", + "gasPrice": 1000000000, + "gasLimit": 600000000, + "gasUsed": 600000000, + "data": "cmV0dXJuVHdvVTY0", + "signature": "f3a3ca96a78c90c9cf1b08541e1777010f0176a5e1e525e631155b2784932cbfd74c9168d03ba201fd5434d1a1b4789895ddade9883eca2ee9e0bce18468fb00", + "sourceShard": 0, + "destinationShard": 0, + "blockNonce": 7502091, + "blockHash": "5ec66c651cb1514cba200e7e80a4491880f0db678ce7631c397872e3842f0aa2", + "notarizedAtSourceInMetaNonce": 7510505, + "NotarizedAtSourceInMetaHash": "8410309ec5b988af79b4dcfb44fd4729d46874ebd796672c78e417e314409051", + "notarizedAtDestinationInMetaNonce": 7510505, + "notarizedAtDestinationInMetaHash": "8410309ec5b988af79b4dcfb44fd4729d46874ebd796672c78e417e314409051", + "miniblockType": "TxBlock", + "miniblockHash": "fb150e515449c9b658879ed06f256b429239cbe78ec2c2821deb4b283ff21554", + "hyperblockNonce": 7510505, + "hyperblockHash": "8410309ec5b988af79b4dcfb44fd4729d46874ebd796672c78e417e314409051", + "timestamp": 1693840026, + "logs": { + "address": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", + "events": [ + { + "address": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", + "identifier": "writeLog", + "topics": [ + "5fXsK/a5JVZf0e2Z6ViFglDOQP1zsS1XkuaLvaZ5pzw=", + "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gNTk5OTMyMDAwLCBnYXMgdXNlZCA9IDE4NDE2NjU=" + ], + "data": "QDZmNmJAMGFAMDIxODcxMWEwMA==" + }, + { + "address": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", + "identifier": "completedTxEvent", + "topics": [ + "avrD7BPInMVhVNBu/bRXok9YNhaZ7uAKSCAqj4rcjIo=" + ], + "data": null + } + ] + }, + "status": "success", + "operation": "transfer", + "function": "returnTwoU64", + "initiallyPaidFee": "6067320000000000", + "fee": "6067320000000000", + "chainID": "D", + "version": 1, + "options": 0 + } + }, + "error": "", + "code": "successful" + } + "#; + + let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) + .unwrap() + .data + .unwrap() + .transaction; + let tx_response = TxResponse::from_network_tx(tx_on_network); + + let expected: Vec> = vec![ + hex::decode("0a").unwrap(), + hex::decode("0218711a00").unwrap(), + ]; + + assert_eq!(tx_response.out, expected) +} diff --git a/framework/scenario/tests/tx_response_tests.rs b/framework/scenario/tests/tx_response_tests.rs deleted file mode 100644 index a1d9da5a34..0000000000 --- a/framework/scenario/tests/tx_response_tests.rs +++ /dev/null @@ -1,2661 +0,0 @@ -use multiversx_sc::types::Address; -use multiversx_sc_scenario::scenario_model::{is_out_scr, TxResponse}; -use multiversx_sdk::data::transaction::{TransactionInfo, TransactionOnNetwork}; - -#[test] -fn test_transaction_multiple_sc_results() { - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "BuiltInFunctionCall", - "processingTypeOnDestination": "SCInvoking", - "hash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", - "nonce": 236, - "round": 3353069, - "epoch": 1371, - "value": "0", - "receiver": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", - "sender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", - "gasPrice": 1000000000, - "gasLimit": 100000000, - "gasUsed": 12767998, - "data": "RVNEVFRyYW5zZmVyQDU1NTQ0YjJkMzEzNDY0MzUzNzY0QDhhYzcyMzA0ODllODAwMDBANzM3NzYxNzA1NDZmNmI2NTZlNzM0NjY5Nzg2NTY0NDk2ZTcwNzU3NEA1NzQ1NDc0YzQ0MmQ2MTMyMzg2MzM1MzlAZThkNGE1MTAwMA==", - "signature": "caed340339e3ae17a92783f5f08f96ac875885e44c25510cd11251ce23f22994985a6605c4d36f841b7110288a5e928f624f150a66a9de8ade36b68028a9af09", - "sourceShard": 0, - "destinationShard": 1, - "blockNonce": 3288476, - "blockHash": "0e70ea5fb26c58b1029c84e24eb9a661272b6253d30c668af91f167bfd67b2b0", - "notarizedAtSourceInMetaNonce": 3290316, - "NotarizedAtSourceInMetaHash": "8200662ca3ade8fa8e1dd3a4184b0a74d4c43de8f4153170a506f60c94ad3e8b", - "notarizedAtDestinationInMetaNonce": 3290320, - "notarizedAtDestinationInMetaHash": "e5f332a8f2070fd1c4ff90f5dc1ee691f36e4ecb9cb5c37e8e7c8595036c3792", - "miniblockType": "TxBlock", - "miniblockHash": "d271ad87c6cf8653cc950272f3ee5e976820ada80468518fa35fe45b6e33dca8", - "hyperblockNonce": 3290320, - "hyperblockHash": "e5f332a8f2070fd1c4ff90f5dc1ee691f36e4ecb9cb5c37e8e7c8595036c3792", - "timestamp": 1714118414, - "smartContractResults": [ - { - "hash": "c0e63f1018ece1036e3e6dc405553e5f6badfe0f5d2a104f4cd4457a872d02f9", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", - "sender": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", - "data": "swapTokensFixedInput@5745474c442d613238633539@e8d4a51000", - "prevTxHash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", - "originalTxHash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", - "gasLimit": 99559500, - "gasPrice": 1000000000, - "callType": 0, - "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", - "operation": "transfer", - "function": "swapTokensFixedInput" - }, - { - "hash": "40078cec63b6e0d0d9522ea5e6d2d0cb6f21ebae981f354de3dc3545ac2928ad", - "nonce": 0, - "value": 0, - "receiver": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", - "sender": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", - "data": "ESDTTransfer@5745474c442d613238633539@9b35e4dd3902b9", - "prevTxHash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", - "originalTxHash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", - "logs": { - "address": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", - "identifier": "ESDTTransfer", - "topics": [ - "V0VHTEQtYTI4YzU5", - "", - "mzXk3TkCuQ==", - "4yr+3JBP4ZOXRq2XO+s4NWPPY2QrpmmzBA+blCil7WA=" - ], - "data": null, - "additionalData": [ - "", - "RVNEVFRyYW5zZmVy", - "V0VHTEQtYTI4YzU5", - "mzXk3TkCuQ==" - ] - }, - { - "address": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", - "identifier": "writeLog", - "topics": [ - "AAAAAAAAAAAFAKi6nmhia7yZP9eV6LtvR5Q7L1/6fOs=" - ], - "data": "QDZmNmI=", - "additionalData": [ - "QDZmNmI=" - ] - }, - { - "address": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", - "identifier": "completedTxEvent", - "topics": [ - "xtxxjFbIeVFW2Ef0+XaPKxl2pRbTkP3OD1uLrRrDzOU=" - ], - "data": null, - "additionalData": null - } - ] - }, - "tokens": [ - "WEGLD-a28c59" - ], - "esdtValues": [ - "43687878470468281" - ], - "operation": "ESDTTransfer" - }, - { - "hash": "26487a550721b8282ceafe603bb4d53ee93929ffd9ded39b08e7422adb4d8795", - "nonce": 237, - "value": 872320020000000, - "receiver": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", - "sender": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", - "data": "@6f6b@0000000c5745474c442d6132386335390000000000000000000000079b35e4dd3902b9", - "prevTxHash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", - "originalTxHash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "logs": { - "address": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", - "events": [ - { - "address": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", - "identifier": "completedTxEvent", - "topics": [ - "xtxxjFbIeVFW2Ef0+XaPKxl2pRbTkP3OD1uLrRrDzOU=" - ], - "data": null, - "additionalData": null - } - ] - }, - "operation": "transfer", - "isRefund": true - }, - { - "hash": "798ba4333a7cedb62f811d942dedb8c0c09bf9945a0d2ccede2eaed967eba135", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgqw88ux2l44eufvwz2uhvduhq03g8pxc4j0n4s0frzjz", - "sender": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", - "data": "ESDTTransfer@55544b2d313464353764@2d79883d2000@6465706f7369745377617046656573", - "prevTxHash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", - "originalTxHash": "c6dc718c56c8795156d847f4f9768f2b1976a516d390fdce0f5b8bad1ac3cce5", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", - "tokens": [ - "UTK-14d57d" - ], - "esdtValues": [ - "50000000000000" - ], - "operation": "ESDTTransfer", - "function": "depositSwapFees" - } - ], - "logs": { - "address": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", - "events": [ - { - "address": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", - "identifier": "ESDTTransfer", - "topics": [ - "VVRLLTE0ZDU3ZA==", - "", - "iscjBInoAAA=", - "AAAAAAAAAAAFAKi6nmhia7yZP9eV6LtvR5Q7L1/6fOs=" - ], - "data": null, - "additionalData": [ - "", - "RVNEVFRyYW5zZmVy", - "VVRLLTE0ZDU3ZA==", - "iscjBInoAAA=", - "c3dhcFRva2Vuc0ZpeGVkSW5wdXQ=", - "V0VHTEQtYTI4YzU5", - "6NSlEAA=" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", - "identifier": "ESDTTransfer", - "topics": [ - "VVRLLTE0ZDU3ZA==", - "", - "LXmIPSAA", - "AAAAAAAAAAAFAHHPwyv1rniWOErl2N5cD4oOE2KyfOs=" - ], - "data": "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", - "additionalData": [ - "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", - "RVNEVFRyYW5zZmVy", - "VVRLLTE0ZDU3ZA==", - "LXmIPSAA", - "ZGVwb3NpdFN3YXBGZWVz" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgqw88ux2l44eufvwz2uhvduhq03g8pxc4j0n4s0frzjz", - "identifier": "depositSwapFees", - "topics": [ - "ZGVwb3NpdF9zd2FwX2ZlZXNfZXZlbnQ=", - "AAAAAAAAAAAFAKi6nmhia7yZP9eV6LtvR5Q7L1/6fOs=", - "ug==", - "AAAAClVUSy0xNGQ1N2QAAAAAAAAAAAAAAAYteYg9IAA=" - ], - "data": null, - "additionalData": [ - "" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", - "identifier": "ESDTTransfer", - "topics": [ - "V0VHTEQtYTI4YzU5", - "", - "mzXk3TkCuQ==", - "4yr+3JBP4ZOXRq2XO+s4NWPPY2QrpmmzBA+blCil7WA=" - ], - "data": "RGlyZWN0Q2FsbA==", - "additionalData": [ - "RGlyZWN0Q2FsbA==", - "RVNEVFRyYW5zZmVy", - "V0VHTEQtYTI4YzU5", - "mzXk3TkCuQ==" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgq4zafu6rzdw7fj07hjh5tkm68jsaj7hl60n4s8py4ra", - "identifier": "swapTokensFixedInput", - "topics": [ - "c3dhcA==", - "VVRLLTE0ZDU3ZA==", - "V0VHTEQtYTI4YzU5", - "4yr+3JBP4ZOXRq2XO+s4NWPPY2QrpmmzBA+blCil7WA=", - "BVs=" - ], - "data": "4yr+3JBP4ZOXRq2XO+s4NWPPY2QrpmmzBA+blCil7WAAAAAKVVRLLTE0ZDU3ZAAAAAiKxyMEiegAAAAAAAxXRUdMRC1hMjhjNTkAAAAHmzXk3TkCuQAAAAcjhvJvwQAAAAAACwGBykedC25GCD5kAAAACgGwxHNBlOj27dQAAAAAADItnAAAAAAAAAVbAAAAAGYrXw4=", - "additionalData": [ - "4yr+3JBP4ZOXRq2XO+s4NWPPY2QrpmmzBA+blCil7WAAAAAKVVRLLTE0ZDU3ZAAAAAiKxyMEiegAAAAAAAxXRUdMRC1hMjhjNTkAAAAHmzXk3TkCuQAAAAcjhvJvwQAAAAAACwGBykedC25GCD5kAAAACgGwxHNBlOj27dQAAAAAADItnAAAAAAAAAVbAAAAAGYrXw4=" - ] - } - ] - }, - "status": "success", - "tokens": [ - "UTK-14d57d" - ], - "esdtValues": [ - "10000000000000000000" - ], - "operation": "ESDTTransfer", - "function": "swapTokensFixedInput", - "initiallyPaidFee": "1238095000000000", - "fee": "365774980000000", - "chainID": "D", - "version": 1, - "options": 0 - } - }, - "error": "", - "code": "successful" - }"#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - assert_eq!(tx_response.api_scrs.len(), 4usize); - assert!(is_out_scr(&tx_response.api_scrs.get(2).unwrap())); -} - -#[test] -fn test_deployed_address() { - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "SCDeployment", - "processingTypeOnDestination": "SCDeployment", - "hash": "07a176d1734d1901d396be344f97e1d80f076269e9559f9b2110f6f11c4f74de", - "nonce": 427, - "round": 2190715, - "epoch": 887, - "value": "0", - "receiver": "erd1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq6gq4hu", - "sender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", - "gasPrice": 1000000000, - "gasLimit": 600000000, - "data": "MDA2MTczNmQwMTAwMDAwMDAxOTgwMTE5NjAwMjdmN2YwMDYwMDE3ZjAxN2Y2MDAwMDA2MDAwMDE3ZjYwMDI3ZjdmMDE3ZjYwMDM3ZjdmN2YwMDYwMDE3ZjAwNjAwNDdmN2Y3ZjdmMDA2MDA1N2Y3ZjdmN2Y3ZjAwNjAwMzdmN2Y3ZjAxN2Y2MDA0N2Y3ZjdmN2YwMTdmNjAwMjdmN2UwMDYwMDE3ZjAxN2U2MDAyN2Y3ZjAxN2U2MDA1N2Y3ZjdlN2Y3ZjAxN2Y2MDA2N2U3ZjdmN2Y3ZjdmMDE3ZjYwMDE3ZTAwNjAwMDAxN2U2MDAxN2UwMTdmNjAwNDdmN2Y3ZTdmMDA2MDA1N2U3ZjdmN2Y3ZjAxN2Y2MDA0N2Y3ZjdmN2UwMDYwMDE3ZTAxN2U2MDA0N2Y3ZTdmN2YwMDYwMDI3ZTdmMDAwMmMxMDcyOTAzNjU2ZTc2MTI2ZDYxNmU2MTY3NjU2NDUzNjk2NzZlNjE2YzQ1NzI3MjZmNzIwMDA2MDM2NTZlNzYwZTYyNjk2NzQ5NmU3NDUzNjU3NDQ5NmU3NDM2MzQwMDBiMDM2NTZlNzYwOTYyNjk2NzQ5NmU3NDQxNjQ2NDAwMDUwMzY1NmU3NjBiNzM2OTY3NmU2MTZjNDU3MjcyNmY3MjAwMDAwMzY1NmU3NjBhNmQ0Mjc1NjY2NjY1NzI0ZTY1NzcwMDAzMDM2NTZlNzYwZDZkNDI3NTY2NjY2NTcyNDE3MDcwNjU2ZTY0MDAwNDAzNjU2ZTc2MDk2ZDQyNzU2NjY2NjU3MjQ1NzEwMDA0MDM2NTZlNzYwZDZkNDI3NTY2NjY2NTcyNDY2OTZlNjk3MzY4MDAwMTAzNjU2ZTc2MjI2ZDYxNmU2MTY3NjU2NDRkNzU2Yzc0Njk1NDcyNjE2ZTczNjY2NTcyNDU1MzQ0NTQ0ZTQ2NTQ0NTc4NjU2Mzc1NzQ2NTAwMGUwMzY1NmU3NjFiNmQ2MTZlNjE2NzY1NjQ0NTc4NjU2Mzc1NzQ2NTRmNmU0NDY1NzM3NDQzNmY2ZTc0NjU3ODc0MDAwZjAzNjU2ZTc2MGQ2ZDYxNmU2MTY3NjU2NDQzNjE2YzZjNjU3MjAwMDYwMzY1NmU3NjEwNmQ2MTZlNjE2NzY1NjQ1MzQzNDE2NDY0NzI2NTczNzMwMDA2MDM2NTZlNzYxMzZkNjE2ZTYxNjc2NTY0NGY3NzZlNjU3MjQxNjQ2NDcyNjU3MzczMDAwNjAzNjU2ZTc2MWM2ZDYxNmU2MTY3NjU2NDQ3NjU3NDRkNzU2Yzc0Njk0NTUzNDQ1NDQzNjE2YzZjNTY2MTZjNzU2NTAwMDYwMzY1NmU3NjEyNmQ0Mjc1NjY2NjY1NzI0NzY1NzQ0MTcyNjc3NTZkNjU2ZTc0MDAwNDAzNjU2ZTc2MTI2ZDQyNzU2NjY2NjU3MjQxNzA3MDY1NmU2NDQyNzk3NDY1NzMwMDA5MDM2NTZlNzYxOTYyNjk2NzQ5NmU3NDQ3NjU3NDU1NmU3MzY5Njc2ZTY1NjQ0MTcyNjc3NTZkNjU2ZTc0MDAwMDAzNjU2ZTc2MWI3MzZkNjE2YzZjNDk2ZTc0NDc2NTc0NTU2ZTczNjk2NzZlNjU2NDQxNzI2Nzc1NmQ2NTZlNzQwMDBjMDM2NTZlNzYxMDZkNDI3NTY2NjY2NTcyNDc2NTc0NGM2NTZlNjc3NDY4MDAwMTAzNjU2ZTc2MGY2NzY1NzQ0ZTc1NmQ0MTcyNjc3NTZkNjU2ZTc0NzMwMDAzMDM2NTZlNzYxNjczNmQ2MTZjNmM0OTZlNzQ0NjY5NmU2OTczNjg1NTZlNzM2OTY3NmU2NTY0MDAxMDAzNjU2ZTc2MDk2MjY5Njc0OTZlNzQ1Mzc1NjIwMDA1MDM2NTZlNzYwYTY3NjU3NDQ3NjE3MzRjNjU2Njc0MDAxMTAzNjU2ZTc2MGY2MzZjNjU2MTZlNTI2NTc0NzU3MjZlNDQ2MTc0NjEwMDAyMDM2NTZlNzYwZjZkNDI3NTY2NjY2NTcyNTM2NTc0NDI3OTc0NjU3MzAwMDkwMzY1NmU3NjA5NjI2OTY3NDk2ZTc0NDM2ZDcwMDAwNDAzNjU2ZTc2MGE2MjY5Njc0OTZlNzQ1NDQ0Njk3NjAwMDUwMzY1NmU3NjA5NjI2OTY3NDk2ZTc0NGQ3NTZjMDAwNTAzNjU2ZTc2MTk2ZDQyNzU2NjY2NjU3MjQ2NzI2ZjZkNDI2OTY3NDk2ZTc0NTU2ZTczNjk2NzZlNjU2NDAwMDQwMzY1NmU3NjE3NmQ0Mjc1NjY2NjY1NzI1NDZmNDI2OTY3NDk2ZTc0NTU2ZTczNjk2NzZlNjU2NDAwMDQwMzY1NmU3NjA5NjI2OTY3NDk2ZTc0NTA2Zjc3MDAwNTAzNjU2ZTc2MTQ2ZDQyNzU2NjY2NjU3MjQzNmY3MDc5NDI3OTc0NjU1MzZjNjk2MzY1MDAwYTAzNjU2ZTc2MTI2ZDQyNzU2NjY2NjU3MjUzNzQ2ZjcyNjE2NzY1NGM2ZjYxNjQwMDA0MDM2NTZlNzYxMzZkNDI3NTY2NjY2NTcyNTM3NDZmNzI2MTY3NjU1Mzc0NmY3MjY1MDAwNDAzNjU2ZTc2MGU2MzY4NjU2MzZiNGU2ZjUwNjE3OTZkNjU2ZTc0MDAwMjAzNjU2ZTc2MTc2ZDYxNmU2MTY3NjU2NDQ3NjU3NDQyNjE2MzZiNTQ3MjYxNmU3MzY2NjU3MjczMDAwMDAzNjU2ZTc2MGY2ZDYxNmU2MTY3NjU2NDU3NzI2OTc0NjU0YzZmNjcwMDAwMDM2NTZlNzYxNDYyNjk2NzQ5NmU3NDQ2Njk2ZTY5NzM2ODU1NmU3MzY5Njc2ZTY1NjQwMDA2MDM2NTZlNzYwNjY2Njk2ZTY5NzM2ODAwMDAwMzY1NmU3NjBhNjI2OTY3NDk2ZTc0NTM2OTY3NmUwMDAxMDM2NTZlNzYxMzZkNDI3NTY2NjY2NTcyNDc2NTc0NDI3OTc0NjU1MzZjNjk2MzY1MDAwYTAzZDMwMWQxMDEwMTAzMDgwMjAxMTIwMTA0MDAwMTA3MDYwNjA2MDAwNDAxMDkwMTAwMDEwMDAwMDAwMDEzMDMwMDE0MDMwMzAzMDIwMzAxMDcwNDAwMDMwOTAxMDkwOTA5MDAwNzA3MDEwMDA2MDYwMTA2MDYwYzA1MDEwODA1MDAwMTBiMDAwODA3MTUwNzA4MDgwMDBhMDAxNjAxMDEwNjAxMDAwMDAwMDUwMDAwMDEwMzAwMDYwMTAwMTcwNTA1MGEwNzA0MDAwNDBhMDAwNDA0MDQwMDA0MDQwNDA0MDQwMTAxMDAwNDBkMDcwNzA3MDgwYTAwMDUwMTAxMDUwNTA2MDEwMTAwMGIwYjAxMDEwMTAxMDEwNTBkMDEwNTAwMDAwMDA1MDUwMDAwMDAwMDAwMGMwNzA3MDcwNzAwMDAwODE4MDMwMzAzMDAwMzAzMDAwMTA0MDcwMzAzMDMwMzAxMDEwMzAzMDMwMzAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwODA4MDUwMzAxMDAwMzA2MTYwMzdmMDE0MTgwODAwODBiN2YwMDQxZTlkYjA4MGI3ZjAwNDFmMGRiMDgwYjA3YzcwNTIwMDY2ZDY1NmQ2ZjcyNzkwMjAwMDQ2OTZlNjk3NDAwZGIwMTA3NzU3MDY3NzI2MTY0NjUwMGRjMDEwNzY0NjU3MDZmNzM2OTc0MDBkZDAxMDg3NzY5NzQ2ODY0NzI2MTc3MDBkZTAxMDg2MzZmNmQ3MDZmNzU2ZTY0MDBkZjAxMGU2NzY1NzQ1NDZmNzQ2MTZjNDE3MzczNjU3NDczMDBlMDAxMGY2NzY1NzQ1NjYxNzU2Yzc0NDE2NDY0NzI2NTczNzMwMGUxMDExNzY3NjU3NDQxNzM3MzY1NzQ1NDZmNmI2NTZlNDk2NDY1NmU3NDY5NjY2OTY1NzIwMGUyMDExZDY3NjU3NDRkNmY2ZTY1Nzk0ZDYxNzI2YjY1NzQ1NDZmNmI2NTZlNDk2NDY1NmU3NDY5NjY2OTY1NzIwMGUzMDEyMjY3NjU3NDRkNmY2ZTY1Nzk0ZDYxNzI2YjY1NzQ1NTZlNjQ2NTcyNmM3OTY5NmU2NzQ5NjQ2NTZlNzQ2OTY2Njk2NTcyMDBlNDAxMWY2NzY1NzQ0MjZmNmY3Mzc0NjU3MjUzNzQ2MTZiNjU2NDU0NmY2YjY1NmU0OTY0NjU2ZTc0Njk2NjY5NjU3MjAwZTUwMTE0Njc2NTc0NDM2ZjZlNzQ3MjZmNmM2YzY1NzI0MTY0NjQ3MjY1NzM3MzAwZTYwMTE1Njc2NTc0NGQ2ZjZlNjU3OTRkNjE3MjZiNjU3NDQxNjQ2NDcyNjU3MzczMDBlNzAxMWQ2NzY1NzQ1NzcyNjE3MDcwNjU2NDQ1Njc2YzY0NDM2ZjZlNzQ3MjYxNjM3NDQxNjQ2NDcyNjU3MzczMDBlODAxMWQ2NzY1NzQ1NzcyNjE3MDcwNjU2NDQ1Njc2YzY0NTQ2ZjZiNjU2ZTQ5NjQ2NTZlNzQ2OTY2Njk2NTcyMDBlOTAxMTE2NzY1NzQ0MjZmNmY3Mzc0NjU3MjQxNjQ2NDcyNjU3MzczMDBlYTAxMTk2NzY1NzQ0MzZmNmQ3MDZmNzU2ZTY0NTg0NTc4NjM2ODYxNmU2NzY1NTM3NzYxNzA3MzAwZWIwMTE3Njc2NTc0NDM2ZjZkNzA2Zjc1NmU2NDQxNzM2ODczNzc2MTcwNTM3NzYxNzA3MzAwZWMwMTE2Njc2NTc0NDM2ZjZkNzA2Zjc1NmU2NDQ2NjU2NTczNTA2NTcyNjM2NTZlNzQwMGVkMDExOTY3NjU3NDUwNjU3MjY2NmY3MjZkNjE2ZTYzNjU0NjY1NjU3MzUwNjU3MjYzNjU2ZTc0MDBlZTAxMGU3Mzc0NjE2YjY1NDk2ZTQyNmY2ZjczNzQ2NTcyMDBlZjAxMWI3MjY1NjI2MTZjNjE2ZTYzNjU1MDZmNzI3NDY2NmY2YzY5NmY0OTZlNDI2ZjZmNzM3NDY1NzIwMGYwMDExMjc1NmU3Mzc0NjE2YjY1NDY3MjZmNmQ0MjZmNmY3Mzc0NjU3MjAwZjEwMTE4NjM2YzYxNjk2ZDRkNzU2Yzc0Njk3MDZjNjU0NjcyNmY2ZDQyNmY2ZjczNzQ2NTcyMDBmMjAxMTk3MzY1NzQ1MDY1NzI2NjZmNzI2ZDYxNmU2MzY1NDY2NTY1NzM1MDY1NzI2MzY1NmU3NDAwZjMwMTE2NzM2NTc0NDM2ZjZkNzA2Zjc1NmU2NDQ2NjU2NTczNTA2NTcyNjM2NTZlNzQwMGY0MDExMDczNjU3NDQzNmY2ZDcwNmY3NTZlNjQ1Mzc3NjE3MDczMDBmNTAxMGQ2NzY1NzQ0ZTYxNzQ3NTcyNjE2YzQxNTA1OTAwZjYwMTA4NjM2MTZjNmM0MjYxNjM2YjAwZjcwMTBhNWY1ZjY0NjE3NDYxNWY2NTZlNjQwMzAxMGI1ZjVmNjg2NTYxNzA1ZjYyNjE3MzY1MDMwMjBhOWFhOTAxZDEwMTE2MDEwMTdmMTAyYTIyMDE0MjAwMTAwMTIwMDEyMDAxMjAwMDEwMDIyMDAxMGIxOTAxMDE3ZjQxYzg4ZDA4NDFjODhkMDgyODAyMDA0MTAxNmIyMjAwMzYwMjAwMjAwMDBiMmUwMDAyNDAyMDAxMjAwMjRkMDQ0MDIwMDIyMDA0NGQwZDAxMTAyYzAwMGIxMDJjMDAwYjIwMDAyMDAyMjAwMTZiMzYwMjA0MjAwMDIwMDEyMDAzNmEzNjAyMDAwYjBiMDA0MWI4OGQwODQxMGUxMDAzMDAwYjEzMDEwMTdmMTAyYTIyMDEyMDAwYWQ0MmZmMDE4MzEwMDEyMDAxMGIyMTAxMDE3ZjEwMmEyMTAxMjAwMDQyMDA1MzA0NDA0MWIyODUwODQxMTExMDAzMDAwYjIwMDEyMDAwMTAwMTIwMDEwYjBmMDEwMTdmMTAwNDIyMDEyMDAwMTAwNTFhMjAwMTBiMGIwMDIwMDAyMDAxMTAwNjQxMDA0YTBiMmQwMTAxN2YyMzAwNDEyMDZiMjIwMjI0MDAyMDAyMjAwMDEwMzI0MWMwODAwODQxMDgxMDMzMjAwMjIwMDEzNjAyMTgyMDAyMTAzNDIwMDI0MTIwNmEyNDAwMGIxOTAwMjAwMDQxZmVmZmZmZmYwNzQ2MDQ0MDQxYzg4MDA4NDExOTEwMDMwMDBiMjAwMDBiMmEwMDIwMDIyMDAzMTA0ZDIxMDIxMDQzMjEwMzIwMDA0MjdmMzcwMzA4MjAwMDIwMDMzNjAyMDQyMDAwMjAwMjM2MDIwMDIwMDAyMDAxMzYwMjEwMGI3ZDAxMDM3ZjIzMDA0MTEwNmIyMjAxMjQwMDIwMDAyOTAzMDgxMDcxMjAwMDI4MDIxMDIwMDAyODAyMTgyMDAwMjgwMjAwMjAwMDI4MDIwNDEwNDUyMTAyMTAxNzQxMDAyMTAwMjAwMjEwMTIyMTAzMjAwMTQxMDAzNjAyMGMyMDAxMjAwMjM2MDIwNDIwMDEyMDAzNDEwMjc2MjIwMjM2MDIwODAzNDAyMDAwMjAwMjRmNDUwNDQwMjAwMTQxMDQ2YTEwNzUxYTIwMDEyODAyMDgyMTAyMjAwMTI4MDIwYzIxMDAwYzAxMGIwYjIwMDE0MTEwNmEyNDAwMGIzNjAxMDI3ZjIzMDA0MTEwNmIyMjAxMjQwMDIwMDE0MTA4NmExMDM2MjAwMTI4MDIwODIxMDIyMDAwMjAwMTJkMDAwYzQxMDE3MTNhMDAwNDIwMDAyMDAyMzYwMjAwMjAwMTQxMTA2YTI0MDAwYjZkMDEwMjdmMjMwMDQxMTA2YjIyMDEyNDAwMjAwMDAyN2Y0MWUwZGIwODJkMDAwMDIyMDI0NTA0NDA0MWUwZGIwODQxMDEzYTAwMDA0MWRjZGIwODQxMDAzNjAyMDAyMDAxNDEwODZhNDEwMDEwOWYwMTIwMDEyODAyMDgyMDAxMjgwMjBjNDFiODhkMDg0MTAwMTA1NzEwNDMwYzAxMGI0MWI4OGQwODQxMDAxMDRkMGIzNjAyMDAyMDAwMjAwMjQxMDE3MzNhMDAwNDIwMDE0MTEwNmEyNDAwMGIwYjAwMjAwMDIwMDExMDM4MTAwNzFhMGI0OTAxMDE3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDIyMDAxM2EwMDBjMjAwMjIwMDAzNjAyMDgyMDAyNDEwODZhMTBhNTAxMjAwMjI4MDIwODIwMDIyZDAwMGMwNDQwNDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGIyMDAyNDExMDZhMjQwMDBiMGUwMDIwMDA0MThhODUwODQxMGIxMDNhMTAzYjBiMTMwMDIwMDAyMDAwMjAwMTIwMDIxMDUyMjAwMTIwMDIxMDg1MDEwYjBkMDAyMDAwMTAyYTIyMDAxMDFkMWEyMDAwMGIwYTAwMjAwMDEwM2QyMDAxMTAzZTBiMGYwMTAxN2YxMDJhMjIwMTIwMDAxMDFjMWEyMDAxMGI1MTAxMDI3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDIyMDAwMTAxMjIyMDM0MTE4NzQyMDAzNDE4MGZlMDM3MTQxMDg3NDcyMjAwMzQxMDg3NjQxODBmZTAzNzEyMDAzNDExODc2NzI3MjM2MDIwYzIwMDEyMDAyNDEwYzZhNDEwNDEwYTMwMTIwMDEyMDAwMTBiZDAxMjAwMjQxMTA2YTI0MDAwYjBhMDAyMDAwMTAzZDIwMDExMDQwMGI1MTAxMDI3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDIyMDAwMTAxMjIyMDM0MTE4NzQyMDAzNDE4MGZlMDM3MTQxMDg3NDcyMjAwMzQxMDg3NjQxODBmZTAzNzEyMDAzNDExODc2NzI3MjM2MDIwYzIwMDEyMDAyNDEwYzZhNDEwNDEwMGYxYTIwMDEyMDAwMTA4YjAxMjAwMjQxMTA2YTI0MDAwYjA5MDAyMDAwMjAwMTEwMDMwMDBiNTAwMTA0N2YxMDQzMjEwNjEwNDMyMTA3MjMwMDQxMTA2YjIyMDQyNDAwMTA0MzIxMDUyMDAxMTAyZjIxMDEyMDA0MjAwMzEwMjkzNjAyMGMyMDA0MjAwMjM3MDMwMDIwMDQyMDAxMzYwMjA4MjAwNTIwMDQxMDQ0MjAwMDIwMDU0MjAwMjAwNjIwMDcxMDA4MWEyMDA0NDExMDZhMjQwMDBiMTMwMTAxN2YxMDJhMjIwMDQxYjg4ZDA4NDEwMDEwMTgxYTIwMDAwYmQyMDEwMjAyN2YwMTdlMjMwMDQxMTA2YjIyMDMyNDAwMjAwMzIwMDEyODAyMDgyMjAyNDExODc0MjAwMjQxODBmZTAzNzE0MTA4NzQ3MjIwMDI0MTA4NzY0MTgwZmUwMzcxMjAwMjQxMTg3NjcyNzIzNjAyMDAyMDAzMjAwMTI4MDIwYzIyMDI0MTE4NzQyMDAyNDE4MGZlMDM3MTQxMDg3NDcyMjAwMjQxMDg3NjQxODBmZTAzNzEyMDAyNDExODc2NzI3MjM2MDIwYzIwMDMyMDAxMjkwMzAwMjIwNDQyMzg4NjIwMDQ0MjgwZmUwMzgzNDIyODg2ODQyMDA0NDI4MDgwZmMwNzgzNDIxODg2MjAwNDQyODA4MDgwZjgwZjgzNDIwODg2ODQ4NDIwMDQ0MjA4ODg0MjgwODA4MGY4MGY4MzIwMDQ0MjE4ODg0MjgwODBmYzA3ODM4NDIwMDQ0MjI4ODg0MjgwZmUwMzgzMjAwNDQyMzg4ODg0ODQ4NDM3MDIwNDIwMDAyMDAzNDExMDEwMGYxYTIwMDM0MTEwNmEyNDAwMGIxNTAwMjAwMDIwMDEyMDAyMjAwMzIwMDQxMDJhMjIwMTEwMDkxYTIwMDEwYjBjMDEwMTdmMTAyYTIyMDAxMDBhMjAwMDBiMGMwMTAxN2YxMDJhMjIwMDEwMGIyMDAwMGIwYzAxMDE3ZjEwMmEyMjAwMTAwYzIwMDAwYjE1MDAxMDQ4MTA0NjEwMzAwNDQwMGYwYjQxOTI4ZDA4NDEyNDEwMDMwMDBiMmIwMTAxN2Y0MWU4ZGIwODJkMDAwMDIyMDAwNDQwNDE2YjQxZmZmZmZmZmYwNzIwMDAxYjBmMGI0MWU4ZGIwODQxMDEzYTAwMDA0MTZiMTAwZDQxNmIwYjBkMDAyMDAwMTAyYTIyMDAxMDBlMWEyMDAwMGIyZTAxMDE3ZjQxZDU4MzA4NDExNzEwNGQyMjA0MjAwMDIwMDExMDBmMWEyMDA0NDFlYzgzMDg0MTAzMTAwZjFhMjAwNDIwMDIyMDAzMTAwZjFhMjAwNDEwMDAwMDBiMTEwMTAxN2YxMDJhMjIwMjIwMDAyMDAxMTAxODFhMjAwMjBiNDYwMTAxN2YyMzAwNDExMDZiMjIwMjI0MDAyMDAyMjAwMTQxMTg3NDIwMDE0MTgwZmUwMzcxNDEwODc0NzIyMDAxNDEwODc2NDE4MGZlMDM3MTIwMDE0MTE4NzY3MjcyMzYwMjBjMjAwMDIwMDI0MTBjNmE0MTA0MTAwZjFhMjAwMjQxMTA2YTI0MDAwYjBlMDEwMTdmNDEwMDEwMmEyMjAwMTAxMDIwMDAwYjFmMDAyMDAwMTA0YjIyMDAxMDEyNDEyMDQ3MDQ0MDIwMDEyMDAyNDFiMDg2MDg0MTEwMTA0YzAwMGIyMDAwMGJkOTAzMDEwOTdmMjMwMDQxNDA2YTIyMDEyNDAwMjAwMDEwNGIyMTAyMTA0MzIxMDYyMDAyMTAxMjIxMDAyMDAxNDEyNDZhNDEwMDNhMDAwMDIwMDE0MTIwNmEyMDAwMzYwMjAwMjAwMTIwMDIzNjAyMWMyMDAxMjAwMDM2MDIxODIwMDE0MTAwMzYwMjE0NDEwMDIxMDIwMzdmMjAwMDIwMDI0NjA0N2YyMDAxMmQwMDI0MDQ0MDQxZGNkYjA4NDEwMDM2MDIwMDQxZTBkYjA4NDEwMDNhMDAwMDBiMjAwMTQxNDA2YjI0MDAyMDA2MDUyMDAxNDExNDZhMjIwMDQxOTc4NzA4NDExNjEwM2EyMTA0MjAwMDQxOTc4NzA4NDExNjEwNTIyMTAwMTA0MzIxMDMwMzQwMjAwMDA0NDAyMDAxNDExNDZhMjIwNTQxOTc4NzA4NDExNjEwNTIyMTA3MjAwNTQxOTc4NzA4NDExNjEwNTMyMTA4MjAwNTQxOTc4NzA4NDExNjEwM2EyMTA5NDEwMDIxMDIwMjQwMDI0MDAyNDAyMDA1NDE5Nzg3MDg0MTE2MTA1NDQxZmYwMTcxMGUwMjAyMDEwMDBiNDE5Nzg3MDg0MTE2NDFlZDg2MDg0MTBkMTA0YzAwMGI0MTAxMjEwMjBiMjAwMTIwMDIzYTAwMzQyMDAxMjAwOTM2MDIzMDIwMDEyMDA4MzYwMjJjMjAwMTIwMDczNjAyMjgyMDAzMjAwMTQxMjg2YTEwNTUyMDAwNDEwMTZiMjEwMDBjMDEwYjBiMjAwMTQyMDAzNzAzMjgyMDAxMjAwNDQxMTg3NDIwMDQ0MTgwZmUwMzcxNDEwODc0NzIyMDA0NDEwODc2NDE4MGZlMDM3MTIwMDQ0MTE4NzY3MjcyMzYwMjNjMjAwMTQxMDg2YTIwMDE0MTI4NmEyMjAwNDEwMDQxMDQxMDU2MjAwMTI4MDIwODIwMDEyODAyMGMyMDAxNDEzYzZhMjIwMjQxMDQxMDU3MjAwMTIwMDM0MTE4NzQyMDAzNDE4MGZlMDM3MTQxMDg3NDcyMjAwMzQxMDg3NjQxODBmZTAzNzEyMDAzNDExODc2NzI3MjM2MDIzYzIwMDEyMDAwNDEwNDQxMDgxMDU2MjAwMTI4MDIwMDIwMDEyODAyMDQyMDAyNDEwNDEwNTcyMDA2MjAwMDQxMDgxMDBmMWEyMDAxMjgwMjE0MjEwMjIwMDEyODAyMTgyMTAwMGMwMTBiMGIwYjM3MDIwMTdmMDE3ZTIzMDA0MTEwNmIyMjAzMjQwMDIwMDM0MTAwMzYwMjBjMjAwMDIwMDM0MTBjNmEyMjAwNDEwNDIwMDEyMDAyMTBjNTAxMjAwMDQxMDQxMGIxMDEyMDAzNDExMDZhMjQwMGE3MGIwZDAwMjAwMDQxMjAyMDAxMjAwMjEwODUwMTBiMzAwMTAxN2YyMzAwNDExMDZiMjIwMzI0MDAyMDAzNDEwMDNhMDAwZjIwMDAyMDAzNDEwZjZhNDEwMTIwMDEyMDAyMTBjNTAxMjAwMzJkMDAwZjIwMDM0MTEwNmEyNDAwMGJmNjAyMDEwNTdmMjMwMDQxZDAwMDZiMjIwMjI0MDAyMDAyNDIwMDM3MDAzNTIwMDI0MjAwMzcwMzMwMjAwMjIwMDEyODAyMDAyMjAzNDExODc0MjAwMzQxODBmZTAzNzE0MTA4NzQ3MjIwMDM0MTA4NzY0MTgwZmUwMzcxMjAwMzQxMTg3NjcyNzIzNjAyNDAyMDAyNDEyODZhMjAwMjQxMzA2YTIyMDU0MTAwNDEwNDEwOWIwMTIwMDIyODAyMjgyMDAyMjgwMjJjMjAwMjQxNDA2YjIyMDQ0MTA0MTA1NzIwMDI0MWM4MDA2YTQxMDAzYTAwMDAyMDAyNDIwMDM3MDM0MDIwMDIyMDAxMjgwMjA0MjIwMzQxMTg3NDIwMDM0MTgwZmUwMzcxNDEwODc0NzIyMDAzNDEwODc2NDE4MGZlMDM3MTIwMDM0MTE4NzY3MjcyMzYwMjRjMjAwMjQxMjA2YTIwMDQ0MTAwNDEwNDEwOWMwMTIwMDIyODAyMjAyMDAyMjgwMjI0MjAwMjQxY2MwMDZhMjIwNjQxMDQxMDU3MjAwMjIwMDE0MTA4NmEyODAyMDAyMjAzNDExODc0MjAwMzQxODBmZTAzNzE0MTA4NzQ3MjIwMDM0MTA4NzY0MTgwZmUwMzcxMjAwMzQxMTg3NjcyNzIzNjAyNGMyMDAyNDExODZhMjAwNDQxMDQ0MTA4MTA5YzAxMjAwMjI4MDIxODIwMDIyODAyMWMyMDA2NDEwNDEwNTcyMDAyMjAwMTQxMGM2YTJkMDAwMDNhMDA0YzIwMDI0MTEwNmEyMDA0NDEwODQxMDkxMDljMDEyMDAyMjgwMjEwMjAwMjI4MDIxNDIwMDY0MTAxMTA1NzIwMDI0MTA4NmEyMDA1NDEwNDQxMGQxMDliMDEyMDAyMjgwMjA4MjAwMjI4MDIwYzIwMDQ0MTA5MTA1NzIwMDAyMDA1NDEwZDEwMGYxYTIwMDI0MWQwMDA2YTI0MDAwYjBmMDAyMDAwMjAwMTIwMDIyMDAzNDEwODEwZjkwMTBiYjUwMjAxMDY3ZjIwMDEyMDAzNDYwNDQwMjAwMTIyMDM0MTEwNGYwNDQwMjAwMDQxMDAyMDAwNmI0MTAzNzEyMjA0NmEyMTA1MjAwNDA0NDAyMDAyMjEwMTAzNDAyMDAwMjAwMTJkMDAwMDNhMDAwMDIwMDE0MTAxNmEyMTAxMjAwMDQxMDE2YTIyMDAyMDA1NDkwZDAwMGIwYjIwMDUyMDAzMjAwNDZiMjIwMzQxN2M3MTIyMDY2YTIxMDAwMjQwMjAwMjIwMDQ2YTIyMDQ0MTAzNzEwNDQwMjAwNjQxMDA0YzBkMDEyMDA0NDEwMzc0MjIwMTQxMTg3MTIxMDcyMDA0NDE3YzcxMjIwODQxMDQ2YTIxMDI0MTAwMjAwMTZiNDExODcxMjEwOTIwMDgyODAyMDAyMTAxMDM0MDIwMDUyMDAxMjAwNzc2MjAwMjI4MDIwMDIyMDEyMDA5NzQ3MjM2MDIwMDIwMDI0MTA0NmEyMTAyMjAwNTQxMDQ2YTIyMDUyMDAwNDkwZDAwMGIwYzAxMGIyMDA2NDEwMDRjMGQwMDIwMDQyMTAyMDM0MDIwMDUyMDAyMjgwMjAwMzYwMjAwMjAwMjQxMDQ2YTIxMDIyMDA1NDEwNDZhMjIwNTIwMDA0OTBkMDAwYjBiMjAwMzQxMDM3MTIxMDMyMDA0MjAwNjZhMjEwMjBiMjAwMzA0NDAyMDAwMjAwMzZhMjEwMTAzNDAyMDAwMjAwMjJkMDAwMDNhMDAwMDIwMDI0MTAxNmEyMTAyMjAwMDQxMDE2YTIyMDAyMDAxNDkwZDAwMGIwYjBmMGIxMDJjMDAwYmEyMDMwMTA3N2YyMzAwNDE0MDZhMjIwMTI0MDAyMDAwMTA0YjIxMDIxMDQzMjEwNTIwMDIxMDEyMjEwMDIwMDE0MTJjNmE0MTAwM2EwMDAwMjAwMTQxMjg2YTIwMDAzNjAyMDAyMDAxMjAwMjM2MDIyNDIwMDEyMDAwMzYwMjIwMjAwMTQxMDAzNjAyMWM0MTAwMjEwMjAzN2YyMDAwMjAwMjQ2MDQ3ZjIwMDEyZDAwMmMwNDQwNDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGIyMDAxNDE0MDZiMjQwMDIwMDUwNTIwMDE0MTFjNmEyMjAwNDFhZDg3MDg0MTE4MTAzYTIxMDMyMDAwNDFhZDg3MDg0MTE4MTA1MjIxMDAxMDQzMjEwMjAzNDAyMDAwMDQ0MDIwMDE0MTFjNmEyMjA0NDFhZDg3MDg0MTE4MTA1MjIxMDYyMDA0NDFhZDg3MDg0MTE4MTA1MzIxMDcyMDA0NDFhZDg3MDg0MTE4MTAzYTIxMDQyMDAxMjAwNjM2MDIzODIwMDEyMDA0MzYwMjM0MjAwMTIwMDczNjAyMzAyMDAyMjAwMTQxMzA2YTEwNTkyMDAwNDEwMTZiMjEwMDBjMDEwYjBiMjAwMTQyMDAzNzAzMzAyMDAxMjAwMzQxMTg3NDIwMDM0MTgwZmUwMzcxNDEwODc0NzIyMDAzNDEwODc2NDE4MGZlMDM3MTIwMDM0MTE4NzY3MjcyMzYwMjNjMjAwMTQxMTA2YTIwMDE0MTMwNmEyMjAwNDEwMDQxMDQxMDU2MjAwMTI4MDIxMDIwMDEyODAyMTQyMDAxNDEzYzZhMjIwMzQxMDQxMDU3MjAwMTIwMDI0MTE4NzQyMDAyNDE4MGZlMDM3MTQxMDg3NDcyMjAwMjQxMDg3NjQxODBmZTAzNzEyMDAyNDExODc2NzI3MjM2MDIzYzIwMDE0MTA4NmEyMDAwNDEwNDQxMDgxMDU2MjAwMTI4MDIwODIwMDEyODAyMGMyMDAzNDEwNDEwNTcyMDA1MjAwMDQxMDgxMDBmMWEyMDAxMjgwMjFjMjEwMjIwMDEyODAyMjAyMTAwMGMwMTBiMGIwYmI4MDIwMTA0N2YyMzAwNDE0MDZhMjIwMjI0MDAyMDAyNDEyODZhNDEwMDM2MDIwMDIwMDI0MjAwMzcwMzIwMjAwMjIwMDEyODAyMDgyMjAzNDExODc0MjAwMzQxODBmZTAzNzE0MTA4NzQ3MjIwMDM0MTA4NzY0MTgwZmUwMzcxMjAwMzQxMTg3NjcyNzIzNjAyMzAyMDAyNDExODZhMjAwMjQxMjA2YTIyMDU0MTAwNDEwNDEwOWEwMTIwMDIyODAyMTgyMDAyMjgwMjFjMjAwMjQxMzA2YTIyMDQ0MTA0MTA1NzIwMDI0MjAwMzcwMzMwMjAwMjIwMDEyODAyMDAyMjAzNDExODc0MjAwMzQxODBmZTAzNzE0MTA4NzQ3MjIwMDM0MTA4NzY0MTgwZmUwMzcxMjAwMzQxMTg3NjcyNzIzNjAyM2MyMDAyNDExMDZhMjAwNDQxMDA0MTA0MTA1NjIwMDIyODAyMTAyMDAyMjgwMjE0MjAwMjQxM2M2YTIyMDM0MTA0MTA1NzIwMDIyMDAxMjgwMjA0MjIwMTQxMTg3NDIwMDE0MTgwZmUwMzcxNDEwODc0NzIyMDAxNDEwODc2NDE4MGZlMDM3MTIwMDE0MTE4NzY3MjcyMzYwMjNjMjAwMjQxMDg2YTIwMDQ0MTA0NDEwODEwNTYyMDAyMjgwMjA4MjAwMjI4MDIwYzIwMDM0MTA0MTA1NzIwMDIyMDA1NDEwNDQxMGMxMDlhMDEyMDAyMjgwMjAwMjAwMjI4MDIwNDIwMDQ0MTA4MTA1NzIwMDAyMDA1NDEwYzEwMGYxYTIwMDI0MTQwNmIyNDAwMGIxNDAwMTAxMzIwMDA0NjA0NDAwZjBiNDE5Mjg0MDg0MTE5MTAwMzAwMGIwOTAwMjAwMDEwNWMxMDA3MWEwYjFkMDAyMDAwMTBhNzAxMjIwMDEwMTI0MTIwNDcwNDQwNDFiMDg2MDg0MTEwMTA4ODAxMDAwYjIwMDAwYjBhMDAyMDAwMTBhNzAxMTAwNzFhMGIwODAwMjAwMDEwNWYxMDE0MGI2MTAyMDI3ZjAxN2UyMzAwNDExMDZiMjIwMTI0MDAyMDAxNDIwMDM3MDMwODIwMDAxMGE3MDEyMjAwMTAxMjIyMDI0MTA5NGYwNDQwNDE5NTg1MDg0MTBlMTA4ODAxMDAwYjIwMDEyMDAxNDEwODZhMjAwMjEwYjAwMTIwMDA0MTAwMjAwMTI4MDIwMDIyMDAyMDAxMjgwMjA0MjIwMjEwOGEwMTFhMjAwMDIwMDIxMGIxMDEyMDAxNDExMDZhMjQwMDBiMWYwMDIwMDAyMDAxMjAwMjEwMTUyMDAwMTA2MTQxZmYwMTcxMDQ0MDBmMGI0MWFiODQwODQxMzAxMDAzMDAwYjE1MDA0MTAyNDEwMTIwMDAxMDI3MjIwMDFiNDEwMDIwMDA0MTAwNGUxYjBiZjgwMTAxMDQ3ZjIzMDA0MWQwMDA2YjIyMDUyNDAwMjAwNTIwMDQzNjAyMjgyMDA1NDEyMDZhNDFkYjg0MDg0MTE0MTA2MzIwMDUyODAyMjAyMTA3MjAwNTI4MDIyNDIyMDYyMDAzMTA2NDIwMDQxMDY1MjEwMzEwNDMyMjA4MjAwM2FkMTA2NjIwMDYyMDA4MTA0ZTIwMDUyMDA0MTAxMjM2MDIzNDIwMDU0MTAwMzYwMjMwMjAwNTIwMDU0MTI4NmEzNjAyMmMwMzQwMjAwNTQxMzg2YTIwMDU0MTJjNmExMDY3MjAwNTI5MDMzODUwMDQ0MDIwMDUyMDA3MjAwNjIwMDEyMDAyMTA2ODIwMDUyODAyMDQyMTAxMjAwMDIwMDUyODAyMDAzNjAyMDAyMDAwMjAwMTM2MDIwNDIwMDU0MWQwMDA2YTI0MDAwNTIwMDUyODAyNGMyMTAzMjAwNTQxMTg2YTIwMDcyMDA2MjAwNTI4MDI0ODEwNjkyMDA1NDExMDZhMjAwNTI4MDIxODIwMDUyODAyMWMyMDA1MjkwMzQwMTA2YTIwMDU0MTA4NmEyMDA1MjgwMjEwMjAwNTI4MDIxNDIwMDMxMDZiMjAwNTI4MDIwYzIxMDYyMDA1MjgwMjA4MjEwNzBjMDEwYjBiMGIxODAwMjAwMTIwMDIxMDRkMjEwMTIwMDAxMDQzMzYwMjA0MjAwMDIwMDEzNjAyMDAwYjEwMDAxMDQzMWEyMDAwMjAwMTI4MDIwMDEwMmYxMDRlMGIwOTAwMjAwMDEwMTI0MTA0NzYwYjM4MDEwMTdmMjMwMDQxMTA2YjIyMDIyNDAwMjAwMjQyMDAzNzAzMDgyMDAyMjAwMTQxMDAyMDAyNDEwODZhMTA4MjAxMjAwMDIwMDIyODAyMDAyMDAyMjgwMjA0MTAxODFhMjAwMjQxMTA2YTI0MDAwYmE3MDEwMjA1N2YwMTdlMjMwMDQxMjA2YjIyMDIyNDAwMjAwMDIwMDEyODAyMDQyMjA0NDExMDZhMjIwNTIwMDEyODAyMDg0ZDA0N2UyMDAxMjgwMjAwMjAwMjQxMTA2YTQyMDAzNzAzMDAyMDAyNDIwMDM3MDMwODI4MDIwMDIwMDQyMDAyNDEwODZhMjIwMzQxMTAxMDZmMWEyMDAyNDEwMDM2MDIxYzIwMDMyMDAyNDExYzZhMjIwNjEwOTgwMTIxMDQyMDAzMjAwNjEwOTkwMTIxMDcyMDAwNDExNDZhMjAwMjQxMDg2YTIwMDI0MTFjNmExMDk4MDEzNjAyMDAyMDAwNDExMDZhMjAwNDM2MDIwMDIwMDAyMDA3MzcwMzA4MjAwMTIwMDUzNjAyMDQ0MjAxMDU0MjAwMGIzNzAzMDAyMDAyNDEyMDZhMjQwMDBiOTEwMTAxMDM3ZjIzMDA0MTEwNmIyMjA1MjQwMDAyNDAyMDAzMTAxMjQ1MGQwMDIwMDIyMDAzMTA2ZTIwMDQxMDEyMjEwNjQxMDAyMTAzMDM0MDIwMDM0MTA0NmEyMjA3MjAwNjRiMGQwMTIwMDU0MTAwMzYwMjBjMjAwNDIwMDMyMDA1NDEwYzZhNDEwNDEwNmYxYTIwMDIyMDA1MjgwMjBjMjIwMzQxMTg3NDIwMDM0MTgwZmUwMzcxNDEwODc0NzIyMDAzNDEwODc2NDE4MGZlMDM3MTIwMDM0MTE4NzY3MjcyMTA2ZTIwMDcyMTAzMGMwMDBiMDAwYjIwMDAyMDAyMzYwMjA0MjAwMDIwMDEzNjAyMDAyMDA1NDExMDZhMjQwMDBiMTYwMDIwMDIyMDAzMTA2ZTIwMDAyMDAyMzYwMjA0MjAwMDIwMDEzNjAyMDAwYjIwMDEwMTdmMTA0MzIyMDQyMDAzMTA2NjIwMDIyMDA0MTA0ZTIwMDAyMDAyMzYwMjA0MjAwMDIwMDEzNjAyMDAwYjE2MDAyMDAzMjAwMjEwNzAyMDAwMjAwMjM2MDIwNDIwMDAyMDAxMzYwMjAwMGJhMzAxMDEwMjdmMjMwMDQxMzA2YjIyMDUyNDAwMjAwNTQxMjg2YTQxZWY4NDA4NDEwZjEwNjMyMDA1NDEyMDZhMjAwNTI4MDIyODIwMDUyODAyMmMyMDA0MjgwMjA4MTA2OTIwMDU0MTE4NmEyMDA1MjgwMjIwMjAwNTI4MDIyNDIwMDQyOTAzMDAxMDZhMjAwNTQxMTA2YTIwMDUyODAyMTgyMDA1MjgwMjFjMjAwNDI4MDIwYzEwNmIyMDA1MjgwMjEwMjEwNDIwMDUyODAyMTQyMTA2MTA0MzFhMjAwNjIwMDMxMDJmMTA0ZTIwMDU0MTA4NmEyMDA0MjAwNjIwMDEyMDAyMTA2ODIwMDUyODAyMGMyMTAxMjAwMDIwMDUyODAyMDgzNjAyMDAyMDAwMjAwMTM2MDIwNDIwMDU0MTMwNmEyNDAwMGI3MTAxMDE3ZjIzMDA0MTIwNmIyMjA1MjQwMDIwMDU0MTE4NmE0MWZlODQwODQxMGMxMDYzMjAwNTQxMTA2YTIwMDUyODAyMTgyMDA1MjgwMjFjMjAwMzEwNjkyMDA1NDEwODZhMjAwNTI4MDIxMDIwMDUyODAyMTQyMDA0MTA2YjIwMDUyMDA1MjgwMjA4MjAwNTI4MDIwYzIwMDEyMDAyMTA2ODIwMDUyODAyMDQyMTAxMjAwMDIwMDUyODAyMDAzNjAyMDAyMDAwMjAwMTM2MDIwNDIwMDU0MTIwNmEyNDAwMGIwZDAwMTA0MzFhMjAwMDIwMDExMDJmMTA0ZTBiMGQwMDIwMDAyMDAxMjAwMjIwMDMxMDhhMDEwYjBkMDAxMDQzMWEyMDAxMjAwMDEwM2QxMDRlMGIwZjAwMjAwMDQyN2Y1MTA0N2UxMDE2MDUyMDAwMGIwYjMwMDEwMTdlMjAwMDI5MDMwODIyMDE0MjdmNTEwNDdlMTAxNjA1MjAwMTBiMjAwMDI4MDIxMDIwMDAyODAyMTgyMDAwMjgwMjAwMjAwMDI4MDIwNDEwNDUxMDE3MTA3MzBiM2IwMTAyN2YyMzAwNDExMDZiMjIwMTI0MDAyMDAwMTAxMjIxMDIyMDAxNDEwMDM2MDIwYzIwMDEyMDAwMzYwMjA0MjAwMTIwMDI0MTAyNzYzNjAyMDgyMDAxNDEwNDZhMTA3NTEwM2IyMDAxNDExMDZhMjQwMDBiMjQwMDIwMDAyOTAzMDgxMDcxMjAwMDI4MDIxMDIwMDAyODAyMTgyMDAwMjgwMjAwMjAwMDI4MDIwNDEwNDUxMDE3MTAxMjFhMGI3ZDAxMDM3ZjIzMDA0MTEwNmIyMjAxMjQwMDIwMDAyODAyMDgyMTAzMjAwMTQxMDAzNjAyMGMyMDAwMjgwMjAwMjAwMzQxMDI3NDIwMDE0MTBjNmE0MTA0MTA2ZjQ1MDQ0MDIwMDEyODAyMGMyMTAyMjAwMDIwMDM0MTAxNmEzNjAyMDgyMDAyNDExODc0MjAwMjQxODBmZTAzNzE0MTA4NzQ3MjIwMDI0MTA4NzY0MTgwZmUwMzcxMjAwMjQxMTg3NjcyNzIxMDJmMjAwMTQxMTA2YTI0MDAwZjBiNDE4YTg1MDg0MTBiNDFlZjgzMDg0MTExMTA0YzAwMGI5MDAyMDIwMjdmMDE3ZTIzMDA0MWQwMDA2YjIyMDIyNDAwMjAwMTI5MDMwODIyMDQ0MjdmNTEwNDdlMTAxNjA1MjAwNDBiMjAwMTI4MDIxMDIwMDEyODAyMTgyMDAxMjgwMjAwMjAwMTI4MDIwNDEwNDUyMTAxMTAxNzIwMDExMDEyMjEwMzIwMDI0MTAwMzYwMjE0MjAwMjIwMDEzNjAyMGMyMDAyMjAwMzQxMDI3NjM2MDIxMDIwMDI0MTBjNmExMDc1MjIwMzEwMTIyMTAxMjAwMjQxM2M2YTQxMDAzYTAwMDAyMDAyNDEzODZhMjAwMTM2MDIwMDIwMDIyMDAzMzYwMjM0MjAwMjIwMDEzNjAyMzAyMDAyNDEwMDM2MDIyYzIwMDI0MTQwNmIyMDAyNDEyYzZhMTA3NzIwMDIyODAyMzAyMDAyMjgwMjJjNDYwNDQwMjAwMjQxMjA2YTIyMDEyMDAyNDFjODAwNmEyOTAzMDAzNzAzMDAyMDAyMjAwMjI5MDM0MDM3MDMxODIwMDIyZDAwM2MwNDQwNDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGIyMDAwMjAwMjI5MDMxODM3MDMwMDIwMDA0MTA4NmEyMDAxMjkwMzAwMzcwMzAwMjAwMjQxZDAwMDZhMjQwMDBmMGI0MThhODUwODQxMGI0MTk1ODUwODQxMGUxMDRjMDAwYjMwMDIwMTdmMDE3ZTIwMDE0MThhODUwODQxMGIxMDNhMjEwMjIwMDExMGJlMDEyMTAzMjAwMDIwMDExMDM5MzYwMjBjMjAwMDIwMDIzNjAyMDgyMDAwMjAwMzM3MDMwMDBiMTAwMDEwNDMxYTIwMDAyMDAxMjgwMjAwMTAzZDEwNGUwYjBlMDAyMDAxNDUwNDQwMjAwMjIwMDAxMDcwMGIwYjgxMDEwMTA1N2YyMzAwNDExMDZiMjIwMzI0MDAxMDQzMTAyZjIxMDQyMDAxMjgwMjAwMTAxMjIxMDUwMzQwMjAwNTIwMDI0MTA0NmEyMjA2NGYwNDQwMjAwMzQxMDAzNjAyMGMyMDAxMjgwMjAwMjAwMjIwMDM0MTBjNmE0MTA0MTA2ZjFhMjAwMzI4MDIwYzIyMDI0MTE4NzQyMDAyNDE4MGZlMDM3MTQxMDg3NDcyMjAwMjQxMDg3NjQxODBmZTAzNzEyMDAyNDExODc2NzI3MjIwMDQxMDNmMjAwNjIxMDIwYzAxMGIwYjIwMDAyMDA0MTA0ZTIwMDM0MTEwNmEyNDAwMGI4MjAxMDEwNTdmMjMwMDQxMTA2YjIyMDMyNDAwMTA0MzEwMmYyMTA0MjAwMTI4MDIwMDEwMTIyMTA1MDM0MDIwMDUyMDAyNDEwNDZhMjIwNjRmMDQ0MDIwMDM0MTAwMzYwMjBjMjAwMTI4MDIwMDIwMDIyMDAzNDEwYzZhNDEwNDEwNmYxYTIwMDQyMDAzMjgwMjBjMjIwMjQxMTg3NDIwMDI0MTgwZmUwMzcxNDEwODc0NzIyMDAyNDEwODc2NDE4MGZlMDM3MTIwMDI0MTE4NzY3MjcyMTAwNTFhMjAwNjIxMDIwYzAxMGIwYjIwMDAyMDA0MTA0ZTIwMDM0MTEwNmEyNDAwMGI0ZDAxMDI3ZjIzMDA0MTIwNmIyMjAxMjQwMDEwN2QyMTAyMjAwMTQxMTA2YTIwMDA0MTEwNmEyOTAzMDAzNzAzMDAyMDAxNDEwODZhMjAwMDQxMDg2YTI5MDMwMDM3MDMwMDIwMDEyMDAyMzYwMjE4MjAwMTIwMDAyOTAzMDAzNzAzMDAyMDAxMTA3MjIwMDE0MTIwNmEyNDAwMGIwZTAxMDE3ZjEwMmEyMjAwNDIwMDEwMDEyMDAwMGI0ZjAxMDI3ZjIzMDA0MTIwNmIyMjAyMjQwMDEwN2QyMTAzMjAwMjQxMTA2YTIwMDE0MTEwNmEyOTAzMDAzNzAzMDAyMDAyNDEwODZhMjAwMTQxMDg2YTI5MDMwMDM3MDMwMDIwMDIyMDAzMzYwMjE4MjAwMjIwMDEyOTAzMDAzNzAzMDAyMDAwMjAwMjEwNzYyMDAyNDEyMDZhMjQwMDBiNGQwMTAyN2YyMzAwNDEyMDZiMjIwMTI0MDAxMDdkMjEwMjIwMDE0MTEwNmEyMDAwNDExMDZhMjkwMzAwMzcwMzAwMjAwMTQxMDg2YTIwMDA0MTA4NmEyOTAzMDAzNzAzMDAyMDAxMjAwMjM2MDIxODIwMDEyMDAwMjkwMzAwMzcwMzAwMjAwMTEwMzQyMDAxNDEyMDZhMjQwMDBiNzYwMjA1N2YwMTdlMjMwMDQxMTA2YjIyMDEyNDAwMTA3ZDIxMDIyMDAwMjgwMjEwMjEwMzIwMDAyODAyMDQyMTA0MjAwMDI4MDIwMDIxMDUyMDAwMjkwMzA4MjIwNjQyN2Y1MTA0N2UxMDE2MDUyMDA2MGIyMDAzMjAwMjIwMDUyMDA0MTA0NTIxMDAxMDE3MjAwMDEwMTIyMTAyMjAwMTQxMDAzNjAyMGMyMDAxMjAwMDM2MDIwNDIwMDEyMDAyNDEwMjc2MzYwMjA4MjAwMTQxMDQ2YTEwNzUxMDJmMjAwMTQxMTA2YTI0MDAwYjQ3MDEwMjdmMjMwMDQxMTA2YjIyMDIyNDAwMTA0MzIxMDMyMDAyNDIwMDM3MDMwODIwMDIyMDAxYWQ0MmZmMDE4MzQxMDEyMDAyNDEwODZhMTA4MjAxMjAwMzIwMDIyODAyMDAyMDAyMjgwMjA0MTAxODFhMjAwMDIwMDMxMDRlMjAwMjQxMTA2YTI0MDAwYjhmMDIwMjA0N2YwMTdlMjAwMzIwMDE0MjM4ODYyMDAxNDI4MGZlMDM4MzQyMjg4Njg0MjAwMTQyODA4MGZjMDc4MzQyMTg4NjIwMDE0MjgwODA4MGY4MGY4MzQyMDg4Njg0ODQyMDAxNDIwODg4NDI4MDgwODBmODBmODMyMDAxNDIxODg4NDI4MDgwZmMwNzgzODQyMDAxNDIzODg4MjIwODIwMDE0MjI4ODg0MjgwZmUwMzgzODQ4NDg0MzcwMDAwMDI0MDIwMDE1MDA0NDA0MWI4OGQwODIxMDMwYzAxMGIyMDAyMDQ0MDIwMDE0MjdmNTEwNDQwMjAwMzQxMDc2YTIxMDM0MTAxMjEwNDBjMDIwYjIwMDhhN2MwMjIwNTQxMDc3NTIxMDYyMDA1NDEwMDQ4MjEwNTBiMjAwNjQxZmYwMTcxMjEwNjAzNDAwMjQwMDI0MDIwMDQ0MTA4NDcwNDQwMjAwMzIwMDQ2YTJkMDAwMDIyMDcyMDA2NDYwZDAyMjAwMjQ1MjAwNzQxMDc3NjIwMDU0NjcyNDUwNDQwMjAwNDQxMDE2YjIyMDQ0MTA5NGYwZDAyMGIyMDAzMjAwNDZhMjEwMzQxMDgyMDA0NmIyMTA0MGMwNDBiMTAyYzAwMGIxMDJjMDAwYjIwMDQ0MTAxNmEyMTA0MGMwMDBiMDAwYjIwMDAyMDA0MzYwMjA0MjAwMDIwMDMzNjAyMDAwYmEzMDEwMjAzN2YwMTdlMjMwMDQxMTA2YjIyMDMyNDAwMDI3ZjIwMDIyOTAzMDA1MDA0NDAyMDAxMjgwMjEwMjEwNDIwMDMyMDAxMjgwMjAwMjAwMTI4MDIwNDIwMDIyODAyMDgyMDAyMjgwMjBjMTA2ZDIwMDMyODAyMDAyMTA1MjAwMzI4MDIwNDBjMDEwYjEwNDcyMTA0MjAwMzQxMDg2YTIwMDEyODAyMDAyMDAxMjgwMjA0MjAwMTI4MDIxMDIwMDIxMDZjMjAwMzI4MDIwODIxMDUyMDAzMjgwMjBjMGIyMTAyMjAwMTI5MDMwODIxMDYyMDAwMTA3ZDM2MDIxODIwMDAyMDA0MzYwMjEwMjAwMDIwMDYzNzAzMDgyMDAwMjAwMjM2MDIwNDIwMDAyMDA1MzYwMjAwMjAwMzQxMTA2YTI0MDAwYjNmMDEwMTdmMTA0MzIxMDMyMDAwMjAwMTI5MDMwMDM3MDMwMDIwMDA0MTEwNmEyMDAxNDExMDZhMjkwMzAwMzcwMzAwMjAwMDQxMDg2YTIwMDE0MTA4NmEyOTAzMDAzNzAzMDAyMDAzMjAwMjEwNDQyMDAwMjAwMzM2MDIxODBiNTIwMTAyN2YyMzAwNDExMDZiMjIwNDI0MDAyMDA0NDEwODZhMjAwMDI4MDIwODIwMDAyODAyMDAyMjA1MjAwMTEwODYwMTIwMDQyODAyMDg0MTAxNDYwNDQwMjAwNDI4MDIwYzIwMDAyMDAxMjAwNTZhMzYwMjAwMjAwNDQxMTA2YTI0MDAwZjBiMjAwMjIwMDM0MWEzODUwODQxMGYxMDRjMDAwYjFmMDAyMDAxMjAwMjIwMDMxMDA0MjIwMTEwMWYyMTAyMjAwMDIwMDEzNjAyMDQyMDAwMjAwMjQ1MzYwMjAwMGI0ZjAxMDM3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDI0MTA4NmEyMDAwMjgwMjA4MjAwMDI4MDIwMDIyMDMyMDAxMTA4NjAxMjAwMjI4MDIwODQxMDE0NjA0NDAyMDAyMjgwMjBjMjAwMDIwMDEyMDAzNmEzNjAyMDAyMDAyNDExMDZhMjQwMDBmMGI0MWEzODUwODQxMGYxMDg4MDEwMDBiMWEwMTAxN2Y0MWYxODUwODQxMTYxMDRkMjIwMjIwMDAyMDAxMTAwZjFhMjAwMjEwMDAwMDBiMTUwMDQxN2YyMDAwMjAwMTEwMTkyMjAwNDEwMDQ3MjAwMDQxMDA0ODFiMGIwZjAwMjAwMDIwMDEyMDAzMjAwMjEwMjg0MTAwNDcwYjA5MDAyMDAwMjAwMTEwMDUxYTBiMGMwMDIwMDAyMDAwMjAwMTEwMDIyMDAwMGIwYzAwMjAwMDIwMDAyMDAxMTAxYTIwMDAwYjBjMDAyMDAwMjAwMDIwMDExMDFiMjAwMDBiMGEwMDIwMDAyMDAwMjAwMTEwMDIwYjBjMDAyMDAwMjAwMDIwMDExMDYwMjAwMDBiMTAwMTAxN2YxMDJhMjIwMjIwMDAyMDAxMTAwMjIwMDIwYjEwMDEwMTdmMTAyYTIyMDIyMDAwMjAwMTEwMWIyMDAyMGIxMDAxMDE3ZjEwMmEyMjAyMjAwMDIwMDExMDYwMjAwMjBiMTkwMTAxN2YxMDJhMjEwMjQxNzIyMDAxYWQxMDAxMjAwMjIwMDA0MTcyMTAxZTIwMDIwYjBlMDEwMTdmMTA0MzIyMDEyMDAwMTA0NDIwMDEwYjRjMDEwMjdmMjMwMDQxMTA2YjIyMDEyNDAwMTA0MzIxMDIyMDAxMjAwMDQxMTg3NDIwMDA0MTgwZmUwMzcxNDEwODc0NzIyMDAwNDEwODc2NDE4MGZlMDM3MTIwMDA0MTE4NzY3MjcyMzYwMjBjMjAwMjIwMDE0MTBjNmE0MTA0MTAwZjFhMjAwMTQxMTA2YTI0MDAyMDAyMGI4NDAxMDIwNDdmMDE3ZTIzMDA0MTIwNmIyMjAyMjQwMDIwMDI0MTEwNmE0MjAwMzcwMzAwMjAwMjQyMDAzNzAzMDgyMDAxNDEwMDIwMDI0MTA4NmEyMjAzNDExMDEwNmYyMDAyNDEwMDM2MDIxYzIwMDMyMDAyNDExYzZhMjIwNDEwOTgwMTIxMDUyMDAzMjAwNDEwOTkwMTIxMDYyMDAyNDEwODZhMjAwMjQxMWM2YTEwOTgwMTIxMDMwNDQwNDFjMzg1MDg0MTFkMTAwMzAwMGIyMDAwMjAwMzM2MDIwYzIwMDAyMDA1MzYwMjA4MjAwMDIwMDYzNzAzMDAyMDAyNDEyMDZhMjQwMDBiNzQwMTAxN2YyMzAwNDExMDZiMjIwMjI0MDAyMDAyNDEwMDM2MDIwYzIwMDIyMDAwNDExMDIwMDEyODAyMDAyMjAwMjAwMDQxMDQ2YTIyMDAxMDlkMDEyMDAyNDEwYzZhNDEwNDIwMDIyODAyMDAyMDAyMjgwMjA0MTA1NzIwMDEyMDAwMzYwMjAwMjAwMjI4MDIwYzIxMDAyMDAyNDExMDZhMjQwMDIwMDA0MTE4NzQyMDAwNDE4MGZlMDM3MTQxMDg3NDcyMjAwMDQxMDg3NjQxODBmZTAzNzEyMDAwNDExODc2NzI3MjBiYTgwMTAyMDE3ZTAxN2YyMzAwNDExMDZiMjIwMzI0MDAyMDAzNDIwMDM3MDMwODIwMDMyMDAwNDExMDIwMDEyODAyMDAyMjAwMjAwMDQxMDg2YTIyMDAxMDlkMDEyMDAzNDEwODZhNDEwODIwMDMyODAyMDAyMDAzMjgwMjA0MTA1NzIwMDEyMDAwMzYwMjAwMjAwMzI5MDMwODIxMDIyMDAzNDExMDZhMjQwMDIwMDI0MjM4ODYyMDAyNDI4MGZlMDM4MzQyMjg4Njg0MjAwMjQyODA4MGZjMDc4MzQyMTg4NjIwMDI0MjgwODA4MGY4MGY4MzQyMDg4Njg0ODQyMDAyNDIwODg4NDI4MDgwODBmODBmODMyMDAyNDIxODg4NDI4MDgwZmMwNzgzODQyMDAyNDIyODg4NDI4MGZlMDM4MzIwMDI0MjM4ODg4NDg0ODQwYjBmMDAyMDAwMjAwMTIwMDIyMDAzNDEwYzEwZjkwMTBiMGYwMDIwMDAyMDAxMjAwMjIwMDM0MTBkMTBmOTAxMGIwZjAwMjAwMDIwMDEyMDAyMjAwMzQxMDkxMGY5MDEwYjJmMDAwMjQwMjAwMzIwMDQ0ZDA0NDAyMDAyMjAwNDQ5MGQwMTIwMDAyMDA0MjAwMzZiMzYwMjA0MjAwMDIwMDEyMDAzNmEzNjAyMDAwZjBiMTAyYzAwMGIxMDJjMDAwYmI0MDEwMTAzN2YyMzAwNDExMDZiMjIwNDI0MDAwMjdmMDI0MDIwMDAyZDAwMDg0NTA0NDAyMDAwMjgwMjAwMjIwNTEwMTIyMjA2NDE5MGNlMDA0YjBkMDE0MWUwZGIwODJkMDAwMDBkMDE0MWRjZGIwODIwMDYzNjAyMDA0MWUwZGIwODQxMDEzYTAwMDAyMDA0NDEwODZhMjAwNjEwOWYwMTIwMDU0MTAwMjAwNDI4MDIwODIwMDQyODAyMGMxMDZmMWEyMDAwNDEwMTNhMDAwODBiNDEwMTIwMDEyMDAzNmEyMjAwNDFkY2RiMDgyODAyMDA0YjBkMDExYTIwMDQyMDAxMjAwMDEwYTAwMTIwMDIyMDAzMjAwNDI4MDIwMDIwMDQyODAyMDQxMDU3NDEwMDBjMDEwYjIwMDA0MTAwM2EwMDA4MjAwNTIwMDEyMDAyMjAwMzEwNmYwYjIwMDQ0MTEwNmEyNDAwMGIzZTAxMDE3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDI0MTA4NmE0MWNjOGQwODQxOTBjZTAwMjAwMTEwZDAwMTIwMDIyODAyMGMyMTAxMjAwMDIwMDIyODAyMDgzNjAyMDAyMDAwMjAwMTM2MDIwNDIwMDI0MTEwNmEyNDAwMGIzMjAwMDI0MDIwMDEyMDAyNGQwNDQwMjAwMjQxOTBjZTAwNGQwZDAxMTAyYzAwMGIxMDJjMDAwYjIwMDAyMDAyMjAwMTZiMzYwMjA0MjAwMDIwMDE0MWNjOGQwODZhMzYwMjAwMGIxOTAwMjAwMDQxZmVmZmZmZmYwNzQ2MDQ0MDQxZTA4NTA4NDEwZDEwMDMwMDBiMjAwMDBiNGQwMTAxN2YyMzAwNDExMDZiMjIwMTI0MDAyMDAwMTAxMjQxMDQ0NjA0NDAyMDAxNDEwMDM2MDIwYzIwMDA0MTAwMjAwMTQxMGM2YTQxMDQxMDhhMDExYTQxZmVmZmZmZmYwNzIwMDAyMDAxMjgwMjBjNDFjNThlYjFhMjA0NDYxYjIxMDAwYjIwMDE0MTEwNmEyNDAwMjAwMDBiODAwMTAxMDI3ZjIzMDA0MTEwNmIyMjAzMjQwMDAyNDAwMjQwMjAwMDJkMDAwNDA0NDA0MTkwY2UwMDQxZGNkYjA4MjgwMjAwMjIwNDZiMjAwMjQ5MGQwMTIwMDM0MTA4NmEyMDA0MjAwMjIwMDQ2YTIyMDAxMGE0MDEyMDAzMjgwMjA4MjAwMzI4MDIwYzIwMDEyMDAyMTA1NzQxZGNkYjA4MjAwMDM2MDIwMDBjMDIwYjIwMDAyODAyMDAyMDAxMjAwMjEwMGYxYTBjMDEwYjIwMDAxMGE1MDEyMDAwMjgwMjAwMjAwMTIwMDIxMDBmMWEwYjIwMDM0MTEwNmEyNDAwMGIzZjAxMDE3ZjIzMDA0MTEwNmIyMjAzMjQwMDIwMDM0MTA4NmEyMDAxMjAwMjQxY2M4ZDA4NDE5MGNlMDAxMDJiMjAwMzI4MDIwYzIxMDEyMDAwMjAwMzI4MDIwODM2MDIwMDIwMDAyMDAxMzYwMjA0MjAwMzQxMTA2YTI0MDAwYjU4MDEwMjdmMjMwMDQxMTA2YjIyMDEyNDAwMjAwMDJkMDAwNDIwMDA0MTAwM2EwMDA0MDQ0MDIwMDE0MTA4NmE0MTAwNDFkY2RiMDgyODAyMDAxMGEwMDEyMDAwMjgwMjAwMjAwMTI4MDIwODIwMDEyODAyMGMxMDBmMWE0MWRjZGIwODQxMDAzNjAyMDA0MWUwZGIwODQxMDAzYTAwMDAwYjIwMDE0MTEwNmEyNDAwMGIwZDAwMjAwMDQxNjcxMDIwMWE0MTY3MTAxMjBiMGQwMDIwMDAxMDJhMjIwMDEwMjAxYTIwMDAwYjEyMDAyMDAwMTBhNjAxNDUwNDQwMjAwMDIwMDExMDIxMWEwYjBiMTIwMDIwMDAxMGE2MDE0NTA0NDAyMDAwMjAwMTEwYWEwMTBiMGIzODAxMDE3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDI0MjAwMzcwMzA4MjAwMjIwMDE0MTAwMjAwMjQxMDg2YTEwODIwMTIwMDAyMDAyMjgwMjAwMjAwMjI4MDIwNDEwYjgwMTIwMDI0MTEwNmEyNDAwMGIwYTAwMjAwMDEwYTcwMTEwYTIwMTBiYjkwMTAxMDQ3ZjIzMDA0MTIwNmIyMjAxMjQwMDIwMDAxMGE3MDEyMTAyMTA0MzIxMDQyMDAyMTAxMjIxMDAyMDAxNDExMDZhNDEwMDNhMDAwMDIwMDE0MTBjNmEyMDAwMzYwMjAwMjAwMTIwMDIzNjAyMDgyMDAxMjAwMDM2MDIwNDIwMDE0MTAwMzYwMjAwMDM3ZjIwMDAyMDAzNDYwNDdmMjAwMTJkMDAxMDA0NDA0MWRjZGIwODQxMDAzNjAyMDA0MWUwZGIwODQxMDAzYTAwMDAwYjIwMDE0MTIwNmEyNDAwMjAwNDA1MjAwMTEwYWQwMTIxMDAyMDAxMTBhZTAxMjEwMjIwMDExMGFmMDEyMTAzMjAwMTIwMDAzNjAyMWMyMDAxMjAwMzM2MDIxODIwMDEyMDAyMzYwMjE0MjAwNDIwMDE0MTE0NmExMDU5MjAwMTI4MDIwMDIxMDMyMDAxMjgwMjA0MjEwMDBjMDEwYjBiMGIzMzAyMDE3ZjAxN2UyMzAwNDExMDZiMjIwMTI0MDAyMDAxNDEwMDM2MDIwYzIwMDAyMDAxNDEwYzZhMjIwMDQxMDQxMGIzMDEyMDAwNDEwNDEwYjEwMTIwMDE0MTEwNmEyNDAwYTcwYjA5MDAyMDAwNDEyMDEwODcwMTBiMGMwMDIwMDAyMDAwMTBhZDAxMTA4NzAxMGIzYTAxMDE3ZjIzMDA0MTEwNmIyMjAzMjQwMDIwMDM0MTA4NmEyMDAxNDEwODIwMDIxMGQwMDEyMDAzMjgwMjBjMjEwMTIwMDAyMDAzMjgwMjA4MzYwMjAwMjAwMDIwMDEzNjAyMDQyMDAzNDExMDZhMjQwMDBiMzQwMTAxN2UwMjQwMjAwMTQ1MGQwMDAzNDAyMDAxNDUwZDAxMjAwMTQxMDE2YjIxMDEyMDAwMzEwMDAwMjAwMjQyMDg4Njg0MjEwMjIwMDA0MTAxNmEyMTAwMGMwMDBiMDAwYjIwMDIwYmZkMDEwMTA2N2YyMzAwNDEzMDZiMjIwMTI0MDAyMDAwMTBhNzAxMjEwMjEwNDMyMTA0MjAwMjEwMTIyMTAwMjAwMTQxMTg2YTQxMDAzYTAwMDAyMDAxNDExNDZhMjAwMDM2MDIwMDIwMDEyMDAyMzYwMjEwMjAwMTIwMDAzNjAyMGMyMDAxNDEwMDM2MDIwODAzN2YyMDAwMjAwMzQ2MDQ3ZjIwMDEyZDAwMTgwNDQwNDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGIyMDAxNDEzMDZhMjQwMDIwMDQwNTIwMDE0MTA4NmEyMjAyMTBhZDAxMjEwMzIwMDIxMGFlMDEyMTA1MjAwMjEwYWYwMTIxMDY0MTAwMjEwMDIwMDE0MTAwM2EwMDJmMjAwMjIwMDE0MTJmNmE0MTAxMTBiMzAxMDI0MDAyNDAwMjQwMjAwMTJkMDAyZjBlMDIwMjAxMDAwYjQxZWQ4NjA4NDEwZDEwODgwMTAwMGI0MTAxMjEwMDBiMjAwMTIwMDAzYTAwMjgyMDAxMjAwNjM2MDIyNDIwMDEyMDA1MzYwMjIwMjAwMTIwMDMzNjAyMWMyMDA0MjAwMTQxMWM2YTEwNTUyMDAxMjgwMjA4MjEwMzIwMDEyODAyMGMyMTAwMGMwMTBiMGIwYjJkMDAyMDAwNDEwODZhMjAwMDI4MDIwMDIwMDEyMDAyMTA5ZTAxMDQ0MDQxYTM4NTA4NDEwZjEwODgwMTAwMGIyMDAwMjAwMDI4MDIwMDIwMDI2YTM2MDIwMDBiODcwMTAxMDE3ZjIzMDA0MTMwNmIyMjAyMjQwMDIwMDIyMDAxMzYwMjA4MjAwMjEwMzUyMDAyMjAwMjJkMDAwNDNhMDAxMDIwMDIyMDAyMjgwMjAwMzYwMjBjMjAwMjIwMDExMDEyMzYwMjFjMjAwMjQxMDAzNjAyMTgyMDAyMjAwMjQxMDg2YTM2MDIxNDAzNDAyMDAyNDEyMDZhMjAwMjQxMTQ2YTEwYjUwMTIwMDIyZDAwMmM0MTAyNDY0NTA0NDAyMDAyNDEyMDZhMjAwMjQxMGM2YTEwYjYwMTBjMDEwYjBiMjAwMDIwMDIyODAyMGMyMDAyMmQwMDEwMTBiNzAxMjAwMjQxMzA2YTI0MDAwYmM1MDMwMTA3N2YyMzAwNDFkMDAwNmIyMjAyMjQwMDAyNDAyMDAxMjgwMjA0MjIwNDQxMGQ2YTIyMDgyMDAxMjgwMjA4NGQwNDQwMjAwMTI4MDIwMDIwMDI0MjAwMzcwMDM1MjAwMjQyMDAzNzAzMzAyODAyMDAyMDA0MjAwMjQxMzA2YTIyMDM0MTBkMTA2ZjFhMjAwMjQxMDAzNjAyNDAyMDAyNDEyODZhMjAwMzQxMDA0MTA0MTBiZjAxMjAwMjQxNDA2YjIyMDU0MTA0MjAwMjI4MDIyODIwMDIyODAyMmMxMDU3MjAwMjI4MDI0MDIxMDQyMDAyNDFjODAwNmE0MTAwM2EwMDAwMjAwMjQyMDAzNzAzNDAyMDAyNDEyMDZhMjAwMzQxMDQ0MTBkMTBiZjAxMjAwNTQxMDkyMDAyMjgwMjIwMjAwMjI4MDIyNDEwNTcyMDAyNDEwMDM2MDI0YzIwMDI0MTE4NmEyMDA1NDEwMDQxMDQxMGMwMDEyMDAyNDFjYzAwNmEyMjA3NDEwNDIwMDIyODAyMTgyMDAyMjgwMjFjMTA1NzIwMDIyODAyNGMyMTAzMjAwMjQxMDAzNjAyNGMyMDAyNDExMDZhMjAwNTQxMDQ0MTA4MTBjMDAxMjAwNzQxMDQyMDAyMjgwMjEwMjAwMjI4MDIxNDEwNTcyMDAyMjgwMjRjMjEwNjIwMDI0MTAwM2EwMDRjMjAwMjQxMDg2YTIwMDU0MTA4NDEwOTEwYzAwMTIwMDc0MTAxMjAwMjI4MDIwODIwMDIyODAyMGMxMDU3MjAwMDIwMDIyZDAwNGM0MTAwNDczYTAwMGMyMDAwMjAwNjQxMTg3NDIwMDY0MTgwZmUwMzcxNDEwODc0NzIyMDA2NDEwODc2NDE4MGZlMDM3MTIwMDY0MTE4NzY3MjcyMzYwMjA4MjAwMDIwMDM0MTE4NzQyMDAzNDE4MGZlMDM3MTQxMDg3NDcyMjAwMzQxMDg3NjQxODBmZTAzNzEyMDAzNDExODc2NzI3MjM2MDIwNDIwMDAyMDA0NDExODc0MjAwNDQxODBmZTAzNzE0MTA4NzQ3MjIwMDQ0MTA4NzY0MTgwZmUwMzcxMjAwNDQxMTg3NjcyNzIzNjAyMDAyMDAxMjAwODM2MDIwNDBjMDEwYjIwMDA0MTAyM2EwMDBjMGIyMDAyNDFkMDAwNmEyNDAwMGI0ZDAxMDE3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDAyODAyMDAyMDAxMTBiYzAxMjAwMTIwMDAyODAyMDQxMGJkMDEyMDAwNDEwODZhMjgwMjAwMjAwMTEwM2UyMDAyMjAwMDQxMGM2YTJkMDAwMDNhMDAwZjIwMDEyMDAyNDEwZjZhNDEwMTEwYTMwMTIwMDI0MTEwNmEyNDAwMGIwZDAwMjAwMDIwMDEyMDAyMTAzODEwMjExYTBiMGQwMDIwMDAyMDAxMjAwMjEwNGQxMDIxMWEwYjg3MDEwMTAxN2YyMzAwNDEzMDZiMjIwMjI0MDAyMDAyMjAwMTM2MDIwODIwMDIxMDM1MjAwMjIwMDIyZDAwMDQzYTAwMTAyMDAyMjAwMjI4MDIwMDM2MDIwYzIwMDIyMDAxMTAxMjM2MDIxYzIwMDI0MTAwMzYwMjE4MjAwMjIwMDI0MTA4NmEzNjAyMTQyMDAyNDEyNDZhMjEwMTAzNDAyMDAyNDEyMDZhMjAwMjQxMTQ2YTEwYmEwMTIwMDIyODAyMjAwNDQwMjAwMTIwMDI0MTBjNmExMGJiMDEwYzAxMGIwYjIwMDAyMDAyMjgwMjBjMjAwMjJkMDAxMDEwYjcwMTIwMDI0MTMwNmEyNDAwMGI4OTAzMDEwNjdmMjMwMDQxNDA2YTIyMDIyNDAwMjAwMDIwMDEyODAyMDQyMjAzNDEwYzZhMjIwNjIwMDEyODAyMDg0ZDA0N2YyMDAxMjgwMjAwMjAwMjQxMjg2YTQxMDAzNjAyMDAyMDAyNDIwMDM3MDMyMDI4MDIwMDIwMDMyMDAyNDEyMDZhMjIwMzQxMGMxMDZmMWEyMDAyNDEwMDM2MDIzMDIwMDI0MTE4NmEyMDAzNDEwMDQxMDQxMGMxMDEyMDAyNDEzMDZhMjIwNTQxMDQyMDAyMjgwMjE4MjAwMjI4MDIxYzEwNTcyMDAyMjgwMjMwMjEwNDIwMDI0MjAwMzcwMzMwMjAwMjQxMTA2YTIwMDM0MTA0NDEwYzEwYzEwMTIwMDU0MTA4MjAwMjI4MDIxMDIwMDIyODAyMTQxMDU3MjAwMjQxMDAzNjAyM2MyMDAyNDEwODZhMjAwNTQxMDA0MTA0MTBjMjAxMjAwMjQxM2M2YTIyMDc0MTA0MjAwMjI4MDIwODIwMDIyODAyMGMxMDU3MjAwMjI4MDIzYzIxMDMyMDAyNDEwMDM2MDIzYzIwMDIyMDA1NDEwNDQxMDgxMGMyMDEyMDA3NDEwNDIwMDIyODAyMDAyMDAyMjgwMjA0MTA1NzIwMDIyODAyM2MyMTA1MjAwMDQxMGM2YTIwMDQ0MTE4NzQyMDA0NDE4MGZlMDM3MTQxMDg3NDcyMjAwNDQxMDg3NjQxODBmZTAzNzEyMDA0NDExODc2NzI3MjM2MDIwMDIwMDAyMDAzNDExODc0MjAwMzQxODBmZTAzNzE0MTA4NzQ3MjIwMDM0MTA4NzY0MTgwZmUwMzcxMjAwMzQxMTg3NjcyNzIzNjAyMDQyMDAxMjAwNjM2MDIwNDIwMDA0MTA4NmEyMDA1NDExODc0MjAwNTQxODBmZTAzNzE0MTA4NzQ3MjIwMDU0MTA4NzY0MTgwZmUwMzcxMjAwNTQxMTg3NjcyNzIzNjAyMDA0MTAxMDU0MTAwMGIzNjAyMDAyMDAyNDE0MDZiMjQwMDBiMWYwMDIwMDAyODAyMDgyMDAxMTBiYzAxMjAwMTIwMDAyODAyMDAxMGJkMDEyMDAwMjgwMjA0MjAwMTEwM2UwYjQ2MDEwMTdmMjMwMDQxMTA2YjIyMDIyNDAwMjAwMjIwMDA0MTE4NzQyMDAwNDE4MGZlMDM3MTQxMDg3NDcyMjAwMDQxMDg3NjQxODBmZTAzNzEyMDAwNDExODc2NzI3MjM2MDIwYzIwMDEyMDAyNDEwYzZhNDEwNDEwYTMwMTIwMDI0MTEwNmEyNDAwMGI4MTAxMDEwMzdmMjMwMDQxMTA2YjIyMDIyNDAwMDI0MDAyNDAyMDAwMmQwMDA0MDQ0MDIwMDExMDEyMjIwNDQxOTBjZTAwNDFkY2RiMDgyODAyMDAyMjAzNmI0YjBkMDEyMDAyNDEwODZhMjAwMzIwMDMyMDA0NmEyMjAwMTBhNDAxMjAwMTQxMDAyMDAyMjgwMjA4MjAwMjI4MDIwYzEwNmYxYTQxZGNkYjA4MjAwMDM2MDIwMDBjMDIwYjIwMDAyODAyMDAyMDAxMTA4YjAxMGMwMTBiMjAwMDEwYTUwMTIwMDAyODAyMDAyMDAxMTA4YjAxMGIyMDAyNDExMDZhMjQwMDBiMzgwMjAxN2YwMTdlMjMwMDQxMTA2YjIyMDEyNDAwMjAwMTQyMDAzNzAzMDgyMDAwMjAwMTQxMDg2YTIyMDA0MTA4NDE4YTg1MDg0MTBiMTBjNTAxMjAwMDQxMDgxMGIxMDEyMDAxNDExMDZhMjQwMDBiMGYwMDIwMDAyMDAxMjAwMjIwMDM0MTBkMTBmODAxMGIwZjAwMjAwMDIwMDEyMDAyMjAwMzQxMDkxMGY4MDEwYjBmMDAyMDAwMjAwMTIwMDIyMDAzNDEwYzEwZjgwMTBiMGYwMDIwMDAyMDAxMjAwMjIwMDM0MTA4MTBmODAxMGI4MDAyMDEwNTdmMjMwMDQxMjA2YjIyMDIyNDAwMjAwMDIwMDEyODAyMDQyMjAzNDEwODZhMjIwNTIwMDEyODAyMDg0ZDA0N2YyMDAxMjgwMjAwMjAwMjQyMDAzNzAzMTAyODAyMDAyMDAzMjAwMjQxMTA2YTIyMDM0MTA4MTA2ZjFhMjAwMjQxMDAzNjAyMWMyMDAyNDEwODZhMjAwMzQxMDA0MTA0MTBjMjAxMjAwMjQxMWM2YTIyMDY0MTA0MjAwMjI4MDIwODIwMDIyODAyMGMxMDU3MjAwMjI4MDIxYzIxMDQyMDAyNDEwMDM2MDIxYzIwMDIyMDAzNDEwNDQxMDgxMGMyMDEyMDA2NDEwNDIwMDIyODAyMDAyMDAyMjgwMjA0MTA1NzIwMDIyODAyMWMyMTAzMjAwMDIwMDQ0MTE4NzQyMDA0NDE4MGZlMDM3MTQxMDg3NDcyMjAwNDQxMDg3NjQxODBmZTAzNzEyMDA0NDExODc2NzI3MjM2MDIwNDIwMDEyMDA1MzYwMjA0MjAwMDQxMDg2YTIwMDM0MTE4NzQyMDAzNDE4MGZlMDM3MTQxMDg3NDcyMjAwMzQxMDg3NjQxODBmZTAzNzEyMDAzNDExODc2NzI3MjM2MDIwMDQxMDEwNTQxMDAwYjM2MDIwMDIwMDI0MTIwNmEyNDAwMGI4YTAxMDEwNDdmMjMwMDQxMTA2YjIyMDMyNDAwMjAwMTI4MDIwNDIyMDI0MTA0NmEyMjA0MjAwMTI4MDIwODRiMDQ3ZjQxMDAwNTIwMDEyODAyMDAyMDAzNDEwMDM2MDIwYzI4MDIwMDIwMDIyMDAzNDEwYzZhNDEwNDEwNmYxYTIwMDMyODAyMGMyMTAyMjAwMTIwMDQzNjAyMDQyMDAyNDExODc0MjAwMjQxODBmZTAzNzE0MTA4NzQ3MjIwMDI0MTA4NzY0MTgwZmUwMzcxMjAwMjQxMTg3NjcyNzIyMTAyNDEwMTBiMjEwMTIwMDAyMDAyMzYwMjA0MjAwMDIwMDEzNjAyMDAyMDAzNDExMDZhMjQwMDBiMzAwMDIwMDA0MTA4NmEyMDAwMjgwMjAwMjAwMTIwMDIxMDllMDEwNDQwMjAwMzIwMDQ0MWEzODUwODQxMGYxMDRjMDAwYjIwMDAyMDAwMjgwMjAwMjAwMjZhMzYwMjAwMGI3ODAxMDE3ZjIzMDA0MTEwNmIyMjAyMjQwMDIwMDIyMDAwNDIzODg2MjAwMDQyODBmZTAzODM0MjI4ODY4NDIwMDA0MjgwODBmYzA3ODM0MjE4ODYyMDAwNDI4MDgwODBmODBmODM0MjA4ODY4NDg0MjAwMDQyMDg4ODQyODA4MDgwZjgwZjgzMjAwMDQyMTg4ODQyODA4MGZjMDc4Mzg0MjAwMDQyMjg4ODQyODBmZTAzODMyMDAwNDIzODg4ODQ4NDg0MzcwMzA4MjAwMTIwMDI0MTA4NmE0MTA4MTBhMzAxMjAwMjQxMTA2YTI0MDAwYmQ2MDEwMTA2N2YyMzAwNDE0MDZhMjIwMDI0MDAxMGM4MDExMDVjMjEwMTIwMDAxMGM5MDExMDVjMzYwMjA4MjAwMDEwNDczNjAyMGMyMDAwNDEyODZhMjIwMjIwMDExMDMyNDFmNzgwMDg0MTEwMTAzMzIwMDAyODAyMmMyMjAxMjAwMDQxMDg2YTEwNjQyMDAxMjAwMDQxMGM2YTEwNjQyMDAwNDEyMDZhMjIwMTIwMDA0MTM4NmEyMjAzMjkwMzAwMzcwMzAwMjAwMDQxMTg2YTIyMDQyMDAwNDEzMDZhMjIwNTI5MDMwMDM3MDMwMDIwMDAyMDAwMjkwMzI4MzcwMzEwMjAwMDIwMDA0MTEwNmExMDdjMzYwMjA0MjAwMjEwYzkwMTEwNWMxMDMyNDFmNTgxMDg0MTE4MTAzMzIwMDAyODAyMmMyMDAwNDEwNDZhMTA3ODIwMDEyMDAzMjkwMzAwMzcwMzAwMjAwNDIwMDUyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDMyODM3MDMxMDIwMDA0MTEwNmExMDdjMjAwMDQxNDA2YjI0MDAwYjBhMDA0MTk1ODgwODQxMTIxMDRkMGIwYTAwNDE4MTg4MDg0MTE0MTA0ZDBiYTkwMzAyMDU3ZjAxN2UyMzAwNDE4MDAxNmIyMjAyMjQwMDEwY2IwMTEwYWIwMTIxMDMyMDAxMjgwMjBjMjEwNDIwMDEyOTAzMDAyMTA3MjAwMTI4MDIwODIxMDEwMjQwMjAwMzQxZmVmZmZmZmYwNzQ2MDQ0MDIwMDE0MWZlZmZmZmZmMDc0NjBkMDEyMDAxMTBhMTAxMjEwMTIwMDIyMDA0MzYwMjE0MjAwMjIwMDczNzAzMDgyMDAyMjAwMTM2MDIxMDEwY2MwMTEwNWMyMTAzMjAwNDEwMjkyMTA0MjAwMjQxZTAwMDZhMjIwMTIwMDMxMDMyNDFhMTgwMDg0MTBhMTAzMzIwMDI0MTQwNmIyMjAzMjAwMTIwMDI0MTA4NmExMDg0MDEyMDAxMjAwMzEwY2QwMTIwMDExMDM0NDIwMDIxMDc0MWZlZmZmZmZmMDcyMTAxMGIyMDAyNDFlMDAwNmEyMDAwMTAzMjQxYzA4MTA4NDExMjEwMzMyMDAyMjgwMjY0MWEyMDAyNDEyODZhMjIwMDIwMDI0MWYwMDA2YTIyMDUyOTAzMDAzNzAzMDAyMDAyNDEyMDZhMjIwMzIwMDI0MWU4MDA2YTIyMDYyOTAzMDAzNzAzMDAyMDAyMjAwMjI5MDM2MDM3MDMxODAyNDAyMDAxNDFmZWZmZmZmZjA3NDcwNDQwMjAwNTIwMDAyOTAzMDAzNzAzMDAyMDA2MjAwMzI5MDMwMDM3MDMwMDIwMDIyMDAyMjkwMzE4MzcwMzYwMjAwMjEwN2QzNjAyNzgyMDAxMTBhMTAxMjEwMDIwMDIyMDA0MzYwMjNjMjAwMjIwMDczNzAzMzAyMDAyMjAwMDM2MDIzODIwMDI0MTQwNmIyMDAyNDFlMDAwNmEyMDAyNDEzMDZhMTA4MzAxMGMwMTBiMjAwMjQxZDAwMDZhMjAwMDI5MDMwMDM3MDMwMDIwMDI0MWM4MDA2YTIwMDMyOTAzMDAzNzAzMDAyMDAyMjAwMjI5MDMxODM3MDM0MDIwMDIyMDA0MzYwMjU4MGIyMDAyNDFlMDAwNmEyMDAyNDE0MDZiMTA3NjIwMDI0MTgwMDE2YTI0MDAwZjBiNDFjYTg4MDg0MTFmMTA0MTAwMGIwYTAwNDFlODhjMDg0MTIyMTA0ZDBiMGEwMDQxZmE4NjA4NDExZDEwNGQwYmZmMDIwMjAzN2YwMjdlMjMwMDQxZDAwMDZiMjIwMjI0MDAyMDAyNDEzMDZhMjIwNDIwMDE0MTEwNmEyOTAzMDAzNzAzMDAyMDAyNDEyODZhMjIwMzIwMDE0MTA4NmEyOTAzMDAzNzAzMDAyMDAyMjAwMTI5MDMwMDM3MDMyMDIwMDIxMDdkMzYwMjM4MDI0MDAyNDAwMjQwMDI0MDIwMDEyODAyMTgyMjAxMTA2NTBlMDIwMTAyMDAwYjEwNDcyMTAzMjAwMjQxMDg2YTIwMDIyODAyMjAyMDAyMjgwMjI0MjAwNDIwMDExMDYyMjAwMjI5MDMwODIxMDUyMDAyMjkwMzI4MjEwNjIwMDAxMDdkMzYwMjE4MjAwMDIwMDMzNjAyMTAyMDAwMjAwNjM3MDMwODIwMDAyMDA1MzcwMzAwMGMwMjBiMjAwMDIwMDIyOTAzMjAzNzAzMDAyMDAwNDExODZhMjAwMjQxMzg2YTI5MDMwMDM3MDMwMDIwMDA0MTEwNmEyMDA0MjkwMzAwMzcwMzAwMjAwMDQxMDg2YTIwMDMyOTAzMDAzNzAzMDAwYzAxMGIyMDAyNDE0MDZiMjAwMTEwOTcwMTAyN2YyMDAyMjkwMzQwNTAwNDQwMjAwMjI4MDIzMDIxMDEyMDAyNDExMDZhMjAwMjI4MDIyMDIwMDIyODAyMjQyMDAyMjgwMjQ4MjAwMjI4MDI0YzEwNmQyMDAyMjgwMjEwMjEwMzIwMDIyODAyMTQwYzAxMGIxMDQ3MjEwMTIwMDI0MTE4NmEyMDAyMjgwMjIwMjAwMjI4MDIyNDIwMDIyODAyMzAyMDAyNDE0MDZiMTA2YzIwMDIyODAyMTgyMTAzMjAwMjI4MDIxYzBiMjEwNDIwMDIyOTAzMjgyMTA1MjAwMDEwN2QzNjAyMTgyMDAwMjAwMTM2MDIxMDIwMDAyMDA1MzcwMzA4MjAwMDIwMDQzNjAyMDQyMDAwMjAwMzM2MDIwMDBiMjAwMjQxZDAwMDZhMjQwMDBiMGQwMDIwMDAxMDYxNDFmZjAxNzE0MTAxNGIwYjE3MDAyMDAwMjgwMjAwMjAwMTI4MDIwMDEwODkwMTQxZmYwMTcxNDFmZjAxNDYwYjNiMDEwMTdmMjMwMDQxMTA2YjIyMDQyNDAwMjAwNDQxMDg2YTQxMDAyMDAzMjAwMTIwMDIxMDJiMjAwNDI4MDIwYzIxMDEyMDAwMjAwNDI4MDIwODM2MDIwMDIwMDAyMDAxMzYwMjA0MjAwNDQxMTA2YTI0MDAwYjBhMDA0MWJkODgwODQxMGQxMDRkMGIwYTAwNDFmMjg3MDg0MTBmMTA0ZDBiMGEwMDQxZGQ4NzA4NDExNTEwNGQwYjBhMDA0MWE3ODgwODQxMTYxMDRkMGIxOTAxMDE3ZjQxOTc4NzA4NDExNjEwNGQyMTAxMjAwMDI4MDIwMDIwMDExMDQwMjAwMTBiMTkwMTAxN2Y0MWFkODcwODQxMTgxMDRkMjEwMTIwMDAyODAyMDAyMDAxMTA0MDIwMDEwYjBhMDA0MWM1ODcwODQxMTgxMDRkMGIwYTAwNDE4ZjhjMDg0MTFkMTA0ZDBiMGEwMDQxYWM4YzA4NDExZDEwNGQwYjBhMDA0MWM5OGMwODQxMWYxMDRkMGJhNzA1MDIwZDdmMDI3ZTIzMDA0MTQwNmEyMjAwMjQwMDEwMjI0MTBhMTA1YTQxMDA0MWJkODgwODQxMGQxMDUwMjEwOTQxMDExMDRiMjEwMjQxMDI0MTk1ODgwODQxMTIxMDUwMjEwYTQxMDM0MTgxODgwODQxMTQxMDUwMjEwNTQxMDQ0MWYyODcwODQxMGYxMDUwMjEwNjQxMDUxMDExMjEwZDQxMDYxMDExMjEwZTQxMDcxMDU4MjEwNzQxMDgxMDUxMjEwODQxMDk0MWZhODYwODQxMWQxMDUwMjEwNDIwMDAyMDA4MzYwMjEwMjAwMDIwMDczNjAyMGMyMDA1MTAyZjEwMzIyMTAxNDFlNjgxMDg0MTBmMTA0ZDIxMDMxMDQzMjEwYjEwN2QyMTBjMTAxNjIwMDEyMDBjMjAwMzIwMGIxMDQ1MjEwMTEwMTcyMDAxMTAxMjIxMDMyMDAwNDEwMDM2MDIzMDIwMDAyMDAxMzYwMjI4MjAwMDIwMDM0MTAyNzYzNjAyMmMyMDAwNDEyODZhMjIwMzEwNzUxMDJmMTBhMjAxMjEwMTIwMDMyMDA0MTAyZjEwMmYxMDMyNDFhYjgwMDg0MTE1MTAzMzIwMDMxMDgwMDEyMTAzMDI0MDAyNDAyMDAxNDFmZWZmZmZmZjA3NDcwNDQwMjAwMTEwMmYxMGExMDEyMDAyMTAzMDBkMDE0MWU5ODgwODQxZDEwMDEwNDEwMDBiMjAwMjIwMDMxMDMwNDUwZDAxMGIxMGNjMDEyMDA0MTBhODAxMTBkOTAxMjAwMzEwYTgwMTAyNDAxMGNiMDEyMjA0MTBhNjAxMGQwMDIwMDE0MWZlZmZmZmZmMDc0NzA0NDAyMDA0MjAwMTEwMjExYTBjMDEwYjIwMDQ0MWVkODUwODQxMDQxMGI4MDEwYjEwZDEwMTIwMDkxMGE4MDExMGQ0MDEyMDAyMTBhODAxMTBjODAxMjAwYTEwYTgwMTEwYzkwMTIwMDUxMDJmMTBhODAxMTBkODAxMjAwMDQxMjg2YTIyMDEyMDA1MTAzMjQxYjY4MTA4NDEwYTEwMzMyMDAxMTA4MDAxMTBhODAxMTBkMjAxMjAwNjEwMmYxMGE4MDExMGRhMDEyMDAxMjAwNjEwMzI0MTg2ODMwODQxMGYxMDMzMjAwMTEwODAwMTEwYTgwMTIwMDAyMDA3MTAxMjM2MDIxYzIwMDA0MTAwMzYwMjE4MjAwMDIwMDA0MTBjNmEzNjAyMTQwMzQwMDI0MDIwMDA0MTI4NmEyMDAwNDExNDZhMTBjMzAxMjAwMDI4MDIyODQ1MDQ0MDIwMDAyMDA4MTAxMjM2MDIxYzIwMDA0MTAwMzYwMjE4MjAwMDIwMDA0MTEwNmEzNjAyMTQwMzQwMjAwMDQxMjg2YTIwMDA0MTE0NmExMGMzMDEyMDAwMjgwMjI4NDUwZDAyMjAwMDIwMDAyODAyMzAyMjAxMzYwMjI0MjAwMDIwMDAyODAyMmMzNjAyMjAyMDAwNDEyMDZhMTBkNTAxMjIwMjEwYTYwMTBkMDAyMDAyMjAwMTEwYjQwMTBjMDAwYjAwMGIyMDAwMjAwMDI4MDIzMDIyMDEzNjAyMjQyMDAwMjAwMDI4MDIyYzM2MDIyMDIwMDA0MTIwNmExMGQ2MDEyMjAyMTBhNjAxMGQwMTIwMDIyMDAxMTBiOTAxMGMwMTBiMGIxMGQzMDEyMDBkMTBhOTAxMTBkNzAxMjAwZTEwYTkwMTIwMDA0MTQwNmIyNDAwMGYwYjQxYmE4OTA4NDFjODAwMTA0MTAwMGIwODAwMTAyMjQxMDAxMDVhMGJjNzAxMDEwNTdmMjMwMDQxMzA2YjIyMDAyNDAwNDEwMDEwNWEwMjQwMDI0MDEwNDYxMGQxMDExMDVjMTAzMDA0NDAxMDQ2MTBkMTAxMTA1YzEwMzA0NTBkMDEyMDAwMTA0YTIyMDEzNjAyMDgxMGQ0MDExMGE3MDEyMTAyMTBjOTAxMTA1YzIxMDMyMDAwMjAwMTEwMTIzNjAyMTQyMDAwNDEwMDM2MDIxMDIwMDAyMDAwNDEwODZhMzYwMjBjMjAwMDQxMjA2YTIxMDEwMzQwMDI0MDIwMDA0MTE4NmEyMDAwNDEwYzZhMTA2NzIwMDAyOTAzMTg1MDBkMDAyMDAwMjgwMjJjMjAwMDI4MDIyODIwMDIxMDMwNDUwZDA0MTBjZTAxNDUwZDA0MjAwMzEwMmYyMDAxMTBjYTAxMGMwMTBiMGIyMDAwNDEzMDZhMjQwMDBmMGI0MTgyOGEwODQxMTYxMDQxMDAwYjQxODI4YTA4NDExNjEwNDEwMDBiNDE5ODhhMDg0MTBkMTA0MTAwMGJjNzA3MDIwOTdmMDE3ZTIzMDA0MTgwMDE2YjIyMDAyNDAwMTAyMjQxMDExMDVhMjAwMDEwNGYzNjAyMmMxMGQxMDExMDVjMjEwMTAyNDAwMjQwMDI0MDEwNDYyMjA3MjAwMTEwMzAwNDQwMjAwMDEwYzkwMTEwNWMyMjAxMzYwMjM0MjAwMDQxZTAwMDZhMjIwMjIwMDExMDJmMTAzMjQxOGQ4MjA4NDExODEwMzMyMDAwMjgwMjY0MjAwMDQxMmM2YTEwNzgyMDAwNDFkODAwNmEyMjAxMjAwMDQxZjAwMDZhMjIwNjI5MDMwMDM3MDMwMDIwMDA0MWQwMDA2YTIyMDMyMDAwNDFlODAwNmEyMjA0MjkwMzAwMzcwMzAwMjAwMDIwMDAyOTAzNjAzNzAzNDgyMDAwNDFjODAwNmEyMjA1MTA3YzIxMDgyMDAyMTBjODAxMTA1YzEwMzI0MWUxODAwODQxMGExMDMzMjAwMDI4MDI2NDIyMDIyMDAwNDEzNDZhMTA2NDIwMDI0MTAwMjAwODEwNzkyMDAxMjAwNjI5MDMwMDM3MDMwMDIwMDMyMDA0MjkwMzAwMzcwMzAwMjAwMDIwMDAyOTAzNjAzNzAzNDgyMDAwNDEzODZhMjAwNTEwN2UyMDAwMjgwMjQ0MTBjZTAxNDUwZDAxMjAwMDI4MDIzNDEwMzIyMTAxNDFhNTgyMDg0MTA2MTA0ZDIxMDQxMDQzMjIwMzQxMDEyMDAwMTA3OTEwNDMyMjAyMjAwMDQxMzg2YTEwNDQyMDAwMjAwMTM2MDI3MDIwMDA0MjdmMzcwMzY4MjAwMDIwMDMzNjAyNjQyMDAwMjAwNDM2MDI2MDIwMDAxMDdkMjIwNTM2MDI3ODAyNDAwMjQwMDI0MDAyNDAyMDAyMTA2NTBlMDIwMjAwMDEwYjIwMDA0MWM4MDA2YTIwMDIxMDk3MDEwMjdmMjAwMDI5MDM0ODUwMDQ0MDIwMDA0MTE4NmEyMDA0MjAwMzIwMDAyODAyNTAyMDAwMjgwMjU0MTA2ZDIwMDAyODAyMTgyMTA0MjAwMDI4MDIxYzBjMDEwYjEwNDcyMDAwNDEyMDZhMjAwNDIwMDMyMDAxMjAwMDQxYzgwMDZhMTA2YzIwMDAyODAyMjAyMTA0MjEwMTIwMDAyODAyMjQwYjIxMDMxMDdkMjEwNTBjMDEwYjEwNDcyMTAxMjAwMDQxMTA2YTIwMDQyMDAzMjAwNjIwMDIxMDYyMjAwMDI5MDM2ODIxMDkyMDAwMjgwMjE0MjEwMzIwMDAyODAyMTAyMTA0MTA3ZDIxMDUyMDA5NDI3ZjUyMGQwMTBiMTAxNjIxMDkwYjIwMDkyMDAxMjAwNTIwMDQyMDAzMTA0NTIxMDExMDE3MjAwMTEwMTIyMTAyMjAwMDQxMDAzNjAyNTAyMDAwMjAwMTM2MDI0ODIwMDAyMDAyNDEwMjc2MzYwMjRjMjAwMDQxYzgwMDZhMTA3NTIyMDIxMDEyMjEwMTIwMDA0MWYwMDA2YTQxMDAzYTAwMDAyMDAwNDFlYzAwNmEyMDAxMzYwMjAwMjAwMDIwMDIzNjAyNjgyMDAwMjAwMTM2MDI2NDIwMDA0MTAwMzYwMjYwMjAwMDQxZTAwMDZhMjIwMTQxOGE4NTA4NDEwYjEwM2ExMGEyMDEyMTAyMjAwMTEwYmUwMTIxMDkyMDAxMTAzOTIxMDEyMDAwMjgwMjY0MjAwMDI4MDI2MDQ3MGQwMjIwMDAyZDAwNzAwNDQwNDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGIwMjQwMjAwMjQxZmVmZmZmZmYwNzQ3MDQ0MDIwMDIxMGExMDEyMTAzMGMwMTBiMTBkOTAxMTBhNzAxMjEwMzEwY2MwMTEwNWMyMDAxMTAyOTEwMzE0MjAwMjEwOTBiMjAwMTEwY2UwMTQ1MGQwMzIwMDcyMDAzMjAwOTIwMDExMDQyMjAwMDIwMDEzNjAyNmMyMDAwMjAwMzM2MDI2ODIwMDAyMDA5MzcwMzYwMjAwMDIwMDA0MWUwMDA2YTEwOTUwMTIyMDEzNjAyMzAyMDAwNDEwODZhMTAzNTIwMDAyMDAwMmQwMDBjM2EwMDNjMjAwMDIwMDAyODAyMDgzNjAyMzgyMDAwMjAwMTEwMTIzNjAyNTAyMDAwNDEwMDM2MDI0YzIwMDAyMDAwNDEzMDZhMzYwMjQ4MDM0MDIwMDA0MWUwMDA2YTIwMDA0MWM4MDA2YTEwNjcyMDAwMjkwMzYwNTA0NTA0NDAyMDAwMjgwMjc0MjAwMDI4MDI3MDIwMDA0MTM4NmEyMjAxMTAzZTIwMDAyOTAzNjgyMDAxMTBjNjAxMjAwMTEwM2MwYzAxMGIwYjIwMDAyODAyMzgyMDAwMmQwMDNjMTAzNzIwMDA0MTgwMDE2YTI0MDAwZjBiNDE4MjhhMDg0MTE2MTA0MTAwMGI0MWU3OGEwODQxMWYxMDQxMDAwYjQxOGE4NTA4NDEwYjQxOTU4NTA4NDEwZTEwNGMwMDBiNDE4NjhiMDg0MTFhMTA0MTAwMGJmMzFkMDIxNjdmMDI3ZTIzMDA0MWEwMDI2YjIyMDAyNDAwMTAyMjQxMDAxMDVhMTBjODAxMTA1YzIxMDEyMDAwMTBjOTAxMTA1YzIyMTQxMDJmMTA5NjAxMzYwMmYwMDEyMDAwMTA0MzM2MDJhMDAxMjAwMDQxODAwMjZhMjIwOTIwMDExMDMyNDFlYjgwMDg0MTBjMTAzMzIwMDAyODAyODQwMjIyMDE0MTAwMTA4MTAxMjAwMTQxMDExMDgxMDEyMDAxNDEwMDEwODEwMTIwMDEyMDAwNDFmMDAxNmEyMjExMTA3YjIwMDEyMDAwNDFhMDAxNmEyMjA3MTA3YjIwMDA0MWUwMDE2YTIyMDUyMDAwNDE5MDAyNmEyMjA0MjkwMzAwMzcwMzAwMjAwMDQxZDgwMTZhMjIwMjIwMDA0MTg4MDI2YTIyMDMyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDM4MDAyMzcwM2QwMDEyMDAwNDFkMDAxNmEyMjA2MTA3ZjEwZDIwMTEwNWMyMTAxMjAwMDIwMTQxMDJmMTA5NjAxMzYwMmYwMDEyMDAwMTA0MzM2MDJhMDAxMjAwOTIwMDExMDMyNDFlYjgwMDg0MTBjMTAzMzIwMDAyODAyODQwMjIyMDE0MTAwMTA4MTAxMjAwMTIwMTExMDdiMjAwMTIwMDcxMDdiMjAwMTQxMDEyMDAwMTA3OTIwMDUyMDA0MjkwMzAwMzcwMzAwMjAwMjIwMDMyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDM4MDAyMzcwM2QwMDEyMDA2MTA3ZjEwMmEyMjAzMTAyYTIyMDYxMDIzMjAwNjEwY2UwMTA0NDAxMGNjMDExMDVjMjAwNjEwMjkxMDMxMTBkOTAxMTBhNzAxMjEwMTIwMDAyMDA2MzYwMjhjMDIyMDAwNDIwMDM3MDM4MDAyMjAwMDIwMDEzNjAyODgwMjIwMDMyMDAwNDE4MDAyNmExMDQ0MGIyMDAwMjAwMzM2MDI5MDAxMDI0MDAyNDAwMjQwMjAwMzEwNjUwNDQwMTBkNDAxMTBhNzAxMjEwZTEwN2QyMTBkMjAwMDIwMDAyODAyOTAwMTEwMTIzNjAyOWMwMTIwMDA0MTAwMzYwMjk4MDEyMDAwMjAwMDQxOTAwMTZhMzYwMjk0MDEyMDAwNDE5MDAyNmEyMTBhMjAwMDQxYzAwMTZhMjEwZjIwMDA0MWE4MDE2YTIxMTUwMzQwMjAwMDQxYTAwMTZhMjAwMDQxOTQwMTZhMTA2NzIwMDAyOTAzYTAwMTUwMDQ0MDQyODA4MDkwYmJiYWQ2YWRmMDBkMTAyZTIxMDEyMDBkMTBkMzAxMTA1ZjEwMmUxMDkyMDEyMDAxMTA4ZDAxMjIwNTIwMGQxMGQ3MDExMDVmMTAyZTEwOTIwMTIwMDExMDhkMDEyMjA2MTA5MTAxMjAwZDEwODkwMTQxZmYwMTcxNDEwMjQ5MGQwNTIwMGQyMDA1MTA5MzAxMjAwNjEwOTAwMTIxMDIyMDBlMTAyZjIxMDEyMDAwMjAwMjEwMjkzNjAyOGMwMjIwMDA0MjAwMzcwMzgwMDIyMDAwMjAwMTM2MDI4ODAyMjAxNDIwMDA0MTgwMDI2YTEwY2EwMTIwMGUxMDJmMjEwMTIwMDUxMGNlMDEwNDQwMTA0NjIwMDE0MjAwMjAwNTEwNDIwYjIwMDYxMGNlMDEwNDQwMTA0ODIwMGU0MjAwMjAwNjEwNDIwYjEwNDMyMTA0MTA0MzEwMmYyMTA2MjAwMTQxZmVmZmZmZmYwNzQ2MGQwMzIwMDEyMDA2MTA0MDBjMDQwYjIwMGYyMDE1NDEwODZhMjkwMzAwMzcwMzAwMjAwMDIwMTUyOTAzMDAzNzAzYjgwMTIwMGYxMGQ2MDExMGFjMDEyMTEyMjAwZjEwZDUwMTEwYjIwMTIxMTMyMDBmMjgwMjAwMjEwYzIwMDAyODAyYzQwMTIxMDQyMDAwMjkwM2I4MDEyMTE2MjAxMjEwMTIyMTAxMjAxMzEwMTI0MTBkNmUyMDAxNDEwYzZlNmEyMTExNDEwMDIxMDEwMzQwMDI0MDAyNDAyMDAxMjAxMTQ3MDQ0MDIwMDE0MTAxNmEyMTA2NDEwMDIxMDIyMDEyMTAxMjIxMDUwMjQwMDI0MDAzNDAyMDAyNDEwYzZhMjIwMzIwMDU0YjBkMDEyMDAwNDE4ODAyNmEyMjA5NDEwMDM2MDIwMDIwMDA0MjAwMzcwMzgwMDIyMDEyMjAwMjIwMDA0MTgwMDI2YTIyMDI0MTBjMTA4YTAxMWEyMDAwNDEwMDM2MDJkMDAxMjAwMDQxODgwMTZhMjAwMjQxMDA0MTA0MTBjMTAxMjAwMDQxZDAwMTZhMjIwNzQxMDQyMDAwMjgwMjg4MDEyMDAwMjgwMjhjMDExMDU3MjAwMDI4MDJkMDAxMjEwODIwMDA0MjAwMzcwM2QwMDEyMDAwNDE4MDAxNmEyMDAyNDEwNDQxMGMxMGMxMDEyMDA3NDEwODIwMDAyODAyODAwMTIwMDAyODAyODQwMTEwNTcyMDAwNDEwMDM2MDJmMDAxMjAwMDQxZjgwMDZhMjAwNzQxMDA0MTA0MTBjMjAxMjAwMDQxZjAwMTZhMjIwMjQxMDQyMDAwMjgwMjc4MjAwMDI4MDI3YzEwNTcyMDAwMjgwMmYwMDEyMTBiMjAwMDQxMDAzNjAyZjAwMTIwMDA0MWYwMDA2YTIwMDc0MTA0NDEwODEwYzIwMTIwMDI0MTA0MjAwMDI4MDI3MDIwMDAyODAyNzQxMDU3MjAwMzIxMDIyMDA4NDExODc0MjAwODQxODBmZTAzNzE0MTA4NzQ3MjIwMDg0MTA4NzY0MTgwZmUwMzcxMjAwODQxMTg3NjcyNzIyMDAxNDcwZDAwMGIyMDAwMjgwMmYwMDEyMTAzMjAwYjQxMTg3NDIwMGI0MTgwZmUwMzcxNDEwODc0NzIyMDBiNDEwODc2NDE4MGZlMDM3MTIwMGI0MTE4NzY3MjcyMTAyZjIxMDEyMDAzNDExODc0MjAwMzQxODBmZTAzNzE0MTA4NzQ3MjIwMDM0MTA4NzY0MTgwZmUwMzcxMjAwMzQxMTg3NjcyNzIyMjA3MTAyZjIxMDU0MTAxMTAyZDIwMDA0MTgwMDI2YTIyMDMyMDAxMTAzMjQxZDk4NjA4NDExNDEwMzMyMDAwMjgwMjg0MDIyMjAxMjAwNTEwNmUyMDAxMTA3MDIwMDA0MWUwMDE2YTIyMDIyMDBhMjkwMzAwMzcwMzAwMjAwMDQxZDgwMTZhMjIwMTIwMDkyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDM4MDAyMzcwM2QwMDExMDQzMjEwNTIwMDAyMDA0MzYwMjhjMDIyMDAwMjAwYzM2MDI4ODAyMjAwMDIwMTYzNzAzODAwMjIwMDUyMDAzMTA0NDIwMGEyMDAyMjkwMzAwMzcwMzAwMjAwOTIwMDEyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDNkMDAxMzcwMzgwMDIyMDAwMTA3ZDM2MDI5ODAyMDI0MDAyNDAwMjQwMDI0MDIwMDUxMDY1MGUwMjAxMDIwMDBiMTA0NzIxMDEyMDAwNDFlODAwNmEyMDAwMjgwMjgwMDIyMDAwMjgwMjg0MDIyMDBhMjAwNTEwNjIyMDAwMjkwMzY4MjExNzIwMDAyOTAzODgwMjIxMTYyMDAwMTA3ZDM2MDJlODAxMjAwMDIwMDEzNjAyZTAwMTIwMDAyMDE2MzcwM2Q4MDEyMDAwMjAxNzM3MDNkMDAxMGMwMjBiMjAwMDQxZTgwMTZhMjAwMDQxOTgwMjZhMjkwMzAwMzcwMzAwMjAwMjIwMGEyOTAzMDAzNzAzMDAyMDAxMjAwOTI5MDMwMDM3MDMwMDIwMDAyMDAwMjkwMzgwMDIzNzAzZDAwMTBjMDEwYjIwMDA0MWYwMDE2YTIyMDEyMDA1MTA5NzAxMjAwMDQxZDAwMTZhMjAwMDQxODAwMjZhMjAwMTEwODMwMTBiMjAwMDQxODAwMjZhMjAwMDQxZDAwMTZhMTA3NjIwMDAyODAyODgwMjIyMGMyMDA3MTAzMDQ1MGQwMTIwMDAyODAyOGMwMjIxMDQyMDAwMjkwMzgwMDIyMTE2MjAwNjIxMDEwYzA1MGI0MTAwMjEwMjIwMTMxMDEyMjEwNTAzNDAyMDAyNDEwZDZhMjIwMzIwMDU0YjBkMDMyMDAwNDIwMDM3MDA4NTAyMjAwMDQyMDAzNzAzODAwMjIwMTMyMDAyMjAwMDQxODAwMjZhMjIwMjQxMGQxMDhhMDExYTIwMDA0MTAwMzYwMmQwMDEyMDAwNDFlMDAwNmEyMDAyNDEwMDQxMDQxMGJmMDEyMDAwNDFkMDAxNmEyMjA4NDEwNDIwMDAyODAyNjAyMDAwMjgwMjY0MTA1NzIwMDAyODAyZDAwMTIxMDkyMDAwNDFkODAxNmEyMjBiNDEwMDNhMDAwMDIwMDA0MjAwMzcwM2QwMDEyMDAwNDFkODAwNmEyMDAyNDEwNDQxMGQxMGJmMDEyMDA4NDEwOTIwMDAyODAyNTgyMDAwMjgwMjVjMTA1NzIwMDA0MTAwMzYwMmYwMDEyMDAwNDFkMDAwNmEyMDA4NDEwMDQxMDQxMGMwMDEyMDAwNDFmMDAxNmEyMjAyNDEwNDIwMDAyODAyNTAyMDAwMjgwMjU0MTA1NzIwMDAyODAyZjAwMTIxMTAyMDAwNDEwMDM2MDJmMDAxMjAwMDQxYzgwMDZhMjAwODQxMDQ0MTA4MTBjMDAxMjAwMjQxMDQyMDAwMjgwMjQ4MjAwMDI4MDI0YzEwNTcyMDAwMjgwMmYwMDEyMTA3MjAwMDQxMDAzYTAwZjAwMTIwMDA0MTQwNmIyMDA4NDEwODQxMDkxMGMwMDEyMDAyNDEwMTIwMDAyODAyNDAyMDAwMjgwMjQ0MTA1NzIwMDMyMTAyMjAwOTQxMTg3NDIwMDk0MTgwZmUwMzcxNDEwODc0NzIyMDA5NDEwODc2NDE4MGZlMDM3MTIwMDk0MTE4NzY3MjcyMjAwMTQ3MGQwMDBiMjAwMDJkMDBmMDAxMjAwNzQxMTg3NDIwMDc0MTgwZmUwMzcxNDEwODc0NzIyMDA3NDEwODc2NDE4MGZlMDM3MTIwMDc0MTE4NzY3MjcyMjEwODIwMGMxMDJmMjEwOTIwMDQxMDI5MjEwNzIwMTA0MTE4NzQyMDEwNDE4MGZlMDM3MTQxMDg3NDcyMjAxMDQxMDg3NjQxODBmZTAzNzEyMDEwNDExODc2NzI3MjEwMmYyMTA1NDUwNDQwNDEwMTEwMmQyMDAwNDE4MDAyNmEyMjAxMjAwNTEwMzI0MWE4ODYwODQxMDgxMDMzMjAwMDI4MDI4NDAyMTA3MDIwMDA0MWUwMDE2YTIyMDIyMDBhMjkwMzAwMzcwMzAwMjAwYjIwMDA0MTg4MDI2YTIyMDMyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDM4MDAyMzcwM2QwMDExMDQzMjEwNDIwMDAyMDA3MzYwMjhjMDIyMDAwMjAwOTM2MDI4ODAyMjAwMDIwMTYzNzAzODAwMjIwMDQyMDAxMTA0NDIwMGEyMDAyMjkwMzAwMzcwMzAwMjAwMzIwMGIyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDNkMDAxMzcwMzgwMDIyMDAwMTA3ZDM2MDI5ODAyMDI0MDAyNDAwMjQwMDI0MDIwMDQxMDY1MGUwMjAxMDIwMDBiMTA0NzIxMDEyMDAwNDExMDZhMjAwMDI4MDI4MDAyMjAwMDI4MDI4NDAyMjAwYTIwMDQxMDYyMjAwMDI5MDMxMDIxMTcyMDAwMjkwMzg4MDIyMTE2MjAwMDEwN2QzNjAyZTgwMTIwMDAyMDAxMzYwMmUwMDEyMDAwMjAxNjM3MDNkODAxMjAwMDIwMTczNzAzZDAwMTBjMDIwYjIwMDA0MWU4MDE2YTIwMDA0MTk4MDI2YTI5MDMwMDM3MDMwMDIwMDIyMDBhMjkwMzAwMzcwMzAwMjAwYjIwMDMyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDM4MDAyMzcwM2QwMDEwYzAxMGIyMDAwNDFmMDAxNmEyMDA0MTA5NzAxMDI3ZjIwMDAyOTAzZjAwMTUwMDQ0MDIwMDAyODAyOTAwMjIxMDMyMDAwNDExODZhMjAwMDI4MDI4MDAyMjAwMDI4MDI4NDAyMjAwMDI4MDJmODAxMjAwMDI4MDJmYzAxMTA2ZDIwMDAyODAyMWMyMTAyMjAwMDI4MDIxODBjMDEwYjEwNDcyMTAzMjAwMDQxMjA2YTIwMDAyODAyODAwMjIwMDAyODAyODQwMjIwMDAyODAyOTAwMjIwMDA0MWYwMDE2YTEwNmMyMDAwMjgwMjI0MjEwMjIwMDAyODAyMjAwYjIxMDEyMDAwMjkwMzg4MDIyMTE2MjAwMDEwN2QzNjAyZTgwMTIwMDAyMDAzMzYwMmUwMDEyMDAwMjAxNjM3MDNkODAxMjAwMDIwMDIzNjAyZDQwMTIwMDAyMDAxMzYwMmQwMDEwYjIwMDA0MWQwMDE2YTEwNzIyMTAzMjAwODEwMmYyMTAxMjAwMDIwMDMzNjAyOGMwMjIwMDA0MjAwMzcwMzgwMDIyMDAwMjAwMTM2MDI4ODAyMjAwMDQxODAwMjZhMTA5NTAxMjEwMTBjMDQwYjIwMDgxMDJmMjEwNDQxMDExMDJkMjAwNTEwMzIyMTAzNDFhODg2MDg0MTA4MTA0ZDIxMDExMDQzMjIwNTIwMDQxMDZlMjAwNTEwNzAxMDQzMjEwNDIwMDAyMDA3MzYwMjhjMDIyMDAwMjAwOTM2MDI4ODAyMjAwMDIwMTYzNzAzODAwMjIwMDQyMDAwNDE4MDAyNmExMDQ0MjAwMDIwMDMzNjAyOTAwMjIwMDA0MjdmMzcwMzg4MDIyMDAwMjAwNTM2MDI4NDAyMjAwMDIwMDEzNjAyODAwMjIwMDAxMDdkMzYwMjk4MDIwMjdmMDI3ZTAyNDAwMjQwMDI0MDIwMDQxMDY1MGUwMjAxMDIwMDBiMTA0NzIxMDIyMDAwNDEyODZhMjAwMDI4MDI4MDAyMjAwMDI4MDI4NDAyMjAwYTIwMDQxMDYyMjAwMDI4MDIyYzIxMDMyMDAwMjgwMjI4MjEwMTIwMDAyOTAzODgwMjBjMDIwYjIwMDAyODAyOTAwMjIxMDIyMDAwMjkwMzg4MDIyMTE2MjAwMDI4MDI4NDAyMjEwMzIwMDAyODAyODAwMjIxMDEyMDAwMjgwMjk4MDIwYzAyMGIyMDAwNDFkMDAxNmEyMDA0MTA5NzAxMDI3ZjIwMDAyOTAzZDAwMTUwMDQ0MDIwMDAyODAyOTAwMjIxMDIyMDAwNDEzMDZhMjAwMDI4MDI4MDAyMjAwMDI4MDI4NDAyMjAwMDI4MDJkODAxMjAwMDI4MDJkYzAxMTA2ZDIwMDAyODAyMzQyMTAzMjAwMDI4MDIzMDBjMDEwYjEwNDcyMTAyMjAwMDQxMzg2YTIwMDAyODAyODAwMjIwMDAyODAyODQwMjIwMDAyODAyOTAwMjIwMDA0MWQwMDE2YTEwNmMyMDAwMjgwMjNjMjEwMzIwMDAyODAyMzgwYjIxMDEyMDAwMjkwMzg4MDIwYjIxMTYxMDdkMGIyMTA0MjAxNjQyN2Y1MTA0N2UxMDE2MDUyMDE2MGIyMDAyMjAwNDIwMDEyMDAzMTA0NTIxMDMxMDE3NDEwMDIxMDIyMDAzMTAxMjIxMDEyMDAwNDEwMDM2MDJmODAxMjAwMDIwMDMzNjAyZjAwMTIwMDAyMDAxNDEwMjc2MzYwMmY0MDEyMDAwNDFmMDAxNmExMDc1MTAyZjIxMDQxMDQzMjEwMTIwMDQxMDEyMjEwMzIwMDA0MTAwM2EwMDkwMDIyMDAwMjAwMzM2MDI4YzAyMjAwMDIwMDQzNjAyODgwMjIwMDAyMDAzMzYwMjg0MDIyMDAwNDEwMDM2MDI4MDAyMDM0MDIwMDIyMDAzNDYwNDQwMjAwMDJkMDA5MDAyNDUwZDA1NDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGMwNTA1MjAwMDQxZDAwMTZhMjIwMzIwMDA0MTgwMDI2YTEwNzcyMDAxMjAwMzEwNDQyMDAwMjgwMjgwMDIyMTAyMjAwMDI4MDI4NDAyMjEwMzBjMDEwYjAwMGIwMDBiNDFjMDg2MDg0MTE5MTA0MTAwMGIyMDBjMjAwZTEwMzAwNDQwMjAwZDIwMDQxMDhmMDEwYzA0MGI0MWQ0OGEwODQxMTMxMDQxMDAwYjIwMDA0MTA4NmExMDM2MjAwMDIwMDAyZDAwMGMzYTAwODQwMjIwMDAyMDAwMjgwMjA4MzYwMjgwMDIyMDAwNDE4MDAyNmEyMjA2NDE4MDgwMDg0MTIxMTBhMzAxMjMwMDQxNDA2YTIyMDMyNDAwMjAwMzQxMDAyMDAzNmI0MTAzNzEyMjA0NmEyMTA3MjAwNDA0NDAyMDAzMjEwMjAzNDAyMDAyNDEwMDNhMDAwMDIwMDI0MTAxNmEyMjAyMjAwNzQ5MGQwMDBiMGIyMDA3NDFjMDAwMjAwNDZiMjIwNTQxN2M3MTIyMDQ2YTIxMDIyMDA0NDEwMDRhMDQ0MDAzNDAyMDA3NDEwMDM2MDIwMDIwMDc0MTA0NmEyMjA3MjAwMjQ5MGQwMDBiMGIyMDA1NDEwMzcxMjIwNDA0NDAyMDAyMjAwNDZhMjEwNDAzNDAyMDAyNDEwMDNhMDAwMDIwMDI0MTAxNmEyMjAyMjAwNDQ5MGQwMDBiMGIyMDA2MjAwMzAyN2YyMDAxMDQ0MDIwMDFhZDIxMTY0MTNmMjEwMTAyNDAwMzQwMjAxNjUwMGQwMTIwMDE0MTNmNGQwNDQwMjAwMTIwMDM2YTIwMTYyMDE2NDIwYTgwMjIxNjQyMGE3ZTdkYTc0MTMwNzIzYTAwMDAyMDAxNDEwMTZiMjEwMTBjMDEwYjBiMTAyYzAwMGIyMDAxNDEwMTZhMGMwMTBiMjAwMzQxMzAzYTAwM2Y0MTNmMGIyMjAxNmE0MWMwMDAyMDAxNmIxMGEzMDEyMDAzNDE0MDZiMjQwMDIwMDAyODAyODAwMjIwMDAyZDAwODQwMjEwMzgxMDAwMDAwYjIwMDAyMDAxMzYwMmNjMDExMDdkMjEwMjEwN2QyMTA0MjAwMDIwMDExMDEyMzYwMmQ4MDEyMDAwNDEwMDM2MDJkNDAxMjAwMDIwMDA0MWNjMDE2YTM2MDJkMDAxMDI0MDAzNDAwMjQwMjAwMDQxODAwMjZhMjAwMDQxZDAwMTZhMTA2NzIwMDAyOTAzODAwMjUwMGQwMDIwMDAyODAyOTQwMjIxMDUyMDAyMjEwMzIwMDAyODAyOTAwMjIyMDEyMDBjMTAzMDQ1MDQ0MDIwMDQyMTAzMjAwMTIwMDgxMDMwNDUwZDAzMGIyMDAzMjAwNTEwOGYwMTBjMDEwYjBiMjAwODEwMmYyMTBjNDIwMDIxMTYyMDA2MjEwMTBjMDEwYjBiMGI0MTg3ODYwODQxMjExMDQxMDAwYjQxYTU4YTA4NDExNTEwNDEwMDBiMjAwMDQxODA4MDgwMjAzNjAyZDAwMTIwMDYyMDAwNDFkMDAxNmE0MTA0MTAwZjFhMjAwNjQxZWQ4NTA4NDEwNDEwMGYxYTBiMjAwMDQyMDAzNzAzZDAwMTIwMDYyMDAwNDFkMDAxNmEyMjAzNDEwODEwMGYxYTIwMDUyMDA2MTAzZjIwMDQyMDA2MTA0ZTEwYzcwMTEwNDMyMjAxNDE4YThkMDg0MTA4MTA0ZDEwNGUyMDAyMTA0MzEwMmYyMjAyMTAzZjIwMDIxMDNmMjAwMTIwMDIxMDI0MjAwMDIwMDQzNjAyZDAwMTIwMDAyMDA0MTAxMjM2MDI4ODAyMjAwMDQxMDAzNjAyODQwMjIwMDAyMDAzMzYwMjgwMDIwMzQwMjAwMDIwMDA0MTgwMDI2YTEwYzQwMTIwMDAyODAyMDAwNDQwMjAwMDI4MDIwNDEwMDcxYTBjMDEwYjBiMjAwMDQxYTAwMjZhMjQwMDBmMGI0MWJhOGEwODQxMWExMDQxMDAwYjBkMDAxMDIyNDEwMDEwNWExMGM3MDExMDI1MGIwZDAwMTAyMjQxMDAxMDVhMTBkMTAxMTA1YjBiMGQwMDEwMjI0MTAwMTA1YTEwZDQwMTEwNWQwYjBkMDAxMDIyNDEwMDEwNWExMGQ4MDExMDVkMGIyYTAxMDE3ZjEwMjI0MTAwMTA1YTEwY2IwMTEwYWIwMTIyMDA0MWZlZmZmZmZmMDc0NzA0NDAyMDAwMTAwNzFhMGYwYjQxZWQ4NTA4NDEwNDEwMjYwYjBkMDAxMDIyNDEwMDEwNWExMGRhMDExMDVkMGIwZDAwMTAyMjQxMDAxMDVhMTBjODAxMTA1YjBiMGQwMDEwMjI0MTAwMTA1YTEwYzkwMTEwNWIwYjBkMDAxMDIyNDEwMDEwNWExMGNjMDExMDViMGIwZDAwMTAyMjQxMDAxMDVhMTBkOTAxMTA1ZDBiMGQwMDEwMjI0MTAwMTA1YTEwZDIwMTEwNWIwYmExMDEwMTAyN2YyMzAwNDE0MDZhMjIwMDI0MDAxMDIyNDEwMTEwNWEyMDAwNDEwMDEwNGIzNjAyMTQyMDAwMjAwMDQxMTQ2YTEwZDYwMTEwYWMwMTIyMDEzNjAyMTgyMDAwNDEwODZhMTAzNTIwMDAyMDAwMmQwMDBjM2EwMDIwMjAwMDIwMDAyODAyMDgzNjAyMWMyMDAwMjAwMTEwMTIzNjAyMmMyMDAwNDEwMDM2MDIyODIwMDAyMDAwNDExODZhMzYwMjI0MjAwMDQxMzQ2YTIxMDEwMzQwMjAwMDQxMzA2YTIwMDA0MTI0NmExMGJhMDEyMDAwMjgwMjMwMDQ0MDIwMDEyMDAwNDExYzZhMTBiYjAxMGMwMTBiMGIyMDAwMjgwMjFjMjAwMDJkMDAyMDEwMzcyMDAwNDE0MDZiMjQwMDBiYTAwMTAxMDI3ZjIzMDA0MTQwNmEyMjAwMjQwMDEwMjI0MTAxMTA1YTIwMDA0MTAwMTA0YjM2MDIxNDIwMDAyMDAwNDExNDZhMTBkNTAxMTBiMjAxMjIwMTM2MDIxODIwMDA0MTA4NmExMDM1MjAwMDIwMDAyZDAwMGMzYTAwMjAyMDAwMjAwMDI4MDIwODM2MDIxYzIwMDAyMDAxMTAxMjM2MDIyYzIwMDA0MTAwMzYwMjI4MjAwMDIwMDA0MTE4NmEzNjAyMjQwMzQwMjAwMDQxMzA2YTIwMDA0MTI0NmExMGI1MDEyMDAwMmQwMDNjNDEwMjQ3MDQ0MDIwMDA0MTMwNmEyMDAwNDExYzZhMTBiNjAxMGMwMTBiMGIyMDAwMjgwMjFjMjAwMDJkMDAyMDEwMzcyMDAwNDE0MDZiMjQwMDBiMGQwMDEwMjI0MTAwMTA1YTEwZDMwMTEwNWUwYjBkMDAxMDIyNDEwMDEwNWExMGQ3MDExMDVlMGJlMzAzMDIwNTdmMDI3ZTIzMDA0MTkwMDE2YjIyMDAyNDAwMTA0OTQxMDAxMDVhMjAwMDEwNGEyMjAxMzYwMjE0MDI0MDIwMDExMDY1NDEwMTQ2MDQ0MDIwMDExMDEyMjEwMTIwMDA0MTAwMzYwMjM0MjAwMDIwMDEzNjAyMzAyMDAwNDEwMDM2MDIyYzIwMDAyMDAwNDExNDZhMzYwMjI4MjAwMDQxM2M2YTIxMDIyMDAwNDFmNDAwNmEyMTAzMjAwMDQxZjgwMDZhMjEwMTAzNDAyMDAwNDFmMDAwNmEyMDAwNDEyODZhMTA2NzIwMDAyOTAzNzA1MDBkMDIyMDAwNDFlMDAwNmEyMDAxNDEwODZhMjkwMzAwMjIwNTM3MDMwMDIwMDAyMDAxMjkwMzAwMjIwNjM3MDM1ODIwMDAyMDAwMjgwMjM0MjIwNDQxMDE2YTM2MDIzNDIwMDM0MTA4NmEyMDA1MzcwMjAwMjAwMzIwMDYzNzAyMDAyMDAwNDE0MDZiMjAwMTI5MDIwMDM3MDMwMDIwMDA0MWM4MDA2YTIwMDA0MTgwMDE2YTI4MDIwMDM2MDIwMDIwMDAyMDAwMjkwMjcwMzcwMzM4MjAwNDQ1MDQ0MDIwMDA0MTIwNmEyMDAyNDEwODZhMjkwMjAwMzcwMzAwMjAwMDIwMDIyOTAyMDAzNzAzMTgwYzAxMGIwYjEwMmMwMDBiNDFiMzgzMDg0MTIyMTAwMzAwMGIyMDAwNDEwODZhMjIwMTIwMDA0MTIwNmEyOTAzMDAzNzAzMDAyMDAwMjAwMDI5MDMxODM3MDMwMDEwZGEwMTEwYTcwMTIxMDIyMDAxMjgwMjAwMjAwMjEwMzA0NTA0NDA0MTk4OGEwODQxMGQxMDQxMDAwYjEwZDIwMTEwNWMyMTAyMjAwMDEwNDMzNjAyMTgyMDAwMTA0MzM2MDIyODIwMDA0MWYwMDA2YTIyMDEyMDAyMTAzMjQxYTc4MzA4NDEwNTEwMzMyMDAwMjgwMjc0MjIwMjIwMDA0MTE4NmExMDdiMjAwMjIwMDA0MTI4NmExMDdhMjAwMDQxZTgwMDZhMjAwMDQxODAwMTZhMjkwMzAwMzcwMzAwMjAwMDQxZTAwMDZhMjAwMDQxZjgwMDZhMjkwMzAwMzcwMzAwMjAwMDIwMDAyOTAzNzAzNzAzNTgyMDAwNDEzODZhMjIwMjIwMDA0MWQ4MDA2YTIwMDAxMDg0MDEyMDAxMjAwMjEwY2QwMTIwMDExMDc0MjAwMDQxOTAwMTZhMjQwMDBiOGMwMTAxMDI3ZjIzMDA0MTQwNmEyMjAwMjQwMDEwNDk0MTAwMTA1YTEwZDIwMTEwNWMyMTAxMjAwMDEwNDMzNjAyMDAyMDAwMTA0MzM2MDIwNDIwMDA0MTA4NmEyMDAxMTAzMjQxOTU4MzA4NDExMjEwMzMyMDAwMjgwMjBjMjIwMTIwMDAxMDdiMjAwMTIwMDA0MTA0NmExMDdhMjAwMDQxMzA2YTIwMDA0MTE4NmEyOTAzMDAzNzAzMDAyMDAwNDEyODZhMjAwMDQxMTA2YTI5MDMwMDM3MDMwMDIwMDAyMDAwMjkwMzA4MzcwMzIwMjAwMDEwN2QzNjAyMzgyMDAwNDEyMDZhMTA3NDIwMDA0MTQwNmIyNDAwMGJmZjAxMDIwNTdmMDE3ZTIzMDA0MTMwNmIyMjAwMjQwMDEwMjIxMDQ5NDEwMTEwNWEyMDAwMTA0ZjM2MDIxMDEwZDIwMTEwNWMyMDAwMTA0MzM2MDIxNDIwMDAxMDQzMzYwMjE4MTAzMjIxMDI0MWFjODMwODQxMDcxMDRkMjEwMzEwNDMyMjAxMjAwMDQxMTA2YTEwNzgyMDAxMjAwMDQxMTQ2YTEwN2IyMDAxMjAwMDQxMTg2YTEwN2ExMDdkMjEwNDEwMTYyMDAyMjAwNDIwMDMyMDAxMTA0NTIxMDExMDE3MjAwMTEwMTIyMTAyMjAwMDQxMDAzNjAyMjQyMDAwMjAwMTM2MDIxYzIwMDAyMDAyNDEwMjc2MzYwMjIwMjAwMDQxMWM2YTEwNzUyMTAxMjAwMDQyMDAzNzAzMjgyMDAxMTAxMjIyMDI0MTA5NDkwNDQwMDI0MDIwMDA0MTA4NmEyMDAwNDEyODZhMjAwMjEwYjAwMTIwMDE0MTAwMjAwMDI4MDIwODIyMDEyMDAwMjgwMjBjMjIwMjEwOGEwMTFhMjAwMTIwMDIxMGIxMDEyMjA1NDI4MDgwODA4MDEwNWEwZDAwMjAwNTEwMTQyMDAwNDEzMDZhMjQwMDBmMGIwYjQxOGE4NTA4NDEwYjQxOTU4NTA4NDEwZTEwNGMwMDBiOTgwMzAyMDU3ZjAxN2UyMzAwNDFlMDAwNmIyMjAwMjQwMDEwMjIxMDQ5NDFlNGRiMDgxMDEzMzYwMjAwNDFlNGRiMDgyODAyMDA0MTAwNDgwNDQwNDFlZjgzMDg0MTExMTAwMzAwMGIyMDAwNDEwMDM2MDIzODEwNDMyMTAzMjAwMDQxMzg2YTIyMDQyODAyMDAyMTAxMDM0MDQxZTRkYjA4MjgwMjAwMjAwMTRhMDQ0MDIwMDQyMDAxNDEwMTZhMjIwMjM2MDIwMDIwMDMyMDAxMTA0YjEwNGUyMDAyMjEwMTBjMDEwYjBiMjAwMzIxMDE0MWU0ZGIwODI4MDIwMDIwMDAyODAyMzg0YTA0NDA0MTgwODQwODQxMTIxMDAzMDAwYjIwMDAyMDAxMzYwMjFjMjAwNDEwZDIwMTEwNWMxMDMyNDFmOTgyMDg0MTBkMTAzMzIwMDAyMDAxMTAxMjM2MDI1YzIwMDA0MTAwMzYwMjU4MjAwMDIwMDA0MTFjNmEzNjAyNTQyMDAwMjgwMjNjMjEwMTAzNDAyMDAwNDExMDZhMjAwMDQxZDQwMDZhMTBjNDAxMjAwMDI4MDIxMDA0NDAyMDAxMjAwMDI4MDIxNDEwNmUwYzAxMGIwYjIwMDA0MTI4NmEyMDAwNDE0MDZiMjkwMzAwMzcwMzAwMjAwMDQxMzA2YTIwMDA0MWM4MDA2YTI5MDMwMDM3MDMwMDIwMDAyMDAwMjkwMzM4MzcwMzIwMjAwMDQxMzg2YTIwMDA0MTIwNmExMDdlMDI0MDIwMDAyODAyNDQyMjAxMTBjZTAxNDUwNDQwMjAwMDI4MDI0MDIxMDIwYzAxMGIxMDQ2MjAwMDI4MDI0MDIyMDI0MjAwMjAwMTEwNDIwYjIwMDAyOTAzMzgyMDAwNDEwODZhMTAzNTIwMDAyMDAwMmQwMDBjM2EwMDNjMjAwMDIwMDAyODAyMDgzNjAyMzgyMDAyMjAwMDQxMzg2YTIyMDIxMDNlMjAwMjEwYzYwMTIwMDEyMDAyMTAzYzIwMDAyODAyMzgyMDAwMmQwMDNjMTAzNzIwMDA0MWUwMDA2YTI0MDAwYjMxMDEwMTdlMTAyMjEwNDk0MTAxMTA1YTQxMDAxMDExMjIwMDQyODE4MDkwYmJiYWQ2YWRmMDBkNWEwNDQwNDFlZjhiMDg0MTIwMTA0MTAwMGIxMGQ3MDEyMDAwMTBhYTAxMGIzMTAxMDE3ZTEwMjIxMDQ5NDEwMTEwNWE0MTAwMTAxMTIyMDA0MjgxODA5MGJiYmFkNmFkZjAwZDVhMDQ0MDQxZDI4YjA4NDExZDEwNDEwMDBiMTBkMzAxMjAwMDEwYWEwMTBiZTMwMTAxMDM3ZjIzMDA0MTMwNmIyMjAwMjQwMDEwMjIxMDQ5NDEwMjEwNWE0MTAwMTA1ODIxMDEyMDAwNDEwMTEwNTEyMjAyMzYwMjBjMjAwMDIwMDEzNjAyMDgyMDAwMjAwMTEwMTIzNjAyMTgyMDAwNDEwMDM2MDIxNDIwMDAyMDAwNDEwODZhMzYwMjEwMDM0MDIwMDA0MTFjNmEyMDAwNDExMDZhMTBjMzAxMjAwMDI4MDIxYzA0NDAyMDAwMjAwMDI4MDIyNDIyMDEzNjAyMmMyMDAwMjAwMDI4MDIyMDM2MDIyODIwMDA0MTI4NmExMGQ2MDEyMDAxMTBiOTAxMGMwMTA1MjAwMDIwMDIxMDEyMzYwMjE4MjAwMDQxMDAzNjAyMTQyMDAwMjAwMDQxMGM2YTM2MDIxMDAzNDAyMDAwNDExYzZhMjAwMDQxMTA2YTEwYzMwMTIwMDAyODAyMWMwNDQwMjAwMDIwMDAyODAyMjQyMjAxMzYwMjJjMjAwMDIwMDAyODAyMjAzNjAyMjgyMDAwNDEyODZhMTBkNTAxMjAwMTEwYjQwMTBjMDEwYjBiMjAwMDQxMzA2YTI0MDAwYjBiMGJhYTA3MDIwYjdmMDE3ZTIzMDA0MTMwNmIyMjAwMjQwMDEwMjI0MTAwMTA1YTEwYzkwMTEwNWMyMjA5MTAyZjEwMzIyMTAxNDFkMjgxMDg0MTE0MTA0ZDIxMDIxMDQzMjEwNjEwN2QyMTA3MTAxNjIwMDEyMDA3MjAwMjIwMDYxMDQ1MjEwMTEwMTcyMDAxMTAxMjIxMDIyMDAwNDEwMDM2MDIxMDIwMDAyMDAxMzYwMjA4MjAwMDIwMDI0MTAyNzYzNjAyMGMyMDAwNDEwODZhMTA3NTIyMDIxMDEyMjEwMTIwMDA0MTI4NmE0MTAwM2EwMDAwMjAwMDQxMjQ2YTIwMDEzNjAyMDAyMDAwMjAwMjM2MDIyMDIwMDAyMDAxMzYwMjFjMjAwMDQxMDAzNjAyMTgwMjQwMDI3ZjAyNDAwMjQwMjAwMTQ1MGQwMDAyNDAwMjQwMDI0MDIwMDA0MTE4NmE0MThhODUwODQxMGIxMDU0NDFmZjAxNzEwZTAyMDIwMTAwMGI0MThhODUwODQxMGI0MWVkODYwODQxMGQxMDRjMDAwYjQxMDEyMTAzMjAwMDQxMTg2YTQxOGE4NTA4NDEwYjEwNTMyMTAxMGIyMDAwMjgwMjFjMjAwMDI4MDIxODQ3MGQwMzIwMDAyZDAwMjgwNDQwNDFkY2RiMDg0MTAwMzYwMjAwNDFlMGRiMDg0MTAwM2EwMDAwMGIyMDAzNDUwZDAwMjAwMDQxMTg2YTIyMDQyMDAxMTAyZjEwMzI0MWU0ODIwODQxMTUxMDMzMjAwMDIwMDQxMDdjMjIwMzM2MDIwMDIwMDQyMDAxMTAyZjEwMzI0MWIyODIwODQxMGIxMDMzMjAwMDQxMTg2YTEwN2M0MmJlOGE4NjBmMTAyZTEwOGUwMTIxMDYyMDA0MjAwMTEwMmYxMDMyNDFjOTgyMDg0MTBkMTAzMzIwMDA0MTE4NmExMDdjMjAwMzEwOTIwMTQyYmU4YTg2MGYxMDJlMTA4ZTAxNDEwYTEwMmQ0MTEyMTA5NDAxMTA4ZDAxMjEwNzIwMDQyMDAxMTAyZjEwMzI0MWJkODIwODQxMGMxMDMzMjAwMDQxMTg2YTEwN2M0MTBhMTAyZDQxMTIxMDk0MDEyMDAzMTA5MDAxMTA4ZTAxNDJiZThhODYwZjEwMmUxMDhlMDE0MTBhMTAyZDQxMTIxMDk0MDExMDhkMDEyMTBhMjAwNDIwMDkxMDJmMjIwMjEwMmYxMDMyNDE4NzgxMDg0MTBmMTAzMzIwMDAyMDAwNDExODZhMTA3YzIyMDUzNjAyMTQyMDA0MjAwMjEwMmYxMDMyNDFhYjgyMDg0MTA3MTAzMzIwMDA0MTE4NmExMDdjMjEwODIwMDQyMDAyMTAzMjQxYTY4MTA4NDExMDEwMzMyMDAwNDExODZhMTA3YzIxMDIyMDAwMjAwODIwMDUxMDkxMDEyMDAyMTA5MDAxMzYwMjA4MjAwNDIwMDExMDMyNDFkNjgyMDg0MTBlMTAzMzIwMDAyODAyMWMyMjAxMjAwMDQxMTQ2YTEwNzgyMDAxMjAwMDQxMDg2YTEwNzgyMDAwMjgwMjI4MjEwMjIwMDAyODAyMTgyMTA1MjAwMDI5MDMyMDEwN2QyMTA4MTA3MTIwMDIyMDA4MjAwNTIwMDExMDQ1MjEwMTEwMTcyMDAwMjAwMTEwNzMzNjAyMDQ0MjgwODA5MGJiYmFkNmFkZjAwZDEwMmUyMTAyMjAwMDEwN2QzNjAyMTgyMDAwNDEwNDZhMjAwNDEwY2YwMTIxMDUxMDdkMjIwMTIwMDUwZDAyMWEyMDAxMjAwMDI4MDIwNDEwODkwMTQxMDE2YTQxZmYwMTcxNDEwMTRkMDQ0MDIwMDA0MTA0NmEyMDAwMTBjZjAxMGQwMjIwMDAyODAyMDAyMTAzMGIyMDAwMjgwMjA0MjAwMzEwOTMwMTIwMGExMDhlMDEyMTAxNDEwYTEwMmQ0MTEyMTA5NDAxMjAwMDI4MDIwMDEwOTAwMTIxMDMyMDA2MjAwMjEwOTIwMTIwMDcyMDAyMTA5MjAxMTA4YzAxMjAwMTIwMDIxMDhlMDEyMDAzMTA4ZDAxMTA4YzAxMGMwMjBiNDFhMDhiMDg0MTMyMTA0MTAwMGIyMDAwMjgwMjA0MjAwNzEwOTIwMTIxMDEyMDA2MjAwMjEwOTIwMTIwMDEyMDAyMTA4ZTAxMjAwMDI4MDIwMDEwOGQwMTEwOGMwMTBiMjEwMTIwMDA0MTE4NmEyMjAzMjAwOTEwMzI0MTk2ODEwODQxMTAxMDMzMjAwMzEwN2MyMTAyNDEwYTEwMmQ0MTEyMTA5NDAxMjEwMzIwMDAyODAyMDQyMDAxMTA5MjAxMjAwMzIwMDIxMDkzMDExMDhlMDEyMDAzNDEwMzEwOTQwMTEwOGQwMTEwMjUyMDAwNDEzMDZhMjQwMDBmMGI0MThhODUwODQxMGI0MTk1ODUwODQxMGUxMDRjMDAwYjAzMDAwMTBiM2MwMTAxN2YyMzAwNDExMDZiMjIwNTI0MDAyMDA1NDEwODZhMjAwMTIwMDQyMDAyMjAwMzEwOWQwMTIwMDUyODAyMGMyMTAxMjAwMDIwMDUyODAyMDgzNjAyMDAyMDAwMjAwMTM2MDIwNDIwMDU0MTEwNmEyNDAwMGIzYjAxMDE3ZjIzMDA0MTEwNmIyMjA1MjQwMDIwMDU0MTA4NmEyMDAyMjAwMzIwMDEyMDA0MTAyYjIwMDUyODAyMGMyMTAxMjAwMDIwMDUyODAyMDgzNjAyMDAyMDAwMjAwMTM2MDIwNDIwMDU0MTEwNmEyNDAwMGIwYmRhMGQwMjAwNDE4MDgwMDgwYmM2MGQ0ZTZmMjA3Mzc3NjE3MDIwNmY3MDY1NzI2MTc0Njk2ZjZlMjA2NjZmNzU2ZTY0MjA2MTc0MjA2OTZlNjQ2NTc4MjA3NTZlNzc3MjYxNzA0NTY3NmM2NDY3NjU3NDU3NzI2MTcwNzA2NTY0NDU2NzZjNjQ1NDZmNmI2NTZlNDk2NDc3NzI2MTcwNDU2NzZjNjQ3MjY1NjM2OTcwNjk2NTZlNzQyMDYxNjQ2NDcyNjU3MzczMjA2ZTZmNzQyMDczNjU3NDY1Nzg2OTc0NGQ2MTcyNmI2NTc0NjM2YzYxNjk2ZDUyNjU3NzYxNzI2NDczNjc2NTc0NDE2MzYzNmY3NTZlNzQ1NDZmNmI2NTZlNzM2NzY1NzQ1NDZmNzQ2MTZjNDI2ZjcyNzI2Zjc3NzM2NzY1NzQ1MjY1NzM2NTcyNzY2NTQ2NjE2Mzc0NmY3MjY3NjU3NDU0NmY3NDYxNmM1MjY1NzM2NTcyNzY2NTczNjc2NTc0NTQ2ZjZiNjU2ZTQ5NjQ2ZDY5NmU3NDQxNmU2NDQ1NmU3NDY1NzI0ZDYxNzI2YjY1NzQ2NzY1NzQ0OTZlNzQ2NTcyNjU3Mzc0NTI2MTc0NjU0ZDZmNjQ2NTZjNjc2NTc0NTU2ZTY0NjU3MjZjNzk2OTZlNjc0OTY0NzQ2ZjZiNjU2ZTczNTQ2ZjU1NmU2NDY1NzI2Yzc5Njk2ZTY3NDE2ZDZmNzU2ZTc0NzU2ZTY0NjU3MjZjNzk2OTZlNjc0MTZkNmY3NTZlNzQ1NDZmNTQ2ZjZiNjU2ZTczNzI2NTY0NjU2NTZkNjc2NTc0NDM2MTczNjg2NzY1NzQ0MjYxNzM2NTUyNjE3NDY1Njc2NTc0NGM2MTczNzQ1MzZjNmY3MDY1Njc2NTc0NDY2OTcyNzM3NDUzNmM2ZjcwNjU2NzY1NzQ1NTc0Njk2YzY5N2E2MTc0Njk2ZjZlNjc2NTc0NGY3MDc0Njk2ZDYxNmM1NTc0Njk2YzY5N2E2MTc0Njk2ZjZlNjM2YzYxNjk2ZDRkNzU2Yzc0Njk3MDZjNjU2NzY1NzQ1Mzc0NjE2YjY1NTQ2ZjZiNjU2ZTQ5NjQ3MjY1NjI2MTZjNjE2ZTYzNjU1MDZmNzI3NDY2NmY2YzY5NmY3Mzc0NjE2YjY1NzU2ZTczNzQ2MTZiNjU2OTZlNjM2ZjcyNzI2NTYzNzQyMDZlNzU2ZDYyNjU3MjIwNmY2NjIwNDU1MzQ0NTQyMDc0NzI2MTZlNzM2NjY1NzI3MzYxNzI2Nzc1NmQ2NTZlNzQyMDY0NjU2MzZmNjQ2NTIwNjU3MjcyNmY3MjIwMjgyOTNhMjA3NDZmNmYyMDY2NjU3NzIwNjE3MjY3NzU2ZDY1NmU3NDczNzQ2ZjZmMjA2ZDYxNmU3OTIwNjE3MjY3NzU2ZDY1NmU3NDczNzc3MjZmNmU2NzIwNmU3NTZkNjI2NTcyMjA2ZjY2MjA2MTcyNjc3NTZkNjU2ZTc0NzM2MzYxNmU2ZTZmNzQyMDczNzU2Mjc0NzI2MTYzNzQyMDYyNjU2MzYxNzU3MzY1MjA3MjY1NzM3NTZjNzQyMDc3NmY3NTZjNjQyMDYyNjUyMDZlNjU2NzYxNzQ2OTc2NjU0ZDc1NmM3NDY5NDU1MzQ0NTQ0ZTQ2NTQ1NDcyNjE2ZTczNjY2NTcyNDU1MzQ0NTQ0ZTQ2NTQ1NDcyNjE2ZTczNjY2NTcyNDU1MzQ0NTQ1NDcyNjE2ZTczNjY2NTcyNzM3OTZlNjMyMDcyNjU3Mzc1NmM3NDY5NmU3MDc1NzQyMDc0NmY2ZjIwNmM2ZjZlNjc2OTZlNzA3NTc0MjA3NDZmNmYyMDczNjg2ZjcyNzQ2MzYxNzM3NDIwNzQ2ZjIwNjkzNjM0MjA2NTcyNzI2ZjcyNGQ2MTZlNjE2NzY1NjQ1NjY1NjMyMDY5NmU2NDY1NzgyMDZmNzU3NDIwNmY2NjIwNzI2MTZlNjc2NTQ1NTM0NDU0MjA2NTc4NzA2NTYzNzQ2NTY0NDU0NzRjNDQ3Mzc0NmY3MjYxNjc2NTIwNjQ2NTYzNmY2NDY1MjA2NTcyNzI2ZjcyM2EyMDc1NmU2YjZlNmY3NzZlMjA3MjY1NjM2NTY5NzY2NTY0MjA3NDZmNmI2NTZlMjA2MTY2NzQ2NTcyMjA3Mzc3NjE3MDY1Nzg2MzY4NjE2ZTY3NjU2MjYxNjQyMDYxNzI3MjYxNzkyMDZjNjU2ZTY3NzQ2ODc3NzI2ZjZlNjcyMDcyNjU3NDc1NzI2ZTY1NjQyMDczNzc2MTcwMjA3NDZmNmI2NTZlNzM3NzYxNzA1NDZmNmI2NTZlNzM0NjY5Nzg2NTY0NDk2ZTcwNzU3NDY5NmU3NjYxNmM2OTY0MjA3NjYxNmM3NTY1Nzc3MjYxNzA3MDY1NjQ1ZjY1Njc2YzY0NWY2MzZmNmU3NDcyNjE2Mzc0NWY2MTY0NjQ3MjY1NzM3MzYzNmY2ZDcwNmY3NTZlNjQ1ZjYxNzM2ODczNzc2MTcwNWY3Mzc3NjE3MDczNjM2ZjZkNzA2Zjc1NmU2NDVmNzg2NTc4NjM2ODYxNmU2NzY1NWY3Mzc3NjE3MDczNzA2NTcyNjY2ZjcyNmQ2MTZlNjM2NTVmNjY2NTY1NzM1ZjcwNjU3MjYzNjU2ZTc0NjM2ZjZkNzA2Zjc1NmU2NDVmNjY2NTY1NzM1ZjcwNjU3MjYzNjU2ZTc0NjI2ZjZmNzM3NDY1NzI1ZjYxNjQ2NDcyNjU3MzczNmQ2ZjZlNjU3OTVmNmQ2MTcyNmI2NTc0NWY2MTY0NjQ3MjY1NzM3MzYzNmY2ZTc0NzI2ZjZjNmM2NTcyNWY2MTY0NjQ3MjY1NzM3MzYxNzM3MzY1NzQ1Zjc0NmY2YjY1NmU1ZjY5NjQ2NTZlNzQ2OTY2Njk2NTcyNzY2MTc1NmM3NDVmNjE2NDY0NzI2NTczNzM3MDYxNzk2ZDY1NmU3NDIwNzM2ODZmNzU2YzY0MjA2MjY1MjA2MTZlMjA0NTUzNDQ1NDIwNzQ2ZjZiNjU2ZTU0Njg2NTIwNjE3MzczNjU3NDIwNzQ2ZjZiNjU2ZTIwNjk2NDY1NmU3NDY5NjY2OTY1NzIyMDYxNmU2NDIwNzQ2ODY1MjA2ZDZmNmU2NTc5MjA2ZDYxNzI2YjY1NzQyMDc1NmU2NDY1NzI2Yzc5Njk2ZTY3MjA2OTY0NjU2ZTc0Njk2NjY5NjU3MjIwNjQ2ZjZlMjc3NDIwNmQ2MTc0NjM2ODU3Njg2NTZlMjA3NDYxNzI2NzY1NzQ2OTZlNjcyMDYxNmUyMDQ1NDc0YzQ0MjA2ZDYxNzI2YjY1NzQyMDc0Njg2NTIwNjE3MzczNjU3NDIwNzQ2ZjZiNjU2ZTIwNjk2NDY1NmU3NDY5NjY2OTY1NzIyMDczNjg2Zjc1NmM2NDIwNjI2NTIwNTc0NTQ3NGM0NDQzNjE2YzZjNjU3MjIwNzM2ODZmNzU2YzY0MjA2MjY1MjA3NjYxNzU2Yzc0Nzc3MjZmNmU2NzIwNzA2MTc5NmQ2NTZlNzQ2ZTZmMjA3MjY1Nzc2MTcyNjQyMDc0NmYyMDYzNmY2ZDcwNmY3NTZlNjQ2ZTZmMjA2YzY1NjY3NDIwNjE2ZDZmNzU2ZTc0MjA3NDZmMjA2MzZmNmQ3MDZmNzU2ZTY0Nzc3MjZmNmU2NzIwNzM3NzYxNzA3MDY1NjQyMDc0NmY2YjY1NmU2ZTZmMjA2NTc4Njk3NDIwNmQ2MTcyNmI2NTc0MjA3MDYxNzk2ZDY1NmU3NDIwNzI2NTYzNjU2OTc2NjU2NDZlNmYyMDcyNjU2NDY1NjU2ZDIwNzA2MTc5NmQ2NTZlNzQyMDcyNjU2MzY1Njk3NjY1NjQ0ZTZmMjA2OTZlNzQ2NTcyNjU3Mzc0MjA3MjYxNzQ2NTIwNmQ2ZjY0NjU2YzIwNzA3MjY1NzM2NTZlNzQyMDZmNmUyMDc0Njg2NTIwNmQ2ZjZlNjU3OTIwNmQ2MTcyNmI2NTc0NmU2NTc3MjA2MzZmNmQ3MDZmNzU2ZTY0MjA2NjY1NjU3MzIwNjU3ODYzNjU2NTY0MjAzMTMwMzAyNTZlNjU3NzIwNzA2NTcyNjY2ZjcyNmQ2MTZlNjM2NTIwNjY2NTY1NzMyMDY1Nzg2MzY1NjU2NDIwMzEzMDMwMjU2ZDZmNmU2NTc5NWY2ZDYxNzI2YjY1NzQ1Zjc0NmY2YjY1NmU1ZjY5NjQ2NTZlNzQ2OTY2Njk2NTcyNzc3MjYxNzA3MDY1NjQ1ZjY1Njc2YzY0NWY3NDZmNmI2NTZlNWY2OTY0NjU2ZTc0Njk2NjY5NjU3MjYyNmY2ZjczNzQ2NTcyNWY3Mzc0NjE2YjY1NjQ1Zjc0NmY2YjY1NmU1ZjY5NjQ2NTZlNzQ2OTY2Njk2NTcyNmQ2ZjZlNjU3OTVmNmQ2MTcyNmI2NTc0NWY3NTZlNjQ2NTcyNmM3OTY5NmU2NzVmNjk2NDY1NmU3NDY5NjY2OTY1NzI2MzZmNmQ3MDZmNzU2ZTY0NDU2ZTY0NzA2ZjY5NmU3NDIwNjM2MTZlMjA2ZjZlNmM3OTIwNjI2NTIwNjM2MTZjNmM2NTY0MjA2Mjc5MjA2Zjc3NmU2NTcyMDAwMDcwNjE2ZTY5NjMyMDZmNjM2Mzc1NzI3MjY1NjQwMDQxYzg4ZDA4MGIwNDljZmZmZmZmQDA1MDBAMDEwMEAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQDU3NDU0NzRjNDQyZDYxMzIzODYzMzUzOUAwMDAwMDAwMDAwMDAwMDAwMDUwMGEzYjY2NjkwMmQ1ZjRiYmYwZmY5Mzc0OGZiOTE1YWViNDMxMjRjYmY2NTA5QDAwMDAwMDAwMDAwMDAwMDAwNTAwMzJkZTRmNDBmMTdhMmY0MWM0ZTQwYzIxZjU5NmUzNmE4NDY5OTRlMzY1MDlAMDAwMDAwMDAwMDAwMDAwMDA1MDBmODgzNjY4NmY3YzZjMGYxM2Q3Mjc1MTUxYjc4ZjU5ZjhmMmY3MjlhNjUwOUBAQEBAMDAwMDAwMDAwMDAwMDAwMDA1MDAwYjFlNWIyNDQzMjUwOTU4NDlmNGUzNzEzNDY2MWQ1YmZkY2Q5MjVlN2NlYg==", - "signature": "edf0ec99b6f60414fa5e36d40cfb1d0075d01fd7c4ad7ba59bbe62b8b48eb892beb0c18bba203ff32b83827c3953847b190cdc89a4806f4615565dc2b3b5940f", - "sourceShard": 1, - "destinationShard": 1, - "blockNonce": 2127577, - "blockHash": "e3aea17b5345b45f61b233834d3b4ba0ac6f2b7d53eb3f1b1cf2bf0534ba567f", - "notarizedAtSourceInMetaNonce": 2129029, - "NotarizedAtSourceInMetaHash": "73ee8458f55bf5c9ea4a9974c0c838ced51a236c2b13238761f444598f40575e", - "notarizedAtDestinationInMetaNonce": 2129029, - "notarizedAtDestinationInMetaHash": "73ee8458f55bf5c9ea4a9974c0c838ced51a236c2b13238761f444598f40575e", - "miniblockType": "TxBlock", - "miniblockHash": "cc7e81e68269c2c633daf997fd2d52fc82d8ba3bb699d7e75250008bd9b7aa29", - "hyperblockNonce": 2129029, - "hyperblockHash": "73ee8458f55bf5c9ea4a9974c0c838ced51a236c2b13238761f444598f40575e", - "timestamp": 1707144290, - "status": "success", - "operation": "scDeploy", - "initiallyPaidFee": "82333950000000000", - "chainID": "D", - "version": 1, - "options": 0 - } - }, - "error": "", - "code": "successful" -} - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - let opt_address = tx_response.new_deployed_address.map(|e| { - multiversx_sdk::data::address::Address::from_bytes(*e.as_array()) - .to_bech32_string() - .unwrap() - }); - - let expected = - Some("erd1qqqqqqqqqqqqqpgqwpdf84ggxzqzmr2zmw959q4nlf9nz562q33sak25ze".to_string()); - - assert_eq!(opt_address, expected) -} - -#[test] -fn test_deployed_address_should_be_none_if_not_a_sc_deployment_tx() { - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "BuiltInFunctionCall", - "processingTypeOnDestination": "SCInvoking", - "hash": "238ad6dbe75dab1d53caeb9cabd584aabc6fc113c849a983afef5a5e439ce9e5", - "nonce": 13, - "round": 2192628, - "epoch": 888, - "value": "0", - "receiver": "erd1qqqqqqqqqqqqqpgqydwpdrplefjlwp3sp9xmn3vevdxdelfkwmfsw6e5xw", - "sender": "erd179xw6t04ug48m74jzyw9zq028hv66jhqayelzpzvgds0ptnzmckq2jf07f", - "gasPrice": 1000000000, - "gasLimit": 20000000, - "data": "RVNEVFRyYW5zZmVyQDRmNTU1MjRmMmQ2NDM4MzEzNzMxNjZAMDI0NmQyZDBiNmI1ZjBANjI3NTc5QDFiYzE2ZDY3NGVjODAwMDA=", - "signature": "ce984b4d785ccc7aca4b1cdea57ddcd568a502209f81e6b5bc678e1dd52b78d764fe46ea3ff77b926eb9f70eb52ae8f3f2afa2e9d0efa82655e361641458b900", - "sourceShard": 0, - "destinationShard": 1, - "blockNonce": 2129490, - "blockHash": "0ab10909b27565c5b7b59e8e1ee4a68d7046f49225fcde4c12d4b1ea3f512b8a", - "notarizedAtSourceInMetaNonce": 2130938, - "NotarizedAtSourceInMetaHash": "0c545160fd37f09f0196505b9cd2e730596bcd99438978a5bb415b9e1be1849d", - "notarizedAtDestinationInMetaNonce": 2130942, - "notarizedAtDestinationInMetaHash": "1ddd6b7aeeff824b5d11f2936a6284e470fc5abe41e34a8df229b719dc1a537d", - "miniblockType": "TxBlock", - "miniblockHash": "dc8ae41e1ae321c0fccbeb807194d11ff6e0f4ed71163764d850f1daaa60bd22", - "hyperblockNonce": 2130942, - "hyperblockHash": "1ddd6b7aeeff824b5d11f2936a6284e470fc5abe41e34a8df229b719dc1a537d", - "timestamp": 1707155768, - "status": "success", - "tokens": [ - "OURO-d8171f" - ], - "esdtValues": [ - "640821212132848" - ], - "operation": "ESDTTransfer", - "function": "buy", - "initiallyPaidFee": "359390000000000", - "chainID": "D", - "version": 1, - "options": 0 - } - }, - "error": "", - "code": "successful" -} - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - let opt_address = tx_response.new_deployed_address; - - let expected: Option
= None; - - assert_eq!(opt_address, expected) -} - -#[test] -fn test_with_tx_that_has_sc_result() { - // transaction data from the devnet, an artificial "10" result has been appended on the original result - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "BuiltInFunctionCall", - "processingTypeOnDestination": "SCInvoking", - "hash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", - "nonce": 30, - "round": 7639115, - "epoch": 6333, - "value": "0", - "receiver": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", - "sender": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", - "gasPrice": 1000000000, - "gasLimit": 25500000, - "gasUsed": 15297149, - "data": "RVNEVFRyYW5zZmVyQDQ4NTQ0ZDJkNjY2NTMxNjYzNjM5QDBkZTBiNmIzYTc2NDAwMDBANzM3NzYxNzA1NDZmNmI2NTZlNzM0NjY5Nzg2NTY0NDk2ZTcwNzU3NEA1NzQ1NDc0YzQ0MmQ2NDM3NjMzNjYyNjJAMDM3Yzc3OGZjY2U5YzU1Yg==", - "signature": "e912fae4b7a9e51ddf316a5e82a0f457d453a62e3c17477f5d6175e1b33c5e92ddb187d65f54cf3131a0603321290279a0456c20778039f2ab09b54e33c60f0d", - "sourceShard": 2, - "destinationShard": 1, - "blockNonce": 7585351, - "blockHash": "e456f38f11fec78ed26d5fda068e912739dceedb2e5ce559bf17614b8386c039", - "notarizedAtSourceInMetaNonce": 7601495, - "NotarizedAtSourceInMetaHash": "e28c6011d4b3f73f3945cae70ff251e675dfea331a70077c5ab3310e3101af17", - "notarizedAtDestinationInMetaNonce": 7601499, - "notarizedAtDestinationInMetaHash": "333d4266614e981cc1c5654f85ef496038a8cddac46dfc0ad0b7c44c37ab489d", - "miniblockType": "TxBlock", - "miniblockHash": "13e041f32fde79ebf1abdcfe692e99516f9ec6778dcb917251b440daa7f1210a", - "hyperblockNonce": 7601499, - "hyperblockHash": "333d4266614e981cc1c5654f85ef496038a8cddac46dfc0ad0b7c44c37ab489d", - "timestamp": 1694386290, - "smartContractResults": [ - { - "hash": "a23faa3c80bae0b968f007ff0fad3afdec05b4e71d749c3d583dec10c6eb05a2", - "nonce": 0, - "value": 0, - "receiver": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", - "sender": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", - "data": "ESDTTransfer@5745474c442d643763366262@03856446ff9a304b", - "prevTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", - "originalTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "logs": { - "address": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", - "identifier": "ESDTTransfer", - "topics": [ - "V0VHTEQtZDdjNmJi", - "", - "A4VkRv+aMEs=", - "qP29NHPKNFkQzDGmOEIaNRCFYABw8ku13ZyenAuvJOY=" - ], - "data": null - }, - { - "address": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", - "identifier": "writeLog", - "topics": [ - "AAAAAAAAAAAFAKVe/p1dXpaw/INtyTPaxf3N3LaNfOs=" - ], - "data": "QDZmNmI=" - }, - { - "address": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", - "identifier": "completedTxEvent", - "topics": [ - "1AWL08E9sLFIMsfFj+Fj2y9Xn/ZUQ4BYa4on2ItKUHA=" - ], - "data": null - } - ] - }, - "tokens": [ - "WEGLD-d7c6bb" - ], - "esdtValues": [ - "253719210115084363" - ], - "operation": "ESDTTransfer" - }, - { - "hash": "b7b4d15917fd215399d8e772c3c4e732008baaedc2b8172f71c91708ba7523f0", - "nonce": 31, - "value": 102028510000000, - "receiver": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", - "sender": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", - "data": "@6f6b@0000000c5745474c442d64376336626200000000000000000000000803856446ff9a304b@10", - "prevTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", - "originalTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "logs": { - "address": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", - "events": [ - { - "address": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", - "identifier": "completedTxEvent", - "topics": [ - "1AWL08E9sLFIMsfFj+Fj2y9Xn/ZUQ4BYa4on2ItKUHA=" - ], - "data": null - } - ] - }, - "operation": "transfer", - "isRefund": true - }, - { - "hash": "05a766ca05d2053d1c0fbeb1797116474a06c86402a3bfd6c132c9a24cfa1bb0", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", - "sender": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", - "data": "swapTokensFixedInput@5745474c442d643763366262@037c778fcce9c55b", - "prevTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", - "originalTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", - "gasLimit": 25050500, - "gasPrice": 1000000000, - "callType": 0, - "operation": "transfer", - "function": "swapTokensFixedInput" - }, - { - "hash": "4e639c80822d5d7780c8326d683fa9cd6d59649d14122dfabc5a96dda36da527", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgquu5rsa4ee6l4azz6vdu4hjp8z4p6tt8m0n4suht3dy", - "sender": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", - "data": "ESDTTransfer@5745474c442d643763366262@e7730d1ef1b0@737761704e6f466565416e64466f7277617264@4d45582d646332383963@0000000000000000000000000000000000000000000000000000000000000000", - "prevTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", - "originalTxHash": "d4058bd3c13db0b14832c7c58fe163db2f579ff6544380586b8a27d88b4a5070", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "tokens": [ - "WEGLD-d7c6bb" - ], - "esdtValues": [ - "254481327387056" - ], - "operation": "ESDTTransfer", - "function": "swapNoFeeAndForward" - } - ], - "logs": { - "address": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", - "events": [ - { - "address": "erd14r7m6drneg69jyxvxxnrsss6x5gg2cqqwreyhdwanj0fcza0ynnq5jmy4g", - "identifier": "ESDTTransfer", - "topics": [ - "SFRNLWZlMWY2OQ==", - "", - "DeC2s6dkAAA=", - "AAAAAAAAAAAFAKVe/p1dXpaw/INtyTPaxf3N3LaNfOs=" - ], - "data": null - }, - { - "address": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", - "identifier": "ESDTTransfer", - "topics": [ - "V0VHTEQtZDdjNmJi", - "", - "53MNHvGw", - "AAAAAAAAAAAFAOcoOHa5zr9eiFpjeVvIJxVDpaz7fOs=" - ], - "data": null - }, - { - "address": "erd1qqqqqqqqqqqqqpgquu5rsa4ee6l4azz6vdu4hjp8z4p6tt8m0n4suht3dy", - "identifier": "ESDTLocalBurn", - "topics": [ - "TUVYLWRjMjg5Yw==", - "", - "AuMDPq1jy03x" - ], - "data": null - }, - { - "address": "erd1qqqqqqqqqqqqqpgquu5rsa4ee6l4azz6vdu4hjp8z4p6tt8m0n4suht3dy", - "identifier": "swapNoFeeAndForward", - "topics": [ - "c3dhcF9ub19mZWVfYW5kX2ZvcndhcmQ=", - "TUVYLWRjMjg5Yw==", - "AAAAAAAAAAAFAKVe/p1dXpaw/INtyTPaxf3N3LaNfOs=", - "GL0=" - ], - "data": "AAAAAAAAAAAFAKVe/p1dXpaw/INtyTPaxf3N3LaNfOsAAAAMV0VHTEQtZDdjNmJiAAAABudzDR7xsAAAAApNRVgtZGMyODljAAAACQLjAz6tY8tN8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzvkcAAAAAAAAYvQAAAABk/khy" - }, - { - "address": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", - "identifier": "ESDTTransfer", - "topics": [ - "V0VHTEQtZDdjNmJi", - "", - "A4VkRv+aMEs=", - "qP29NHPKNFkQzDGmOEIaNRCFYABw8ku13ZyenAuvJOY=" - ], - "data": null - }, - { - "address": "erd1qqqqqqqqqqqqqpgq5400a82at6ttplyrdhyn8kk9lhxaed5d0n4s9s77kz", - "identifier": "swapTokensFixedInput", - "topics": [ - "c3dhcA==", - "SFRNLWZlMWY2OQ==", - "V0VHTEQtZDdjNmJi", - "qP29NHPKNFkQzDGmOEIaNRCFYABw8ku13ZyenAuvJOY=", - "GL0=" - ], - "data": "qP29NHPKNFkQzDGmOEIaNRCFYABw8ku13ZyenAuvJOYAAAAKSFRNLWZlMWY2OQAAAAgN4Lazp2QAAAAAAAxXRUdMRC1kN2M2YmIAAAAIA4VkRv+aMEsAAAAHA41+pMaAAAAAAAoofxtJRPkr8X9kAAAACgpOPCsHUu261HUAAAAAAHO+RwAAAAAAABi9AAAAAGT+SHI=" - } - ] - }, - "status": "success", - "tokens": [ - "HTM-fe1f69" - ], - "esdtValues": [ - "1000000000000000000" - ], - "operation": "ESDTTransfer", - "function": "swapTokensFixedInput", - "initiallyPaidFee": "502005000000000", - "fee": "399976490000000", - "chainID": "D", - "version": 1, - "options": 0 - } - }, - "error": "", - "code": "successful" - } - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - - let expected: Vec> = vec![ - hex::decode("0000000c5745474c442d64376336626200000000000000000000000803856446ff9a304b") - .unwrap(), - hex::decode("10").unwrap(), - ]; - - assert_eq!(tx_response.out, expected) -} - -#[test] -fn test_with_tx_that_has_no_sc_result() { - // transaction data from the devnet - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "SCInvoking", - "processingTypeOnDestination": "SCInvoking", - "hash": "6afac3ec13c89cc56154d06efdb457a24f58361699eee00a48202a8f8adc8c8a", - "nonce": 17, - "round": 7548071, - "epoch": 6257, - "value": "0", - "receiver": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", - "sender": "erd1uh67c2lkhyj4vh73akv7jky9sfgvus8awwcj64uju69mmfne5u7q299t7g", - "gasPrice": 1000000000, - "gasLimit": 600000000, - "gasUsed": 600000000, - "data": "cmV0dXJuVHdvVTY0", - "signature": "f3a3ca96a78c90c9cf1b08541e1777010f0176a5e1e525e631155b2784932cbfd74c9168d03ba201fd5434d1a1b4789895ddade9883eca2ee9e0bce18468fb00", - "sourceShard": 0, - "destinationShard": 0, - "blockNonce": 7502091, - "blockHash": "5ec66c651cb1514cba200e7e80a4491880f0db678ce7631c397872e3842f0aa2", - "notarizedAtSourceInMetaNonce": 7510505, - "NotarizedAtSourceInMetaHash": "8410309ec5b988af79b4dcfb44fd4729d46874ebd796672c78e417e314409051", - "notarizedAtDestinationInMetaNonce": 7510505, - "notarizedAtDestinationInMetaHash": "8410309ec5b988af79b4dcfb44fd4729d46874ebd796672c78e417e314409051", - "miniblockType": "TxBlock", - "miniblockHash": "fb150e515449c9b658879ed06f256b429239cbe78ec2c2821deb4b283ff21554", - "hyperblockNonce": 7510505, - "hyperblockHash": "8410309ec5b988af79b4dcfb44fd4729d46874ebd796672c78e417e314409051", - "timestamp": 1693840026, - "logs": { - "address": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", - "identifier": "writeLog", - "topics": [ - "5fXsK/a5JVZf0e2Z6ViFglDOQP1zsS1XkuaLvaZ5pzw=", - "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gNTk5OTMyMDAwLCBnYXMgdXNlZCA9IDE4NDE2NjU=" - ], - "data": "QDZmNmJAMGFAMDIxODcxMWEwMA==" - }, - { - "address": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", - "identifier": "completedTxEvent", - "topics": [ - "avrD7BPInMVhVNBu/bRXok9YNhaZ7uAKSCAqj4rcjIo=" - ], - "data": null - } - ] - }, - "status": "success", - "operation": "transfer", - "function": "returnTwoU64", - "initiallyPaidFee": "6067320000000000", - "fee": "6067320000000000", - "chainID": "D", - "version": 1, - "options": 0 - } - }, - "error": "", - "code": "successful" - } - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - - let expected: Vec> = vec![ - hex::decode("0a").unwrap(), - hex::decode("0218711a00").unwrap(), - ]; - - assert_eq!(tx_response.out, expected) -} - -#[test] -fn test_with_multi_contract_same_shard_tx_that_has_no_sc_result() { - // transaction data from the devnet - // context : user -> A --call--> B, B returns a MultiValue2, A returns the B's returned value - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "SCInvoking", - "processingTypeOnDestination": "SCInvoking", - "hash": "e914857f1bfd003ba411bae372266703e5f706fa412c378feb37faa5e18c3d73", - "nonce": 49, - "round": 7646960, - "epoch": 6339, - "value": "0", - "receiver": "erd1qqqqqqqqqqqqqpgqshqmekudxlxwp0d9j368etjamr5dw7k45u7qx40w6h", - "sender": "erd1uh67c2lkhyj4vh73akv7jky9sfgvus8awwcj64uju69mmfne5u7q299t7g", - "gasPrice": 1000000000, - "gasLimit": 600000000, - "gasUsed": 600000000, - "data": "Y2FsbEFub3RoZXJDb250cmFjdFJldHVyblR3b1U2NEAwMDAwMDAwMDAwMDAwMDAwMDUwMEFDRkY2QjdBNEVCODEwMUE4REU3RkY3RjVEMkMwQkYzRTRENjNGNDdBNzND", - "signature": "53cc6496647287d735bd7950f4ec79d7b51f884defda1d6d840d722b7d0d869900ccecc01602da7a7c717955e8d4ed0711b92acd980d64ed6eebd6eaed0c4608", - "sourceShard": 0, - "destinationShard": 0, - "blockNonce": 7600794, - "blockHash": "77eb0904e56d6dd596c0d72821cf33b326fde383e72903ca4df5c2f200b0ea75", - "notarizedAtSourceInMetaNonce": 7609344, - "NotarizedAtSourceInMetaHash": "12df3fe65cacde2c9742b9506ac2261d34f3c72d690301192fd8016430d51913", - "notarizedAtDestinationInMetaNonce": 7609344, - "notarizedAtDestinationInMetaHash": "12df3fe65cacde2c9742b9506ac2261d34f3c72d690301192fd8016430d51913", - "miniblockType": "TxBlock", - "miniblockHash": "03219ac7427f7511687f0768c722c759c1b1428b2664b44a0cbe2072154851ee", - "hyperblockNonce": 7609344, - "hyperblockHash": "12df3fe65cacde2c9742b9506ac2261d34f3c72d690301192fd8016430d51913", - "timestamp": 1694433360, - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqshqmekudxlxwp0d9j368etjamr5dw7k45u7qx40w6h", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqshqmekudxlxwp0d9j368etjamr5dw7k45u7qx40w6h", - "identifier": "writeLog", - "topics": [ - "5fXsK/a5JVZf0e2Z6ViFglDOQP1zsS1XkuaLvaZ5pzw=", - "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gNTk5ODA2MDAwLCBnYXMgdXNlZCA9IDM4NDcyNDA=" - ], - "data": "QDZmNmJAMGFAMDIxODcxMWEwMA==" - }, - { - "address": "erd1qqqqqqqqqqqqqpgqshqmekudxlxwp0d9j368etjamr5dw7k45u7qx40w6h", - "identifier": "completedTxEvent", - "topics": [ - "6RSFfxv9ADukEbrjciZnA+X3BvpBLDeP6zf6peGMPXM=" - ], - "data": null - } - ] - }, - "status": "success", - "operation": "transfer", - "function": "callAnotherContractReturnTwoU64", - "initiallyPaidFee": "6192060000000000", - "fee": "6192060000000000", - "chainID": "D", - "version": 2, - "options": 0 - } - }, - "error": "", - "code": "successful" - } - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - - let expected: Vec> = vec![ - hex::decode("0a").unwrap(), - hex::decode("0218711a00").unwrap(), - ]; - - assert_eq!(tx_response.out, expected) -} - -#[test] -fn test_with_multi_contract_cross_shard_tx_that_has_no_callback() { - // transaction data from the devnet - // context : user -> A --async call--> B, no callback - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "SCInvoking", - "processingTypeOnDestination": "SCInvoking", - "hash": "4d50a055663dfee2479851684d7fb83cf00695b6f03f4dbbdf0f9232477cafc4", - "nonce": 51, - "round": 7647523, - "epoch": 6340, - "value": "0", - "receiver": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "sender": "erd1uh67c2lkhyj4vh73akv7jky9sfgvus8awwcj64uju69mmfne5u7q299t7g", - "gasPrice": 1000000000, - "gasLimit": 600000000, - "gasUsed": 600000000, - "data": "YXN5bmNDYWxsQW5vdGhlckNvbnRyYWN0UmV0dXJuVHdvVTY0Tm9DYWxsYmFja0AwMDAwMDAwMDAwMDAwMDAwMDUwMEFDRkY2QjdBNEVCODEwMUE4REU3RkY3RjVEMkMwQkYzRTRENjNGNDdBNzND", - "signature": "0fc30cddaa8e5365662a14344e3434cbccf287f357be99b3ed4add182f64dded774ec0d095ab1589e7c6c07e00de3b7239efc96eb2e0e97b48c1ef87084cec01", - "sourceShard": 0, - "destinationShard": 1, - "blockNonce": 7593758, - "blockHash": "a828c0ca58ef1c8aff60e512ab59f18204f1915d4a6c8285cfceb1c5725b88e8", - "notarizedAtSourceInMetaNonce": 7609903, - "NotarizedAtSourceInMetaHash": "4e90fe45c2fdccd5cf6977c1422e5f4ffa41c4e9f31fb4a50c20455f87df1e99", - "notarizedAtDestinationInMetaNonce": 7609907, - "notarizedAtDestinationInMetaHash": "10b8666a44411c3babbe20af7154fb3d47efcb1cb10d955523ec68fece26e517", - "miniblockType": "TxBlock", - "miniblockHash": "4ff4bb1ac88911d617c9b0342aeb5158db78490c2fe414cad08adcc584a77be7", - "hyperblockNonce": 7609907, - "hyperblockHash": "10b8666a44411c3babbe20af7154fb3d47efcb1cb10d955523ec68fece26e517", - "timestamp": 1694436738, - "smartContractResults": [ - { - "hash": "462b56a1530e6070dc7c15f755e51a97a6972c8cd7891f3be4635b93211890c5", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "sender": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", - "data": "@00@0a@0218711a00", - "prevTxHash": "41d56fdacf3e14de67e821427c732b62ebfa07c82d2e5db6de75fe3a1c828d9b", - "originalTxHash": "4d50a055663dfee2479851684d7fb83cf00695b6f03f4dbbdf0f9232477cafc4", - "gasLimit": 595637825, - "gasPrice": 1000000000, - "callType": 2, - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "identifier": "writeLog", - "topics": [ - "AAAAAAAAAAAFAP/Aj4ZNGKlpx2+xeJLdoJbREzb20P0=", - "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gNTk1NjM3ODI1LCBnYXMgdXNlZCA9IDIxNjE3NzA=" - ], - "data": "QDZmNmI=" - }, - { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "identifier": "completedTxEvent", - "topics": [ - "QdVv2s8+FN5n6CFCfHMrYuv6B8gtLl223nX+OhyCjZs=" - ], - "data": null - } - ] - }, - "operation": "transfer" - }, - { - "hash": "41d56fdacf3e14de67e821427c732b62ebfa07c82d2e5db6de75fe3a1c828d9b", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", - "sender": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "data": "returnTwoU64@4f3c60", - "prevTxHash": "4d50a055663dfee2479851684d7fb83cf00695b6f03f4dbbdf0f9232477cafc4", - "originalTxHash": "4d50a055663dfee2479851684d7fb83cf00695b6f03f4dbbdf0f9232477cafc4", - "gasLimit": 597479490, - "gasPrice": 1000000000, - "callType": 1, - "operation": "transfer", - "function": "returnTwoU64" - } - ], - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "identifier": "writeLog", - "topics": [ - "5fXsK/a5JVZf0e2Z6ViFglDOQP1zsS1XkuaLvaZ5pzw=" - ], - "data": "QDZmNmI=" - } - ] - }, - "status": "success", - "operation": "transfer", - "function": "asyncCallAnotherContractReturnTwoU64NoCallback", - "initiallyPaidFee": "6214335000000000", - "fee": "6214335000000000", - "chainID": "D", - "version": 2, - "options": 0 - } - }, - "error": "", - "code": "successful" - } - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - - let expected: Vec> = vec![]; - - assert_eq!(tx_response.out, expected) -} - -#[test] -fn test_with_multi_contract_cross_shard_tx_that_has_non_returning_callback() { - // transaction data from the devnet - // context : user -> A --async call--> B --callback--> A, the callback returns () - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "SCInvoking", - "processingTypeOnDestination": "SCInvoking", - "hash": "4f7f19e448176e4d47a0f844cbd6bdb1b6c68035dafe927e8249ed60af1c3b17", - "nonce": 52, - "round": 7647560, - "epoch": 6340, - "value": "0", - "receiver": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "sender": "erd1uh67c2lkhyj4vh73akv7jky9sfgvus8awwcj64uju69mmfne5u7q299t7g", - "gasPrice": 1000000000, - "gasLimit": 600000000, - "gasUsed": 600000000, - "data": "YXN5bmNDYWxsQW5vdGhlckNvbnRyYWN0UmV0dXJuVHdvVTY0V2l0aE5vblJldHVybmluZ0NhbGxiYWNrQDAwMDAwMDAwMDAwMDAwMDAwNTAwQUNGRjZCN0E0RUI4MTAxQThERTdGRjdGNUQyQzBCRjNFNEQ2M0Y0N0E3M0M=", - "signature": "3918fce429b2059b2321b709011079755dbb835e12839278ee510e4741180540e80c6111eea1d3312b2c63446de08b20e01f6040358fa94d1633c355bb65bc0f", - "sourceShard": 0, - "destinationShard": 1, - "blockNonce": 7593795, - "blockHash": "c17e727f90025225670b7852ea9807c67753c9b3f21b6ec7cc40077e3849a8b7", - "notarizedAtSourceInMetaNonce": 7609940, - "NotarizedAtSourceInMetaHash": "c67b5c550986cfd6c94d00f4b90234eb38ee196ff0d79a00d916f3bd24be272c", - "notarizedAtDestinationInMetaNonce": 7609944, - "notarizedAtDestinationInMetaHash": "d59b7398d962ce3119679af59d5d74e10083e62c3ee2b15421cc0d607979ca18", - "miniblockType": "TxBlock", - "miniblockHash": "2977affeffeb6cf41117bed442662021cb713528cdb1d0dce4537b01caeb8e0b", - "hyperblockNonce": 7609944, - "hyperblockHash": "d59b7398d962ce3119679af59d5d74e10083e62c3ee2b15421cc0d607979ca18", - "timestamp": 1694436960, - "smartContractResults": [ - { - "hash": "fe7474188d5ca4b84c7577f03fc778d22d53c070dfcb05a9cda840229d30e4d3", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", - "sender": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "data": "returnTwoU64@4f3c60", - "prevTxHash": "4f7f19e448176e4d47a0f844cbd6bdb1b6c68035dafe927e8249ed60af1c3b17", - "originalTxHash": "4f7f19e448176e4d47a0f844cbd6bdb1b6c68035dafe927e8249ed60af1c3b17", - "gasLimit": 596979545, - "gasPrice": 1000000000, - "callType": 1, - "operation": "transfer", - "function": "returnTwoU64" - }, - { - "hash": "948dc6702b376d1e043db8de2f87ca12907c342f54cfad7dfebadf59145ca3ac", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "sender": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", - "data": "@00@0a@0218711a00", - "prevTxHash": "fe7474188d5ca4b84c7577f03fc778d22d53c070dfcb05a9cda840229d30e4d3", - "originalTxHash": "4f7f19e448176e4d47a0f844cbd6bdb1b6c68035dafe927e8249ed60af1c3b17", - "gasLimit": 595137880, - "gasPrice": 1000000000, - "callType": 2, - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "identifier": "writeLog", - "topics": [ - "AAAAAAAAAAAFAP/Aj4ZNGKlpx2+xeJLdoJbREzb20P0=", - "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gNTk1MTM3ODgwLCBnYXMgdXNlZCA9IDIyODg1NTA=" - ], - "data": "QDZmNmJAMGFAMDIxODcxMWEwMA==" - }, - { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "identifier": "completedTxEvent", - "topics": [ - "/nR0GI1cpLhMdXfwP8d40i1TwHDfywWpzahAIp0w5NM=" - ], - "data": null - } - ] - }, - "operation": "transfer" - } - ], - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "identifier": "writeLog", - "topics": [ - "5fXsK/a5JVZf0e2Z6ViFglDOQP1zsS1XkuaLvaZ5pzw=" - ], - "data": "QDZmNmI=" - } - ] - }, - "status": "success", - "operation": "transfer", - "function": "asyncCallAnotherContractReturnTwoU64WithNonReturningCallback", - "initiallyPaidFee": "6235125000000000", - "fee": "6235125000000000", - "chainID": "D", - "version": 2, - "options": 0 - } - }, - "error": "", - "code": "successful" - } - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - - let expected: Vec> = vec![]; - - assert_eq!(tx_response.out, expected) -} - -#[test] -fn test_with_multi_contract_cross_shard_tx_that_has_returning_callback() { - // transaction data from the devnet - // context : user -> A --async call--> B --callback--> A, the callback returns a MultiValue2 - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "SCInvoking", - "processingTypeOnDestination": "SCInvoking", - "hash": "f34e136ca81c0e32f6fb532b753612715675073f3718b5db009bb275d246fd7a", - "nonce": 53, - "round": 7647583, - "epoch": 6340, - "value": "0", - "receiver": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "sender": "erd1uh67c2lkhyj4vh73akv7jky9sfgvus8awwcj64uju69mmfne5u7q299t7g", - "gasPrice": 1000000000, - "gasLimit": 600000000, - "gasUsed": 600000000, - "data": "YXN5bmNDYWxsQW5vdGhlckNvbnRyYWN0UmV0dXJuVHdvVTY0V2l0aFJldHVybmluZ0NhbGxiYWNrQDAwMDAwMDAwMDAwMDAwMDAwNTAwQUNGRjZCN0E0RUI4MTAxQThERTdGRjdGNUQyQzBCRjNFNEQ2M0Y0N0E3M0M=", - "signature": "858958d4aaf9cb0220ab2933edad3f65e1cb4c58aa7940cb0f40b489d0bd9fdf5c4736a40d6e813743ee622bb91e9f86eacf01b9a31e0ff53f9c84f13c500304", - "sourceShard": 0, - "destinationShard": 1, - "blockNonce": 7593818, - "blockHash": "b19f97110ca38d3cb15f802a00ab403491b0e5804ebc701527ab50064dc06825", - "notarizedAtSourceInMetaNonce": 7609963, - "NotarizedAtSourceInMetaHash": "4d9db6de610ca778114d44fe91dd036fac7c375c373ae9e77130d3fb9efc8391", - "notarizedAtDestinationInMetaNonce": 7609967, - "notarizedAtDestinationInMetaHash": "a4573d388c31860f9bd6f9507b65d1b3130e445abcada538f10704feba4614e7", - "miniblockType": "TxBlock", - "miniblockHash": "530f5fa3c7af474a187caca8dcea02a7a155017414147871d083bed5c49ec8f5", - "hyperblockNonce": 7609967, - "hyperblockHash": "a4573d388c31860f9bd6f9507b65d1b3130e445abcada538f10704feba4614e7", - "timestamp": 1694437098, - "smartContractResults": [ - { - "hash": "065291164a8acd27c26b5a8f09664810081fda18cd54fca635196cf9b200297a", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", - "sender": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "data": "returnTwoU64@4f3c60", - "prevTxHash": "f34e136ca81c0e32f6fb532b753612715675073f3718b5db009bb275d246fd7a", - "originalTxHash": "f34e136ca81c0e32f6fb532b753612715675073f3718b5db009bb275d246fd7a", - "gasLimit": 596994205, - "gasPrice": 1000000000, - "callType": 1, - "operation": "transfer", - "function": "returnTwoU64" - }, - { - "hash": "bc31cb153ae615204625df84fe9ae3a159aa412b7342f3dca958dd5517a08197", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "sender": "erd1qqqqqqqqqqqqqpgq4nlkk7jwhqgp4r08lal46tqt70jdv0685u7qrr3l2d", - "data": "@00@0a@0218711a00", - "prevTxHash": "065291164a8acd27c26b5a8f09664810081fda18cd54fca635196cf9b200297a", - "originalTxHash": "f34e136ca81c0e32f6fb532b753612715675073f3718b5db009bb275d246fd7a", - "gasLimit": 595152540, - "gasPrice": 1000000000, - "callType": 2, - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "identifier": "writeLog", - "topics": [ - "AAAAAAAAAAAFAP/Aj4ZNGKlpx2+xeJLdoJbREzb20P0=", - "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gNTk1MTUyNTQwLCBnYXMgdXNlZCA9IDIyODgwMTU=" - ], - "data": "QDZmNmJAMGFAMDIxODcxMWEwMA==" - }, - { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "identifier": "completedTxEvent", - "topics": [ - "BlKRFkqKzSfCa1qPCWZIEAgf2hjNVPymNRls+bIAKXo=" - ], - "data": null - } - ] - }, - "operation": "transfer" - } - ], - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqllqglpjdrz5kn3m0k9uf9hdqjmg3xdhk6r7se3wvlk", - "identifier": "writeLog", - "topics": [ - "5fXsK/a5JVZf0e2Z6ViFglDOQP1zsS1XkuaLvaZ5pzw=" - ], - "data": "QDZmNmI=" - } - ] - }, - "status": "success", - "operation": "transfer", - "function": "asyncCallAnotherContractReturnTwoU64WithReturningCallback", - "initiallyPaidFee": "6230670000000000", - "fee": "6230670000000000", - "chainID": "D", - "version": 2, - "options": 0 - } - }, - "error": "", - "code": "successful" - } - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - - let expected: Vec> = vec![]; - - assert_eq!(tx_response.out, expected) -} - -#[test] -fn test_process_issued_token_identifier_fungible() { - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "SCInvoking", - "processingTypeOnDestination": "SCInvoking", - "hash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", - "nonce": 61, - "round": 173598, - "epoch": 72, - "value": "50000000000000000", - "receiver": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", - "sender": "erd1x39tc3q3nn72ecjnmcz7x0qp09kp97t080x99dgyhx7zh95j0n4szskhlv", - "gasPrice": 1000000000, - "gasLimit": 100000000, - "gasUsed": 100000000, - "data": "aXNzdWVMcFRva2VuQDAwMDAwMDAwMDAwMDAwMDAwNTAwMTM5ZWQ3YWU0YWEwMzc5MmU2YmNiMzMyMzk0YTQwZmU3NDZlZWZhNDdjZWJANDU0NzRjNDQ0ZDQ1NTg0YzUwQDQ1NDc0YzQ0NGQ0NTU4", - "signature": "b5049d2906adc1305a6a8d0f42749254ca6259c6996d9a35e7dc7528b3c87b48a421879aff70bc6d81483a7559b75e5dcf9be499dcb7d57aa9f25c79ac2ad40d", - "sourceShard": 1, - "destinationShard": 1, - "blockNonce": 173354, - "blockHash": "09d85ac264a54e12e7613395211c53fe0ee5a7d3b7111bf5fec1d02794caaacd", - "notarizedAtSourceInMetaNonce": 173321, - "NotarizedAtSourceInMetaHash": "64a83759da97fe8305cd4cda4b518f2d41ef0a8f3995d264460821edad45e09e", - "notarizedAtDestinationInMetaNonce": 173321, - "notarizedAtDestinationInMetaHash": "64a83759da97fe8305cd4cda4b518f2d41ef0a8f3995d264460821edad45e09e", - "miniblockType": "TxBlock", - "miniblockHash": "7f45eee4e35ffc1fbce66b92e4dd2aeae2acb092416aa5aa775b96493256b81d", - "hyperblockNonce": 173321, - "hyperblockHash": "64a83759da97fe8305cd4cda4b518f2d41ef0a8f3995d264460821edad45e09e", - "timestamp": 1695041588, - "smartContractResults": [ - { - "hash": "bce3d0dceb0b3e5c8c5780d7da3755c3f7492d551685d493a73bf66ebd36754b", - "nonce": 0, - "value": 50000000000000000, - "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "sender": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", - "data": "issue@45474c444d45584c50@45474c444d4558@03e8@12@63616e467265657a65@74727565@63616e57697065@74727565@63616e5061757365@74727565@63616e4d696e74@74727565@63616e4275726e@74727565@63616e4368616e67654f776e6572@74727565@63616e55706772616465@74727565@63616e4164645370656369616c526f6c6573@74727565@65ba30", - "prevTxHash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", - "originalTxHash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", - "gasLimit": 89624222, - "gasPrice": 1000000000, - "callType": 1, - "originalSender": "erd1x39tc3q3nn72ecjnmcz7x0qp09kp97t080x99dgyhx7zh95j0n4szskhlv", - "operation": "transfer", - "function": "issue" - }, - { - "hash": "2a452ff652791d79be5f6933fb583cc5503e876893e54b3b51381a92aa2e904d", - "nonce": 0, - "value": 0, - "receiver": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqsl6e366", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "ESDTSetBurnRoleForAll@45474c444d45582d393563366435", - "prevTxHash": "bce3d0dceb0b3e5c8c5780d7da3755c3f7492d551685d493a73bf66ebd36754b", - "originalTxHash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "logs": { - "address": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqsl6e366", - "events": [ - { - "address": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqsl6e366", - "identifier": "completedTxEvent", - "topics": [ - "vOPQ3OsLPlyMV4DX2jdVw/dJLVUWhdSTpzv2br02dUs=" - ], - "data": null, - "additionalData": null - } - ] - }, - "operation": "transfer" - }, - { - "hash": "2c84740ccb3376ea9fa00dab6c6c93fe7a35ee0a1d6dbfa0a1e61064853b0874", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "ESDTTransfer@45474c444d45582d393563366435@03e8@00", - "prevTxHash": "bce3d0dceb0b3e5c8c5780d7da3755c3f7492d551685d493a73bf66ebd36754b", - "originalTxHash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", - "gasLimit": 39624222, - "gasPrice": 1000000000, - "callType": 2, - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "identifier": "ESDTTransfer", - "topics": [ - "RUdMRE1FWC05NWM2ZDU=", - "", - "A+g=", - "AAAAAAAAAAAFAO+ux8+3RD51ieGHV10Z68X293CYfOs=" - ], - "data": null, - "additionalData": null - }, - { - "address": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", - "identifier": "completedTxEvent", - "topics": [ - "vOPQ3OsLPlyMV4DX2jdVw/dJLVUWhdSTpzv2br02dUs=" - ], - "data": null, - "additionalData": null - } - ] - }, - "tokens": [ - "EGLDMEX-95c6d5" - ], - "esdtValues": [ - "1000" - ], - "operation": "ESDTTransfer", - "function": "\u0000" - }, - { - "hash": "c9dfc4de3c3cee319123087a4f5dd03cc051e728ec6070707a63ea977b535227", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", - "sender": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", - "data": "\u0000", - "prevTxHash": "2c84740ccb3376ea9fa00dab6c6c93fe7a35ee0a1d6dbfa0a1e61064853b0874", - "originalTxHash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", - "gasLimit": 39424222, - "gasPrice": 1000000000, - "callType": 2, - "operation": "transfer", - "function": "\u0000" - }, - { - "hash": "609c3a8e1903680fef1f6d9e47527b1b5c1259664b868af600162120ce0b8192", - "nonce": 1, - "value": 300925400000000, - "receiver": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", - "sender": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", - "data": "@6f6b", - "prevTxHash": "2c84740ccb3376ea9fa00dab6c6c93fe7a35ee0a1d6dbfa0a1e61064853b0874", - "originalTxHash": "b78170cc5ca5ba441ea46fe84540db9610ccab243ccd4cd3cd976e170c4864c8", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "operation": "transfer", - "isRefund": true - } - ], - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", - "identifier": "transferValueOnly", - "topics": [ - "AAAAAAAAAAAFAO+ux8+3RD51ieGHV10Z68X293CYfOs=", - "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=", - "saK8LsUAAA==" - ], - "data": null, - "additionalData": null - }, - { - "address": "erd1qqqqqqqqqqqqqpgqa7hv0nahgsl8tz0psat46x0tchm0wuyc0n4s6q28ad", - "identifier": "writeLog", - "topics": [ - "NEq8RBGc/KziU94F4zwBeWwS+W87zFK1BLm8K5aSfOs=" - ], - "data": "QDZmNmI=", - "additionalData": null - } - ] - }, - "status": "success", - "operation": "transfer", - "function": "issueLpToken", - "initiallyPaidFee": "1214335000000000", - "fee": "1214335000000000", - "chainID": "D", - "version": 2, - "options": 0 - } - }, - "error": "", - "code": "successful" -} - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - - let expected: Option = Some("EGLDMEX-95c6d5".to_string()); - - assert_eq!(tx_response.new_issued_token_identifier, expected) -} - -#[test] -fn test_process_issued_token_identifier_semi_fungible() { - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "SCInvoking", - "processingTypeOnDestination": "SCInvoking", - "hash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", - "nonce": 65, - "round": 8422527, - "epoch": 584, - "value": "50000000000000000", - "receiver": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", - "sender": "erd1x3g000ew7zzv6kyqhj9jl2wy5g6cc72qahvvxz29zv76jwq6ssvqt0d998", - "gasPrice": 1000000000, - "gasLimit": 80000000, - "gasUsed": 80000000, - "data": "aXNzdWVUb2tlbkA0NDZmNzA2NTU0NjU3Mzc0QDQ0NGY1MDQ1NTQ0NTUzNTQ=", - "signature": "0191848976e930996f6c62d4921e732f9b0ada8b41ca3b5b63d6bfd304fd44c2a1e8e6643479618ba4a764a36e87f53882b4f707600d5b7d476f2fdd2bac040e", - "sourceShard": 0, - "destinationShard": 0, - "blockNonce": 8420241, - "blockHash": "4d302220f6015876c95e7961b770cc67f8ab63c5f0ab69b4d6c2fb15c8bc23bd", - "notarizedAtSourceInMetaNonce": 8403647, - "NotarizedAtSourceInMetaHash": "f8b83b6d38fa45dacc167b15c93dd07ee5c40db906de34f26e11e7a24f539e30", - "notarizedAtDestinationInMetaNonce": 8403647, - "notarizedAtDestinationInMetaHash": "f8b83b6d38fa45dacc167b15c93dd07ee5c40db906de34f26e11e7a24f539e30", - "miniblockType": "TxBlock", - "miniblockHash": "b7b8fc9f3b81d7daae1113cbf73457e16ee31f3a864ef3729a1a21f3a929e112", - "hyperblockNonce": 8403647, - "hyperblockHash": "f8b83b6d38fa45dacc167b15c93dd07ee5c40db906de34f26e11e7a24f539e30", - "timestamp": 1646652762, - "smartContractResults": [ - { - "hash": "9aecf3bd5dd5c706a28d1cc7059ac20db74340f136816f667dbefcc58daa3aba", - "nonce": 0, - "value": 50000000000000000, - "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "sender": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", - "data": "issueSemiFungible@446f706554657374@444f504554455354@63616e467265657a65@74727565@63616e57697065@74727565@63616e5061757365@74727565@63616e4368616e67654f776e6572@74727565@63616e55706772616465@74727565@63616e4164645370656369616c526f6c6573@74727565@5ca148", - "prevTxHash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", - "originalTxHash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", - "gasLimit": 75958360, - "gasPrice": 1000000000, - "callType": 1, - "originalSender": "erd1x3g000ew7zzv6kyqhj9jl2wy5g6cc72qahvvxz29zv76jwq6ssvqt0d998", - "operation": "transfer", - "function": "issueSemiFungible" - }, - { - "hash": "aacfe9088bb9d2d5b3fbe9cab2b2f1c6a7e9cbab2f1a41020e2c819fc9b43570", - "nonce": 66, - "value": 0, - "receiver": "erd1x3g000ew7zzv6kyqhj9jl2wy5g6cc72qahvvxz29zv76jwq6ssvqt0d998", - "sender": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", - "data": "@6f6b", - "prevTxHash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", - "originalTxHash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "operation": "transfer" - }, - { - "hash": "3f6f0f3de9e942884e7e1592823a7db7ce935a3f9d3359d8c1ee98a5645332d8", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "@00@444f5045544553542d373732303063", - "prevTxHash": "9aecf3bd5dd5c706a28d1cc7059ac20db74340f136816f667dbefcc58daa3aba", - "originalTxHash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", - "gasLimit": 25958360, - "gasPrice": 1000000000, - "callType": 2, - "originalSender": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", - "logs": { - "address": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", - "identifier": "completedTxEvent", - "topics": [ - "muzzvV3VxwaijRzHBZrCDbdDQPE2gW9mfb78xY2qOro=" - ], - "data": null - } - ] - }, - "operation": "transfer" - }, - { - "hash": "c6e4f7c5da455009fb4f6967ce8a273a97b826aa617fa798ffd0cf17bde6b97a", - "nonce": 1, - "value": 225516180000000, - "receiver": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", - "sender": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", - "data": "@6f6b", - "prevTxHash": "3f6f0f3de9e942884e7e1592823a7db7ce935a3f9d3359d8c1ee98a5645332d8", - "originalTxHash": "0634b9c1db9fd6bfa065fc937d51cec37958fd5d33d0c934a0da3d27776a33ae", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "operation": "transfer", - "isRefund": true - } - ], - "logs": { - "address": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", - "identifier": "transferValueOnly", - "topics": [ - "AAAAAAAAAAAFAH6d74PDz8xLqvowrlOA5lVDBMUghBg=", - "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=", - "saK8LsUAAA==" - ], - "data": null - }, - { - "address": "erd1qqqqqqqqqqqqqpgq06w7lq7relxyh2h6xzh98q8x24psf3fqssvqn4ptek", - "identifier": "writeLog", - "topics": [ - "NFD3vy7whM1YgLyLL6nEojWMeUDt2MMJRRM9qTgahBg=" - ], - "data": "QDZmNmI=" - } - ] - }, - "status": "success", - "operation": "transfer", - "function": "issueToken", - "initiallyPaidFee": "914840000000000", - "fee": "914840000000000", - "chainID": "1", - "version": 1, - "options": 0 - } - }, - "error": "", - "code": "successful" -} - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - - let expected: Option = Some("DOPETEST-77200c".to_string()); - - assert_eq!(tx_response.new_issued_token_identifier, expected) -} - -#[test] -fn test_process_issued_token_identifier_non_fungible() { - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "SCInvoking", - "processingTypeOnDestination": "SCInvoking", - "hash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", - "nonce": 16, - "round": 820170, - "epoch": 341, - "value": "50000000000000000", - "receiver": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "sender": "erd162knt53z7m0f9jjms9wxphr3q9d7zu4ky85xs2cc0ekrqz7k4fdq85lkuc", - "gasPrice": 1000000000, - "gasLimit": 200000000, - "gasUsed": 200000000, - "data": "aXNzdWVUb2tlbkA2NzY1NmU2NTdhNzk3M0A0NzQ1NGU=", - "signature": "e80d45f4de419799a2bbff1cae1235521c8eef1853ee45b02f95c2da74ce50d241bf75b6ab0c650245562700862ea9759caad40f3e381ac0c4d82cfe56e67c09", - "sourceShard": 2, - "destinationShard": 2, - "blockNonce": 819313, - "blockHash": "a1db4ef13f07b86678000df9cc78f244d83dcc35ae51de545f333bf616930d39", - "notarizedAtSourceInMetaNonce": 819396, - "NotarizedAtSourceInMetaHash": "6d9e511e46d318aa5b77cbfdfde14d2ce8515ce4e954b286f130a6b518ddf26a", - "notarizedAtDestinationInMetaNonce": 819396, - "notarizedAtDestinationInMetaHash": "6d9e511e46d318aa5b77cbfdfde14d2ce8515ce4e954b286f130a6b518ddf26a", - "miniblockType": "TxBlock", - "miniblockHash": "afdb278522181aeb9b12f08840e6c534e398e6af9c7f757548308e300e7ec4e9", - "hyperblockNonce": 819396, - "hyperblockHash": "6d9e511e46d318aa5b77cbfdfde14d2ce8515ce4e954b286f130a6b518ddf26a", - "timestamp": 1698921020, - "smartContractResults": [ - { - "hash": "6fe0cc002802af1744f394eee4a69224b5e775961d8386e04e7a5b9242f7ff65", - "nonce": 0, - "value": 50000000000000000, - "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "sender": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "data": "issueNonFungible@67656e657a7973@47454e@63616e467265657a65@74727565@63616e57697065@74727565@63616e5061757365@74727565@63616e5472616e736665724e4654437265617465526f6c65@74727565@63616e4368616e67654f776e6572@66616c7365@63616e55706772616465@66616c7365@63616e4164645370656369616c526f6c6573@74727565@5e30e4", - "prevTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", - "originalTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", - "gasLimit": 196098365, - "gasPrice": 1000000000, - "callType": 1, - "originalSender": "erd162knt53z7m0f9jjms9wxphr3q9d7zu4ky85xs2cc0ekrqz7k4fdq85lkuc", - "operation": "transfer", - "function": "issueNonFungible" - }, - { - "hash": "98afe82512c79f1caaf171bd5919ee469d11ba0c4f725aefcab834278c0f1e58", - "nonce": 0, - "value": 0, - "receiver": "erd1lllllllllllllllllllllllllllllllllllllllllllllllllupq9x7ny0", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "ESDTSetBurnRoleForAll@47454e2d383638353933", - "prevTxHash": "6fe0cc002802af1744f394eee4a69224b5e775961d8386e04e7a5b9242f7ff65", - "originalTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "logs": { - "address": "erd1lllllllllllllllllllllllllllllllllllllllllllllllllupq9x7ny0", - "events": [ - { - "address": "erd1lllllllllllllllllllllllllllllllllllllllllllllllllupq9x7ny0", - "identifier": "completedTxEvent", - "topics": [ - "b+DMACgCrxdE85Tu5KaSJLXndZYdg4bgTnpbkkL3/2U=" - ], - "data": null, - "additionalData": null - } - ] - }, - "operation": "transfer" - }, - { - "hash": "83494ad9369738b574a7266cbfb12ce63ccf634950cd6b0ec16107b8fb42f8f6", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "sender": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "data": "setSpecialRole@47454e2d383638353933@00000000000000000500de51fa8943c26e6933419f9bb7ceb79b7ff4f7bbaa5a@45534454526f6c654e4654437265617465@5e30e4", - "prevTxHash": "112d18ec0364b4700b1bfb3df517c80dba547a53373ece2a9e71acd5266e7b64", - "originalTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", - "gasLimit": 142399698, - "gasPrice": 1000000000, - "callType": 1, - "operation": "transfer", - "function": "setSpecialRole" - }, - { - "hash": "112d18ec0364b4700b1bfb3df517c80dba547a53373ece2a9e71acd5266e7b64", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "@00@47454e2d383638353933", - "prevTxHash": "6fe0cc002802af1744f394eee4a69224b5e775961d8386e04e7a5b9242f7ff65", - "originalTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", - "gasLimit": 146098365, - "gasPrice": 1000000000, - "callType": 2, - "originalSender": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "identifier": "writeLog", - "topics": [ - "AAAAAAAAAAAFAN5R+olDwm5pM0Gfm7fOt5t/9Pe7qlo=" - ], - "data": "QDZmNmI=", - "additionalData": null - } - ] - }, - "operation": "transfer" - }, - { - "hash": "db5d74970374337956fa61fb4fd90057b3f6a82ea3e259b389934b71a1652e5f", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "ESDTSetRole@47454e2d383638353933@45534454526f6c654e4654437265617465", - "prevTxHash": "83494ad9369738b574a7266cbfb12ce63ccf634950cd6b0ec16107b8fb42f8f6", - "originalTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "identifier": "ESDTSetRole", - "topics": [ - "R0VOLTg2ODU5Mw==", - "", - "", - "RVNEVFJvbGVORlRDcmVhdGU=" - ], - "data": null, - "additionalData": null - }, - { - "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "identifier": "completedTxEvent", - "topics": [ - "g0lK2TaXOLV0pyZsv7Es5jzPY0lQzWsOwWEHuPtC+PY=" - ], - "data": null, - "additionalData": null - } - ] - }, - "operation": "ESDTSetRole", - "function": "ESDTSetRole" - }, - { - "hash": "a6a665f47977a59c4c2baf460281fc938e04ae0f87ac2e78040a14ae27822701", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "@00", - "prevTxHash": "83494ad9369738b574a7266cbfb12ce63ccf634950cd6b0ec16107b8fb42f8f6", - "originalTxHash": "d296186b432d7e7937bde37d725cd52b765ef334c00b95adcb079933bc2277bb", - "gasLimit": 92399698, - "gasPrice": 1000000000, - "callType": 2, - "originalSender": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "identifier": "writeLog", - "topics": [ - "AAAAAAAAAAAFAN5R+olDwm5pM0Gfm7fOt5t/9Pe7qlo=", - "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gOTIzOTk2OTgsIGdhcyB1c2VkID0gMzE0MTg4MA==" - ], - "data": "QDZmNmI=", - "additionalData": null - }, - { - "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "identifier": "completedTxEvent", - "topics": [ - "g0lK2TaXOLV0pyZsv7Es5jzPY0lQzWsOwWEHuPtC+PY=" - ], - "data": null, - "additionalData": null - } - ] - }, - "operation": "transfer" - } - ], - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "identifier": "transferValueOnly", - "topics": [ - "AAAAAAAAAAAFAN5R+olDwm5pM0Gfm7fOt5t/9Pe7qlo=", - "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=", - "saK8LsUAAA==" - ], - "data": null, - "additionalData": null - }, - { - "address": "erd1qqqqqqqqqqqqqpgqmegl4z2rcfhxjv6pn7dm0n4hndllfaam4fdqwqxld8", - "identifier": "writeLog", - "topics": [ - "0q010iL23pLKW4FcYNxxAVvhcrYh6GgrGH5sMAvWqlo=" - ], - "data": "QDZmNmI=", - "additionalData": null - } - ] - }, - "status": "success", - "operation": "transfer", - "function": "issueToken", - "initiallyPaidFee": "2097020000000000", - "fee": "2097020000000000", - "chainID": "D", - "version": 1, - "options": 0 - } - }, - "error": "", - "code": "successful" -} - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - - let expected: Option = Some("GEN-868593".to_string()); - - assert_eq!(tx_response.new_issued_token_identifier, expected) -} - -#[test] -fn test_process_issued_token_identifier_meta_esdt() { - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "SCInvoking", - "processingTypeOnDestination": "SCInvoking", - "hash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", - "nonce": 419, - "round": 1787093, - "epoch": 744, - "value": "50000000000000000", - "receiver": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "sender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", - "gasPrice": 1000000000, - "gasLimit": 600000000, - "gasUsed": 157220928, - "data": "ZGVwbG95QXNoc3dhcExQQUNTdHJhdGVneUA0MTRjNTAyZDYzNjE2NTYxNjMzNUA0MTU0NTMyZDM0NjMzMDM5MzIzMEAwM2U4QDAzZThAQDNiOWFjYTAwQDAwMDAwMDAwMDAwMDAwMDAwNTAwOTU3MzkwYWVkYTQzMmY1MmE0MTFkNTE5NzRmZTkzZDQwZDI3NzMzZTA0NjNAMDAwMDAwMDAwMDAwMDAwMDA1MDBkMTJjYzczY2JkYTZmMjY1OWM5NTllNWQ1NzU4YWY5MmNhMTM4NDg2NTIzM0AwMDAwMDAwMDAwMDAwMDAwMDUwMDUxZGY3MTc1OGNmMmFjYTViNDZkZWQ4MTU1OGI1NTE1ZGMyOWYzZjM1MjMzQEAwMDAwMDAwMDAwMDAwMDAwMDUwMDdlNGExZGZjNDM3Y2VkNDlkYjlmMTYzNzk4NDE2Yjg0YWMyMWQ0Yzk3Y2ViMDAwMDAwMGM1NzQ1NDc0YzQ0MmQ2MTMyMzg2MzM1MzkwMDAwMDAwMDAwMDAwMDAwMDUwMGE4YmE5ZTY4NjI2YmJjOTkzZmQ3OTVlOGJiNmY0Nzk0M2IyZjVmZmE3Y2ViMDAwMDAwMGE1NTU0NGIyZDMxMzQ2NDM1Mzc2NEAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwNTAwNTFkZjcxNzU4Y2YyYWNhNWI0NmRlZDgxNTU4YjU1MTVkYzI5ZjNmMzUyMzMwMDAwMDAwYjQyNTU1MzQ0MmQ2NDM0NjMzMDMxMzQwMDAwMDAwMDAwQDAxODZhMEAyNzEw", - "signature": "4648af0b96eb430e4986b9fb760549742de09c809b46b984e5d995c898d80c25bfc0717c30da34bd89cd3005d98ee895afa39ee588b7b74b4807c63cbeade807", - "sourceShard": 1, - "destinationShard": 1, - "blockNonce": 1785520, - "blockHash": "8f926a5d79fa84bc69949a21bfbba17447091a8a074ac172fa0b88e4475a1214", - "notarizedAtSourceInMetaNonce": 1785568, - "NotarizedAtSourceInMetaHash": "eebd1aa5c3dde083f9c367242c054affedd36bfc95f7bcc1d4e2d90beb5754e9", - "notarizedAtDestinationInMetaNonce": 1785568, - "notarizedAtDestinationInMetaHash": "eebd1aa5c3dde083f9c367242c054affedd36bfc95f7bcc1d4e2d90beb5754e9", - "miniblockType": "TxBlock", - "miniblockHash": "b85d82db6d69cbc1911b3455d2837eeb3170b391926efa2eacb4d9c8e3c96ee4", - "hyperblockNonce": 1785568, - "hyperblockHash": "eebd1aa5c3dde083f9c367242c054affedd36bfc95f7bcc1d4e2d90beb5754e9", - "timestamp": 1704722558, - "smartContractResults": [ - { - "hash": "ea9a96c079e66249e6b73c0341991dad96ca81f855f2fc4abe0d432be117a882", - "nonce": 420, - "value": 4427790720000000, - "receiver": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", - "sender": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "data": "@6f6b", - "prevTxHash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", - "originalTxHash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "operation": "transfer", - "isRefund": true - }, - { - "hash": "6082975132a2c9d8197dfd0f9852b454ad344740eebdbdf93f620b2796ab723b", - "nonce": 0, - "value": 50000000000000000, - "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "sender": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "data": "registerMetaESDT@415453417368537761704c5041435661756c74@4156415348@12@63616e467265657a65@66616c7365@63616e57697065@66616c7365@63616e5061757365@66616c7365@63616e5472616e736665724e4654437265617465526f6c65@66616c7365@63616e4368616e67654f776e6572@66616c7365@63616e55706772616465@66616c7365@63616e4164645370656369616c526f6c6573@74727565@9eb30a87c92674ab1469700c0b385b3850e86de80f87dec6cf3213c7e379a646@408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43@03eb4a30", - "prevTxHash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", - "originalTxHash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", - "gasLimit": 125751600, - "gasPrice": 1000000000, - "callType": 1, - "originalSender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", - "operation": "transfer", - "function": "registerMetaESDT" - }, - { - "hash": "290f85d7ec2f7d5797510290358e9e0f76bb880451efaacb0d69280b8d94c67a", - "nonce": 0, - "value": 0, - "receiver": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqsl6e366", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "ESDTSetBurnRoleForAll@41564153482d376438623564", - "prevTxHash": "6082975132a2c9d8197dfd0f9852b454ad344740eebdbdf93f620b2796ab723b", - "originalTxHash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "originalSender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", - "logs": { - "address": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqsl6e366", - "events": [ - { - "address": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqsl6e366", - "identifier": "completedTxEvent", - "topics": [ - "YIKXUTKiydgZff0PmFK0VK00R0Duvb35P2ILJ5arcjs=" - ], - "data": null, - "additionalData": null - } - ] - }, - "operation": "transfer" - }, - { - "hash": "1aa62a6251edd216bd4e5ae59f7e676d5d2f88597685e0ec0e25ac4434bfccdb", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "@00@41564153482d376438623564@d0644194444642fd16ee156307f6fda0e8f8baf4c496e1a1dc85e027ecc08a4a@9eb30a87c92674ab1469700c0b385b3850e86de80f87dec6cf3213c7e379a646@408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43@00", - "prevTxHash": "6082975132a2c9d8197dfd0f9852b454ad344740eebdbdf93f620b2796ab723b", - "originalTxHash": "408433c5db749f4666bee6a8b599944071bf493c43ff5f01282a74c22ea2ea43", - "gasLimit": 75751600, - "gasPrice": 1000000000, - "callType": 2, - "originalSender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", - "logs": { - "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "identifier": "writeLog", - "topics": [ - "AAAAAAAAAAAFAH6UefeHERqHcLpMz2gC3xXGhFsJBGM=", - "QHRvbyBtdWNoIGdhcyBwcm92aWRlZCBmb3IgcHJvY2Vzc2luZzogZ2FzIHByb3ZpZGVkID0gNzU3NTE2MDAsIGdhcyB1c2VkID0gNDE3NjA1OQ==" - ], - "data": "QDZmNmI=", - "additionalData": [ - "QDZmNmI=" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "identifier": "completedTxEvent", - "topics": [ - "YIKXUTKiydgZff0PmFK0VK00R0Duvb35P2ILJ5arcjs=" - ], - "data": null, - "additionalData": null - } - ] - }, - "operation": "transfer" - } - ], - "logs": { - "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "identifier": "transferValueOnly", - "topics": [ - "", - "AAAAAAAAAAAFANAMwOY4h/9reS00I0pE56xrV11LBGM=" - ], - "data": "RGVwbG95RnJvbVNvdXJjZQ==", - "additionalData": [ - "RGVwbG95RnJvbVNvdXJjZQ==", - "aW5pdA==", - "QUxQLWNhZWFjNQ==", - "QVRTLTRjMDkyMA==", - "A+g=", - "A+g=", - "", - "O5rKAA==" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "identifier": "transferValueOnly", - "topics": [ - "", - "AAAAAAAAAAAFADJ0SE0vUW6bO5SurLeFIMfK/HtBBGM=" - ], - "data": "RGVwbG95RnJvbVNvdXJjZQ==", - "additionalData": [ - "RGVwbG95RnJvbVNvdXJjZQ==", - "aW5pdA==", - "AAAAAAAAAAAFANAMwOY4h/9reS00I0pE56xrV11LBGM=", - "AAAAAAAAAAAFAJVzkK7aQy9SpBHVGXT+k9QNJ3M+BGM=", - "AAAAAAAAAAAFANEsxzy9pvJlnJWeXVdYr5LKE4SGUjM=", - "AAAAAAAAAAAFAFHfcXWM8qyltG3tgVWLVRXcKfPzUjM=", - "", - "AAAAAAAAAAAFAH5KHfxDfO1J258WN5hBa4SsIdTJfOsAAAAMV0VHTEQtYTI4YzU5AAAAAAAAAAAFAKi6nmhia7yZP9eV6LtvR5Q7L1/6fOsAAAAKVVRLLTE0ZDU3ZA==", - "AAAAAQAAAAAAAAAABQBR33F1jPKspbRt7YFVi1UV3Cnz81IzAAAAC0JVU0QtZDRjMDE0AAAAAAA=", - "AYag", - "JxA=" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgqxf6ysnf029hfkwu546kt0pfqcl90c76pq33s0a320f", - "identifier": "transferValueOnly", - "topics": [ - "", - "AAAAAAAAAAAFANEsxzy9pvJlnJWeXVdYr5LKE4SGUjM=" - ], - "data": "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", - "additionalData": [ - "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", - "Z2V0RmFybWluZ1Rva2VuSWQ=" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgqxf6ysnf029hfkwu546kt0pfqcl90c76pq33s0a320f", - "identifier": "transferValueOnly", - "topics": [ - "", - "AAAAAAAAAAAFANEsxzy9pvJlnJWeXVdYr5LKE4SGUjM=" - ], - "data": "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", - "additionalData": [ - "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", - "Z2V0RmFybVRva2VuSWQ=" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgqxf6ysnf029hfkwu546kt0pfqcl90c76pq33s0a320f", - "identifier": "transferValueOnly", - "topics": [ - "", - "AAAAAAAAAAAFANEsxzy9pvJlnJWeXVdYr5LKE4SGUjM=" - ], - "data": "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", - "additionalData": [ - "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", - "Z2V0UmV3YXJkVG9rZW5JZA==" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "identifier": "transferValueOnly", - "topics": [ - "saK8LsUAAA==", - "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=" - ], - "data": "QXN5bmNDYWxs", - "additionalData": [ - "QXN5bmNDYWxs", - "cmVnaXN0ZXJNZXRhRVNEVA==", - "QVRTQXNoU3dhcExQQUNWYXVsdA==", - "QVZBU0g=", - "Eg==", - "Y2FuRnJlZXpl", - "ZmFsc2U=", - "Y2FuV2lwZQ==", - "ZmFsc2U=", - "Y2FuUGF1c2U=", - "ZmFsc2U=", - "Y2FuVHJhbnNmZXJORlRDcmVhdGVSb2xl", - "ZmFsc2U=", - "Y2FuQ2hhbmdlT3duZXI=", - "ZmFsc2U=", - "Y2FuVXBncmFkZQ==", - "ZmFsc2U=", - "Y2FuQWRkU3BlY2lhbFJvbGVz", - "dHJ1ZQ==" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgqxf6ysnf029hfkwu546kt0pfqcl90c76pq33s0a320f", - "identifier": "SCDeploy", - "topics": [ - "AAAAAAAAAAAFADJ0SE0vUW6bO5SurLeFIMfK/HtBBGM=", - "AAAAAAAAAAAFAH6UefeHERqHcLpMz2gC3xXGhFsJBGM=", - "fvRqbue54Womde/CN2IkRGkrx8tsU+xkLvi3+uwMkhY=" - ], - "data": null, - "additionalData": null - }, - { - "address": "erd1qqqqqqqqqqqqqpgq6qxvpe3csllkk7fdxs3553884344wh2tq33sakulat", - "identifier": "SCDeploy", - "topics": [ - "AAAAAAAAAAAFANAMwOY4h/9reS00I0pE56xrV11LBGM=", - "AAAAAAAAAAAFAH6UefeHERqHcLpMz2gC3xXGhFsJBGM=", - "E3blQfRJfCKLWDr06Od703DSZenIzq8KND+xUjmGY/M=" - ], - "data": null, - "additionalData": null - } - ] - }, - "status": "success", - "operation": "transfer", - "function": "deployAshswapLPACStrategy", - "initiallyPaidFee": "6936045000000000", - "fee": "2508254280000000", - "chainID": "D", - "version": 1, - "options": 0 - } - }, - "error": "", - "code": "successful" -} - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - - let expected: Option = Some("AVASH-7d8b5d".to_string()); - - assert_eq!(tx_response.new_issued_token_identifier, expected) -} - -#[test] -fn test_set_special_roles_should_not_process_issued_token_identifier() { - let data = r#" - { - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "SCInvoking", - "processingTypeOnDestination": "SCInvoking", - "hash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", - "nonce": 420, - "round": 1787109, - "epoch": 744, - "value": "0", - "receiver": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "sender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", - "gasPrice": 1000000000, - "gasLimit": 600000000, - "gasUsed": 129636807, - "data": "ZmluaXNoVmF1bHREZXBsb3ltZW50cw==", - "signature": "dca943ef1a788bfa6cb0e9aa3900b8340e4908075cbfefaa2a66688f6f0c0fed349edb2eb48eec427cd9098822fba875e4d66072fbdb44cb7f4c1a416736e20c", - "sourceShard": 1, - "destinationShard": 1, - "blockNonce": 1785536, - "blockHash": "93ca539e81612768b67a85b7135f7c104e76bec031a758a6b1782910ae49dd8f", - "notarizedAtSourceInMetaNonce": 1785584, - "NotarizedAtSourceInMetaHash": "71d17afe660282bb42de1ea3eec3e3534a179bd32aa1471c2861ce411bf30552", - "notarizedAtDestinationInMetaNonce": 1785584, - "notarizedAtDestinationInMetaHash": "71d17afe660282bb42de1ea3eec3e3534a179bd32aa1471c2861ce411bf30552", - "miniblockType": "TxBlock", - "miniblockHash": "f8c60565af746e92d2c9c09a92734e5eb8da7e42c67a86854c93b349bfe287eb", - "hyperblockNonce": 1785584, - "hyperblockHash": "71d17afe660282bb42de1ea3eec3e3534a179bd32aa1471c2861ce411bf30552", - "timestamp": 1704722654, - "smartContractResults": [ - { - "hash": "c3ce9c364de3823ffae250c2bfb40aaf2b18f771ed4bd37bf788ad83a2c651f3", - "nonce": 421, - "value": 4703631930000000, - "receiver": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", - "sender": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "data": "@6f6b", - "prevTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", - "originalTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "operation": "transfer", - "isRefund": true - }, - { - "hash": "50f9c25a1402ce6d87ae9f890659c8a67462292e471e02c74d64ff7ba1995e60", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "sender": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "data": "setSpecialRole@41564153482d376438623564@00000000000000000500d00cc0e63887ff6b792d34234a44e7ac6b575d4b0463@45534454526f6c654e4654437265617465@45534454526f6c654e46544164645175616e74697479@45534454526f6c654e46544275726e@0192c6db2c69f50b6968fb22ac558337a851719519cfd1e6bbf79a07bbcf18bc@cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0@03eb4a30", - "prevTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", - "originalTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", - "gasLimit": 125751600, - "gasPrice": 1000000000, - "callType": 1, - "originalSender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", - "operation": "transfer", - "function": "setSpecialRole" - }, - { - "hash": "d6a5824a60b6c9050462c3f5a02ace00c36e8b4ba1958d132bd394e2ed1e7226", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgq6qxvpe3csllkk7fdxs3553884344wh2tq33sakulat", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "ESDTSetRole@41564153482d376438623564@45534454526f6c654e4654437265617465@45534454526f6c654e46544164645175616e74697479@45534454526f6c654e46544275726e", - "prevTxHash": "50f9c25a1402ce6d87ae9f890659c8a67462292e471e02c74d64ff7ba1995e60", - "originalTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "originalSender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", - "logs": { - "address": "erd1qqqqqqqqqqqqqpgq6qxvpe3csllkk7fdxs3553884344wh2tq33sakulat", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgq6qxvpe3csllkk7fdxs3553884344wh2tq33sakulat", - "identifier": "ESDTSetRole", - "topics": [ - "QVZBU0gtN2Q4YjVk", - "", - "", - "RVNEVFJvbGVORlRDcmVhdGU=", - "RVNEVFJvbGVORlRBZGRRdWFudGl0eQ==", - "RVNEVFJvbGVORlRCdXJu" - ], - "data": null, - "additionalData": null - }, - { - "address": "erd1qqqqqqqqqqqqqpgq6qxvpe3csllkk7fdxs3553884344wh2tq33sakulat", - "identifier": "completedTxEvent", - "topics": [ - "UPnCWhQCzm2Hrp+JBlnIpnRiKS5HHgLHTWT/e6GZXmA=" - ], - "data": null, - "additionalData": null - } - ] - }, - "operation": "ESDTSetRole", - "function": "ESDTSetRole" - }, - { - "hash": "bf1b8b4b301ff548368dfd972896489d5e2a088d5cbdfa1bfe2421cc7f641f7a", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "@00@a68d44c751eba85db0713db8dc9c10c78749189ec0d6f1af5fc67bb656c1254b@0192c6db2c69f50b6968fb22ac558337a851719519cfd1e6bbf79a07bbcf18bc@cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0@00", - "prevTxHash": "50f9c25a1402ce6d87ae9f890659c8a67462292e471e02c74d64ff7ba1995e60", - "originalTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", - "gasLimit": 75751600, - "gasPrice": 1000000000, - "callType": 2, - "originalSender": "erd1j6kua7p67qnaw3y4sudmk25xsuv4k8ws6pwvax8fd2vtmuc3q33s840l87", - "logs": { - "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "identifier": "transferValueOnly", - "topics": [ - "", - "AAAAAAAAAAAFANAMwOY4h/9reS00I0pE56xrV11LBGM=" - ], - "data": "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", - "additionalData": [ - "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", - "c2V0U2hhcmVUb2tlbklkZW50aWZpZXI=", - "QVZBU0gtN2Q4YjVk" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "identifier": "transferValueOnly", - "topics": [ - "", - "AAAAAAAAAAAFANAMwOY4h/9reS00I0pE56xrV11LBGM=" - ], - "data": "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", - "additionalData": [ - "RXhlY3V0ZU9uRGVzdENvbnRleHQ=", - "c2V0U3RyYXRlZ3lBZGRyZXNz", - "AAAAAAAAAAAFADJ0SE0vUW6bO5SurLeFIMfK/HtBBGM=" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "identifier": "completedTxEvent", - "topics": [ - "UPnCWhQCzm2Hrp+JBlnIpnRiKS5HHgLHTWT/e6GZXmA=" - ], - "data": null, - "additionalData": null - } - ] - }, - "operation": "transfer" - }, - { - "hash": "9d75a398545f488d4764149245e6ec3101debfce99477c353ac11c3239acd897", - "nonce": 1, - "value": 648519550000000, - "receiver": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "sender": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "data": "@6f6b", - "prevTxHash": "bf1b8b4b301ff548368dfd972896489d5e2a088d5cbdfa1bfe2421cc7f641f7a", - "originalTxHash": "cbb1f866da564a04332297dfc4f637be2e50e62bbf4441bf42247ad429747ce0", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "operation": "transfer", - "isRefund": true - } - ], - "logs": { - "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgq0628nau8zydgwu96fn8ksqklzhrggkcfq33sm4vmwv", - "identifier": "transferValueOnly", - "topics": [ - "", - "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=" - ], - "data": "QXN5bmNDYWxs", - "additionalData": [ - "QXN5bmNDYWxs", - "c2V0U3BlY2lhbFJvbGU=", - "QVZBU0gtN2Q4YjVk", - "AAAAAAAAAAAFANAMwOY4h/9reS00I0pE56xrV11LBGM=", - "RVNEVFJvbGVORlRDcmVhdGU=", - "RVNEVFJvbGVORlRBZGRRdWFudGl0eQ==", - "RVNEVFJvbGVORlRCdXJu" - ] - } - ] - }, - "status": "success", - "operation": "transfer", - "function": "finishVaultDeployments", - "initiallyPaidFee": "6082170000000000", - "fee": "1378538070000000", - "chainID": "D", - "version": 1, - "options": 0 - } - }, - "error": "", - "code": "successful" -} - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - - let expected: Option = None; - - assert_eq!(tx_response.new_issued_token_identifier, expected) -} - -#[test] -fn test_multisig_issue_nft_and_set_all_roles() { - let data = r#" -{ - "data": { - "transaction": { - "type": "normal", - "processingTypeOnSource": "SCInvoking", - "processingTypeOnDestination": "SCInvoking", - "hash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", - "nonce": 53, - "round": 3050972, - "epoch": 1246, - "value": "0", - "receiver": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "sender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", - "gasPrice": 1000000000, - "gasLimit": 80000000, - "gasUsed": 80000000, - "data": "cGVyZm9ybUFjdGlvbkAwMQ==", - "signature": "cb67645595cee5f7967d8d85af05bb7db73e80d9b97611796819249d87cd174b69b4abfc2a3fbe52df1aec965bdea921f7eb34d2b1118aa480699ad1dc85790a", - "sourceShard": 0, - "destinationShard": 0, - "blockNonce": 2984930, - "blockHash": "644ae8703b826a23e89429953919ec37f875e34a547ea9f7edd53fb71a99c746", - "notarizedAtSourceInMetaNonce": 2988311, - "NotarizedAtSourceInMetaHash": "4f608a72e654dd9f466801cd489be8ee1a73fbcd77b128559cd46182d3b9455a", - "notarizedAtDestinationInMetaNonce": 2988311, - "notarizedAtDestinationInMetaHash": "4f608a72e654dd9f466801cd489be8ee1a73fbcd77b128559cd46182d3b9455a", - "miniblockType": "TxBlock", - "miniblockHash": "c5a73671bc1d37835ddd15b926157721bc83203ec4e00cd48ae0d46015cb5f0b", - "hyperblockNonce": 2988311, - "hyperblockHash": "4f608a72e654dd9f466801cd489be8ee1a73fbcd77b128559cd46182d3b9455a", - "timestamp": 1712305832, - "smartContractResults": [ - { - "hash": "b0b3c8df519c33b314c0ee3d25abae6f17c4432fb3382676ce17a42690811cff", - "nonce": 0, - "value": 50000000000000000, - "receiver": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "sender": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "data": "registerAndSetAllRoles@54657374436f6c6c656374696f6e31@54455354434f4c4c31@4e4654@@98fa4ff554b9c6990ce577fbb816a271f690dcbd6b148f6583fe7692868ae538@08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd@5e2338", - "prevTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", - "originalTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", - "gasLimit": 73052300, - "gasPrice": 1000000000, - "callType": 1, - "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", - "operation": "transfer", - "function": "registerAndSetAllRoles" - }, - { - "hash": "5ae4f74e134e4fa63c8b92e06ff12b2a4b544233d01d80db6a922af35ee55356", - "nonce": 1, - "value": 196430610000000, - "receiver": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "sender": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "data": "@6f6b", - "prevTxHash": "c4a24b01b48d32308636310e2d335d6ed1f34dcbdfc1133aed7995e78e831c18", - "originalTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "operation": "transfer", - "isRefund": true - }, - { - "hash": "7589c1ad622d8a9ab2f186731fc82aeeab0aea5a8198cb94b6eba85a966e7962", - "nonce": 0, - "value": 0, - "receiver": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqq2m3f0f", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "ESDTSetBurnRoleForAll@54455354434f4c4c312d356161383063", - "prevTxHash": "b0b3c8df519c33b314c0ee3d25abae6f17c4432fb3382676ce17a42690811cff", - "originalTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", - "logs": { - "address": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqq2m3f0f", - "events": [ - { - "address": "erd1llllllllllllllllllllllllllllllllllllllllllllllllluqq2m3f0f", - "identifier": "completedTxEvent", - "topics": [ - "sLPI31GcM7MUwO49JauubxfEQy+zOCZ2zhekJpCBHP8=" - ] - } - ] - }, - "operation": "transfer" - }, - { - "hash": "86d1ec3365ea1311dbde2f2366de4ea8627d7e49c29a974578c0869b66903cbc", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "ESDTSetRole@54455354434f4c4c312d356161383063@45534454526f6c654e4654437265617465@45534454526f6c654e46544275726e@45534454526f6c654e465455706461746541747472696275746573@45534454526f6c654e4654416464555249", - "prevTxHash": "b0b3c8df519c33b314c0ee3d25abae6f17c4432fb3382676ce17a42690811cff", - "originalTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", - "gasLimit": 0, - "gasPrice": 1000000000, - "callType": 0, - "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "identifier": "ESDTSetRole", - "topics": [ - "VEVTVENPTEwxLTVhYTgwYw==", - "", - "", - "RVNEVFJvbGVORlRDcmVhdGU=", - "RVNEVFJvbGVORlRCdXJu", - "RVNEVFJvbGVORlRVcGRhdGVBdHRyaWJ1dGVz", - "RVNEVFJvbGVORlRBZGRVUkk=" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "identifier": "completedTxEvent", - "topics": [ - "sLPI31GcM7MUwO49JauubxfEQy+zOCZ2zhekJpCBHP8=" - ] - } - ] - }, - "operation": "ESDTSetRole", - "function": "ESDTSetRole" - }, - { - "hash": "c4a24b01b48d32308636310e2d335d6ed1f34dcbdfc1133aed7995e78e831c18", - "nonce": 0, - "value": 0, - "receiver": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "sender": "erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u", - "data": "@00@54455354434f4c4c312d356161383063@3ec73c55022548038bbe06c0639156b3db70b7c770955e340f14fcfcd45df06a@98fa4ff554b9c6990ce577fbb816a271f690dcbd6b148f6583fe7692868ae538@08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd@00", - "prevTxHash": "b0b3c8df519c33b314c0ee3d25abae6f17c4432fb3382676ce17a42690811cff", - "originalTxHash": "08582bc19734ad82d7390be88463c948e5d9f026f4b8f0bfc57620957c3433bd", - "gasLimit": 23052300, - "gasPrice": 1000000000, - "callType": 2, - "originalSender": "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa", - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "identifier": "callBack", - "topics": [ - "YXN5bmNDYWxsU3VjY2Vzcw==", - "VEVTVENPTEwxLTVhYTgwYw==" - ], - "additionalData": [ - "" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "identifier": "completedTxEvent", - "topics": [ - "sLPI31GcM7MUwO49JauubxfEQy+zOCZ2zhekJpCBHP8=" - ] - } - ] - }, - "operation": "transfer" - } - ], - "logs": { - "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "events": [ - { - "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "identifier": "performAction", - "topics": [ - "c3RhcnRQZXJmb3JtQWN0aW9u" - ], - "data": "AAAAAQYAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAL//wAAAAexorwuxQAAAAAAFnJlZ2lzdGVyQW5kU2V0QWxsUm9sZXMAAAAEAAAAD1Rlc3RDb2xsZWN0aW9uMQAAAAlURVNUQ09MTDEAAAADTkZUAAAAAAAAAATjKv7ckE/hk5dGrZc76zg1Y89jZCumabMED5uUKKXtYLE6AXQjw2bK/4zs+3ehJhChMPSIgTQSLHk3/q4NbX0XOvjZyUI7JXfGJSciwdkCEqQRH3ID+XRPdvz6HQoxADOyoRVVzlIeSUTgmrF1SdhbSH3NJshLUBejnjGjZwiJug==", - "additionalData": [ - "AAAAAQYAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAL//wAAAAexorwuxQAAAAAAFnJlZ2lzdGVyQW5kU2V0QWxsUm9sZXMAAAAEAAAAD1Rlc3RDb2xsZWN0aW9uMQAAAAlURVNUQ09MTDEAAAADTkZUAAAAAAAAAATjKv7ckE/hk5dGrZc76zg1Y89jZCumabMED5uUKKXtYLE6AXQjw2bK/4zs+3ehJhChMPSIgTQSLHk3/q4NbX0XOvjZyUI7JXfGJSciwdkCEqQRH3ID+XRPdvz6HQoxADOyoRVVzlIeSUTgmrF1SdhbSH3NJshLUBejnjGjZwiJug==" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "identifier": "performAction", - "topics": [ - "cGVyZm9ybUFzeW5jQ2FsbA==", - "AQ==", - "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=", - "saK8LsUAAA==", - "BGa4HQ==", - "cmVnaXN0ZXJBbmRTZXRBbGxSb2xlcw==", - "VGVzdENvbGxlY3Rpb24x", - "VEVTVENPTEwx", - "TkZU", - "" - ], - "additionalData": [ - "" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "identifier": "transferValueOnly", - "topics": [ - "saK8LsUAAA==", - "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAC//8=" - ], - "data": "QXN5bmNDYWxs", - "additionalData": [ - "QXN5bmNDYWxs", - "cmVnaXN0ZXJBbmRTZXRBbGxSb2xlcw==", - "VGVzdENvbGxlY3Rpb24x", - "VEVTVENPTEwx", - "TkZU", - "" - ] - }, - { - "address": "erd1qqqqqqqqqqqqqpgqrp3n58vp2dmcaur4whazxngvuhac4xwqa4sq2pjl73", - "identifier": "writeLog", - "topics": [ - "4yr+3JBP4ZOXRq2XO+s4NWPPY2QrpmmzBA+blCil7WA=" - ], - "data": "QDZmNmI=", - "additionalData": [ - "QDZmNmI=" - ] - } - ] - }, - "status": "success", - "operation": "transfer", - "function": "performAction", - "initiallyPaidFee": "873260000000000", - "fee": "873260000000000", - "chainID": "D", - "version": 1, - "options": 0 - } - }, - "code": "successful" -} - "#; - - let tx_on_network: TransactionOnNetwork = serde_json::from_str::(data) - .unwrap() - .data - .unwrap() - .transaction; - let tx_response = TxResponse::from_network_tx(tx_on_network); - - let expected = Some("TESTCOLL1-5aa80c".to_string()); - - assert_eq!(tx_response.new_issued_token_identifier, expected) -} From f21b3fc06528cb170afd728447a8c75cdb6bcfa7 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Mon, 29 Apr 2024 18:45:55 +0300 Subject: [PATCH 421/461] set state via AnnotatedValue - separate types --- .../tests/token_merge_module_whitebox_test.rs | 12 ++++++------ .../src/facade/world_tx/scenario_set_state.rs | 9 ++++++--- .../scenario_set_state/scenario_set_account.rs | 16 ++++++++++------ .../src/scenario/model/account_data/account.rs | 5 +++-- .../scenario/model/esdt_data/esdt_instance.rs | 7 +++++-- .../src/scenario/model/esdt_data/esdt_object.rs | 14 +++++++++----- .../scenario/src/scenario/run_vm/set_state.rs | 4 ++-- .../src/whitebox_legacy/contract_obj_wrapper.rs | 2 +- 8 files changed, 42 insertions(+), 27 deletions(-) diff --git a/contracts/feature-tests/use-module/tests/token_merge_module_whitebox_test.rs b/contracts/feature-tests/use-module/tests/token_merge_module_whitebox_test.rs index eb93ff155a..3f723c323a 100644 --- a/contracts/feature-tests/use-module/tests/token_merge_module_whitebox_test.rs +++ b/contracts/feature-tests/use-module/tests/token_merge_module_whitebox_test.rs @@ -66,7 +66,7 @@ fn test_token_merge() { NFT_AMOUNT, Some(FIRST_ATTRIBUTES), FIRST_ROYALTIES, - None, + None::, None, Vec::from(FIRST_URIS), ) @@ -76,7 +76,7 @@ fn test_token_merge() { NFT_AMOUNT, Some(SECOND_ATTRIBUTES), SECOND_ROYALTIES, - None, + None::, None, Vec::from(SECOND_URIS), ), @@ -454,7 +454,7 @@ fn test_partial_split() { NFT_AMOUNT, Some(FIRST_ATTRIBUTES), FIRST_ROYALTIES, - None, + None::, None, Vec::from(FIRST_URIS), ) @@ -464,7 +464,7 @@ fn test_partial_split() { NFT_AMOUNT, Some(SECOND_ATTRIBUTES), SECOND_ROYALTIES, - None, + None::, None, Vec::from(SECOND_URIS), ), @@ -672,7 +672,7 @@ fn test_custom_attributes() { NFT_AMOUNT, Some(FIRST_ATTRIBUTES), FIRST_ROYALTIES, - None, + None::, None, Vec::from(FIRST_URIS), ) @@ -682,7 +682,7 @@ fn test_custom_attributes() { NFT_AMOUNT, Some(SECOND_ATTRIBUTES), SECOND_ROYALTIES, - None, + None::, None, Vec::from(SECOND_URIS), ), diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state.rs b/framework/scenario/src/facade/world_tx/scenario_set_state.rs index 8cee5eaede..fc25f297c2 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state.rs @@ -101,7 +101,7 @@ impl ScenarioWorld { } #[allow(clippy::too_many_arguments)] - pub fn set_nft_balance_all_properties( + pub fn set_nft_balance_all_properties( &mut self, address: A, token_id: &[u8], @@ -109,7 +109,7 @@ impl ScenarioWorld { balance: V, attributes: &T, royalties: NR, - creator: Option, + creator: Option, name: Option<&[u8]>, hash: Option<&[u8]>, uris: &[Vec], @@ -117,6 +117,7 @@ impl ScenarioWorld { A: AnnotatedValue>, V: AnnotatedValue>, NR: AnnotatedValue, + C: AnnotatedValue>, { let env = self.new_env_data(); let address_value = address_annotated(&env, &address); @@ -134,7 +135,9 @@ impl ScenarioWorld { nonce_value.value, &balance_value.value, EsdtInstanceMetadata { - creator: creator.map(|c| address_annotated(&env, &c).to_vm_address()), + creator: creator + .as_ref() + .map(|c| address_annotated(&env, c).to_vm_address()), attributes: esdt_attributes.clone(), royalties: royalties_value.value, name: name.unwrap_or_default().to_vec(), diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs index 0c14dc6b16..65351927ec 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs @@ -102,22 +102,26 @@ impl<'w> SetStateBuilder<'w, AccountItem> { } #[allow(clippy::too_many_arguments)] - pub fn esdt_nft_all_properties( + pub fn esdt_nft_all_properties( mut self, token_id: K, nonce: N, balance: V, attributes: T, - royalties: N, - creator: T, - hash: T, - uris: Vec, + royalties: R, + creator: C, + hash: H, + uris: Vec, ) -> Self where K: AnnotatedValue>, N: AnnotatedValue, V: AnnotatedValue>, T: AnnotatedValue>, + C: AnnotatedValue>, + R: AnnotatedValue, + H: AnnotatedValue>, + U: AnnotatedValue>, { let env = self.new_env_data(); let token_id_key = token_identifier_annotated(&env, token_id); @@ -125,7 +129,7 @@ impl<'w> SetStateBuilder<'w, AccountItem> { let royalties_value = u64_annotated(&env, &royalties); let balance_value = big_uint_annotated(&env, &balance); let attributes_value = bytes_annotated(&env, attributes); - let creator_value = bytes_annotated(&env, creator); + let creator_value = address_annotated(&env, &creator); let hash_value = bytes_annotated(&env, hash); let mut uris_value = Vec::new(); for uri in uris { diff --git a/framework/scenario/src/scenario/model/account_data/account.rs b/framework/scenario/src/scenario/model/account_data/account.rs index 8488017c4e..9748fdf7dc 100644 --- a/framework/scenario/src/scenario/model/account_data/account.rs +++ b/framework/scenario/src/scenario/model/account_data/account.rs @@ -86,14 +86,14 @@ impl Account { } #[allow(clippy::too_many_arguments)] - pub fn esdt_nft_all_properties( + pub fn esdt_nft_all_properties( mut self, token_id_expr: K, nonce_expr: N, balance_expr: V, opt_attributes_expr: Option, royalties_expr: N, - creator_expr: Option, + creator_expr: Option, hash_expr: Option, uris_expr: Vec, ) -> Self @@ -102,6 +102,7 @@ impl Account { U64Value: From, BigUintValue: From, BytesValue: From, + AddressValue: From, { let token_id = BytesKey::from(token_id_expr); diff --git a/framework/scenario/src/scenario/model/esdt_data/esdt_instance.rs b/framework/scenario/src/scenario/model/esdt_data/esdt_instance.rs index 8607937c6c..01e57394d2 100644 --- a/framework/scenario/src/scenario/model/esdt_data/esdt_instance.rs +++ b/framework/scenario/src/scenario/model/esdt_data/esdt_instance.rs @@ -4,13 +4,14 @@ use crate::{ interpret_trait::{InterpretableFrom, InterpreterContext, IntoRaw}, serde_raw::EsdtInstanceRaw, }, + scenario_model::AddressValue, }; #[derive(Debug, Default, Clone)] pub struct EsdtInstance { pub nonce: Option, pub balance: Option, - pub creator: Option, + pub creator: Option, pub royalties: Option, pub hash: Option, pub uri: Vec, @@ -41,7 +42,9 @@ impl InterpretableFrom for EsdtInstance { balance: from .balance .map(|b| BigUintValue::interpret_from(b, context)), - creator: from.creator.map(|b| BytesValue::interpret_from(b, context)), + creator: from + .creator + .map(|b| AddressValue::interpret_from(b, context)), royalties: from.royalties.map(|b| U64Value::interpret_from(b, context)), hash: from.hash.map(|b| BytesValue::interpret_from(b, context)), uri: from diff --git a/framework/scenario/src/scenario/model/esdt_data/esdt_object.rs b/framework/scenario/src/scenario/model/esdt_data/esdt_object.rs index f8298e2b8c..f9d65e4df9 100644 --- a/framework/scenario/src/scenario/model/esdt_data/esdt_object.rs +++ b/framework/scenario/src/scenario/model/esdt_data/esdt_object.rs @@ -1,5 +1,8 @@ use super::EsdtInstance; -use crate::scenario::model::{BigUintValue, BytesValue, U64Value}; +use crate::{ + scenario::model::{BigUintValue, BytesValue, U64Value}, + scenario_model::AddressValue, +}; #[derive(Debug, Default, Clone)] pub struct EsdtObject { @@ -53,19 +56,20 @@ impl EsdtObject { } #[allow(clippy::too_many_arguments)] - pub fn set_token_all_properties( + pub fn set_token_all_properties( &mut self, nonce_expr: N, balance_expr: V, opt_attributes_expr: Option, royalties_expr: N, - creator_expr: Option, + creator_expr: Option, hash_expr: Option, uris_expr: Vec, ) where U64Value: From, BigUintValue: From, BytesValue: From, + AddressValue: From, { let inst_for_nonce = self.get_or_insert_instance_for_nonce(nonce_expr); @@ -93,8 +97,8 @@ impl EsdtObject { } if let Some(creator_expr) = creator_expr { - let creator = BytesValue::from(creator_expr); - if !creator.value.is_empty() { + let creator = AddressValue::from(creator_expr); + if !creator.value.is_zero() { inst_for_nonce.creator = Some(creator); } else { inst_for_nonce.creator = None; diff --git a/framework/scenario/src/scenario/run_vm/set_state.rs b/framework/scenario/src/scenario/run_vm/set_state.rs index 187ba21e83..8284d42422 100644 --- a/framework/scenario/src/scenario/run_vm/set_state.rs +++ b/framework/scenario/src/scenario/run_vm/set_state.rs @@ -1,7 +1,7 @@ use crate::scenario::model::SetStateStep; use multiversx_chain_vm::{ - types::{VMAddress, VMCodeMetadata}, + types::VMCodeMetadata, world_mock::{ AccountData, AccountEsdt, BlockInfo as CrateBlockInfo, BlockchainState, EsdtData, EsdtInstance, EsdtInstanceMetadata, EsdtInstances, EsdtRoles, @@ -155,7 +155,7 @@ fn convert_scenario_esdt_instance_to_world_mock( creator: scenario_esdt .creator .as_ref() - .map(|creator| VMAddress::from_slice(creator.value.as_slice())), + .map(|creator| creator.to_vm_address()), royalties: scenario_esdt .royalties .as_ref() diff --git a/framework/scenario/src/whitebox_legacy/contract_obj_wrapper.rs b/framework/scenario/src/whitebox_legacy/contract_obj_wrapper.rs index 7540d23056..b88377b98d 100644 --- a/framework/scenario/src/whitebox_legacy/contract_obj_wrapper.rs +++ b/framework/scenario/src/whitebox_legacy/contract_obj_wrapper.rs @@ -366,7 +366,7 @@ impl BlockchainStateWrapper { BigUint::from(balance), attributes, 0, - None, + None::
, None, None, &[], From f152723bf7c64e1260c18307ce2346d0083c18a0 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Mon, 29 Apr 2024 19:30:13 +0300 Subject: [PATCH 422/461] set state via AnnotatedValue - small fix --- .../src/facade/world_tx/scenario_set_state.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state.rs b/framework/scenario/src/facade/world_tx/scenario_set_state.rs index fc25f297c2..aa9a4ccd9b 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state.rs @@ -101,22 +101,23 @@ impl ScenarioWorld { } #[allow(clippy::too_many_arguments)] - pub fn set_nft_balance_all_properties( + pub fn set_nft_balance_all_properties( &mut self, address: A, token_id: &[u8], - nonce: NR, - balance: V, - attributes: &T, - royalties: NR, + nonce: N, + balance: B, + attributes: T, + royalties: R, creator: Option, name: Option<&[u8]>, hash: Option<&[u8]>, uris: &[Vec], ) where A: AnnotatedValue>, - V: AnnotatedValue>, - NR: AnnotatedValue, + B: AnnotatedValue>, + N: AnnotatedValue, + R: AnnotatedValue, C: AnnotatedValue>, { let env = self.new_env_data(); From 75c2a1127a19ee7b37e9cb2734964c499878e185 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Mon, 29 Apr 2024 21:36:51 +0300 Subject: [PATCH 423/461] codec - decode u64 via into_max_size_buffer_align_right --- .../pair/scenarios/free_orders.scen.json | 3 +- .../scenarios/storage_i64_bad.scen.json | 2 +- .../src/impl_for_types/impl_num_signed.rs | 6 +- data/codec/src/single/top_de_input.rs | 70 +++++++++++++++++-- framework/base/src/api/endpoint_arg_api.rs | 4 +- framework/base/src/err_msg.rs | 2 +- framework/base/src/io/arg_de_input.rs | 13 ++++ .../src/storage/mappers/map_storage_mapper.rs | 5 +- framework/base/src/storage/storage_get.rs | 21 ++++++ .../src/storage/storage_get_from_address.rs | 21 ++++++ .../types/io/operation_completion_status.rs | 10 +-- .../codec_util/managed_buffer_top_de_input.rs | 47 +++++++++++-- 12 files changed, 181 insertions(+), 23 deletions(-) diff --git a/contracts/examples/order-book/pair/scenarios/free_orders.scen.json b/contracts/examples/order-book/pair/scenarios/free_orders.scen.json index 8556d1dee2..0e53547971 100644 --- a/contracts/examples/order-book/pair/scenarios/free_orders.scen.json +++ b/contracts/examples/order-book/pair/scenarios/free_orders.scen.json @@ -27,7 +27,8 @@ "to": "sc:pair", "function": "freeOrders", "arguments": [ - "u64:0|u64:1" + "0", + "1" ], "gasLimit": "100,000,000", "gasPrice": "0" diff --git a/contracts/feature-tests/basic-features/scenarios/storage_i64_bad.scen.json b/contracts/feature-tests/basic-features/scenarios/storage_i64_bad.scen.json index 74ae9f7bff..d46e1a783a 100644 --- a/contracts/feature-tests/basic-features/scenarios/storage_i64_bad.scen.json +++ b/contracts/feature-tests/basic-features/scenarios/storage_i64_bad.scen.json @@ -33,7 +33,7 @@ "expect": { "out": [], "status": "*", - "message": "str:storage decode error: input too long", + "message": "str:storage decode error: argument out of range", "logs": "*", "gas": "*", "refund": "*" diff --git a/data/codec/src/impl_for_types/impl_num_signed.rs b/data/codec/src/impl_for_types/impl_num_signed.rs index b32b726523..1f8ea12dcc 100644 --- a/data/codec/src/impl_for_types/impl_num_signed.rs +++ b/data/codec/src/impl_for_types/impl_num_signed.rs @@ -1,7 +1,7 @@ use crate::{ - dep_encode_num_mimic, DecodeError, - DecodeErrorHandler, EncodeErrorHandler, NestedDecode, NestedDecodeInput, NestedEncode, - NestedEncodeOutput, TopDecode, TopDecodeInput, TopEncode, TopEncodeOutput, + dep_encode_num_mimic, DecodeError, DecodeErrorHandler, EncodeErrorHandler, NestedDecode, + NestedDecodeInput, NestedEncode, NestedEncodeOutput, TopDecode, TopDecodeInput, TopEncode, + TopEncodeOutput, }; macro_rules! top_encode_num_signed { diff --git a/data/codec/src/single/top_de_input.rs b/data/codec/src/single/top_de_input.rs index dc74370daf..dd106d26a0 100644 --- a/data/codec/src/single/top_de_input.rs +++ b/data/codec/src/single/top_de_input.rs @@ -21,6 +21,12 @@ pub trait TopDecodeInput: Sized { /// and returns the populated data slice from this buffer. /// /// Will return an error if the data exceeds the provided buffer. + /// + /// Currently only kept for backwards compatibility. + #[deprecated( + since = "0.48.1", + note = "Please use method `into_max_size_buffer_align_right` instead." + )] fn into_max_size_buffer( self, buffer: &mut [u8; MAX_LEN], @@ -29,6 +35,20 @@ pub trait TopDecodeInput: Sized { where H: DecodeErrorHandler; + /// Puts the underlying data into a fixed size byte buffer, + /// aligned to the right. + /// + /// This eases big endian decoding. + /// + /// Returns the length of the original buffer. + fn into_max_size_buffer_align_right( + self, + buffer: &mut [u8; MAX_LEN], + h: H, + ) -> Result + where + H: DecodeErrorHandler; + /// Retrieves the underlying data as a pre-parsed u64. /// Expected to panic if the conversion is not possible. /// @@ -38,8 +58,8 @@ pub trait TopDecodeInput: Sized { H: DecodeErrorHandler, { let mut buffer = [0u8; 8]; - let slice = self.into_max_size_buffer(&mut buffer, h)?; - Ok(universal_decode_number_unchecked(slice, false)) + let _ = self.into_max_size_buffer_align_right(&mut buffer, h)?; + Ok(u64::from_be_bytes(buffer)) } /// Retrieves the underlying data as a pre-parsed i64. @@ -51,8 +71,8 @@ pub trait TopDecodeInput: Sized { H: DecodeErrorHandler, { let mut buffer = [0u8; 8]; - let slice = self.into_max_size_buffer(&mut buffer, h)?; - Ok(universal_decode_number_unchecked(slice, true) as i64) + let len = self.into_max_size_buffer_align_right(&mut buffer, h)?; + Ok(universal_decode_number_unchecked(&buffer[8 - len..], true) as i64) } #[inline] @@ -82,6 +102,7 @@ impl TopDecodeInput for Box<[u8]> { self } + #[allow(deprecated)] fn into_max_size_buffer( self, buffer: &mut [u8; MAX_LEN], @@ -93,6 +114,17 @@ impl TopDecodeInput for Box<[u8]> { (&*self).into_max_size_buffer(buffer, h) } + fn into_max_size_buffer_align_right( + self, + buffer: &mut [u8; MAX_LEN], + h: H, + ) -> Result + where + H: DecodeErrorHandler, + { + (&*self).into_max_size_buffer_align_right(buffer, h) + } + fn into_nested_buffer(self) -> Self::NestedBuffer { OwnedBytesNestedDecodeInput::new(self) } @@ -109,6 +141,7 @@ impl TopDecodeInput for Vec { vec_into_boxed_slice(self) } + #[allow(deprecated)] fn into_max_size_buffer( self, buffer: &mut [u8; MAX_LEN], @@ -120,6 +153,17 @@ impl TopDecodeInput for Vec { self.as_slice().into_max_size_buffer(buffer, h) } + fn into_max_size_buffer_align_right( + self, + buffer: &mut [u8; MAX_LEN], + h: H, + ) -> Result + where + H: DecodeErrorHandler, + { + self.as_slice().into_max_size_buffer_align_right(buffer, h) + } + fn into_nested_buffer(self) -> Self::NestedBuffer { OwnedBytesNestedDecodeInput::new(self.into_boxed_slice()) } @@ -152,6 +196,24 @@ impl<'a> TopDecodeInput for &'a [u8] { Ok(&buffer[..l]) } + fn into_max_size_buffer_align_right( + self, + buffer: &mut [u8; MAX_LEN], + h: H, + ) -> Result + where + H: DecodeErrorHandler, + { + let len = self.len(); + if len > MAX_LEN { + return Err(h.handle_error(DecodeError::INPUT_TOO_LONG)); + } + let target_start = MAX_LEN - len; + let byte_slice = &mut buffer[target_start..]; + byte_slice.copy_from_slice(self); + Ok(len) + } + #[inline] fn into_u64(self, _h: H) -> Result where diff --git a/framework/base/src/api/endpoint_arg_api.rs b/framework/base/src/api/endpoint_arg_api.rs index aa3201a07f..4d80935f52 100644 --- a/framework/base/src/api/endpoint_arg_api.rs +++ b/framework/base/src/api/endpoint_arg_api.rs @@ -59,7 +59,7 @@ pub trait EndpointArgumentApiImpl: ErrorApi + ManagedTypeApi { if let Some(value) = Self::managed_type_impl().bi_to_i64(big_int_temp_1) { value as u64 } else { - Self::error_api_impl().signal_error(err_msg::ARG_OUT_OF_RANGE) + Self::error_api_impl().signal_error(err_msg::ARG_OUT_OF_RANGE.as_bytes()) } } @@ -69,7 +69,7 @@ pub trait EndpointArgumentApiImpl: ErrorApi + ManagedTypeApi { if let Some(value) = Self::managed_type_impl().bi_to_i64(big_int_temp_1) { value } else { - Self::error_api_impl().signal_error(err_msg::ARG_OUT_OF_RANGE) + Self::error_api_impl().signal_error(err_msg::ARG_OUT_OF_RANGE.as_bytes()) } } diff --git a/framework/base/src/err_msg.rs b/framework/base/src/err_msg.rs index 46f43e3313..2a2ef7ad65 100644 --- a/framework/base/src/err_msg.rs +++ b/framework/base/src/err_msg.rs @@ -17,7 +17,7 @@ pub const ARG_ASYNC_RETURN_WRONG_NUMBER: &[u8] = pub const ARG_CALLBACK_TOO_FEW: &[u8] = b"too few callback arguments provided"; pub const ARG_CALLBACK_TOO_MANY: &[u8] = b"too many callback arguments provided"; -pub const ARG_OUT_OF_RANGE: &[u8] = b"argument out of range"; +pub const ARG_OUT_OF_RANGE: &str = "argument out of range"; pub const ARG_BAD_LENGTH: &[u8] = b"argument has wrong length"; pub const ARG_BAD_LENGTH_32: &[u8] = b"argument has wrong length: 32 bytes expected"; pub const ARG_DECODE_ERROR_1: &[u8] = b"argument decode error ("; diff --git a/framework/base/src/io/arg_de_input.rs b/framework/base/src/io/arg_de_input.rs index 42e4fc7f0f..98faef2899 100644 --- a/framework/base/src/io/arg_de_input.rs +++ b/framework/base/src/io/arg_de_input.rs @@ -92,6 +92,19 @@ where self.to_managed_buffer().into_max_size_buffer(buffer, h) } + #[inline] + fn into_max_size_buffer_align_right( + self, + buffer: &mut [u8; MAX_LEN], + h: H, + ) -> Result + where + H: DecodeErrorHandler, + { + self.to_managed_buffer() + .into_max_size_buffer_align_right(buffer, h) + } + #[inline] fn into_u64(self, _h: H) -> Result where diff --git a/framework/base/src/storage/mappers/map_storage_mapper.rs b/framework/base/src/storage/mappers/map_storage_mapper.rs index e19f005861..5b101452b8 100644 --- a/framework/base/src/storage/mappers/map_storage_mapper.rs +++ b/framework/base/src/storage/mappers/map_storage_mapper.rs @@ -7,6 +7,7 @@ use super::{ use crate::{ api::StorageMapperApi, codec::{NestedDecode, NestedEncode, TopDecode, TopEncode}, + contract_base::ErrorHelper, storage::{self, StorageKey}, types::ManagedAddress, }; @@ -232,7 +233,9 @@ where #[inline] fn next(&mut self) -> Option<(K, V)> { if let Some(key) = self.key_iter.next() { - let value = self.hash_map.get(&key).unwrap(); + let Some(value) = self.hash_map.get(&key) else { + ErrorHelper::::signal_error_with_message("missing key") + }; return Some((key, value)); } None diff --git a/framework/base/src/storage/storage_get.rs b/framework/base/src/storage/storage_get.rs index c4504df70f..7e9016c3a3 100644 --- a/framework/base/src/storage/storage_get.rs +++ b/framework/base/src/storage/storage_get.rs @@ -81,6 +81,27 @@ where self.to_managed_buffer().into_max_size_buffer(buffer, h) } + #[inline] + fn into_max_size_buffer_align_right( + self, + buffer: &mut [u8; MAX_LEN], + h: H, + ) -> Result + where + H: DecodeErrorHandler, + { + self.to_managed_buffer() + .into_max_size_buffer_align_right(buffer, h) + } + + #[inline] + fn into_i64(self, h: H) -> Result + where + H: DecodeErrorHandler, + { + self.to_managed_buffer().into_i64(h) + } + #[inline] fn supports_specialized_type() -> bool { T::type_eq::>() || T::type_eq::>() || T::type_eq::>() diff --git a/framework/base/src/storage/storage_get_from_address.rs b/framework/base/src/storage/storage_get_from_address.rs index 8cfeb531f1..2b2ac897f1 100644 --- a/framework/base/src/storage/storage_get_from_address.rs +++ b/framework/base/src/storage/storage_get_from_address.rs @@ -91,6 +91,27 @@ where self.to_managed_buffer().into_max_size_buffer(buffer, h) } + #[inline] + fn into_max_size_buffer_align_right( + self, + buffer: &mut [u8; MAX_LEN], + h: H, + ) -> Result + where + H: DecodeErrorHandler, + { + self.to_managed_buffer() + .into_max_size_buffer_align_right(buffer, h) + } + + #[inline] + fn into_i64(self, h: H) -> Result + where + H: DecodeErrorHandler, + { + self.to_managed_buffer().into_i64(h) + } + #[inline] fn supports_specialized_type() -> bool { T::type_eq::>() || T::type_eq::>() || T::type_eq::>() diff --git a/framework/base/src/types/io/operation_completion_status.rs b/framework/base/src/types/io/operation_completion_status.rs index a7e030ab96..7ae9df69f8 100644 --- a/framework/base/src/types/io/operation_completion_status.rs +++ b/framework/base/src/types/io/operation_completion_status.rs @@ -58,12 +58,14 @@ impl TopDecode for OperationCompletionStatus { I: TopDecodeInput, H: DecodeErrorHandler, { - let mut buffer = [0u8; 16]; - input.into_max_size_buffer(&mut buffer, h)?; + const BUFFER_LEN: usize = 16; + let mut buffer = [0u8; BUFFER_LEN]; + let len = input.into_max_size_buffer_align_right(&mut buffer, h)?; + let bytes = &buffer[BUFFER_LEN - len..]; - if buffer.starts_with(COMPLETED_STR.as_bytes()) { + if bytes.starts_with(COMPLETED_STR.as_bytes()) { Ok(OperationCompletionStatus::Completed) - } else if buffer.starts_with(INTERRUPTED_STR.as_bytes()) { + } else if bytes.starts_with(INTERRUPTED_STR.as_bytes()) { Ok(OperationCompletionStatus::InterruptedBeforeOutOfGas) } else { Err(h.handle_error(DecodeError::INVALID_VALUE)) diff --git a/framework/base/src/types/managed/codec_util/managed_buffer_top_de_input.rs b/framework/base/src/types/managed/codec_util/managed_buffer_top_de_input.rs index acc280de1d..fb091781a2 100644 --- a/framework/base/src/types/managed/codec_util/managed_buffer_top_de_input.rs +++ b/framework/base/src/types/managed/codec_util/managed_buffer_top_de_input.rs @@ -1,12 +1,15 @@ -use crate::codec::{ - try_execute_then_cast, DecodeError, DecodeErrorHandler, TopDecodeInput, TryStaticCast, -}; -use alloc::boxed::Box; - use crate::{ - api::ManagedTypeApi, + api::{ + const_handles, managed_types::BigIntApiImpl, use_raw_handle, ManagedTypeApi, + ManagedTypeApiImpl, + }, + codec::{ + try_execute_then_cast, DecodeError, DecodeErrorHandler, TopDecodeInput, TryStaticCast, + }, + err_msg, types::{BigInt, BigUint, ManagedBuffer}, }; +use alloc::boxed::Box; use super::ManagedBufferNestedDecodeInput; @@ -41,6 +44,38 @@ where Ok(byte_slice) } + fn into_max_size_buffer_align_right( + self, + buffer: &mut [u8; MAX_LEN], + h: H, + ) -> Result + where + H: DecodeErrorHandler, + { + let len = self.len(); + if len > MAX_LEN { + return Err(h.handle_error(DecodeError::INPUT_TOO_LONG)); + } + unsafe { + let byte_slice = buffer.get_unchecked_mut(MAX_LEN - len..); + let _ = self.load_slice(0, byte_slice); + } + Ok(len) + } + + fn into_i64(self, h: H) -> Result + where + H: DecodeErrorHandler, + { + let big_int_temp: M::BigIntHandle = use_raw_handle(const_handles::BIG_INT_TEMPORARY_1); + M::managed_type_impl().mb_to_big_int_signed(self.handle.clone(), big_int_temp.clone()); + if let Some(value) = M::managed_type_impl().bi_to_i64(big_int_temp) { + Ok(value) + } else { + Err(h.handle_error(err_msg::ARG_OUT_OF_RANGE.into())) + } + } + #[inline] fn supports_specialized_type() -> bool { T::type_eq::>() || T::type_eq::>() || T::type_eq::>() From 5bf1b8edc643fd55eff3364ea716f5dab344f631 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 30 Apr 2024 13:54:35 +0300 Subject: [PATCH 424/461] renamed ReturnsResultAs --- .../examples/adder/interact/src/basic_interact.rs | 2 +- .../tests/st_blackbox_legacy_proxy_test.rs | 2 +- .../scenario-tester/tests/st_blackbox_test.rs | 2 +- .../interaction/result_handlers/returns_result_conv.rs | 10 +++++----- .../scenario/src/facade/world_tx/scenario_rh_impl.rs | 6 +++--- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/contracts/examples/adder/interact/src/basic_interact.rs b/contracts/examples/adder/interact/src/basic_interact.rs index a0fa99f17a..b0c38bb4bb 100644 --- a/contracts/examples/adder/interact/src/basic_interact.rs +++ b/contracts/examples/adder/interact/src/basic_interact.rs @@ -152,7 +152,7 @@ impl AdderInteract { .to(self.state.current_adder_address()) .typed(adder_proxy::AdderProxy) .sum() - .returns(ReturnsResultConv::::new()) + .returns(ReturnsResultAs::::new()) .prepare_async() .run() .await; diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_legacy_proxy_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_legacy_proxy_test.rs index 7dfd815d55..b20fbff6f3 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_legacy_proxy_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_legacy_proxy_test.rs @@ -51,7 +51,7 @@ fn st_blackbox_legacy_proxy() { let value = world .query() .call(st_contract.sum()) - .returns(ReturnsResultConv::>::new()) + .returns(ReturnsResultAs::>::new()) .run(); assert_eq!(value.into(), BigUint::from(5u32)); diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs index 9f0b9091d3..75d8448c3b 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs @@ -66,7 +66,7 @@ fn st_blackbox() { .to(ST_ADDRESS) .typed(scenario_tester_proxy::ScenarioTesterProxy) .sum() - .returns(ReturnsResultConv::::new()) + .returns(ReturnsResultAs::::new()) .run(); assert_eq!(value, BigUint::from(5u32)); diff --git a/framework/base/src/types/interaction/result_handlers/returns_result_conv.rs b/framework/base/src/types/interaction/result_handlers/returns_result_conv.rs index 1583d0ecbe..05f2dfaa3d 100644 --- a/framework/base/src/types/interaction/result_handlers/returns_result_conv.rs +++ b/framework/base/src/types/interaction/result_handlers/returns_result_conv.rs @@ -9,11 +9,11 @@ use crate::types::{ /// Indicates that result will be returned. /// /// Value will be converted to type `T`, which should be compatible with the original type. -pub struct ReturnsResultConv { +pub struct ReturnsResultAs { _phantom: PhantomData, } -impl Default for ReturnsResultConv { +impl Default for ReturnsResultAs { fn default() -> Self { Self { _phantom: Default::default(), @@ -21,13 +21,13 @@ impl Default for ReturnsResultConv { } } -impl ReturnsResultConv { +impl ReturnsResultAs { pub fn new() -> Self { Self::default() } } -impl RHListItem for ReturnsResultConv +impl RHListItem for ReturnsResultAs where Env: TxEnv, Original: TopEncodeMulti, @@ -37,7 +37,7 @@ where } impl RHListItemExec, Env, Original> - for ReturnsResultConv + for ReturnsResultAs where Env: TxEnv, Original: TopEncodeMulti, diff --git a/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs b/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs index d040f0bc3a..343fdc8382 100644 --- a/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs +++ b/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs @@ -2,7 +2,7 @@ use multiversx_sc::{ codec::{CodecFrom, TopDecodeMulti, TopEncodeMulti}, types::{ ManagedAddress, RHListItemExec, ReturnsNewAddress, ReturnsNewManagedAddress, ReturnsResult, - ReturnsResultConv, TxEnv, WithNewAddress, WithResultConv, + ReturnsResultAs, TxEnv, WithNewAddress, WithResultConv, }, }; @@ -21,7 +21,7 @@ where } } -impl RHListItemExec for ReturnsResultConv +impl RHListItemExec for ReturnsResultAs where Env: TxEnv, Original: TopEncodeMulti, @@ -31,7 +31,7 @@ where let response = TypedResponse::::from_raw(tx_response); response .result - .expect("ReturnsResultConv expects that transaction is successful") + .expect("ReturnsResultAs expects that transaction is successful") } } From 533f31c76286069d8358ba3ec8e4912a283bd2ea Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 30 Apr 2024 15:22:08 +0300 Subject: [PATCH 425/461] cleanup --- data/codec/src/num_conv.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/data/codec/src/num_conv.rs b/data/codec/src/num_conv.rs index f68671596e..978aab3280 100644 --- a/data/codec/src/num_conv.rs +++ b/data/codec/src/num_conv.rs @@ -122,7 +122,6 @@ pub fn universal_decode_number_unchecked(bytes: &[u8], signed: bool) -> u64 { unsafe { universal_decode_number_impl(bytes.as_ptr(), bytes.len(), signed) } } -#[inline(never)] unsafe fn universal_decode_number_impl(bytes: *const u8, len: usize, signed: bool) -> u64 { let negative = signed && len > 0 && msbit_is_one(*bytes); let skippable_byte = skippable_byte(negative); From 02751856a8084dfd1d0cf43d2cb39f1f6bc3c016 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Tue, 30 Apr 2024 18:08:52 +0300 Subject: [PATCH 426/461] increase code coverage - make optional param in esdt_nft_all_properties --- .../composability/forwarder/sc-config.toml | 5 + .../forwarder/src/forwarder_main.rs | 1 + .../forwarder/src/forwarder_proxy.rs | 1126 +++++++++++++++++ 3 files changed, 1132 insertions(+) create mode 100644 contracts/feature-tests/composability/forwarder/sc-config.toml create mode 100644 contracts/feature-tests/composability/forwarder/src/forwarder_proxy.rs diff --git a/contracts/feature-tests/composability/forwarder/sc-config.toml b/contracts/feature-tests/composability/forwarder/sc-config.toml new file mode 100644 index 0000000000..b12e3401e6 --- /dev/null +++ b/contracts/feature-tests/composability/forwarder/sc-config.toml @@ -0,0 +1,5 @@ +[[proxy]] +path = "src/forwarder_proxy.rs" +[[proxy.path-rename]] +from = "multiversx_sc::types::flags::esdt_token_type::" +to = "" diff --git a/contracts/feature-tests/composability/forwarder/src/forwarder_main.rs b/contracts/feature-tests/composability/forwarder/src/forwarder_main.rs index 92d3289a21..7ded2d1957 100644 --- a/contracts/feature-tests/composability/forwarder/src/forwarder_main.rs +++ b/contracts/feature-tests/composability/forwarder/src/forwarder_main.rs @@ -13,6 +13,7 @@ pub mod roles; pub mod sft; pub mod storage; pub mod vault_proxy; +pub mod forwarder_proxy; multiversx_sc::imports!(); diff --git a/contracts/feature-tests/composability/forwarder/src/forwarder_proxy.rs b/contracts/feature-tests/composability/forwarder/src/forwarder_proxy.rs new file mode 100644 index 0000000000..5c859a5169 --- /dev/null +++ b/contracts/feature-tests/composability/forwarder/src/forwarder_proxy.rs @@ -0,0 +1,1126 @@ +// Code generated by the multiversx-sc proxy generator. DO NOT EDIT. + +//////////////////////////////////////////////////// +////////////////// AUTO-GENERATED ////////////////// +//////////////////////////////////////////////////// + +#![allow(dead_code)] +#![allow(clippy::all)] + +use multiversx_sc::proxy_imports::*; + +pub struct ForwarderProxy; + +impl TxProxyTrait for ForwarderProxy +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + type TxProxyMethods = ForwarderProxyMethods; + + fn proxy_methods(self, tx: Tx) -> Self::TxProxyMethods { + ForwarderProxyMethods { wrapped_tx: tx } + } +} + +pub struct ForwarderProxyMethods +where + Env: TxEnv, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + wrapped_tx: Tx, +} + +#[rustfmt::skip] +impl ForwarderProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + Gas: TxGas, +{ + pub fn init( + self, + ) -> TxProxyDeploy { + self.wrapped_tx + .raw_deploy() + .original_result() + } +} + +#[rustfmt::skip] +impl ForwarderProxyMethods +where + Env: TxEnv, + Env::Api: VMApi, + From: TxFrom, + To: TxTo, + Gas: TxGas, +{ + pub fn send_egld< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + to: Arg0, + amount: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("send_egld") + .argument(&to) + .argument(&amount) + .original_result() + } + + pub fn echo_arguments_sync< + Arg0: CodecInto>, + Arg1: CodecInto>>, + >( + self, + to: Arg0, + args: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("echo_arguments_sync") + .argument(&to) + .argument(&args) + .original_result() + } + + pub fn echo_arguments_sync_twice< + Arg0: CodecInto>, + Arg1: CodecInto>>, + >( + self, + to: Arg0, + args: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("echo_arguments_sync_twice") + .argument(&to) + .argument(&args) + .original_result() + } + + pub fn forward_sync_accept_funds< + Arg0: CodecInto>, + >( + self, + to: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("forward_sync_accept_funds") + .argument(&to) + .original_result() + } + + pub fn forward_sync_accept_funds_with_fees< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + to: Arg0, + percentage_fees: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("forward_sync_accept_funds_with_fees") + .argument(&to) + .argument(&percentage_fees) + .original_result() + } + + pub fn forward_sync_accept_funds_then_read< + Arg0: CodecInto>, + >( + self, + to: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("forward_sync_accept_funds_then_read") + .argument(&to) + .original_result() + } + + pub fn forward_sync_retrieve_funds< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto, + Arg3: CodecInto>, + >( + self, + to: Arg0, + token: Arg1, + token_nonce: Arg2, + amount: Arg3, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("forward_sync_retrieve_funds") + .argument(&to) + .argument(&token) + .argument(&token_nonce) + .argument(&amount) + .original_result() + } + + pub fn forward_sync_retrieve_funds_with_accept_func< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>, + >( + self, + to: Arg0, + token: Arg1, + amount: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("forward_sync_retrieve_funds_with_accept_func") + .argument(&to) + .argument(&token) + .argument(&amount) + .original_result() + } + + pub fn accept_funds_func( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("accept_funds_func") + .original_result() + } + + pub fn forward_sync_accept_funds_multi_transfer< + Arg0: CodecInto>, + Arg1: CodecInto, u64, BigUint>>>, + >( + self, + to: Arg0, + token_payments: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("forward_sync_accept_funds_multi_transfer") + .argument(&to) + .argument(&token_payments) + .original_result() + } + + pub fn echo_args_async< + Arg0: CodecInto>, + Arg1: CodecInto>>, + >( + self, + to: Arg0, + args: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("echo_args_async") + .argument(&to) + .argument(&args) + .original_result() + } + + pub fn forward_async_accept_funds< + Arg0: CodecInto>, + >( + self, + to: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("forward_async_accept_funds") + .argument(&to) + .original_result() + } + + pub fn forward_async_accept_funds_half_payment< + Arg0: CodecInto>, + >( + self, + to: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("forward_async_accept_funds_half_payment") + .argument(&to) + .original_result() + } + + pub fn forward_async_accept_funds_with_fees< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + to: Arg0, + percentage_fees: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("forward_async_accept_funds_with_fees") + .argument(&to) + .argument(&percentage_fees) + .original_result() + } + + pub fn forward_async_retrieve_funds< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto, + Arg3: CodecInto>, + >( + self, + to: Arg0, + token: Arg1, + token_nonce: Arg2, + amount: Arg3, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("forward_async_retrieve_funds") + .argument(&to) + .argument(&token) + .argument(&token_nonce) + .argument(&amount) + .original_result() + } + + pub fn send_funds_twice< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>, + >( + self, + to: Arg0, + token_identifier: Arg1, + amount: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("send_funds_twice") + .argument(&to) + .argument(&token_identifier) + .argument(&amount) + .original_result() + } + + pub fn send_async_accept_multi_transfer< + Arg0: CodecInto>, + Arg1: CodecInto, u64, BigUint>>>, + >( + self, + to: Arg0, + token_payments: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("send_async_accept_multi_transfer") + .argument(&to) + .argument(&token_payments) + .original_result() + } + + pub fn callback_data( + self, + ) -> TxProxyCall>> { + self.wrapped_tx + .raw_call("callback_data") + .original_result() + } + + pub fn callback_data_at_index< + Arg0: CodecInto, + >( + self, + index: Arg0, + ) -> TxProxyCall, EgldOrEsdtTokenIdentifier, u64, BigUint, MultiValueManagedVec>>> { + self.wrapped_tx + .raw_call("callback_data_at_index") + .argument(&index) + .original_result() + } + + pub fn clear_callback_data( + self, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("clear_callback_data") + .original_result() + } + + pub fn forward_transf_exec_accept_funds< + Arg0: CodecInto>, + >( + self, + to: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("forward_transf_exec_accept_funds") + .argument(&to) + .original_result() + } + + pub fn forward_transf_execu_accept_funds_with_fees< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + to: Arg0, + percentage_fees: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("forward_transf_execu_accept_funds_with_fees") + .argument(&to) + .argument(&percentage_fees) + .original_result() + } + + pub fn forward_transf_exec_accept_funds_twice< + Arg0: CodecInto>, + >( + self, + to: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("forward_transf_exec_accept_funds_twice") + .argument(&to) + .original_result() + } + + /// Test that the default gas provided to the transfer_execute call + /// leaves enough in the transaction for finish to happen. + pub fn forward_transf_exec_accept_funds_return_values< + Arg0: CodecInto>, + >( + self, + to: Arg0, + ) -> TxProxyCall, EgldOrEsdtTokenIdentifier>> { + self.wrapped_tx + .raw_call("forward_transf_exec_accept_funds_return_values") + .argument(&to) + .original_result() + } + + pub fn transf_exec_multi_accept_funds< + Arg0: CodecInto>, + Arg1: CodecInto, u64, BigUint>>>, + >( + self, + to: Arg0, + token_payments: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("transf_exec_multi_accept_funds") + .argument(&to) + .argument(&token_payments) + .original_result() + } + + pub fn forward_transf_exec_reject_funds_multi_transfer< + Arg0: CodecInto>, + Arg1: CodecInto, u64, BigUint>>>, + >( + self, + to: Arg0, + token_payments: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("forward_transf_exec_reject_funds_multi_transfer") + .argument(&to) + .argument(&token_payments) + .original_result() + } + + pub fn transf_exec_multi_reject_funds< + Arg0: CodecInto>, + Arg1: CodecInto, u64, BigUint>>>, + >( + self, + to: Arg0, + token_payments: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("transf_exec_multi_reject_funds") + .argument(&to) + .argument(&token_payments) + .original_result() + } + + pub fn change_owner< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + child_sc_address: Arg0, + new_owner: Arg1, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call("changeOwnerAddress") + .argument(&child_sc_address) + .argument(&new_owner) + .original_result() + } + + pub fn deploy_contract< + Arg0: CodecInto>, + Arg1: CodecInto>>, + >( + self, + code: Arg0, + opt_arg: Arg1, + ) -> TxProxyCall, OptionalValue>>> { + self.wrapped_tx + .raw_call("deploy_contract") + .argument(&code) + .argument(&opt_arg) + .original_result() + } + + pub fn deploy_two_contracts< + Arg0: CodecInto>, + >( + self, + code: Arg0, + ) -> TxProxyCall, ManagedAddress>> { + self.wrapped_tx + .raw_call("deploy_two_contracts") + .argument(&code) + .original_result() + } + + pub fn deploy_vault_from_source< + Arg0: CodecInto>, + Arg1: CodecInto>>, + >( + self, + source_address: Arg0, + opt_arg: Arg1, + ) -> TxProxyCall, OptionalValue>>> { + self.wrapped_tx + .raw_call("deploy_vault_from_source") + .argument(&source_address) + .argument(&opt_arg) + .original_result() + } + + pub fn upgrade_vault< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>>, + >( + self, + child_sc_address: Arg0, + new_code: Arg1, + opt_arg: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("upgradeVault") + .argument(&child_sc_address) + .argument(&new_code) + .argument(&opt_arg) + .original_result() + } + + pub fn upgrade_vault_from_source< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>>, + >( + self, + child_sc_address: Arg0, + source_address: Arg1, + opt_arg: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("upgrade_vault_from_source") + .argument(&child_sc_address) + .argument(&source_address) + .argument(&opt_arg) + .original_result() + } + + pub fn get_fungible_esdt_balance< + Arg0: CodecInto>, + >( + self, + token_identifier: Arg0, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call("getFungibleEsdtBalance") + .argument(&token_identifier) + .original_result() + } + + pub fn get_current_nft_nonce< + Arg0: CodecInto>, + >( + self, + token_identifier: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("getCurrentNftNonce") + .argument(&token_identifier) + .original_result() + } + + pub fn send_esdt< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>, + >( + self, + to: Arg0, + token_id: Arg1, + amount: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("send_esdt") + .argument(&to) + .argument(&token_id) + .argument(&amount) + .original_result() + } + + pub fn send_esdt_with_fees< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + to: Arg0, + percentage_fees: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("send_esdt_with_fees") + .argument(&to) + .argument(&percentage_fees) + .original_result() + } + + pub fn send_esdt_twice< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>, + Arg3: CodecInto>, + >( + self, + to: Arg0, + token_id: Arg1, + amount_first_time: Arg2, + amount_second_time: Arg3, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("send_esdt_twice") + .argument(&to) + .argument(&token_id) + .argument(&amount_first_time) + .argument(&amount_second_time) + .original_result() + } + + pub fn send_esdt_direct_multi_transfer< + Arg0: CodecInto>, + Arg1: CodecInto, u64, BigUint>>>, + >( + self, + to: Arg0, + token_payments: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("send_esdt_direct_multi_transfer") + .argument(&to) + .argument(&token_payments) + .original_result() + } + + pub fn issue_fungible_token< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>, + >( + self, + token_display_name: Arg0, + token_ticker: Arg1, + initial_supply: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("issue_fungible_token") + .argument(&token_display_name) + .argument(&token_ticker) + .argument(&initial_supply) + .original_result() + } + + pub fn local_mint< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + token_identifier: Arg0, + amount: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("local_mint") + .argument(&token_identifier) + .argument(&amount) + .original_result() + } + + pub fn local_burn< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + token_identifier: Arg0, + amount: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("local_burn") + .argument(&token_identifier) + .argument(&amount) + .original_result() + } + + pub fn get_esdt_local_roles< + Arg0: CodecInto>, + >( + self, + token_id: Arg0, + ) -> TxProxyCall>> { + self.wrapped_tx + .raw_call("get_esdt_local_roles") + .argument(&token_id) + .original_result() + } + + pub fn get_esdt_token_data< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto, + >( + self, + address: Arg0, + token_id: Arg1, + nonce: Arg2, + ) -> TxProxyCall, bool, ManagedBuffer, ManagedBuffer, ManagedBuffer, ManagedAddress, BigUint, ManagedVec>>> { + self.wrapped_tx + .raw_call("get_esdt_token_data") + .argument(&address) + .argument(&token_id) + .argument(&nonce) + .original_result() + } + + pub fn is_esdt_frozen< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto, + >( + self, + address: Arg0, + token_id: Arg1, + nonce: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("is_esdt_frozen") + .argument(&address) + .argument(&token_id) + .argument(&nonce) + .original_result() + } + + pub fn is_esdt_paused< + Arg0: CodecInto>, + >( + self, + token_id: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("is_esdt_paused") + .argument(&token_id) + .original_result() + } + + pub fn is_esdt_limited_transfer< + Arg0: CodecInto>, + >( + self, + token_id: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("is_esdt_limited_transfer") + .argument(&token_id) + .original_result() + } + + pub fn validate_token_identifier< + Arg0: CodecInto>, + >( + self, + token_id: Arg0, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("validate_token_identifier") + .argument(&token_id) + .original_result() + } + + pub fn sft_issue< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + token_display_name: Arg0, + token_ticker: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("sft_issue") + .argument(&token_display_name) + .argument(&token_ticker) + .original_result() + } + + pub fn get_nft_balance< + Arg0: CodecInto>, + Arg1: CodecInto, + >( + self, + token_identifier: Arg0, + nonce: Arg1, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call("get_nft_balance") + .argument(&token_identifier) + .argument(&nonce) + .original_result() + } + + pub fn buy_nft< + Arg0: CodecInto>, + Arg1: CodecInto, + Arg2: CodecInto>, + >( + self, + nft_id: Arg0, + nft_nonce: Arg1, + nft_amount: Arg2, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call("buy_nft") + .argument(&nft_id) + .argument(&nft_nonce) + .argument(&nft_amount) + .original_result() + } + + pub fn nft_issue< + Arg0: CodecInto>, + Arg1: CodecInto>, + >( + self, + token_display_name: Arg0, + token_ticker: Arg1, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("nft_issue") + .argument(&token_display_name) + .argument(&token_ticker) + .original_result() + } + + pub fn nft_create< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>, + Arg3: CodecInto>, + Arg4: CodecInto>, + Arg5: CodecInto, + Arg6: CodecInto>, + >( + self, + token_identifier: Arg0, + amount: Arg1, + name: Arg2, + royalties: Arg3, + hash: Arg4, + color: Arg5, + uri: Arg6, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("nft_create") + .argument(&token_identifier) + .argument(&amount) + .argument(&name) + .argument(&royalties) + .argument(&hash) + .argument(&color) + .argument(&uri) + .original_result() + } + + pub fn nft_create_compact< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto, + >( + self, + token_identifier: Arg0, + amount: Arg1, + color: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("nft_create_compact") + .argument(&token_identifier) + .argument(&amount) + .argument(&color) + .original_result() + } + + pub fn nft_add_uris< + Arg0: CodecInto>, + Arg1: CodecInto, + Arg2: CodecInto>>, + >( + self, + token_identifier: Arg0, + nonce: Arg1, + uris: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("nft_add_uris") + .argument(&token_identifier) + .argument(&nonce) + .argument(&uris) + .original_result() + } + + pub fn nft_update_attributes< + Arg0: CodecInto>, + Arg1: CodecInto, + Arg2: CodecInto, + >( + self, + token_identifier: Arg0, + nonce: Arg1, + new_attributes: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("nft_update_attributes") + .argument(&token_identifier) + .argument(&nonce) + .argument(&new_attributes) + .original_result() + } + + pub fn nft_decode_complex_attributes< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>, + Arg3: CodecInto>, + Arg4: CodecInto>, + Arg5: CodecInto>, + Arg6: CodecInto, ManagedBuffer, TokenIdentifier, bool, ManagedBuffer>>, + >( + self, + token_identifier: Arg0, + amount: Arg1, + name: Arg2, + royalties: Arg3, + hash: Arg4, + uri: Arg5, + attrs_arg: Arg6, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("nft_decode_complex_attributes") + .argument(&token_identifier) + .argument(&amount) + .argument(&name) + .argument(&royalties) + .argument(&hash) + .argument(&uri) + .argument(&attrs_arg) + .original_result() + } + + pub fn nft_add_quantity< + Arg0: CodecInto>, + Arg1: CodecInto, + Arg2: CodecInto>, + >( + self, + token_identifier: Arg0, + nonce: Arg1, + amount: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("nft_add_quantity") + .argument(&token_identifier) + .argument(&nonce) + .argument(&amount) + .original_result() + } + + pub fn nft_burn< + Arg0: CodecInto>, + Arg1: CodecInto, + Arg2: CodecInto>, + >( + self, + token_identifier: Arg0, + nonce: Arg1, + amount: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("nft_burn") + .argument(&token_identifier) + .argument(&nonce) + .argument(&amount) + .original_result() + } + + pub fn transfer_nft_via_async_call< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto, + Arg3: CodecInto>, + >( + self, + to: Arg0, + token_identifier: Arg1, + nonce: Arg2, + amount: Arg3, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("transfer_nft_via_async_call") + .argument(&to) + .argument(&token_identifier) + .argument(&nonce) + .argument(&amount) + .original_result() + } + + pub fn transfer_nft_and_execute< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto, + Arg3: CodecInto>, + Arg4: CodecInto>, + Arg5: CodecInto>>, + >( + self, + to: Arg0, + token_identifier: Arg1, + nonce: Arg2, + amount: Arg3, + function: Arg4, + arguments: Arg5, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("transfer_nft_and_execute") + .argument(&to) + .argument(&token_identifier) + .argument(&nonce) + .argument(&amount) + .argument(&function) + .argument(&arguments) + .original_result() + } + + pub fn create_and_send< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>, + Arg3: CodecInto>, + Arg4: CodecInto>, + Arg5: CodecInto>, + Arg6: CodecInto, + Arg7: CodecInto>, + >( + self, + to: Arg0, + token_identifier: Arg1, + amount: Arg2, + name: Arg3, + royalties: Arg4, + hash: Arg5, + color: Arg6, + uri: Arg7, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("create_and_send") + .argument(&to) + .argument(&token_identifier) + .argument(&amount) + .argument(&name) + .argument(&royalties) + .argument(&hash) + .argument(&color) + .argument(&uri) + .original_result() + } + + pub fn set_local_roles< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>, + >( + self, + address: Arg0, + token_identifier: Arg1, + roles: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("setLocalRoles") + .argument(&address) + .argument(&token_identifier) + .argument(&roles) + .original_result() + } + + pub fn unset_local_roles< + Arg0: CodecInto>, + Arg1: CodecInto>, + Arg2: CodecInto>, + >( + self, + address: Arg0, + token_identifier: Arg1, + roles: Arg2, + ) -> TxProxyCall { + self.wrapped_tx + .raw_call("unsetLocalRoles") + .argument(&address) + .argument(&token_identifier) + .argument(&roles) + .original_result() + } + + pub fn last_issued_token( + self, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call("lastIssuedToken") + .original_result() + } + + pub fn last_error_message( + self, + ) -> TxProxyCall> { + self.wrapped_tx + .raw_call("lastErrorMessage") + .original_result() + } +} + +#[derive(TopEncode, TopDecode)] +pub struct CallbackData +where + Api: ManagedTypeApi, +{ + pub callback_name: ManagedBuffer, + pub token_identifier: EgldOrEsdtTokenIdentifier, + pub token_nonce: u64, + pub token_amount: BigUint, + pub args: ManagedVec>, +} + +#[derive(TopEncode, TopDecode)] +pub struct Color { + pub r: u8, + pub g: u8, + pub b: u8, +} From 07847bdf41ad938b5de8d7f7c532c3347e8b2c77 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Tue, 30 Apr 2024 18:11:19 +0300 Subject: [PATCH 427/461] increase code coverage - migrate forwarder blackbox to unified syntax --- .../tests/forwarder_blackbox_test.rs | 131 ++++++++---------- .../scenario-tester/tests/st_blackbox_test.rs | 54 +++++++- .../scenario_set_account.rs | 6 +- 3 files changed, 109 insertions(+), 82 deletions(-) diff --git a/contracts/feature-tests/composability/tests/forwarder_blackbox_test.rs b/contracts/feature-tests/composability/tests/forwarder_blackbox_test.rs index f6812aa0bc..73b1b92488 100644 --- a/contracts/feature-tests/composability/tests/forwarder_blackbox_test.rs +++ b/contracts/feature-tests/composability/tests/forwarder_blackbox_test.rs @@ -1,57 +1,42 @@ -use forwarder::nft::{Color, ProxyTrait as _}; +use forwarder::forwarder_proxy; use multiversx_sc_scenario::imports::*; -const USER_ADDRESS_EXPR: &str = "address:user"; -const FORWARDER_ADDRESS_EXPR: &str = "sc:forwarder"; -const FORWARDER_PATH_EXPR: &str = "mxsc:output/forwarder.mxsc.json"; +const USER_ADDRESS: TestAddress = TestAddress::new("user"); +const FORWARDER_ADDRESS: TestSCAddress = TestSCAddress::new("forwarder"); +const FORWARDER_PATH: MxscPath = MxscPath::new("output/forwarder.mxsc.json"); -const NFT_TOKEN_ID_EXPR: &str = "str:COOL-123456"; -const NFT_TOKEN_ID: &[u8] = b"COOL-123456"; - -type ForwarderContract = ContractInfo>; +const NFT_TOKEN_ID: TestTokenIdentifier = TestTokenIdentifier::new("COOL-123456"); +const NFT_TOKEN: &[u8] = b"COOL-123456"; fn world() -> ScenarioWorld { let mut blockchain = ScenarioWorld::new(); - blockchain.set_current_dir_from_workspace("contracts/composability/forwarder"); - blockchain.register_contract(FORWARDER_PATH_EXPR, forwarder::ContractBuilder); + blockchain.register_contract(FORWARDER_PATH, forwarder::ContractBuilder); blockchain } struct ForwarderTestState { world: ScenarioWorld, - forwarder_contract: ForwarderContract, } impl ForwarderTestState { fn new() -> Self { let mut world = world(); - let forwarder_code = world.code_expression(FORWARDER_PATH_EXPR); let roles = vec![ "ESDTRoleNFTCreate".to_string(), "ESDTRoleNFTUpdateAttributes".to_string(), ]; - world.set_state_step( - SetStateStep::new() - .put_account(USER_ADDRESS_EXPR, Account::new().nonce(1)) - .put_account( - FORWARDER_ADDRESS_EXPR, - Account::new() - .nonce(1) - .code(forwarder_code) - .esdt_roles(NFT_TOKEN_ID_EXPR, roles), - ), - ); - - let forwarder_contract = ForwarderContract::new(FORWARDER_ADDRESS_EXPR); + world.account(USER_ADDRESS).nonce(1); + world + .account(FORWARDER_ADDRESS) + .nonce(1) + .code(FORWARDER_PATH) + .esdt_roles(NFT_TOKEN_ID, roles); - Self { - world, - forwarder_contract, - } + Self { world } } } @@ -59,72 +44,72 @@ impl ForwarderTestState { fn test_nft_update_attributes_and_send() { let mut state = ForwarderTestState::new(); - let original_attributes = Color { r: 0, g: 0, b: 0 }; + let original_attributes = forwarder_proxy::Color { r: 0, g: 0, b: 0 }; + let original_attributes_bytes: &[u8] = &[ + original_attributes.r, + original_attributes.g, + original_attributes.b, + ]; - state.world.sc_call( - ScCallStep::new().from(USER_ADDRESS_EXPR).call( - state - .forwarder_contract - .nft_create_compact(NFT_TOKEN_ID, 1u64, original_attributes), - ), - ); + state + .world + .tx() + .from(USER_ADDRESS) + .to(FORWARDER_ADDRESS) + .typed(forwarder_proxy::ForwarderProxy) + .nft_create_compact(NFT_TOKEN_ID, 1u64, original_attributes) + .run(); state.world.transfer_step( TransferStep::new() - .from(FORWARDER_ADDRESS_EXPR) - .to(USER_ADDRESS_EXPR) - .esdt_transfer(NFT_TOKEN_ID, 1, "1"), + .from(FORWARDER_ADDRESS.eval_to_expr().as_str()) + .to(USER_ADDRESS.eval_to_expr().as_str()) + .esdt_transfer(NFT_TOKEN, 1, "1"), ); state .world - .check_state_step(CheckStateStep::new().put_account( - USER_ADDRESS_EXPR, - CheckAccount::new().esdt_nft_balance_and_attributes( - NFT_TOKEN_ID_EXPR, - 1, - "1", - Some(original_attributes), - ), - )); - - let new_attributes = Color { + .check_account(USER_ADDRESS) + .esdt_nft_balance_and_attributes( + NFT_TOKEN_ID, + 1, + 1, + managed_buffer!(original_attributes_bytes), + ); + + let new_attributes = forwarder_proxy::Color { r: 255, g: 255, b: 255, }; + let new_attributes_bytes: &[u8] = &[new_attributes.r, new_attributes.g, new_attributes.b]; + state.world.transfer_step( TransferStep::new() - .from(USER_ADDRESS_EXPR) - .to(FORWARDER_ADDRESS_EXPR) - .esdt_transfer(NFT_TOKEN_ID, 1, "1"), + .from(USER_ADDRESS.eval_to_expr().as_str()) + .to(FORWARDER_ADDRESS.eval_to_expr().as_str()) + .esdt_transfer(NFT_TOKEN, 1, "1"), ); - state.world.sc_call( - ScCallStep::new().from(USER_ADDRESS_EXPR).call( - state - .forwarder_contract - .nft_update_attributes(NFT_TOKEN_ID, 1u64, new_attributes), - ), - ); + state + .world + .tx() + .from(USER_ADDRESS) + .to(FORWARDER_ADDRESS) + .typed(forwarder_proxy::ForwarderProxy) + .nft_update_attributes(NFT_TOKEN_ID, 1u64, new_attributes) + .run(); state.world.transfer_step( TransferStep::new() - .from(FORWARDER_ADDRESS_EXPR) - .to(USER_ADDRESS_EXPR) - .esdt_transfer(NFT_TOKEN_ID, 1, "1"), + .from(FORWARDER_ADDRESS.eval_to_expr().as_str()) + .to(USER_ADDRESS.eval_to_expr().as_str()) + .esdt_transfer(NFT_TOKEN, 1, "1"), ); state .world - .check_state_step(CheckStateStep::new().put_account( - USER_ADDRESS_EXPR, - CheckAccount::new().esdt_nft_balance_and_attributes( - NFT_TOKEN_ID_EXPR, - 1, - "1", - Some(new_attributes), - ), - )); + .check_account(USER_ADDRESS) + .esdt_nft_balance_and_attributes(NFT_TOKEN_ID, 1, 1, managed_buffer!(new_attributes_bytes)); } diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs index 9f0b9091d3..fe144c875e 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs @@ -4,6 +4,8 @@ use num_bigint::BigUint; use scenario_tester::*; const SC_SCENARIO_TESTER_PATH_EXPR: &str = "mxsc:output/scenario-tester.mxsc.json"; +const FOURTH_ATTRIBUTES: &[u8] = b"FourthhAttributes"; +const FOURTH_URIS: &[&[u8]] = &[b"FirstUri", b"SecondUri"]; const OWNER_ADDRESS: TestAddress = TestAddress::new("owner"); const OTHER_ADDRESS: TestAddress = TestAddress::new("other"); @@ -106,6 +108,8 @@ fn set_state_test() { let fourth = TestAddress::new("fourth"); let fifth = TestAddress::new("fifth"); let sixth = TestAddress::new("sixth"); + let seventh = TestAddress::new("seventh"); + let eighth = TestAddress::new("eighth"); world.start_trace(); @@ -143,33 +147,71 @@ fn set_state_test() { .esdt_nft_balance_and_attributes(NFT_ID, 2, 1, ()) .commit(); - // using no commit should drop the value naturally + let fourth_uris = FOURTH_URIS + .iter() + .map(|first_uri| managed_buffer!(first_uri)) + .collect(); world .account(fourth) + .nonce(3) + .balance(50) + .esdt_nft_all_properties( + NFT_ID, + 2, + 1, + managed_buffer!(FOURTH_ATTRIBUTES), + 1000, + None::
, + (), + fourth_uris, + ) + .commit(); + + world + .check_account(fourth) + .nonce(3) + .balance(50) + .esdt_nft_balance_and_attributes(NFT_ID, 2, 1, managed_buffer!(FOURTH_ATTRIBUTES)) + .commit(); + + world + .account(fifth) + .nonce(2) + .balance(30) + .esdt_nft_last_nonce(NFT_ID, 5); + world + .check_account(fifth) + .nonce(2) + .balance(30) + .esdt_nft_balance_and_attributes(NFT_ID, 5, 0, ()); + + // using no commit should drop the value naturally + world + .account(sixth) .nonce(4) .balance(400) - .account(fifth) + .account(seventh) .nonce(5) .balance(250) .esdt_balance(TOKEN_ID, 2); world - .check_account(fourth) + .check_account(sixth) .nonce(4) .balance(400) - .check_account(fifth) + .check_account(seventh) .nonce(5) .balance(250) .esdt_balance(TOKEN_ID, 2); world - .account(sixth) + .account(eighth) .nonce(6) .balance(600) .esdt_balance(TOKEN_ID, 60); world - .check_account(sixth) + .check_account(eighth) .nonce(6) .balance(600) .esdt_balance(TOKEN_ID, 60); diff --git a/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs index 65351927ec..f5590894e1 100644 --- a/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs +++ b/framework/scenario/src/facade/world_tx/scenario_set_state/scenario_set_account.rs @@ -109,7 +109,7 @@ impl<'w> SetStateBuilder<'w, AccountItem> { balance: V, attributes: T, royalties: R, - creator: C, + creator: Option, hash: H, uris: Vec, ) -> Self @@ -129,7 +129,7 @@ impl<'w> SetStateBuilder<'w, AccountItem> { let royalties_value = u64_annotated(&env, &royalties); let balance_value = big_uint_annotated(&env, &balance); let attributes_value = bytes_annotated(&env, attributes); - let creator_value = address_annotated(&env, &creator); + let creator_value = creator.as_ref().map(|c| address_annotated(&env, c)); let hash_value = bytes_annotated(&env, hash); let mut uris_value = Vec::new(); for uri in uris { @@ -146,7 +146,7 @@ impl<'w> SetStateBuilder<'w, AccountItem> { balance_value, Some(attributes_value), royalties_value, - Some(creator_value), + creator_value, Some(hash_value), uris_value, ); From d7dd5afa22a04274d43fd6d9138bbed41e732752 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 30 Apr 2024 18:50:39 +0300 Subject: [PATCH 428/461] sc 0.48.1, codec 0.18.7 --- CHANGELOG.md | 4 + Cargo.lock | 295 +++++++++--------- 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 +- .../Cargo.toml | 2 +- .../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/nft-subscription/Cargo.toml | 6 +- .../examples/nft-subscription/meta/Cargo.toml | 2 +- .../examples/nft-subscription/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 +- .../wasm-alloc-mem-fail/Cargo.toml | 2 +- .../wasm-alloc-mem-leaking/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 | 4 +- .../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 | 2 +- .../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 +- .../vault/wasm-vault-upgrade/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 +- .../exchange-features/Cargo.toml | 4 +- .../exchange-features/meta/Cargo.toml | 2 +- .../exchange-features/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 +- data/codec/Cargo.toml | 6 +- framework/base/Cargo.toml | 6 +- framework/derive/Cargo.toml | 2 +- framework/meta/Cargo.toml | 4 +- .../generate_snippets/snippet_crate_gen.rs | 2 +- .../meta/src/cmd/contract/meta_config.rs | 4 +- framework/meta/src/version_history.rs | 3 +- framework/scenario/Cargo.toml | 6 +- 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 | 4 +- 269 files changed, 531 insertions(+), 535 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c22847501..df6d26af07 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,10 @@ They are: - `multiversx-chain-scenario-format`, in short `scenario-format`, scenario JSON serializer/deserializer, 1 crate. - `multiversx-sdk`, in short `sdk`, allows communication with the chain(s), 1 crate. +## [sc 0.48.1, codec 0.18.7] - 2024-04-30 +- Simplified decoding of small numbers (i64/u64). +- Manual reset of the `StaticApi`, in order to free memory for long-running tasks. + ## [sc 0.48.0] - 2024-04-09 - When serializing to a managed buffer, static buffer caching is disabled by default. - `sc-meta:` - installers for wasm32 target and wasm-opt. diff --git a/Cargo.lock b/Cargo.lock index c8c6746cad..c7f8875a89 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -136,9 +136,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.81" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247" +checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" [[package]] name = "arrayvec" @@ -148,15 +148,15 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "backtrace" -version = "0.3.70" +version = "0.3.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95d8e92cac0961e91dbd517496b00f7e9b92363dbe6d42c3198268323798860c" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" dependencies = [ "addr2line", "cc", @@ -173,6 +173,12 @@ version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +[[package]] +name = "base64" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" + [[package]] name = "basic-features" version = "0.0.0" @@ -338,9 +344,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.15.4" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "byteorder" @@ -350,15 +356,15 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" [[package]] name = "cc" -version = "1.0.90" +version = "1.0.96" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" +checksum = "065a29261d53ba54260972629f9ca6bffa69bac13cd1fed61420f7fa68b9f8bd" [[package]] name = "cfg-if" @@ -403,9 +409,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.3" +version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "949626d00e063efc93b6dca932419ceb5432f99769911c0b995f7e884c778813" +checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" dependencies = [ "clap_builder", "clap_derive", @@ -425,9 +431,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.3" +version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90239a040c80f5e14809ca132ddc4176ab33d5e17e49691793296e3fcb34d72f" +checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" dependencies = [ "heck", "proc-macro2", @@ -709,9 +715,9 @@ dependencies = [ [[package]] name = "either" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" +checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" [[package]] name = "empty" @@ -732,9 +738,9 @@ dependencies = [ [[package]] name = "encoding_rs" -version = "0.8.33" +version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" dependencies = [ "cfg-if", ] @@ -950,9 +956,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "first-contract" @@ -973,9 +979,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.28" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" dependencies = [ "crc32fast", "miniz_oxide", @@ -1207,9 +1213,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" dependencies = [ "cfg-if", "js-sys", @@ -1239,9 +1245,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fbd2820c5e49886948654ab546d0688ff24530286bdcf8fca3cefb16d4618eb" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" dependencies = [ "bytes", "fnv", @@ -1258,9 +1264,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "heck" @@ -1400,9 +1406,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.5" +version = "2.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", "hashbrown", @@ -1439,9 +1445,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "js-sys" @@ -1548,9 +1554,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.154" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346" [[package]] name = "linked-list-repeat" @@ -1593,9 +1599,9 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -1676,9 +1682,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.1" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" [[package]] name = "mime" @@ -1798,10 +1804,10 @@ checksum = "b59072fa0624b55ae5ae3fa6bfa91515bbeb4ac440214bc4a509e2c8806d6e9f" [[package]] name = "multiversx-price-aggregator-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "arrayvec", - "getrandom 0.2.12", + "getrandom 0.2.14", "multiversx-sc", "multiversx-sc-modules", "multiversx-sc-scenario", @@ -1819,7 +1825,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags 2.4.2", "hex-literal", @@ -1830,7 +1836,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -1839,7 +1845,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -1849,7 +1855,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -1860,7 +1866,7 @@ dependencies = [ [[package]] name = "multiversx-sc-meta" -version = "0.48.0" +version = "0.48.1" dependencies = [ "clap", "colored", @@ -1886,16 +1892,16 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-scenario" -version = "0.48.0" +version = "0.48.1" dependencies = [ - "base64", + "base64 0.21.7", "bech32", "clap", "colored", @@ -1919,9 +1925,9 @@ dependencies = [ [[package]] name = "multiversx-sc-snippets" -version = "0.48.0" +version = "0.48.1" dependencies = [ - "base64", + "base64 0.21.7", "env_logger", "futures", "hex", @@ -1933,7 +1939,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] @@ -1943,7 +1949,7 @@ name = "multiversx-sdk" version = "0.3.2" dependencies = [ "anyhow", - "base64", + "base64 0.21.7", "bech32", "bip39", "hex", @@ -1964,7 +1970,7 @@ dependencies = [ [[package]] name = "multiversx-wegld-swap-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", "multiversx-sc-modules", @@ -2161,9 +2167,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.101" +version = "0.9.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dda2b0f344e78efc2facf7d195d098df0dd72151b26ab98da807afc26c198dff" +checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" dependencies = [ "cc", "libc", @@ -2231,9 +2237,9 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" dependencies = [ "lock_api", "parking_lot_core", @@ -2241,15 +2247,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets 0.48.5", + "windows-targets 0.52.5", ] [[package]] @@ -2285,11 +2291,11 @@ dependencies = [ [[package]] name = "pem" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8fcc794035347fb64beda2d3b462595dd2753e3f268d89c5aae77e8cf2c310" +checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" dependencies = [ - "base64", + "base64 0.22.0", "serde", ] @@ -2301,9 +2307,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -2509,7 +2515,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.12", + "getrandom 0.2.14", ] [[package]] @@ -2556,18 +2562,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.2", ] [[package]] name = "regex" -version = "1.10.3" +version = "1.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" dependencies = [ "aho-corasick", "memchr", @@ -2588,9 +2594,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" [[package]] name = "reqwest" @@ -2598,7 +2604,7 @@ version = "0.11.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" dependencies = [ - "base64", + "base64 0.21.7", "bytes", "encoding_rs", "futures-core", @@ -2719,9 +2725,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.32" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ "bitflags 2.4.2", "errno", @@ -2736,7 +2742,7 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64", + "base64 0.21.7", ] [[package]] @@ -2788,9 +2794,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.9.2" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +checksum = "770452e37cad93e0a50d5abc3990d2bc351c36d0328f86cefec2f2fb206eaef6" dependencies = [ "bitflags 1.3.2", "core-foundation", @@ -2801,9 +2807,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.9.1" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +checksum = "41f3cc463c0ef97e11c3461a9d3787412d30e8e7eb907c79180c4a57bf7c04ef" dependencies = [ "core-foundation-sys", "libc", @@ -2850,18 +2856,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.197" +version = "1.0.199" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +checksum = "0c9f6e76df036c77cd94996771fb40db98187f096dd0b9af39c6c6e452ba966a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.197" +version = "1.0.199" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "11bd257a6541e141e42ca6d24ae26f7714887b47e89aa739099104c7e4d3b7fc" dependencies = [ "proc-macro2", "quote", @@ -2870,9 +2876,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.114" +version = "1.0.116" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" +checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" dependencies = [ "indexmap", "itoa", @@ -2882,9 +2888,9 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.18" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", @@ -2965,9 +2971,9 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" dependencies = [ "libc", ] @@ -3012,9 +3018,9 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", "windows-sys 0.52.0", @@ -3038,9 +3044,9 @@ dependencies = [ [[package]] name = "strsim" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "subtle" @@ -3131,9 +3137,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.36.0" +version = "1.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" +checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" dependencies = [ "backtrace", "bytes", @@ -3207,9 +3213,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.9" +version = "0.22.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4" +checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" dependencies = [ "indexmap", "serde", @@ -3508,37 +3514,15 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" dependencies = [ - "winapi", + "windows-sys 0.52.0", ] -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - [[package]] name = "windows-sys" version = "0.48.0" @@ -3554,7 +3538,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.5", ] [[package]] @@ -3574,17 +3558,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" dependencies = [ - "windows_aarch64_gnullvm 0.52.4", - "windows_aarch64_msvc 0.52.4", - "windows_i686_gnu 0.52.4", - "windows_i686_msvc 0.52.4", - "windows_x86_64_gnu 0.52.4", - "windows_x86_64_gnullvm 0.52.4", - "windows_x86_64_msvc 0.52.4", + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", ] [[package]] @@ -3595,9 +3580,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" [[package]] name = "windows_aarch64_msvc" @@ -3607,9 +3592,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" [[package]] name = "windows_i686_gnu" @@ -3619,9 +3604,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.4" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" [[package]] name = "windows_i686_msvc" @@ -3631,9 +3622,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" [[package]] name = "windows_x86_64_gnu" @@ -3643,9 +3634,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" [[package]] name = "windows_x86_64_gnullvm" @@ -3655,9 +3646,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" [[package]] name = "windows_x86_64_msvc" @@ -3667,15 +3658,15 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" [[package]] name = "winnow" -version = "0.6.5" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8" +checksum = "14b9415ee827af173ebb3f15f9083df5a122eb93572ec28741fb153356ea2578" dependencies = [ "memchr", ] diff --git a/contracts/benchmarks/large-storage/Cargo.toml b/contracts/benchmarks/large-storage/Cargo.toml index 9aae12836b..5b6fa96682 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/large-storage/meta/Cargo.toml b/contracts/benchmarks/large-storage/meta/Cargo.toml index 0345a383dc..629989c496 100644 --- a/contracts/benchmarks/large-storage/meta/Cargo.toml +++ b/contracts/benchmarks/large-storage/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/large-storage/wasm/Cargo.toml b/contracts/benchmarks/large-storage/wasm/Cargo.toml index 776e59a0ce..1fea846894 100644 --- a/contracts/benchmarks/large-storage/wasm/Cargo.toml +++ b/contracts/benchmarks/large-storage/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/benchmark-common/Cargo.toml b/contracts/benchmarks/mappers/benchmark-common/Cargo.toml index 4c5fdb3fbc..3e2b4677ac 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.48.0" +version = "0.48.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/linked-list-repeat/Cargo.toml b/contracts/benchmarks/mappers/linked-list-repeat/Cargo.toml index e2edd8010e..369f30eec7 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.48.0" +version = "0.48.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 d09a21b81b..b20ce94c64 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/linked-list-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml index 8289547693..a75a75c4a5 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/map-repeat/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/Cargo.toml index 8090f309d1..0aea4b42cd 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.48.0" +version = "0.48.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml index 3d4974e6c0..5db6649fca 100644 --- a/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml index 9653a54fc7..796574dd80 100644 --- a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/queue-repeat/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/Cargo.toml index 024846618c..95beb1f2a7 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.48.0" +version = "0.48.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml index edba3ec0f0..c9f6ae7228 100644 --- a/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml index 77c061d305..47fc1790b6 100644 --- a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/set-repeat/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/Cargo.toml index 84bcc8722d..888f905fe0 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.48.0" +version = "0.48.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml index e8f3967a3a..a8b03b8e47 100644 --- a/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml index 31ca740ad8..81af5ada3c 100644 --- a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 2975e1ae49..c94dd28a88 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.48.0" +version = "0.48.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 1633ab9cde..c988d432eb 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/single-value-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml index 19af5c7c51..b562ace439 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/vec-repeat/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/Cargo.toml index 3cd913d909..08bdce3673 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.48.0" +version = "0.48.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml index 200297db20..4cfcc8a955 100644 --- a/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml index 520aa883b1..a7079ec058 100644 --- a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/send-tx-repeat/Cargo.toml b/contracts/benchmarks/send-tx-repeat/Cargo.toml index d0bc9aa646..64db88c52c 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml b/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml index d8b911fd5e..2ceb7301ac 100644 --- a/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml index 14a876b56e..17ac4aa9b8 100644 --- a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/str-repeat/Cargo.toml b/contracts/benchmarks/str-repeat/Cargo.toml index 7d0b90f1ba..d38f7d8513 100644 --- a/contracts/benchmarks/str-repeat/Cargo.toml +++ b/contracts/benchmarks/str-repeat/Cargo.toml @@ -12,10 +12,10 @@ path = "src/str_repeat.rs" managed-buffer-builder-cached = ["multiversx-sc/managed-buffer-builder-cached"] [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/str-repeat/meta/Cargo.toml b/contracts/benchmarks/str-repeat/meta/Cargo.toml index d27ba4d2ff..8f451d4a6d 100644 --- a/contracts/benchmarks/str-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/str-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml index 07a34e0d0c..193814ec43 100644 --- a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml +++ b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml index 69a11ff01e..7f20111eda 100644 --- a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml +++ b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml @@ -26,7 +26,7 @@ path = ".." features = ["managed-buffer-builder-cached"] [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/str-repeat/wasm/Cargo.toml b/contracts/benchmarks/str-repeat/wasm/Cargo.toml index e6f3ddba95..0683f552a1 100644 --- a/contracts/benchmarks/str-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/str-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/core/price-aggregator/Cargo.toml b/contracts/core/price-aggregator/Cargo.toml index 6ef93360eb..2e66481485 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.48.0" +version = "0.48.1" authors = [ "Claudiu-Marcel Bruda ", "MultiversX ", @@ -19,15 +19,15 @@ edition = "2021" path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.48.0" +version = "0.48.1" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" [dependencies] diff --git a/contracts/core/price-aggregator/meta/Cargo.toml b/contracts/core/price-aggregator/meta/Cargo.toml index f8cbef8d57..46bfa8d5b9 100644 --- a/contracts/core/price-aggregator/meta/Cargo.toml +++ b/contracts/core/price-aggregator/meta/Cargo.toml @@ -8,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/core/price-aggregator/wasm/Cargo.toml b/contracts/core/price-aggregator/wasm/Cargo.toml index dc2c54549f..193aa041fe 100644 --- a/contracts/core/price-aggregator/wasm/Cargo.toml +++ b/contracts/core/price-aggregator/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/core/wegld-swap/Cargo.toml b/contracts/core/wegld-swap/Cargo.toml index f788d5c243..3b5e2404d8 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.48.0" +version = "0.48.1" authors = [ "Dorin Iancu ", @@ -20,13 +20,13 @@ edition = "2021" path = "src/wegld.rs" [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.48.0" +version = "0.48.1" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" diff --git a/contracts/core/wegld-swap/meta/Cargo.toml b/contracts/core/wegld-swap/meta/Cargo.toml index f9595aea8d..76b79edf66 100644 --- a/contracts/core/wegld-swap/meta/Cargo.toml +++ b/contracts/core/wegld-swap/meta/Cargo.toml @@ -11,10 +11,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/core/wegld-swap/wasm/Cargo.toml b/contracts/core/wegld-swap/wasm/Cargo.toml index 68037cc393..898c67e9f5 100644 --- a/contracts/core/wegld-swap/wasm/Cargo.toml +++ b/contracts/core/wegld-swap/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/adder/Cargo.toml b/contracts/examples/adder/Cargo.toml index af28bd0554..fcb4a81614 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" diff --git a/contracts/examples/adder/interact/Cargo.toml b/contracts/examples/adder/interact/Cargo.toml index 3d4ad2fd1a..b257e2f0fb 100644 --- a/contracts/examples/adder/interact/Cargo.toml +++ b/contracts/examples/adder/interact/Cargo.toml @@ -18,5 +18,5 @@ toml = "0.8.6" path = ".." [dependencies.multiversx-sc-snippets] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/snippets" diff --git a/contracts/examples/adder/meta/Cargo.toml b/contracts/examples/adder/meta/Cargo.toml index 88f66d1c86..c5f828ca1a 100644 --- a/contracts/examples/adder/meta/Cargo.toml +++ b/contracts/examples/adder/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/adder/wasm/Cargo.toml b/contracts/examples/adder/wasm/Cargo.toml index d7cff9ee02..39a90d64f8 100644 --- a/contracts/examples/adder/wasm/Cargo.toml +++ b/contracts/examples/adder/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/bonding-curve-contract/Cargo.toml b/contracts/examples/bonding-curve-contract/Cargo.toml index 9379cb6240..ae60af5f8e 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.48.0" +version = "0.48.1" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" diff --git a/contracts/examples/bonding-curve-contract/meta/Cargo.toml b/contracts/examples/bonding-curve-contract/meta/Cargo.toml index 42aedeffb2..f5ab553289 100644 --- a/contracts/examples/bonding-curve-contract/meta/Cargo.toml +++ b/contracts/examples/bonding-curve-contract/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/bonding-curve-contract/wasm/Cargo.toml b/contracts/examples/bonding-curve-contract/wasm/Cargo.toml index 351e890820..694f0e06e2 100644 --- a/contracts/examples/bonding-curve-contract/wasm/Cargo.toml +++ b/contracts/examples/bonding-curve-contract/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/check-pause/Cargo.toml b/contracts/examples/check-pause/Cargo.toml index 3de8796660..cda87d9f27 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" [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.48.0" +version = "0.48.1" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" diff --git a/contracts/examples/check-pause/meta/Cargo.toml b/contracts/examples/check-pause/meta/Cargo.toml index 6fa4de8996..839f004ce3 100644 --- a/contracts/examples/check-pause/meta/Cargo.toml +++ b/contracts/examples/check-pause/meta/Cargo.toml @@ -9,6 +9,6 @@ authors = ["Alin Cruceat "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/check-pause/wasm/Cargo.toml b/contracts/examples/check-pause/wasm/Cargo.toml index 16f0ab1ba3..23d31951b1 100644 --- a/contracts/examples/check-pause/wasm/Cargo.toml +++ b/contracts/examples/check-pause/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crowdfunding-esdt/Cargo.toml b/contracts/examples/crowdfunding-esdt/Cargo.toml index b2cdf8c41e..e0a91a86d6 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" [dev-dependencies] diff --git a/contracts/examples/crowdfunding-esdt/meta/Cargo.toml b/contracts/examples/crowdfunding-esdt/meta/Cargo.toml index a32bd3567a..d2b9ff88fe 100644 --- a/contracts/examples/crowdfunding-esdt/meta/Cargo.toml +++ b/contracts/examples/crowdfunding-esdt/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml b/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml index 51e3aa0862..80d4c8f4ee 100644 --- a/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml +++ b/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-bubbles/Cargo.toml b/contracts/examples/crypto-bubbles/Cargo.toml index 47b0cc1c12..3432fb2fb1 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" diff --git a/contracts/examples/crypto-bubbles/meta/Cargo.toml b/contracts/examples/crypto-bubbles/meta/Cargo.toml index cff3b28c2e..a5a0becbbf 100644 --- a/contracts/examples/crypto-bubbles/meta/Cargo.toml +++ b/contracts/examples/crypto-bubbles/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-bubbles/wasm/Cargo.toml b/contracts/examples/crypto-bubbles/wasm/Cargo.toml index 3d0f3d9cd6..c3d76936e1 100644 --- a/contracts/examples/crypto-bubbles/wasm/Cargo.toml +++ b/contracts/examples/crypto-bubbles/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 97ff64e9ac..22ba077695 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.48.0" +version = "0.48.1" 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 9b63e6b416..80fc00284b 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.48.0" +version = "0.48.1" path = "../../../../../framework/base" diff --git a/contracts/examples/crypto-kitties/kitty-auction/Cargo.toml b/contracts/examples/crypto-kitties/kitty-auction/Cargo.toml index 6fdda40603..720f88798f 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.48.0" +version = "0.48.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 2c57c9ac05..f26826105f 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-auction/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml index 1f19435dce..e3d1dfa4f3 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-kitties/kitty-genetic-alg/Cargo.toml b/contracts/examples/crypto-kitties/kitty-genetic-alg/Cargo.toml index 171ebb65f8..3b68070b25 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.48.0" +version = "0.48.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 a9f0a17cfa..e17aa95b83 100644 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false 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 deb7ae9c6f..503d06dc6d 100644 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-kitties/kitty-ownership/Cargo.toml b/contracts/examples/crypto-kitties/kitty-ownership/Cargo.toml index da5800286f..fc0688e842 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.48.0" +version = "0.48.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 ccf8cb2ea2..41ecf9d5c1 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-ownership/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml index b00ca52a2b..7713372b52 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-zombies/Cargo.toml b/contracts/examples/crypto-zombies/Cargo.toml index b0e2a4e81e..e269e3ca5b 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" diff --git a/contracts/examples/crypto-zombies/meta/Cargo.toml b/contracts/examples/crypto-zombies/meta/Cargo.toml index fc1eb0073f..7b017c5472 100644 --- a/contracts/examples/crypto-zombies/meta/Cargo.toml +++ b/contracts/examples/crypto-zombies/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-zombies/wasm/Cargo.toml b/contracts/examples/crypto-zombies/wasm/Cargo.toml index 51f46ac505..620c7c5590 100644 --- a/contracts/examples/crypto-zombies/wasm/Cargo.toml +++ b/contracts/examples/crypto-zombies/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/digital-cash/Cargo.toml b/contracts/examples/digital-cash/Cargo.toml index 6d75b7b98e..74b47bb738 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" diff --git a/contracts/examples/digital-cash/meta/Cargo.toml b/contracts/examples/digital-cash/meta/Cargo.toml index 7cdda9a523..e01aa83bcb 100644 --- a/contracts/examples/digital-cash/meta/Cargo.toml +++ b/contracts/examples/digital-cash/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/digital-cash/wasm/Cargo.toml b/contracts/examples/digital-cash/wasm/Cargo.toml index 14a1a7e95b..64a7cf1dca 100644 --- a/contracts/examples/digital-cash/wasm/Cargo.toml +++ b/contracts/examples/digital-cash/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/empty/Cargo.toml b/contracts/examples/empty/Cargo.toml index d36449cf82..7670b2a2bf 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" [dev-dependencies] diff --git a/contracts/examples/empty/meta/Cargo.toml b/contracts/examples/empty/meta/Cargo.toml index 7b869c9cdf..d981b28a0d 100644 --- a/contracts/examples/empty/meta/Cargo.toml +++ b/contracts/examples/empty/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/empty/wasm/Cargo.toml b/contracts/examples/empty/wasm/Cargo.toml index 50c6c7519c..3c188abc8b 100644 --- a/contracts/examples/empty/wasm/Cargo.toml +++ b/contracts/examples/empty/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 62efe492c6..2aacb48f36 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 41be9842d9..25339aeff0 100644 --- a/contracts/examples/esdt-transfer-with-fee/meta/Cargo.toml +++ b/contracts/examples/esdt-transfer-with-fee/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml index 8e57a857ec..da0a01f1f5 100644 --- a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml +++ b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/factorial/Cargo.toml b/contracts/examples/factorial/Cargo.toml index f49f2de799..52524195a5 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" diff --git a/contracts/examples/factorial/meta/Cargo.toml b/contracts/examples/factorial/meta/Cargo.toml index 561e5cc8bb..27b6c326e7 100644 --- a/contracts/examples/factorial/meta/Cargo.toml +++ b/contracts/examples/factorial/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/factorial/wasm/Cargo.toml b/contracts/examples/factorial/wasm/Cargo.toml index 33ef155fb4..df2ac02176 100644 --- a/contracts/examples/factorial/wasm/Cargo.toml +++ b/contracts/examples/factorial/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/fractional-nfts/Cargo.toml b/contracts/examples/fractional-nfts/Cargo.toml index fda3f92c61..7e056f731a 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.48.0" +version = "0.48.1" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" diff --git a/contracts/examples/fractional-nfts/meta/Cargo.toml b/contracts/examples/fractional-nfts/meta/Cargo.toml index 330433a42f..1abc450067 100644 --- a/contracts/examples/fractional-nfts/meta/Cargo.toml +++ b/contracts/examples/fractional-nfts/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/fractional-nfts/wasm/Cargo.toml b/contracts/examples/fractional-nfts/wasm/Cargo.toml index 036b0bfd69..8f29fae438 100644 --- a/contracts/examples/fractional-nfts/wasm/Cargo.toml +++ b/contracts/examples/fractional-nfts/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/lottery-esdt/Cargo.toml b/contracts/examples/lottery-esdt/Cargo.toml index 47ef0326fd..00bbd9121e 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" diff --git a/contracts/examples/lottery-esdt/meta/Cargo.toml b/contracts/examples/lottery-esdt/meta/Cargo.toml index 5b87c8ade8..67e9e9636a 100644 --- a/contracts/examples/lottery-esdt/meta/Cargo.toml +++ b/contracts/examples/lottery-esdt/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/lottery-esdt/wasm/Cargo.toml b/contracts/examples/lottery-esdt/wasm/Cargo.toml index 6839c9dec0..3c1b5ca468 100644 --- a/contracts/examples/lottery-esdt/wasm/Cargo.toml +++ b/contracts/examples/lottery-esdt/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/multisig/Cargo.toml b/contracts/examples/multisig/Cargo.toml index f7bdb30ed5..618dae4a5e 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.48.0" +version = "0.48.1" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" [dev-dependencies.adder] @@ -27,7 +27,7 @@ path = "../adder" path = "../factorial" [dev-dependencies.multiversx-wegld-swap-sc] -version = "0.48.0" +version = "0.48.1" path = "../../core/wegld-swap" [dev-dependencies] diff --git a/contracts/examples/multisig/interact/Cargo.toml b/contracts/examples/multisig/interact/Cargo.toml index fef68a6a22..3feae5b638 100644 --- a/contracts/examples/multisig/interact/Cargo.toml +++ b/contracts/examples/multisig/interact/Cargo.toml @@ -18,13 +18,13 @@ toml = "0.8.6" path = ".." [dependencies.multiversx-sc-modules] -version = "0.48.0" +version = "0.48.1" path = "../../../../contracts/modules" [dependencies.multiversx-sc-snippets] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/snippets" [dependencies.multiversx-sc-scenario] -version = "=0.48.0" +version = "=0.48.1" path = "../../../../framework/scenario" diff --git a/contracts/examples/multisig/meta/Cargo.toml b/contracts/examples/multisig/meta/Cargo.toml index 02d4e80d81..b019bfbb43 100644 --- a/contracts/examples/multisig/meta/Cargo.toml +++ b/contracts/examples/multisig/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/multisig/wasm-multisig-full/Cargo.toml b/contracts/examples/multisig/wasm-multisig-full/Cargo.toml index 7660525b67..a36835c83f 100644 --- a/contracts/examples/multisig/wasm-multisig-full/Cargo.toml +++ b/contracts/examples/multisig/wasm-multisig-full/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 49be4aa565..02ed495935 100644 --- a/contracts/examples/multisig/wasm-multisig-view/Cargo.toml +++ b/contracts/examples/multisig/wasm-multisig-view/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/multisig/wasm/Cargo.toml b/contracts/examples/multisig/wasm/Cargo.toml index 708980188e..79597e9a70 100644 --- a/contracts/examples/multisig/wasm/Cargo.toml +++ b/contracts/examples/multisig/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-minter/Cargo.toml b/contracts/examples/nft-minter/Cargo.toml index b845b98fc9..eeaec71e85 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-minter/meta/Cargo.toml b/contracts/examples/nft-minter/meta/Cargo.toml index 16bc48dabd..d483bb65f4 100644 --- a/contracts/examples/nft-minter/meta/Cargo.toml +++ b/contracts/examples/nft-minter/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-minter/wasm/Cargo.toml b/contracts/examples/nft-minter/wasm/Cargo.toml index 800d0012f8..fd32ff41c5 100644 --- a/contracts/examples/nft-minter/wasm/Cargo.toml +++ b/contracts/examples/nft-minter/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-storage-prepay/Cargo.toml b/contracts/examples/nft-storage-prepay/Cargo.toml index b3fe4779eb..142d549a25 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-storage-prepay/meta/Cargo.toml b/contracts/examples/nft-storage-prepay/meta/Cargo.toml index 8bd9be5154..7a03515dbe 100644 --- a/contracts/examples/nft-storage-prepay/meta/Cargo.toml +++ b/contracts/examples/nft-storage-prepay/meta/Cargo.toml @@ -11,6 +11,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-storage-prepay/wasm/Cargo.toml b/contracts/examples/nft-storage-prepay/wasm/Cargo.toml index 4966016fe3..34df978063 100644 --- a/contracts/examples/nft-storage-prepay/wasm/Cargo.toml +++ b/contracts/examples/nft-storage-prepay/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-subscription/Cargo.toml b/contracts/examples/nft-subscription/Cargo.toml index fce4b0e4be..748d63535f 100644 --- a/contracts/examples/nft-subscription/Cargo.toml +++ b/contracts/examples/nft-subscription/Cargo.toml @@ -9,13 +9,13 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.48.0" +version = "0.48.1" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-subscription/meta/Cargo.toml b/contracts/examples/nft-subscription/meta/Cargo.toml index 60363c9f03..73b766639d 100644 --- a/contracts/examples/nft-subscription/meta/Cargo.toml +++ b/contracts/examples/nft-subscription/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-subscription/wasm/Cargo.toml b/contracts/examples/nft-subscription/wasm/Cargo.toml index 20cfc13365..e47d13f71e 100644 --- a/contracts/examples/nft-subscription/wasm/Cargo.toml +++ b/contracts/examples/nft-subscription/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/order-book/factory/Cargo.toml b/contracts/examples/order-book/factory/Cargo.toml index 1715338ef5..cc3db5aa7b 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.48.0" +version = "0.48.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/scenario" diff --git a/contracts/examples/order-book/factory/meta/Cargo.toml b/contracts/examples/order-book/factory/meta/Cargo.toml index 3b5a3f22e1..b127392c11 100644 --- a/contracts/examples/order-book/factory/meta/Cargo.toml +++ b/contracts/examples/order-book/factory/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/order-book/factory/wasm/Cargo.toml b/contracts/examples/order-book/factory/wasm/Cargo.toml index e198620a70..d4af86c8a5 100644 --- a/contracts/examples/order-book/factory/wasm/Cargo.toml +++ b/contracts/examples/order-book/factory/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/order-book/pair/Cargo.toml b/contracts/examples/order-book/pair/Cargo.toml index e87e2df5fd..7f2bbabdd4 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.48.0" +version = "0.48.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/scenario" diff --git a/contracts/examples/order-book/pair/meta/Cargo.toml b/contracts/examples/order-book/pair/meta/Cargo.toml index 944ad90283..ceee771510 100644 --- a/contracts/examples/order-book/pair/meta/Cargo.toml +++ b/contracts/examples/order-book/pair/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/order-book/pair/wasm/Cargo.toml b/contracts/examples/order-book/pair/wasm/Cargo.toml index db63ea95cf..30f74dee55 100644 --- a/contracts/examples/order-book/pair/wasm/Cargo.toml +++ b/contracts/examples/order-book/pair/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/ping-pong-egld/Cargo.toml b/contracts/examples/ping-pong-egld/Cargo.toml index 7b835c30a9..1d0209ccf2 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" diff --git a/contracts/examples/ping-pong-egld/meta/Cargo.toml b/contracts/examples/ping-pong-egld/meta/Cargo.toml index 35e1eb7004..146b367bd5 100644 --- a/contracts/examples/ping-pong-egld/meta/Cargo.toml +++ b/contracts/examples/ping-pong-egld/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/ping-pong-egld/wasm/Cargo.toml b/contracts/examples/ping-pong-egld/wasm/Cargo.toml index 212fc83957..0d14eef644 100644 --- a/contracts/examples/ping-pong-egld/wasm/Cargo.toml +++ b/contracts/examples/ping-pong-egld/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/proxy-pause/Cargo.toml b/contracts/examples/proxy-pause/Cargo.toml index 1cb8060d0c..50f560d16f 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 654659ac3a..9c9c54c2bd 100644 --- a/contracts/examples/proxy-pause/meta/Cargo.toml +++ b/contracts/examples/proxy-pause/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = [ "you",] path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/proxy-pause/wasm/Cargo.toml b/contracts/examples/proxy-pause/wasm/Cargo.toml index 9071e6aad0..cc1649d595 100644 --- a/contracts/examples/proxy-pause/wasm/Cargo.toml +++ b/contracts/examples/proxy-pause/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/rewards-distribution/Cargo.toml b/contracts/examples/rewards-distribution/Cargo.toml index d17e0cf877..e2cced12b5 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.48.0" +version = "0.48.1" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" diff --git a/contracts/examples/rewards-distribution/meta/Cargo.toml b/contracts/examples/rewards-distribution/meta/Cargo.toml index 6e3700a114..0225532a08 100644 --- a/contracts/examples/rewards-distribution/meta/Cargo.toml +++ b/contracts/examples/rewards-distribution/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = ["Claudiu-Marcel Bruda "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/rewards-distribution/wasm/Cargo.toml b/contracts/examples/rewards-distribution/wasm/Cargo.toml index 0240cad321..d524872e2f 100644 --- a/contracts/examples/rewards-distribution/wasm/Cargo.toml +++ b/contracts/examples/rewards-distribution/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/seed-nft-minter/Cargo.toml b/contracts/examples/seed-nft-minter/Cargo.toml index 466ef0d0d0..dd732d1613 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.48.0" +version = "0.48.1" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" diff --git a/contracts/examples/seed-nft-minter/meta/Cargo.toml b/contracts/examples/seed-nft-minter/meta/Cargo.toml index 2a9164c5d5..4ac054f405 100644 --- a/contracts/examples/seed-nft-minter/meta/Cargo.toml +++ b/contracts/examples/seed-nft-minter/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = ["Claudiu-Marcel Bruda "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/seed-nft-minter/wasm/Cargo.toml b/contracts/examples/seed-nft-minter/wasm/Cargo.toml index b16c0eb5be..09d0d167e3 100644 --- a/contracts/examples/seed-nft-minter/wasm/Cargo.toml +++ b/contracts/examples/seed-nft-minter/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/token-release/Cargo.toml b/contracts/examples/token-release/Cargo.toml index 1ef042c083..53d5f29a71 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" diff --git a/contracts/examples/token-release/meta/Cargo.toml b/contracts/examples/token-release/meta/Cargo.toml index 9f5e40cb3f..92e78d42f9 100644 --- a/contracts/examples/token-release/meta/Cargo.toml +++ b/contracts/examples/token-release/meta/Cargo.toml @@ -10,7 +10,7 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/token-release/wasm/Cargo.toml b/contracts/examples/token-release/wasm/Cargo.toml index a5e9ad9ebb..356d0a7ce1 100644 --- a/contracts/examples/token-release/wasm/Cargo.toml +++ b/contracts/examples/token-release/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/abi-tester/Cargo.toml b/contracts/feature-tests/abi-tester/Cargo.toml index 388a559e3f..7c0e7e80b5 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.48.0" +version = "0.48.1" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" [dev-dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" 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 2e2ef38272..2abfdd2a48 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.48.0" + "version": "0.48.1" } }, "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 1219d4fe9b..5a22e77ae9 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.48.0" + "version": "0.48.1" } }, "docs": [ diff --git a/contracts/feature-tests/abi-tester/meta/Cargo.toml b/contracts/feature-tests/abi-tester/meta/Cargo.toml index f494dd338d..13ea670021 100644 --- a/contracts/feature-tests/abi-tester/meta/Cargo.toml +++ b/contracts/feature-tests/abi-tester/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false 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 05200dcfbb..974a67c2aa 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 6bc368141a..ec7a639034 100644 --- a/contracts/feature-tests/abi-tester/wasm/Cargo.toml +++ b/contracts/feature-tests/abi-tester/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/Cargo.toml b/contracts/feature-tests/alloc-features/Cargo.toml index ed5f30b32f..a68c272034 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.48.0" +version = "0.48.1" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 95d1615d64..7b89a027f5 100644 --- a/contracts/feature-tests/alloc-features/meta/Cargo.toml +++ b/contracts/feature-tests/alloc-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml index e79f7e1f26..1dddab93aa 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml index e8ca98b331..6cc627db2c 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/wasm/Cargo.toml b/contracts/feature-tests/alloc-features/wasm/Cargo.toml index b5565d0ed2..14b4608740 100644 --- a/contracts/feature-tests/alloc-features/wasm/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/basic-features/Cargo.toml b/contracts/feature-tests/basic-features/Cargo.toml index a9d29b944a..9eb9c5c71c 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" [dependencies.multiversx-sc-modules] -version = "0.48.0" +version = "0.48.1" 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 73201f5eaa..4c2ec62f46 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.8.6" path = ".." [dependencies.multiversx-sc-snippets] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/snippets" diff --git a/contracts/feature-tests/basic-features/meta/Cargo.toml b/contracts/feature-tests/basic-features/meta/Cargo.toml index 8afa191498..064891ac10 100644 --- a/contracts/feature-tests/basic-features/meta/Cargo.toml +++ b/contracts/feature-tests/basic-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false 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 d138f0ea4b..9d856c470e 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 21bdef1ace..af9e347794 100644 --- a/contracts/feature-tests/basic-features/wasm/Cargo.toml +++ b/contracts/feature-tests/basic-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = true path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 720bcbd08e..dcdae6d108 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 e30a20c1c5..92d80d90a0 100644 --- a/contracts/feature-tests/big-float-features/meta/Cargo.toml +++ b/contracts/feature-tests/big-float-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/big-float-features/wasm/Cargo.toml b/contracts/feature-tests/big-float-features/wasm/Cargo.toml index 52dbbfc0b8..0aa0ca142e 100644 --- a/contracts/feature-tests/big-float-features/wasm/Cargo.toml +++ b/contracts/feature-tests/big-float-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/Cargo.toml b/contracts/feature-tests/composability/Cargo.toml index abfaefa4b8..6332301262 100644 --- a/contracts/feature-tests/composability/Cargo.toml +++ b/contracts/feature-tests/composability/Cargo.toml @@ -33,9 +33,9 @@ path = "recursive-caller" path = "vault" [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 be47382548..1ef0c0c225 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.48.0" +version = "0.48.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 6bc3a0d913..c7e165f394 100644 --- a/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false 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 07f233341c..0849b96d5b 100644 --- a/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 7a5ca344e2..567a272e2a 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.48.0" +version = "0.48.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 46f86e301b..6183b93122 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.48.0" +version = "0.48.1" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 08b8dc1856..01fceb451a 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.48.1" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../../framework/meta" default-features = false 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 209e8f2846..49863070ff 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 862cbd2b83..38407e5e4e 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.48.0" +version = "0.48.1" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 186a1e4e03..8e3b0d819c 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.48.1" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../../framework/meta" default-features = false 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 0e23835bda..dc6db87986 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 fd79fe48f9..2ccd253223 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 3059fd0285..b659cd0d18 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.48.0" +version = "0.48.1" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 060df7dcde..18e6fce479 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.48.1" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../../framework/meta" default-features = false 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 680b44e189..46ccb26612 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 503d0fc258..a31d643f4c 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.48.0" +version = "0.48.1" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 046302572d..23bb1ab2cb 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.48.1" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../../framework/meta" default-features = false 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 a6be0ec3ff..6cc2cdff13 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 7f9e36e869..f2cd325c08 100644 --- a/contracts/feature-tests/composability/forwarder-queue/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/Cargo.toml @@ -12,14 +12,14 @@ path = "src/forwarder_queue.rs" path = "../vault" [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/base" [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" optional = true [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 83a6f94e22..32d7cb6aa8 100644 --- a/contracts/feature-tests/composability/forwarder-queue/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false 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 3f8605b67d..6fdabaefda 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 522720c797..be9b3a7549 100644 --- a/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 898735c43e..134cb94004 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.48.0" +version = "0.48.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 5cf1a567e8..d700ea2a51 100644 --- a/contracts/feature-tests/composability/forwarder-raw/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-raw/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false 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 44f7e3b5eb..8ab31ee41b 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 7f865a4e03..b8e486edb7 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 cbc950745d..5b5c0108b2 100644 --- a/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/forwarder/Cargo.toml b/contracts/feature-tests/composability/forwarder/Cargo.toml index d4cd960015..f8aa438588 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.48.0" +version = "0.48.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/forwarder/meta/Cargo.toml b/contracts/feature-tests/composability/forwarder/meta/Cargo.toml index 677ae9b198..d8911c3f1d 100644 --- a/contracts/feature-tests/composability/forwarder/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml b/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml index 87d3ac47c6..9bc90a4fe2 100644 --- a/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/interact/Cargo.toml b/contracts/feature-tests/composability/interact/Cargo.toml index f06c1178a1..0f15a7432a 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.48.0" +version = "0.48.1" path = "../../../../contracts/modules" [dependencies.multiversx-sc-snippets] -version = "0.48.0" +version = "0.48.1" 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 8ad9825389..b5dbc4bb26 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.48.0" +version = "0.48.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 fea51513bd..0895ea8849 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,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false 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 73dceaa520..85cf633c9e 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 9efa7a4a11..9fd6433748 100644 --- a/contracts/feature-tests/composability/promises-features/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/Cargo.toml @@ -12,6 +12,6 @@ path = "src/promises_main.rs" path = "../vault" [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/base" diff --git a/contracts/feature-tests/composability/promises-features/meta/Cargo.toml b/contracts/feature-tests/composability/promises-features/meta/Cargo.toml index ca156aaf23..535835eea8 100644 --- a/contracts/feature-tests/composability/promises-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml b/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml index 324dafa5d4..06de0a0367 100644 --- a/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 fe652ba3d0..734caab8e5 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.4.1" [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 db20a499dd..382322c6d8 100644 --- a/contracts/feature-tests/composability/proxy-test-first/meta/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-first/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false 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 c1eebcc5b9..b38bbd9b84 100644 --- a/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 1f84784bcc..ec491380e4 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.48.0" +version = "0.48.1" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 1838388c4a..61e56848e6 100644 --- a/contracts/feature-tests/composability/proxy-test-second/meta/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-second/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false 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 3dc55bf167..68b6ff26d7 100644 --- a/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 e68bc01059..2c55d5f5fb 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.48.0" +version = "0.48.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 631c940ac7..f236bc8cb5 100644 --- a/contracts/feature-tests/composability/recursive-caller/meta/Cargo.toml +++ b/contracts/feature-tests/composability/recursive-caller/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml index d040ee6a0e..077d61f49f 100644 --- a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 ec4dd83adb..6ac8831405 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.48.0" +version = "0.48.1" path = "../../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.48.0" +version = "0.48.1" path = "../../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 1e918a72cc..58b8add8ee 100644 --- a/contracts/feature-tests/composability/transfer-role-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/transfer-role-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false 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 dca2b5415f..92ca0cea4d 100644 --- a/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/vault/Cargo.toml b/contracts/feature-tests/composability/vault/Cargo.toml index a4a8ecc80c..aece88286e 100644 --- a/contracts/feature-tests/composability/vault/Cargo.toml +++ b/contracts/feature-tests/composability/vault/Cargo.toml @@ -10,9 +10,9 @@ path = "src/vault.rs" [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/vault/meta/Cargo.toml b/contracts/feature-tests/composability/vault/meta/Cargo.toml index e99529f668..2a7c63ee3f 100644 --- a/contracts/feature-tests/composability/vault/meta/Cargo.toml +++ b/contracts/feature-tests/composability/vault/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false 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 f598ee7a66..b7c65021e3 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml index cb8b2e5076..26b9b015cd 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 7513310bff..d8d3d17aac 100644 --- a/contracts/feature-tests/composability/vault/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 ff4595fa13..5c18660536 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.48.0" +version = "0.48.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 0dc9b2ca7f..f929c7c105 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false 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 0aea0a7c62..0b8c916c0a 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 747b44ed09..0cb5ab615f 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.48.0" +version = "0.48.1" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 50152e90f4..2555c62735 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false 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 516a43eb63..04ddab6e25 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 29330a315c..84b4ed1422 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.48.0" +version = "0.48.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 5094698b9a..a3005dc7a5 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false 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 ceb1f2e24f..01018d9bba 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 ba949e755a..b2a2908748 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.48.0" +version = "0.48.1" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 34f1067c10..41f4a03c09 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false 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 32dc473808..88bd84fd56 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 b4cf18bfad..44a5aa05cc 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.48.0" +version = "0.48.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 41e8801b40..e73119bdf0 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc20/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false 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 236319abc4..c01efbb7a4 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 4501c0b464..fa723cf47a 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.48.0" +version = "0.48.1" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 a9529971a8..45ea2fcbdf 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc721/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false 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 e5db8a5667..aaab30fad6 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/wasm-adapter" [workspace] 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 3469c841a7..1511bf2c91 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.48.0" +version = "0.48.1" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 02486b2086..7d2f5b3d15 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/meta" default-features = false 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 42237353f2..f999a60635 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/esdt-system-sc-mock/Cargo.toml b/contracts/feature-tests/esdt-system-sc-mock/Cargo.toml index 8740d1fdcb..5b4b511ed6 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 88dc69e511..93075bf8c3 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/meta/Cargo.toml +++ b/contracts/feature-tests/esdt-system-sc-mock/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false 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 710f03a2f5..1a28c98d4c 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.toml +++ b/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/exchange-features/Cargo.toml b/contracts/feature-tests/exchange-features/Cargo.toml index adf86f8ae9..6d3a48ad00 100644 --- a/contracts/feature-tests/exchange-features/Cargo.toml +++ b/contracts/feature-tests/exchange-features/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/exchange_features.rs" [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/exchange-features/meta/Cargo.toml b/contracts/feature-tests/exchange-features/meta/Cargo.toml index 589d79efaa..90e47b7c03 100644 --- a/contracts/feature-tests/exchange-features/meta/Cargo.toml +++ b/contracts/feature-tests/exchange-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/exchange-features/wasm/Cargo.toml b/contracts/feature-tests/exchange-features/wasm/Cargo.toml index ab4527595f..b8925ad4a4 100644 --- a/contracts/feature-tests/exchange-features/wasm/Cargo.toml +++ b/contracts/feature-tests/exchange-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 684fa23b9d..b9953c21ee 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 3657415363..5a5494af2a 100644 --- a/contracts/feature-tests/formatted-message-features/meta/Cargo.toml +++ b/contracts/feature-tests/formatted-message-features/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = [ "you",] path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml b/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml index 4f674abe4b..d0599cc360 100644 --- a/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml +++ b/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/managed-map-features/Cargo.toml b/contracts/feature-tests/managed-map-features/Cargo.toml index cb63f04709..13ff3f0628 100644 --- a/contracts/feature-tests/managed-map-features/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/Cargo.toml @@ -9,11 +9,11 @@ publish = false path = "src/mmap_features.rs" [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 61694618e8..bf12a6a524 100644 --- a/contracts/feature-tests/managed-map-features/meta/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/managed-map-features/wasm/Cargo.toml b/contracts/feature-tests/managed-map-features/wasm/Cargo.toml index 17766d61c0..09e977363e 100644 --- a/contracts/feature-tests/managed-map-features/wasm/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 3dbd436d23..80fccb51f3 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 47d91e055b..4a96c5e067 100644 --- a/contracts/feature-tests/multi-contract-features/meta/Cargo.toml +++ b/contracts/feature-tests/multi-contract-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false 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 d79a234dd7..d6192e9eb3 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 e0860d7f9f..4b733fdda8 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 @@ -26,7 +26,7 @@ path = ".." features = ["example_feature"] [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 a54dbf64d6..21f2ef0bee 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 43733a6182..12144e1645 100644 --- a/contracts/feature-tests/multi-contract-features/wasm/Cargo.toml +++ b/contracts/feature-tests/multi-contract-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 91e73a3ee1..656c6e2b13 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 c456c8c35c..8c67b8ebba 100644 --- a/contracts/feature-tests/panic-message-features/meta/Cargo.toml +++ b/contracts/feature-tests/panic-message-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/panic-message-features/wasm/Cargo.toml b/contracts/feature-tests/panic-message-features/wasm/Cargo.toml index 06895f2613..93e00552f3 100644 --- a/contracts/feature-tests/panic-message-features/wasm/Cargo.toml +++ b/contracts/feature-tests/panic-message-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/payable-features/Cargo.toml b/contracts/feature-tests/payable-features/Cargo.toml index 713b045b04..6862e0ac62 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/payable-features/meta/Cargo.toml b/contracts/feature-tests/payable-features/meta/Cargo.toml index 93e4981ee2..850ef041c7 100644 --- a/contracts/feature-tests/payable-features/meta/Cargo.toml +++ b/contracts/feature-tests/payable-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/payable-features/wasm/Cargo.toml b/contracts/feature-tests/payable-features/wasm/Cargo.toml index 790b323a3a..55210f0e10 100644 --- a/contracts/feature-tests/payable-features/wasm/Cargo.toml +++ b/contracts/feature-tests/payable-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 e90edbe6d6..9a6188feb4 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.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 e0912a5305..6064d313a3 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.48.0" +version = "0.48.1" 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 7395919b55..90111ca338 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/meta/Cargo.toml +++ b/contracts/feature-tests/rust-snippets-generator-test/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false 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 4724df6a59..13fd970d29 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.48.0" +// version = "0.48.1" // 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 60ad1ebb93..251d1b49aa 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.toml +++ b/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 fcdf74843b..015d94cc4f 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.48.0" +version = "0.48.1" path = "../../../framework/base" features = [ "alloc" ] @@ -17,7 +17,7 @@ path = "../../examples/adder" path = "../../feature-tests/basic-features" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" 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 cf03d27bcb..746732fc11 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/meta/Cargo.toml +++ b/contracts/feature-tests/rust-testing-framework-tester/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false 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 2431c1c2b8..267402b339 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.toml +++ b/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/use-module/Cargo.toml b/contracts/feature-tests/use-module/Cargo.toml index 501ea6f461..8671f3c4fc 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.48.0" +version = "0.48.1" path = "../../../contracts/modules" [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/scenario" [dev-dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../framework/meta" diff --git a/contracts/feature-tests/use-module/meta/Cargo.toml b/contracts/feature-tests/use-module/meta/Cargo.toml index c5f47f1892..94a60a1999 100644 --- a/contracts/feature-tests/use-module/meta/Cargo.toml +++ b/contracts/feature-tests/use-module/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/use-module/meta/abi/Cargo.toml b/contracts/feature-tests/use-module/meta/abi/Cargo.toml index 6a6a8b029c..81f7c46385 100644 --- a/contracts/feature-tests/use-module/meta/abi/Cargo.toml +++ b/contracts/feature-tests/use-module/meta/abi/Cargo.toml @@ -9,10 +9,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/meta" default-features = false 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 cd34bba6d9..6d77fe6da0 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.48.0" + "version": "0.48.1" } }, "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 e91480ad37..c4d4ea960c 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.48.0" + "version": "0.48.1" } }, "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 455a51b925..1d644729aa 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" 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 2a4a269055..18f3e41dca 100644 --- a/contracts/feature-tests/use-module/wasm/Cargo.toml +++ b/contracts/feature-tests/use-module/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.48.0" +version = "0.48.1" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/modules/Cargo.toml b/contracts/modules/Cargo.toml index 14775b4f4d..d3f742c99a 100644 --- a/contracts/modules/Cargo.toml +++ b/contracts/modules/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.48.1" edition = "2021" authors = ["MultiversX "] @@ -17,5 +17,5 @@ categories = ["no-std", "wasm", "cryptography::cryptocurrencies"] alloc = ["multiversx-sc/alloc"] [dependencies.multiversx-sc] -version = "0.48.0" +version = "0.48.1" path = "../../framework/base" diff --git a/data/codec-derive/Cargo.toml b/data/codec-derive/Cargo.toml index f0911eb9d6..25c6a716b0 100644 --- a/data/codec-derive/Cargo.toml +++ b/data/codec-derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" edition = "2021" authors = ["dorin.iancu ", "Andrei Marinica ", "MultiversX "] diff --git a/data/codec/Cargo.toml b/data/codec/Cargo.toml index b42b2051b5..d3d8d14099 100644 --- a/data/codec/Cargo.toml +++ b/data/codec/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" edition = "2021" authors = ["Andrei Marinica ", "MultiversX "] @@ -19,7 +19,7 @@ alloc = [] [dependencies.multiversx-sc-codec-derive] path = "../codec-derive" -version = "=0.18.6" +version = "=0.18.7" optional = true [dependencies] @@ -28,4 +28,4 @@ num-bigint = { version = "=0.4.4", optional = true } # can only be used in std c [dev-dependencies.multiversx-sc-codec-derive] path = "../codec-derive" -version = "=0.18.6" +version = "=0.18.7" diff --git a/framework/base/Cargo.toml b/framework/base/Cargo.toml index 646fc2fe56..577b05ee7d 100644 --- a/framework/base/Cargo.toml +++ b/framework/base/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" edition = "2021" authors = ["Andrei Marinica ", "MultiversX "] @@ -28,10 +28,10 @@ bitflags = "=2.4.2" num-traits = { version = "=0.2.17", default-features = false } [dependencies.multiversx-sc-derive] -version = "=0.48.0" +version = "=0.48.1" path = "../derive" [dependencies.multiversx-sc-codec] -version = "=0.18.6" +version = "=0.18.7" path = "../../data/codec" features = ["derive"] diff --git a/framework/derive/Cargo.toml b/framework/derive/Cargo.toml index 2130f5c384..d0b128dda2 100644 --- a/framework/derive/Cargo.toml +++ b/framework/derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" edition = "2021" authors = ["Andrei Marinica ", "MultiversX "] diff --git a/framework/meta/Cargo.toml b/framework/meta/Cargo.toml index 9080bf7e04..65f1f192a3 100644 --- a/framework/meta/Cargo.toml +++ b/framework/meta/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-meta" -version = "0.48.0" +version = "0.48.1" edition = "2021" authors = [ @@ -52,7 +52,7 @@ pathdiff = { version = "0.2.1", optional = true } common-path = { version = "1.0.0", optional = true } [dependencies.multiversx-sc] -version = "=0.48.0" +version = "=0.48.1" path = "../base" features = ["alloc", "num-bigint"] 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 a6dfb155a3..72a192b0aa 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.48.0" +version = "0.48.1" # [workspace] diff --git a/framework/meta/src/cmd/contract/meta_config.rs b/framework/meta/src/cmd/contract/meta_config.rs index 760e4f6b38..cf5b91aa48 100644 --- a/framework/meta/src/cmd/contract/meta_config.rs +++ b/framework/meta/src/cmd/contract/meta_config.rs @@ -205,7 +205,7 @@ overflow-checks = false path = \"..\" [dependencies.multiversx-sc-wasm-adapter] -version = \"0.48.0\" +version = \"0.48.1\" path = \"../../../../framework/wasm-adapter\" [workspace] @@ -218,7 +218,7 @@ members = [\".\"] name: "test".to_string(), edition: "2021".to_string(), profile: ContractVariantProfile::default(), - framework_version: "0.48.0".to_string(), + framework_version: "0.48.1".to_string(), framework_path: Option::Some("../../../framework/base".to_string()), contract_features: Vec::::new(), }; diff --git a/framework/meta/src/version_history.rs b/framework/meta/src/version_history.rs index 45b66d2e25..5db786b025 100644 --- a/framework/meta/src/version_history.rs +++ b/framework/meta/src/version_history.rs @@ -3,7 +3,7 @@ use crate::{framework_version, framework_versions, version::FrameworkVersion}; /// 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: FrameworkVersion = framework_version!(0.48.0); +pub const LAST_VERSION: FrameworkVersion = framework_version!(0.48.1); /// Indicates where to stop with the upgrades. pub const LAST_UPGRADE_VERSION: FrameworkVersion = LAST_VERSION; @@ -67,6 +67,7 @@ pub const VERSIONS: &[FrameworkVersion] = framework_versions![ 0.47.7, 0.47.8, 0.48.0, + 0.48.1, ]; #[rustfmt::skip] diff --git a/framework/scenario/Cargo.toml b/framework/scenario/Cargo.toml index 0d487891c3..45359208d8 100644 --- a/framework/scenario/Cargo.toml +++ b/framework/scenario/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-scenario" -version = "0.48.0" +version = "0.48.1" edition = "2021" authors = [ @@ -40,12 +40,12 @@ path = "src/main.rs" run-go-tests = [] [dependencies.multiversx-sc] -version = "=0.48.0" +version = "=0.48.1" features = ["alloc", "num-bigint"] path = "../base" [dependencies.multiversx-sc-meta] -version = "=0.48.0" +version = "=0.48.1" path = "../meta" [dependencies.multiversx-chain-scenario-format] diff --git a/framework/snippets/Cargo.toml b/framework/snippets/Cargo.toml index 8fd24f67cb..65fbf71a37 100644 --- a/framework/snippets/Cargo.toml +++ b/framework/snippets/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-snippets" -version = "0.48.0" +version = "0.48.1" edition = "2021" authors = ["MultiversX "] @@ -22,7 +22,7 @@ env_logger = "0.11" futures = "0.3" [dependencies.multiversx-sc-scenario] -version = "=0.48.0" +version = "=0.48.1" path = "../scenario" [dependencies.multiversx-sdk] diff --git a/framework/wasm-adapter/Cargo.toml b/framework/wasm-adapter/Cargo.toml index a73659240a..6a0814f0c7 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.48.0" +version = "0.48.1" edition = "2021" authors = [ @@ -22,5 +22,5 @@ categories = [ ] [dependencies.multiversx-sc] -version = "=0.48.0" +version = "=0.48.1" path = "../base" diff --git a/tools/mxpy-snippet-generator/Cargo.toml b/tools/mxpy-snippet-generator/Cargo.toml index ca71edf2e8..243e1e83ca 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.48.0" +version = "0.48.1" path = "../../framework/base" [dependencies] diff --git a/tools/rust-debugger/format-tests/Cargo.toml b/tools/rust-debugger/format-tests/Cargo.toml index 0e22178945..85d2128bee 100644 --- a/tools/rust-debugger/format-tests/Cargo.toml +++ b/tools/rust-debugger/format-tests/Cargo.toml @@ -9,11 +9,11 @@ name = "format-tests" path = "src/format_tests.rs" [dependencies.multiversx-sc] -version = "=0.48.0" +version = "=0.48.1" path = "../../../framework/base" [dependencies.multiversx-sc-scenario] -version = "=0.48.0" +version = "=0.48.1" path = "../../../framework/scenario" [dependencies.multiversx-chain-vm] From 90b5db781fa6ff49bc5cf8c5d525d5909a8bbd37 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 30 Apr 2024 18:53:07 +0300 Subject: [PATCH 429/461] Cargo.lock update --- .../benchmarks/large-storage/wasm/Cargo.lock | 10 +++++----- .../mappers/linked-list-repeat/wasm/Cargo.lock | 10 +++++----- .../mappers/map-repeat/wasm/Cargo.lock | 10 +++++----- .../mappers/queue-repeat/wasm/Cargo.lock | 10 +++++----- .../mappers/set-repeat/wasm/Cargo.lock | 10 +++++----- .../single-value-repeat/wasm/Cargo.lock | 10 +++++----- .../mappers/vec-repeat/wasm/Cargo.lock | 10 +++++----- .../benchmarks/send-tx-repeat/wasm/Cargo.lock | 10 +++++----- .../Cargo.lock | 10 +++++----- .../Cargo.lock | 10 +++++----- .../benchmarks/str-repeat/wasm/Cargo.lock | 10 +++++----- .../core/price-aggregator/wasm/Cargo.lock | 18 +++++++++--------- contracts/examples/adder/wasm/Cargo.lock | 10 +++++----- .../bonding-curve-contract/wasm/Cargo.lock | 12 ++++++------ contracts/examples/check-pause/wasm/Cargo.lock | 12 ++++++------ .../examples/crowdfunding-esdt/wasm/Cargo.lock | 10 +++++----- .../examples/crypto-bubbles/wasm/Cargo.lock | 10 +++++----- .../kitty-auction/wasm/Cargo.lock | 10 +++++----- .../kitty-genetic-alg/wasm/Cargo.lock | 10 +++++----- .../kitty-ownership/wasm/Cargo.lock | 10 +++++----- .../examples/crypto-zombies/wasm/Cargo.lock | 10 +++++----- .../examples/digital-cash/wasm/Cargo.lock | 10 +++++----- contracts/examples/empty/wasm/Cargo.lock | 10 +++++----- .../esdt-transfer-with-fee/wasm/Cargo.lock | 10 +++++----- contracts/examples/factorial/wasm/Cargo.lock | 10 +++++----- .../examples/fractional-nfts/wasm/Cargo.lock | 12 ++++++------ .../examples/lottery-esdt/wasm/Cargo.lock | 10 +++++----- .../multisig/wasm-multisig-full/Cargo.lock | 12 ++++++------ .../multisig/wasm-multisig-view/Cargo.lock | 12 ++++++------ contracts/examples/multisig/wasm/Cargo.lock | 12 ++++++------ contracts/examples/nft-minter/wasm/Cargo.lock | 10 +++++----- .../nft-storage-prepay/wasm/Cargo.lock | 10 +++++----- .../examples/nft-subscription/wasm/Cargo.lock | 12 ++++++------ .../order-book/factory/wasm/Cargo.lock | 10 +++++----- .../examples/order-book/pair/wasm/Cargo.lock | 10 +++++----- .../examples/ping-pong-egld/wasm/Cargo.lock | 10 +++++----- contracts/examples/proxy-pause/wasm/Cargo.lock | 10 +++++----- .../rewards-distribution/wasm/Cargo.lock | 12 ++++++------ .../examples/seed-nft-minter/wasm/Cargo.lock | 12 ++++++------ .../examples/token-release/wasm/Cargo.lock | 10 +++++----- .../abi-tester/wasm-abi-tester-ev/Cargo.lock | 10 +++++----- .../feature-tests/abi-tester/wasm/Cargo.lock | 10 +++++----- .../wasm-alloc-mem-fail/Cargo.lock | 10 +++++----- .../wasm-alloc-mem-leaking/Cargo.lock | 10 +++++----- .../alloc-features/wasm/Cargo.lock | 10 +++++----- .../Cargo.lock | 12 ++++++------ .../basic-features/wasm/Cargo.lock | 12 ++++++------ .../big-float-features/wasm/Cargo.lock | 10 +++++----- .../builtin-func-features/wasm/Cargo.lock | 10 +++++----- .../first-contract/wasm/Cargo.lock | 10 +++++----- .../second-contract/wasm/Cargo.lock | 10 +++++----- .../child/wasm/Cargo.lock | 10 +++++----- .../parent/wasm/Cargo.lock | 10 +++++----- .../wasm-forwarder-queue-promises/Cargo.lock | 10 +++++----- .../forwarder-queue/wasm/Cargo.lock | 10 +++++----- .../Cargo.lock | 10 +++++----- .../Cargo.lock | 10 +++++----- .../forwarder-raw/wasm/Cargo.lock | 10 +++++----- .../composability/forwarder/wasm/Cargo.lock | 10 +++++----- .../local-esdt-and-nft/wasm/Cargo.lock | 10 +++++----- .../promises-features/wasm/Cargo.lock | 10 +++++----- .../proxy-test-first/wasm/Cargo.lock | 10 +++++----- .../proxy-test-second/wasm/Cargo.lock | 10 +++++----- .../recursive-caller/wasm/Cargo.lock | 10 +++++----- .../transfer-role-features/wasm/Cargo.lock | 12 ++++++------ .../vault/wasm-vault-promises/Cargo.lock | 10 +++++----- .../vault/wasm-vault-upgrade/Cargo.lock | 10 +++++----- .../composability/vault/wasm/Cargo.lock | 10 +++++----- .../crowdfunding-erc20/wasm/Cargo.lock | 10 +++++----- .../erc1155-marketplace/wasm/Cargo.lock | 10 +++++----- .../erc1155-user-mock/wasm/Cargo.lock | 10 +++++----- .../erc1155/wasm/Cargo.lock | 10 +++++----- .../erc-style-contracts/erc20/wasm/Cargo.lock | 10 +++++----- .../erc-style-contracts/erc721/wasm/Cargo.lock | 10 +++++----- .../lottery-erc20/wasm/Cargo.lock | 10 +++++----- .../esdt-system-sc-mock/wasm/Cargo.lock | 10 +++++----- .../exchange-features/wasm/Cargo.lock | 10 +++++----- .../formatted-message-features/wasm/Cargo.lock | 10 +++++----- .../managed-map-features/wasm/Cargo.lock | 10 +++++----- .../wasm-multi-contract-alt-impl/Cargo.lock | 10 +++++----- .../Cargo.lock | 10 +++++----- .../Cargo.lock | 10 +++++----- .../multi-contract-features/wasm/Cargo.lock | 10 +++++----- .../panic-message-features/wasm/Cargo.lock | 10 +++++----- .../payable-features/wasm/Cargo.lock | 10 +++++----- .../wasm/Cargo.lock | 10 +++++----- .../wasm/Cargo.lock | 10 +++++----- .../use-module/wasm-use-module-view/Cargo.lock | 12 ++++++------ .../feature-tests/use-module/wasm/Cargo.lock | 12 ++++++------ 89 files changed, 463 insertions(+), 463 deletions(-) diff --git a/contracts/benchmarks/large-storage/wasm/Cargo.lock b/contracts/benchmarks/large-storage/wasm/Cargo.lock index cb13777edf..d99eb1d8e8 100755 --- a/contracts/benchmarks/large-storage/wasm/Cargo.lock +++ b/contracts/benchmarks/large-storage/wasm/Cargo.lock @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 78ff5aef10..66f592dee9 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.lock @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -82,7 +82,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock index 3ee28394b7..a6551181e2 100644 --- a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -82,7 +82,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock index 4df3ab54da..eaf6a5d673 100644 --- a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -58,7 +58,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock index 4f8e72b115..d6813d0757 100644 --- a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -58,7 +58,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 fdfa32de28..a3d214535d 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.lock @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -58,7 +58,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock index f51214f9f1..3bd814698b 100644 --- a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -58,7 +58,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock index 13533956e8..7127d940de 100755 --- a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.lock b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.lock index 4683a2b046..f16e8c090b 100644 --- a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.lock +++ b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.lock b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.lock index f750a8d328..3f0656d631 100644 --- a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.lock +++ b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/str-repeat/wasm/Cargo.lock b/contracts/benchmarks/str-repeat/wasm/Cargo.lock index e2b54817be..17fc991178 100755 --- a/contracts/benchmarks/str-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/str-repeat/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/core/price-aggregator/wasm/Cargo.lock b/contracts/core/price-aggregator/wasm/Cargo.lock index 9e64d41b47..e11db402c0 100644 --- a/contracts/core/price-aggregator/wasm/Cargo.lock +++ b/contracts/core/price-aggregator/wasm/Cargo.lock @@ -74,9 +74,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.153" +version = "0.2.154" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346" [[package]] name = "log" @@ -86,7 +86,7 @@ checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "multiversx-price-aggregator-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "arrayvec", "getrandom", @@ -105,7 +105,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -116,7 +116,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -124,7 +124,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -134,7 +134,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -145,14 +145,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/adder/wasm/Cargo.lock b/contracts/examples/adder/wasm/Cargo.lock index c7b8a8f917..08d1e86a84 100755 --- a/contracts/examples/adder/wasm/Cargo.lock +++ b/contracts/examples/adder/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/bonding-curve-contract/wasm/Cargo.lock b/contracts/examples/bonding-curve-contract/wasm/Cargo.lock index 0fa9693639..309cf22a03 100644 --- a/contracts/examples/bonding-curve-contract/wasm/Cargo.lock +++ b/contracts/examples/bonding-curve-contract/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -67,7 +67,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/check-pause/wasm/Cargo.lock b/contracts/examples/check-pause/wasm/Cargo.lock index 1d886bba04..b21f0ad6d1 100644 --- a/contracts/examples/check-pause/wasm/Cargo.lock +++ b/contracts/examples/check-pause/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -67,7 +67,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock b/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock index 9a14efccc8..d6516b3acf 100644 --- a/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock +++ b/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/crypto-bubbles/wasm/Cargo.lock b/contracts/examples/crypto-bubbles/wasm/Cargo.lock index 6af31b83b6..3a40a41c01 100755 --- a/contracts/examples/crypto-bubbles/wasm/Cargo.lock +++ b/contracts/examples/crypto-bubbles/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 82fd08dc78..c2ebcc9167 100755 --- a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.lock +++ b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.lock @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -113,7 +113,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -124,7 +124,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 95368370cb..a96ee69891 100755 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.lock +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.lock @@ -65,7 +65,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -94,7 +94,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -105,7 +105,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 d497d47054..9e6e06ea1a 100755 --- a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.lock +++ b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.lock @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -86,7 +86,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -94,7 +94,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -104,7 +104,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -115,7 +115,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/crypto-zombies/wasm/Cargo.lock b/contracts/examples/crypto-zombies/wasm/Cargo.lock index 53c26db1eb..1bd3e9d974 100755 --- a/contracts/examples/crypto-zombies/wasm/Cargo.lock +++ b/contracts/examples/crypto-zombies/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/digital-cash/wasm/Cargo.lock b/contracts/examples/digital-cash/wasm/Cargo.lock index 602c7d856b..1cd77b2d22 100644 --- a/contracts/examples/digital-cash/wasm/Cargo.lock +++ b/contracts/examples/digital-cash/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/empty/wasm/Cargo.lock b/contracts/examples/empty/wasm/Cargo.lock index 5a87b422d2..4399ff23ef 100755 --- a/contracts/examples/empty/wasm/Cargo.lock +++ b/contracts/examples/empty/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 cee7278178..56981cfdf1 100644 --- a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.lock +++ b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/factorial/wasm/Cargo.lock b/contracts/examples/factorial/wasm/Cargo.lock index 4dff18babf..b32b28949b 100755 --- a/contracts/examples/factorial/wasm/Cargo.lock +++ b/contracts/examples/factorial/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/fractional-nfts/wasm/Cargo.lock b/contracts/examples/fractional-nfts/wasm/Cargo.lock index f95919526e..0ed6497ed9 100644 --- a/contracts/examples/fractional-nfts/wasm/Cargo.lock +++ b/contracts/examples/fractional-nfts/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -67,7 +67,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/lottery-esdt/wasm/Cargo.lock b/contracts/examples/lottery-esdt/wasm/Cargo.lock index 6f1cace25d..3e13602042 100755 --- a/contracts/examples/lottery-esdt/wasm/Cargo.lock +++ b/contracts/examples/lottery-esdt/wasm/Cargo.lock @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/multisig/wasm-multisig-full/Cargo.lock b/contracts/examples/multisig/wasm-multisig-full/Cargo.lock index 953a8551f3..cf567f898e 100644 --- a/contracts/examples/multisig/wasm-multisig-full/Cargo.lock +++ b/contracts/examples/multisig/wasm-multisig-full/Cargo.lock @@ -56,7 +56,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -67,7 +67,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/multisig/wasm-multisig-view/Cargo.lock b/contracts/examples/multisig/wasm-multisig-view/Cargo.lock index df77559d67..2ae00e3366 100644 --- a/contracts/examples/multisig/wasm-multisig-view/Cargo.lock +++ b/contracts/examples/multisig/wasm-multisig-view/Cargo.lock @@ -56,7 +56,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -67,7 +67,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/multisig/wasm/Cargo.lock b/contracts/examples/multisig/wasm/Cargo.lock index d72aa67e30..dc1fc12b7e 100755 --- a/contracts/examples/multisig/wasm/Cargo.lock +++ b/contracts/examples/multisig/wasm/Cargo.lock @@ -56,7 +56,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -67,7 +67,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/nft-minter/wasm/Cargo.lock b/contracts/examples/nft-minter/wasm/Cargo.lock index ce0b2650f9..1da583baee 100644 --- a/contracts/examples/nft-minter/wasm/Cargo.lock +++ b/contracts/examples/nft-minter/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/nft-storage-prepay/wasm/Cargo.lock b/contracts/examples/nft-storage-prepay/wasm/Cargo.lock index 319176681e..a8cf928989 100755 --- a/contracts/examples/nft-storage-prepay/wasm/Cargo.lock +++ b/contracts/examples/nft-storage-prepay/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/nft-subscription/wasm/Cargo.lock b/contracts/examples/nft-subscription/wasm/Cargo.lock index 2244415577..726b01fa88 100644 --- a/contracts/examples/nft-subscription/wasm/Cargo.lock +++ b/contracts/examples/nft-subscription/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/order-book/factory/wasm/Cargo.lock b/contracts/examples/order-book/factory/wasm/Cargo.lock index 60c0b2cabd..3f252320b3 100644 --- a/contracts/examples/order-book/factory/wasm/Cargo.lock +++ b/contracts/examples/order-book/factory/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/order-book/pair/wasm/Cargo.lock b/contracts/examples/order-book/pair/wasm/Cargo.lock index 14b8551309..21e89dac31 100644 --- a/contracts/examples/order-book/pair/wasm/Cargo.lock +++ b/contracts/examples/order-book/pair/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/ping-pong-egld/wasm/Cargo.lock b/contracts/examples/ping-pong-egld/wasm/Cargo.lock index a86f53d6dd..f7ce1b2dd3 100755 --- a/contracts/examples/ping-pong-egld/wasm/Cargo.lock +++ b/contracts/examples/ping-pong-egld/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/proxy-pause/wasm/Cargo.lock b/contracts/examples/proxy-pause/wasm/Cargo.lock index 73d7607641..a1a40ea776 100644 --- a/contracts/examples/proxy-pause/wasm/Cargo.lock +++ b/contracts/examples/proxy-pause/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/rewards-distribution/wasm/Cargo.lock b/contracts/examples/rewards-distribution/wasm/Cargo.lock index d5303f9494..82e8b6241e 100644 --- a/contracts/examples/rewards-distribution/wasm/Cargo.lock +++ b/contracts/examples/rewards-distribution/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/seed-nft-minter/wasm/Cargo.lock b/contracts/examples/seed-nft-minter/wasm/Cargo.lock index d322f26404..7bd62a16fd 100644 --- a/contracts/examples/seed-nft-minter/wasm/Cargo.lock +++ b/contracts/examples/seed-nft-minter/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/token-release/wasm/Cargo.lock b/contracts/examples/token-release/wasm/Cargo.lock index 0d4d728f3e..6d39aac883 100644 --- a/contracts/examples/token-release/wasm/Cargo.lock +++ b/contracts/examples/token-release/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 a99ecaccaf..95b5bf4d2b 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/abi-tester/wasm/Cargo.lock b/contracts/feature-tests/abi-tester/wasm/Cargo.lock index db59638442..cee49ced4a 100755 --- a/contracts/feature-tests/abi-tester/wasm/Cargo.lock +++ b/contracts/feature-tests/abi-tester/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock index 1a3bc7da70..1898fab79b 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock index b32efb0d4a..193a32459f 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/alloc-features/wasm/Cargo.lock b/contracts/feature-tests/alloc-features/wasm/Cargo.lock index 6a0f3330d7..6f2be1822e 100644 --- a/contracts/feature-tests/alloc-features/wasm/Cargo.lock +++ b/contracts/feature-tests/alloc-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 f5d8794bb9..b8582c7218 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 @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -67,7 +67,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/basic-features/wasm/Cargo.lock b/contracts/feature-tests/basic-features/wasm/Cargo.lock index bfb8c41ea7..1f5af1b98b 100755 --- a/contracts/feature-tests/basic-features/wasm/Cargo.lock +++ b/contracts/feature-tests/basic-features/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -67,7 +67,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 40beaf8d03..5e95524a81 100644 --- a/contracts/feature-tests/big-float-features/wasm/Cargo.lock +++ b/contracts/feature-tests/big-float-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 bb57eeb64e..8b0361ffb9 100644 --- a/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 a2c55964c7..f0e1a09e32 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 99cd973235..41987ecfe9 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 @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 b7b7846eb2..532a78bc80 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 fd4d0794e8..31410f1b90 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 @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -58,7 +58,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 9ce03493b3..f05e7a0cdd 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 @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -67,7 +67,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 dbef7fe1c4..bd11942252 100644 --- a/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -67,7 +67,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 1b3b56c133..3cbb66650a 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 dcb63c28ef..0854d75c17 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 4b56a477a5..01e46ccd34 100755 --- a/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock b/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock index 14ba905f98..45f9ebb16c 100755 --- a/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -67,7 +67,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 cf8b7eaeb8..4f188cc77a 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 @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 1cce0c20ac..edd5f4e52a 100644 --- a/contracts/feature-tests/composability/promises-features/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/promises-features/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 2616a0e326..eb64ca8f63 100755 --- a/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 cb41667a6d..c0694e8a27 100755 --- a/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 d2e41ac725..2a46d970f4 100755 --- a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 bbbb12c9f9..24369519bc 100644 --- a/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 e86afd77c4..8df1fd19a5 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.lock +++ b/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock index 0b7112be8c..b0b9342959 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock +++ b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/vault/wasm/Cargo.lock b/contracts/feature-tests/composability/vault/wasm/Cargo.lock index 6d0b58aed6..5d36265ec2 100755 --- a/contracts/feature-tests/composability/vault/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/vault/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 ad10f006f4..e4339b3283 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 @@ -63,7 +63,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -82,7 +82,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 0a96032377..96edd6a295 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 @@ -63,7 +63,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -82,7 +82,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 a6f053b5c8..be9d41b78d 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 @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 90f97cfb61..91409bfda7 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 c7d25eb4e2..492ddf9510 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 b91f78bb52..140f4dfbbc 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 36b9febca3..50d1f38715 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 @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -82,7 +82,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 d52e047711..1316ca215f 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.lock +++ b/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/exchange-features/wasm/Cargo.lock b/contracts/feature-tests/exchange-features/wasm/Cargo.lock index 09349d87e7..e9c8ff82c2 100644 --- a/contracts/feature-tests/exchange-features/wasm/Cargo.lock +++ b/contracts/feature-tests/exchange-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 9dbe2ad726..279238f2e2 100644 --- a/contracts/feature-tests/formatted-message-features/wasm/Cargo.lock +++ b/contracts/feature-tests/formatted-message-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 a555da68eb..8de61c1187 100644 --- a/contracts/feature-tests/managed-map-features/wasm/Cargo.lock +++ b/contracts/feature-tests/managed-map-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 3997752036..edb911a2f4 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 @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 13230fc27c..92f5d93116 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 @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 b1fa6d8b6b..b05ca10df5 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 @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 2815c003c8..d3e3e66eb7 100755 --- a/contracts/feature-tests/multi-contract-features/wasm/Cargo.lock +++ b/contracts/feature-tests/multi-contract-features/wasm/Cargo.lock @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 ddf9332c59..ccde2cee09 100755 --- a/contracts/feature-tests/panic-message-features/wasm/Cargo.lock +++ b/contracts/feature-tests/panic-message-features/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/payable-features/wasm/Cargo.lock b/contracts/feature-tests/payable-features/wasm/Cargo.lock index 3ffdf49ece..a20d9a05bd 100755 --- a/contracts/feature-tests/payable-features/wasm/Cargo.lock +++ b/contracts/feature-tests/payable-features/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 b8d98314e7..a35b1f0228 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.lock +++ b/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 f95eb564c3..287a90ba46 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.lock +++ b/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" 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 969d71832f..c0abc2c92c 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 @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/use-module/wasm/Cargo.lock b/contracts/feature-tests/use-module/wasm/Cargo.lock index c97622bd31..f48df08dc8 100644 --- a/contracts/feature-tests/use-module/wasm/Cargo.lock +++ b/contracts/feature-tests/use-module/wasm/Cargo.lock @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.48.0" +version = "0.48.1" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.7" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.7" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.48.0" +version = "0.48.1" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.48.0" +version = "0.48.1" dependencies = [ "multiversx-sc", ] From c78ba3f9dd56517307dd385baac53a961e9bbb1f Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Tue, 30 Apr 2024 22:00:46 +0300 Subject: [PATCH 430/461] increase code coverage - fix attributes on nft_update_attributes --- .../composability/forwarder/src/call_async.rs | 3 ++- .../forwarder/src/forwarder_proxy.rs | 2 +- .../composability/forwarder/src/nft.rs | 6 ++++-- .../tests/forwarder_blackbox_test.rs | 16 ++-------------- .../src/facade/world_tx/scenario_check_state.rs | 9 +++++---- 5 files changed, 14 insertions(+), 22 deletions(-) diff --git a/contracts/feature-tests/composability/forwarder/src/call_async.rs b/contracts/feature-tests/composability/forwarder/src/call_async.rs index 2de43a6752..51a751b114 100644 --- a/contracts/feature-tests/composability/forwarder/src/call_async.rs +++ b/contracts/feature-tests/composability/forwarder/src/call_async.rs @@ -3,7 +3,8 @@ use crate::vault_proxy; multiversx_sc::imports!(); multiversx_sc::derive_imports!(); -#[derive(TopEncode, TopDecode, TypeAbi)] +#[type_abi] +#[derive(TopEncode, TopDecode)] pub struct CallbackData { callback_name: ManagedBuffer, token_identifier: EgldOrEsdtTokenIdentifier, diff --git a/contracts/feature-tests/composability/forwarder/src/forwarder_proxy.rs b/contracts/feature-tests/composability/forwarder/src/forwarder_proxy.rs index 5c859a5169..4d0f3f7bdd 100644 --- a/contracts/feature-tests/composability/forwarder/src/forwarder_proxy.rs +++ b/contracts/feature-tests/composability/forwarder/src/forwarder_proxy.rs @@ -1118,7 +1118,7 @@ where pub args: ManagedVec>, } -#[derive(TopEncode, TopDecode)] +#[derive(TopEncode, TopDecode, Clone, Copy, PartialEq, Debug)] pub struct Color { pub r: u8, pub g: u8, diff --git a/contracts/feature-tests/composability/forwarder/src/nft.rs b/contracts/feature-tests/composability/forwarder/src/nft.rs index 8eae1e83c5..3deb7f1493 100644 --- a/contracts/feature-tests/composability/forwarder/src/nft.rs +++ b/contracts/feature-tests/composability/forwarder/src/nft.rs @@ -4,14 +4,16 @@ multiversx_sc::derive_imports!(); use super::storage; // used as mock attributes for NFTs -#[derive(TopEncode, TopDecode, TypeAbi, Clone, Copy, PartialEq, Debug)] +#[type_abi] +#[derive(TopEncode, TopDecode, Clone, Copy, PartialEq, Debug)] pub struct Color { pub r: u8, pub g: u8, pub b: u8, } -#[derive(TopEncode, TopDecode, TypeAbi, PartialEq, Eq, Clone)] +#[type_abi] +#[derive(TopEncode, TopDecode, PartialEq, Eq, Clone)] pub struct ComplexAttributes { pub biguint: BigUint, pub vec_u8: ManagedBuffer, diff --git a/contracts/feature-tests/composability/tests/forwarder_blackbox_test.rs b/contracts/feature-tests/composability/tests/forwarder_blackbox_test.rs index 73b1b92488..7dd5c1a81b 100644 --- a/contracts/feature-tests/composability/tests/forwarder_blackbox_test.rs +++ b/contracts/feature-tests/composability/tests/forwarder_blackbox_test.rs @@ -45,11 +45,6 @@ fn test_nft_update_attributes_and_send() { let mut state = ForwarderTestState::new(); let original_attributes = forwarder_proxy::Color { r: 0, g: 0, b: 0 }; - let original_attributes_bytes: &[u8] = &[ - original_attributes.r, - original_attributes.g, - original_attributes.b, - ]; state .world @@ -70,12 +65,7 @@ fn test_nft_update_attributes_and_send() { state .world .check_account(USER_ADDRESS) - .esdt_nft_balance_and_attributes( - NFT_TOKEN_ID, - 1, - 1, - managed_buffer!(original_attributes_bytes), - ); + .esdt_nft_balance_and_attributes(NFT_TOKEN_ID, 1, 1, original_attributes); let new_attributes = forwarder_proxy::Color { r: 255, @@ -83,8 +73,6 @@ fn test_nft_update_attributes_and_send() { b: 255, }; - let new_attributes_bytes: &[u8] = &[new_attributes.r, new_attributes.g, new_attributes.b]; - state.world.transfer_step( TransferStep::new() .from(USER_ADDRESS.eval_to_expr().as_str()) @@ -111,5 +99,5 @@ fn test_nft_update_attributes_and_send() { state .world .check_account(USER_ADDRESS) - .esdt_nft_balance_and_attributes(NFT_TOKEN_ID, 1, 1, managed_buffer!(new_attributes_bytes)); + .esdt_nft_balance_and_attributes(NFT_TOKEN_ID, 1, 1, new_attributes); } diff --git a/framework/scenario/src/facade/world_tx/scenario_check_state.rs b/framework/scenario/src/facade/world_tx/scenario_check_state.rs index e79756ad1d..3f5423419a 100644 --- a/framework/scenario/src/facade/world_tx/scenario_check_state.rs +++ b/framework/scenario/src/facade/world_tx/scenario_check_state.rs @@ -1,8 +1,9 @@ use std::collections::{btree_map::Entry, BTreeMap}; use multiversx_chain_scenario_format::interpret_trait::{InterpretableFrom, InterpreterContext}; -use multiversx_sc::types::{ - AnnotatedValue, BigUint, ManagedAddress, ManagedBuffer, TokenIdentifier, +use multiversx_sc::{ + codec::{top_encode_to_vec_u8, TopEncode}, + types::{AnnotatedValue, BigUint, ManagedAddress, ManagedBuffer, TokenIdentifier}, }; use crate::{ @@ -181,13 +182,13 @@ impl<'w> CheckStateBuilder<'w> { K: AnnotatedValue>, N: AnnotatedValue, V: AnnotatedValue>, - T: AnnotatedValue>, + T: TopEncode, { let env = self.new_env_data(); let token_id_key = token_identifier_annotated(&env, token_id); let nonce_value = u64_annotated(&env, &nonce); let balance_value = big_uint_annotated(&env, &balance); - let attributes_value = bytes_annotated(&env, attributes); + let attributes_value = top_encode_to_vec_u8(&attributes).unwrap(); if let CheckEsdtMap::Unspecified = &self.current_account.esdt { let mut check_esdt = CheckEsdt::Full(CheckEsdtData::default()); From f50de7d20b9d31fcb2d077323b551ab15fad08ff Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Tue, 30 Apr 2024 22:28:52 +0300 Subject: [PATCH 431/461] increase code coverage - fix nft_update_attributes with no attributes --- .../feature-tests/scenario-tester/tests/st_blackbox_test.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs index a8f4944aca..ce153e689c 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs @@ -144,7 +144,7 @@ fn set_state_test() { .check_account(third) .nonce(3) .balance(50) - .esdt_nft_balance_and_attributes(NFT_ID, 2, 1, ()) + .esdt_nft_balance_and_attributes(NFT_ID, 2, 1, "") .commit(); let fourth_uris = FOURTH_URIS @@ -171,7 +171,7 @@ fn set_state_test() { .check_account(fourth) .nonce(3) .balance(50) - .esdt_nft_balance_and_attributes(NFT_ID, 2, 1, managed_buffer!(FOURTH_ATTRIBUTES)) + .esdt_nft_balance_and_attributes(NFT_ID, 2, 1, FOURTH_ATTRIBUTES) .commit(); world @@ -183,7 +183,7 @@ fn set_state_test() { .check_account(fifth) .nonce(2) .balance(30) - .esdt_nft_balance_and_attributes(NFT_ID, 5, 0, ()); + .esdt_nft_balance_and_attributes(NFT_ID, 5, 0, ""); // using no commit should drop the value naturally world From b781824b7dc5308d7ddcd5627c7a1a09f2658b90 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 1 May 2024 03:02:07 +0300 Subject: [PATCH 432/461] test fix --- .../scenarios/use_module_ongoing_operation_example.scen.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/feature-tests/use-module/scenarios/use_module_ongoing_operation_example.scen.json b/contracts/feature-tests/use-module/scenarios/use_module_ongoing_operation_example.scen.json index 3e43e9270a..a8a16623b2 100644 --- a/contracts/feature-tests/use-module/scenarios/use_module_ongoing_operation_example.scen.json +++ b/contracts/feature-tests/use-module/scenarios/use_module_ongoing_operation_example.scen.json @@ -52,7 +52,7 @@ "to": "sc:use_module", "function": "countTo100", "arguments": [], - "gasLimit": "4,500,000", + "gasLimit": "4,700,000", "gasPrice": "0" }, "expect": { From a482b0679a615bf1c32b53d58aa5c2edeb595b1e Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Wed, 1 May 2024 03:02:24 +0300 Subject: [PATCH 433/461] cargo fmt --- framework/scenario/src/api/impl_vh/static_api.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/scenario/src/api/impl_vh/static_api.rs b/framework/scenario/src/api/impl_vh/static_api.rs index ca1d8602e5..7e375a0c31 100644 --- a/framework/scenario/src/api/impl_vh/static_api.rs +++ b/framework/scenario/src/api/impl_vh/static_api.rs @@ -1,9 +1,9 @@ -use std::sync::Mutex; use multiversx_chain_vm::{ executor::VMHooks, vm_hooks::{StaticApiVMHooksHandler, VMHooksDispatcher, VMHooksHandler}, }; use multiversx_sc::{api::RawHandle, types::Address}; +use std::sync::Mutex; use crate::debug_executor::StaticVarData; From 724dd689baafb311b00232d4a06f18f4cf5b7a9e Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Fri, 3 May 2024 17:03:52 +0300 Subject: [PATCH 434/461] TypeAbiFrom trait --- framework/base/src/abi.rs | 2 + framework/base/src/abi/type_abi.rs | 9 ++++- framework/base/src/abi/type_abi_from.rs | 4 ++ framework/base/src/abi/type_abi_impl_basic.rs | 37 +++++++++++++++++++ .../base/src/abi/type_abi_impl_codec_multi.rs | 19 +++++++++- .../base/src/storage/mappers/bi_di_mapper.rs | 18 +++++++++ .../src/storage/mappers/linked_list_mapper.rs | 17 ++++++++- .../base/src/storage/mappers/map_mapper.rs | 19 +++++++++- .../base/src/storage/mappers/queue_mapper.rs | 16 +++++++- .../base/src/storage/mappers/set_mapper.rs | 16 +++++++- .../storage/mappers/single_value_mapper.rs | 24 +++++++++++- .../mappers/token/fungible_token_mapper.rs | 9 ++++- .../token/non_fungible_token_mapper.rs | 8 ++++ .../src/storage/mappers/unique_id_mapper.rs | 8 ++++ .../storage/mappers/unordered_set_mapper.rs | 16 +++++++- .../base/src/storage/mappers/user_mapper.rs | 16 ++++++-- .../base/src/storage/mappers/vec_mapper.rs | 16 +++++++- .../src/types/crypto/message_hash_type.rs | 10 +++-- .../base/src/types/flags/code_metadata.rs | 4 +- .../base/src/types/heap/async_call_result.rs | 4 +- framework/base/src/types/heap/boxed_bytes.rs | 4 +- framework/base/src/types/heap/h256.rs | 4 +- framework/base/src/types/heap/h256_address.rs | 4 +- framework/base/src/types/heap/queue.rs | 4 +- .../types/interaction/managed_arg_buffer.rs | 4 +- .../interaction/tx_data/function_call.rs | 4 +- .../types/io/operation_completion_status.rs | 8 +++- framework/base/src/types/io/sc_result.rs | 7 +++- .../base/src/types/managed/basic/big_float.rs | 5 ++- .../base/src/types/managed/basic/big_int.rs | 4 +- .../src/types/managed/basic/big_int_sign.rs | 6 ++- .../base/src/types/managed/basic/big_uint.rs | 4 +- .../src/types/managed/basic/elliptic_curve.rs | 4 +- .../src/types/managed/basic/managed_buffer.rs | 4 +- .../multi_value/async_call_result_managed.rs | 9 ++++- .../esdt_token_payment_multi_value.rs | 11 ++++-- .../multi_value/multi_value_encoded.rs | 9 ++++- .../multi_value/multi_value_managed_vec.rs | 9 ++++- .../multi_value_managed_vec_counted.rs | 9 ++++- .../wrapped/egld_or_esdt_token_identifier.rs | 4 +- .../types/managed/wrapped/managed_address.rs | 4 +- .../managed/wrapped/managed_byte_array.rs | 6 ++- .../types/managed/wrapped/managed_option.rs | 32 ++++++++++++++-- .../src/types/managed/wrapped/managed_vec.rs | 25 ++++++++++++- .../types/managed/wrapped/token_identifier.rs | 4 +- .../src/types/static_buffer/sparse_array.rs | 4 +- framework/derive/src/type_abi_derive.rs | 2 + 47 files changed, 416 insertions(+), 50 deletions(-) create mode 100644 framework/base/src/abi/type_abi_from.rs diff --git a/framework/base/src/abi.rs b/framework/base/src/abi.rs index 2fc4e5af0d..c0002739d7 100644 --- a/framework/base/src/abi.rs +++ b/framework/base/src/abi.rs @@ -4,6 +4,7 @@ mod endpoint_abi; mod esdt_attribute_abi; mod event_abi; mod type_abi; +mod type_abi_from; mod type_abi_impl_basic; mod type_abi_impl_codec_multi; mod type_description; @@ -15,6 +16,7 @@ pub use endpoint_abi::*; pub use esdt_attribute_abi::EsdtAttributeAbi; pub use event_abi::*; pub use type_abi::*; +pub use type_abi_from::*; pub use type_description::*; pub use type_description_container::*; diff --git a/framework/base/src/abi/type_abi.rs b/framework/base/src/abi/type_abi.rs index 94213e7705..18163eb7e7 100644 --- a/framework/base/src/abi/type_abi.rs +++ b/framework/base/src/abi/type_abi.rs @@ -1,7 +1,14 @@ use super::*; use alloc::{format, string::ToString, vec::Vec}; -pub trait TypeAbi { +/// Implemented for all types that can end up in the ABI: +/// - argument types, +/// - result types, +/// - event log arguments +/// - etc. +/// +/// Will be automatically implemented for struct ad enum types via the `#[type_abi]` annotation. +pub trait TypeAbi: TypeAbiFrom { fn type_names() -> TypeNames { TypeNames { abi: Self::type_name(), diff --git a/framework/base/src/abi/type_abi_from.rs b/framework/base/src/abi/type_abi_from.rs new file mode 100644 index 0000000000..81f5345fd5 --- /dev/null +++ b/framework/base/src/abi/type_abi_from.rs @@ -0,0 +1,4 @@ +/// Indicates that 2 types have the same encoding, so they can be used interchangeably in proxies. +/// +/// Only relevant for serializable types. +pub trait TypeAbiFrom {} diff --git a/framework/base/src/abi/type_abi_impl_basic.rs b/framework/base/src/abi/type_abi_impl_basic.rs index 0487e19392..1d0378259e 100644 --- a/framework/base/src/abi/type_abi_impl_basic.rs +++ b/framework/base/src/abi/type_abi_impl_basic.rs @@ -7,6 +7,8 @@ use alloc::{ vec::Vec, }; +impl TypeAbiFrom<()> for () {} + impl TypeAbi for () { /// No another exception from the 1-type-1-output-abi rule: /// the unit type produces no output. @@ -15,6 +17,8 @@ impl TypeAbi for () { } } +impl TypeAbiFrom<&U> for &T where T: TypeAbiFrom {} + impl TypeAbi for &T { fn type_name() -> TypeName { T::type_name() @@ -29,6 +33,8 @@ impl TypeAbi for &T { } } +impl TypeAbiFrom> for U where T: TypeAbiFrom {} + impl TypeAbi for Box { fn type_name() -> TypeName { T::type_name() @@ -43,6 +49,8 @@ impl TypeAbi for Box { } } +impl TypeAbiFrom<&[T]> for &[U] where T: TypeAbiFrom {} + impl TypeAbi for &[T] { fn type_name() -> TypeName { let t_name = T::type_name(); @@ -65,6 +73,8 @@ impl TypeAbi for &[T] { } } +impl TypeAbiFrom> for Vec where T: TypeAbiFrom {} + impl TypeAbi for Vec { fn type_name() -> TypeName { <&[T]>::type_name() @@ -79,6 +89,8 @@ impl TypeAbi for Vec { } } +impl TypeAbiFrom> for ArrayVec {} + impl TypeAbi for ArrayVec { fn type_name() -> TypeName { <&[T]>::type_name() @@ -93,6 +105,8 @@ impl TypeAbi for ArrayVec { } } +impl TypeAbiFrom> for Box<[T]> {} + impl TypeAbi for Box<[T]> { fn type_name() -> TypeName { <&[T]>::type_name() @@ -107,12 +121,18 @@ impl TypeAbi for Box<[T]> { } } +impl TypeAbiFrom for String {} +impl TypeAbiFrom<&str> for String {} +impl TypeAbiFrom> for String {} + impl TypeAbi for String { fn type_name() -> TypeName { "utf-8 string".into() } } +impl TypeAbiFrom<&'static str> for &'static str {} + impl TypeAbi for &'static str { fn type_name() -> TypeName { String::type_name() @@ -123,6 +143,10 @@ impl TypeAbi for &'static str { } } +impl TypeAbiFrom> for Box {} +impl TypeAbiFrom<&str> for Box {} +impl TypeAbiFrom for Box {} + impl TypeAbi for Box { fn type_name() -> TypeName { String::type_name() @@ -135,6 +159,8 @@ impl TypeAbi for Box { macro_rules! type_abi_name_only { ($ty:ty, $name:expr) => { + impl TypeAbiFrom<$ty> for $ty {} + impl TypeAbi for $ty { fn type_name() -> TypeName { TypeName::from($name) @@ -160,6 +186,8 @@ type_abi_name_only!(i64, "i64"); type_abi_name_only!(core::num::NonZeroUsize, "NonZeroUsize"); type_abi_name_only!(bool, "bool"); +impl TypeAbiFrom> for Option where T: TypeAbiFrom {} + impl TypeAbi for Option { fn type_name() -> TypeName { format!("Option<{}>", T::type_name()) @@ -174,6 +202,8 @@ impl TypeAbi for Option { } } +impl TypeAbiFrom> for Result where T: TypeAbiFrom {} + impl TypeAbi for Result { fn type_name() -> TypeName { T::type_name() @@ -200,6 +230,11 @@ impl TypeAbi for Result { macro_rules! tuple_impls { ($($len:expr => ($($n:tt $name:ident)+))+) => { $( + impl<$($name),+> TypeAbiFrom for ($($name,)+) + where + $($name: TypeAbi,)+ + {} + impl<$($name),+> TypeAbi for ($($name,)+) where $($name: TypeAbi,)+ @@ -257,6 +292,8 @@ tuple_impls! { 16 => (0 T0 1 T1 2 T2 3 T3 4 T4 5 T5 6 T6 7 T7 8 T8 9 T9 10 T10 11 T11 12 T12 13 T13 14 T14 15 T15) } +impl TypeAbiFrom<[T; N]> for [U; N] where T: TypeAbiFrom {} + impl TypeAbi for [T; N] { fn type_name() -> TypeName { let mut repr = TypeName::from("array"); diff --git a/framework/base/src/abi/type_abi_impl_codec_multi.rs b/framework/base/src/abi/type_abi_impl_codec_multi.rs index 9d3cce98db..e347388625 100644 --- a/framework/base/src/abi/type_abi_impl_codec_multi.rs +++ b/framework/base/src/abi/type_abi_impl_codec_multi.rs @@ -1,10 +1,18 @@ use alloc::format; use crate::{ - abi::{OutputAbis, TypeAbi, TypeDescriptionContainer, TypeName}, + abi::{OutputAbis, TypeAbi, TypeAbiFrom, TypeDescriptionContainer, TypeName}, codec::multi_types::{IgnoreValue, OptionalValue}, }; +#[cfg(feature = "alloc")] +impl TypeAbiFrom> + for crate::codec::multi_types::MultiValueVec +where + T: TypeAbiFrom, +{ +} + #[cfg(feature = "alloc")] impl TypeAbi for crate::codec::multi_types::MultiValueVec { fn type_name() -> TypeName { @@ -24,6 +32,8 @@ impl TypeAbi for crate::codec::multi_types::MultiValueVec { } } +impl TypeAbiFrom for IgnoreValue {} + impl TypeAbi for IgnoreValue { fn type_name() -> TypeName { TypeName::from("ignore") @@ -38,6 +48,8 @@ impl TypeAbi for IgnoreValue { } } +impl TypeAbiFrom> for OptionalValue where T: TypeAbiFrom {} + impl TypeAbi for OptionalValue { fn type_name() -> TypeName { super::type_name_optional::() @@ -59,6 +71,11 @@ impl TypeAbi for OptionalValue { macro_rules! multi_arg_impls { ($(($mval_struct:ident $($n:tt $name:ident)+) )+) => { $( + impl<$($name),+ > TypeAbiFrom for crate::codec::multi_types::$mval_struct<$($name,)+> + where + $($name: TypeAbi,)+ + {} + impl<$($name),+ > TypeAbi for crate::codec::multi_types::$mval_struct<$($name,)+> where $($name: TypeAbi,)+ diff --git a/framework/base/src/storage/mappers/bi_di_mapper.rs b/framework/base/src/storage/mappers/bi_di_mapper.rs index 4878e3c3fc..1ac77da0ae 100644 --- a/framework/base/src/storage/mappers/bi_di_mapper.rs +++ b/framework/base/src/storage/mappers/bi_di_mapper.rs @@ -1,6 +1,7 @@ use core::marker::PhantomData; use crate::{ + abi::TypeAbiFrom, codec::{ multi_encode_iter_or_handle_err, multi_types::MultiValue2, CodecFrom, EncodeErrorHandler, NestedDecode, NestedEncode, TopDecode, TopEncode, TopEncodeMulti, TopEncodeMultiOutput, @@ -307,6 +308,23 @@ where { } +impl TypeAbiFrom> + for MultiValueEncoded> +where + SA: StorageMapperApi, + K: TopEncode + TopDecode + NestedEncode + NestedDecode + 'static + Default + PartialEq, + V: TopEncode + TopDecode + NestedEncode + NestedDecode + 'static + Default + PartialEq, +{ +} + +impl TypeAbiFrom for BiDiMapper +where + SA: StorageMapperApi, + K: TopEncode + TopDecode + NestedEncode + NestedDecode + 'static + Default + PartialEq, + V: TopEncode + TopDecode + NestedEncode + NestedDecode + 'static + Default + PartialEq, +{ +} + impl TypeAbi for BiDiMapper where SA: StorageMapperApi, diff --git a/framework/base/src/storage/mappers/linked_list_mapper.rs b/framework/base/src/storage/mappers/linked_list_mapper.rs index 7382ae8229..826de864e6 100644 --- a/framework/base/src/storage/mappers/linked_list_mapper.rs +++ b/framework/base/src/storage/mappers/linked_list_mapper.rs @@ -5,7 +5,7 @@ use super::{ StorageClearable, StorageMapper, }; use crate::{ - abi::{TypeAbi, TypeDescriptionContainer, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeDescriptionContainer, TypeName}, api::StorageMapperApi, codec::{ self, @@ -620,6 +620,21 @@ where { } +impl TypeAbiFrom> for MultiValueEncoded +where + SA: StorageMapperApi, + T: TopEncode + TopDecode + NestedEncode + NestedDecode + Clone, + U: TypeAbiFrom, +{ +} + +impl TypeAbiFrom for LinkedListMapper +where + SA: StorageMapperApi, + T: TopEncode + TopDecode + NestedEncode + NestedDecode + Clone, +{ +} + impl TypeAbi for LinkedListMapper where SA: StorageMapperApi, diff --git a/framework/base/src/storage/mappers/map_mapper.rs b/framework/base/src/storage/mappers/map_mapper.rs index e8aac7adc1..ab3d0664dc 100644 --- a/framework/base/src/storage/mappers/map_mapper.rs +++ b/framework/base/src/storage/mappers/map_mapper.rs @@ -5,7 +5,7 @@ use super::{ SetMapper, StorageClearable, StorageMapper, }; use crate::{ - abi::{TypeAbi, TypeDescriptionContainer, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeDescriptionContainer, TypeName}, api::StorageMapperApi, codec::{ multi_encode_iter_or_handle_err, multi_types::MultiValue2, CodecFrom, EncodeErrorHandler, @@ -548,6 +548,23 @@ where { } +impl TypeAbiFrom> + for MultiValueEncoded> +where + SA: StorageMapperApi, + K: TopEncode + TopDecode + NestedEncode + NestedDecode + 'static, + V: TopEncode + TopDecode + 'static, +{ +} + +impl TypeAbiFrom for MapMapper +where + SA: StorageMapperApi, + K: TopEncode + TopDecode + NestedEncode + NestedDecode + 'static, + V: TopEncode + TopDecode + 'static, +{ +} + /// Behaves like a MultiResultVec> when an endpoint result. impl TypeAbi for MapMapper where diff --git a/framework/base/src/storage/mappers/queue_mapper.rs b/framework/base/src/storage/mappers/queue_mapper.rs index 93d90de1a3..80269c9366 100644 --- a/framework/base/src/storage/mappers/queue_mapper.rs +++ b/framework/base/src/storage/mappers/queue_mapper.rs @@ -5,7 +5,7 @@ use super::{ StorageClearable, StorageMapper, }; use crate::{ - abi::{TypeAbi, TypeDescriptionContainer, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeDescriptionContainer, TypeName}, api::StorageMapperApi, codec::{ self, @@ -525,6 +525,20 @@ where { } +impl TypeAbiFrom> for MultiValueEncoded +where + SA: StorageMapperApi, + T: TopEncode + TopDecode, +{ +} + +impl TypeAbiFrom for QueueMapper +where + SA: StorageMapperApi, + T: TopEncode + TopDecode, +{ +} + /// Behaves like a MultiResultVec when an endpoint result. impl TypeAbi for QueueMapper where diff --git a/framework/base/src/storage/mappers/set_mapper.rs b/framework/base/src/storage/mappers/set_mapper.rs index 79492b9a43..12c83dbd98 100644 --- a/framework/base/src/storage/mappers/set_mapper.rs +++ b/framework/base/src/storage/mappers/set_mapper.rs @@ -5,7 +5,7 @@ use storage_get_from_address::storage_get_len_from_address; pub use super::queue_mapper::Iter; use super::{QueueMapper, StorageClearable, StorageMapper}; use crate::{ - abi::{TypeAbi, TypeDescriptionContainer, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeDescriptionContainer, TypeName}, api::StorageMapperApi, codec::{ self, multi_encode_iter_or_handle_err, CodecFrom, EncodeErrorHandler, NestedDecode, @@ -301,6 +301,20 @@ where { } +impl TypeAbiFrom> for MultiValueEncoded +where + SA: StorageMapperApi, + T: TopEncode + TopDecode + NestedEncode + NestedDecode + 'static, +{ +} + +impl TypeAbiFrom for SetMapper +where + SA: StorageMapperApi, + T: TopEncode + TopDecode + NestedEncode + NestedDecode + 'static, +{ +} + /// Behaves like a MultiResultVec when an endpoint result. impl TypeAbi for SetMapper where diff --git a/framework/base/src/storage/mappers/single_value_mapper.rs b/framework/base/src/storage/mappers/single_value_mapper.rs index 5eade9503a..528a988ddf 100644 --- a/framework/base/src/storage/mappers/single_value_mapper.rs +++ b/framework/base/src/storage/mappers/single_value_mapper.rs @@ -5,7 +5,7 @@ use super::{ StorageMapper, }; use crate::{ - abi::{TypeAbi, TypeDescriptionContainer, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeDescriptionContainer, TypeName}, api::StorageMapperApi, codec::{ multi_types::PlaceholderOutput, CodecFrom, CodecFromSelf, DecodeErrorHandler, @@ -210,6 +210,14 @@ where { } +impl TypeAbiFrom> for SingleValue +where + SA: StorageMapperApi, + T: TopEncode + TopDecode, + R: TopDecode + CodecFrom, +{ +} + impl CodecFrom> for PlaceholderOutput where SA: StorageMapperApi, @@ -217,6 +225,20 @@ where { } +impl TypeAbiFrom> for PlaceholderOutput +where + SA: StorageMapperApi, + T: TopEncode + TopDecode, +{ +} + +impl TypeAbiFrom for SingleValueMapper +where + SA: StorageMapperApi, + T: TopEncode + TopDecode + TypeAbi, +{ +} + impl TypeAbi for SingleValueMapper where SA: StorageMapperApi, diff --git a/framework/base/src/storage/mappers/token/fungible_token_mapper.rs b/framework/base/src/storage/mappers/token/fungible_token_mapper.rs index efc322c2eb..309902d02f 100644 --- a/framework/base/src/storage/mappers/token/fungible_token_mapper.rs +++ b/framework/base/src/storage/mappers/token/fungible_token_mapper.rs @@ -1,5 +1,5 @@ use crate::{ - abi::TypeAbi, + abi::{TypeAbi, TypeAbiFrom}, api::ErrorApiImpl, codec::{CodecFrom, EncodeErrorHandler, TopEncodeMulti, TopEncodeMultiOutput}, storage_clear, storage_get, storage_set, @@ -275,6 +275,13 @@ impl CodecFrom> for TokenIdentifier where { } +impl TypeAbiFrom> for TokenIdentifier where + SA: StorageMapperApi + CallTypeApi +{ +} + +impl TypeAbiFrom for FungibleTokenMapper where SA: StorageMapperApi + CallTypeApi {} + impl TypeAbi for FungibleTokenMapper where SA: StorageMapperApi + CallTypeApi, diff --git a/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs b/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs index 3e886f21de..3f3c466fea 100644 --- a/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs +++ b/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs @@ -1,4 +1,5 @@ use crate::{ + abi::TypeAbiFrom, codec::{ CodecFrom, EncodeErrorHandler, TopDecode, TopEncode, TopEncodeMulti, TopEncodeMultiOutput, }, @@ -415,6 +416,13 @@ impl CodecFrom> for TokenIdentifier where { } +impl TypeAbiFrom> for TokenIdentifier where + SA: StorageMapperApi + CallTypeApi +{ +} + +impl TypeAbiFrom for NonFungibleTokenMapper where SA: StorageMapperApi + CallTypeApi {} + impl TypeAbi for NonFungibleTokenMapper where SA: StorageMapperApi + CallTypeApi, diff --git a/framework/base/src/storage/mappers/unique_id_mapper.rs b/framework/base/src/storage/mappers/unique_id_mapper.rs index 550729952f..051bfafd1b 100644 --- a/framework/base/src/storage/mappers/unique_id_mapper.rs +++ b/framework/base/src/storage/mappers/unique_id_mapper.rs @@ -1,4 +1,5 @@ use crate::{ + abi::TypeAbiFrom, codec::{ multi_encode_iter_or_handle_err, CodecFrom, EncodeErrorHandler, TopEncodeMulti, TopEncodeMultiOutput, @@ -218,6 +219,13 @@ impl CodecFrom> for MultiValueEncoded TypeAbiFrom> for MultiValueEncoded where + SA: StorageMapperApi +{ +} + +impl TypeAbiFrom for UniqueIdMapper where SA: StorageMapperApi {} + /// Behaves like a MultiResultVec when an endpoint result. impl TypeAbi for UniqueIdMapper where diff --git a/framework/base/src/storage/mappers/unordered_set_mapper.rs b/framework/base/src/storage/mappers/unordered_set_mapper.rs index ef2a708fad..4817b6776e 100644 --- a/framework/base/src/storage/mappers/unordered_set_mapper.rs +++ b/framework/base/src/storage/mappers/unordered_set_mapper.rs @@ -6,7 +6,7 @@ use super::{ StorageClearable, StorageMapper, VecMapper, }; use crate::{ - abi::{TypeAbi, TypeDescriptionContainer, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeDescriptionContainer, TypeName}, api::StorageMapperApi, codec::{ multi_encode_iter_or_handle_err, CodecFrom, EncodeErrorHandler, NestedDecode, NestedEncode, @@ -232,6 +232,20 @@ where { } +impl TypeAbiFrom> for MultiValueEncoded +where + SA: StorageMapperApi, + T: TopEncode + TopDecode + NestedEncode + NestedDecode + 'static, +{ +} + +impl TypeAbiFrom for UnorderedSetMapper +where + SA: StorageMapperApi, + T: TopEncode + TopDecode + NestedEncode + NestedDecode + 'static, +{ +} + /// Behaves like a MultiResultVec when an endpoint result. impl TypeAbi for UnorderedSetMapper where diff --git a/framework/base/src/storage/mappers/user_mapper.rs b/framework/base/src/storage/mappers/user_mapper.rs index 4fc7a50f74..a2dad255c3 100644 --- a/framework/base/src/storage/mappers/user_mapper.rs +++ b/framework/base/src/storage/mappers/user_mapper.rs @@ -1,8 +1,11 @@ use core::marker::PhantomData; -use crate::codec::{ - multi_encode_iter_or_handle_err, CodecFrom, EncodeErrorHandler, TopEncodeMulti, - TopEncodeMultiOutput, +use crate::{ + abi::TypeAbiFrom, + codec::{ + multi_encode_iter_or_handle_err, CodecFrom, EncodeErrorHandler, TopEncodeMulti, + TopEncodeMultiOutput, + }, }; use super::{ @@ -224,6 +227,13 @@ impl CodecFrom> for MultiValueEncoded TypeAbiFrom> for MultiValueEncoded> where + SA: StorageMapperApi +{ +} + +impl TypeAbiFrom for UserMapper where SA: StorageMapperApi {} + /// Behaves like a MultiResultVec when an endpoint result. impl TypeAbi for UserMapper where diff --git a/framework/base/src/storage/mappers/vec_mapper.rs b/framework/base/src/storage/mappers/vec_mapper.rs index b6508a8900..f4468d2957 100644 --- a/framework/base/src/storage/mappers/vec_mapper.rs +++ b/framework/base/src/storage/mappers/vec_mapper.rs @@ -3,7 +3,7 @@ use super::{ StorageClearable, StorageMapper, }; use crate::{ - abi::{TypeAbi, TypeDescriptionContainer, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeDescriptionContainer, TypeName}, api::{ErrorApiImpl, StorageMapperApi}, codec::{ multi_encode_iter_or_handle_err, CodecFrom, EncodeErrorHandler, TopDecode, TopEncode, @@ -351,6 +351,20 @@ where { } +impl TypeAbiFrom> for MultiValueEncoded +where + SA: StorageMapperApi, + T: TopEncode + TopDecode, +{ +} + +impl TypeAbiFrom for VecMapper +where + SA: StorageMapperApi, + T: TopEncode + TopDecode, +{ +} + /// Behaves like a MultiResultVec when an endpoint result. impl TypeAbi for VecMapper where diff --git a/framework/base/src/types/crypto/message_hash_type.rs b/framework/base/src/types/crypto/message_hash_type.rs index 18d3f384fe..c6cd93d181 100644 --- a/framework/base/src/types/crypto/message_hash_type.rs +++ b/framework/base/src/types/crypto/message_hash_type.rs @@ -1,7 +1,9 @@ use crate::{ - abi::{TypeAbi, TypeName}, - codec, - codec::derive::{NestedDecode, NestedEncode, TopDecode, TopEncode}, + abi::{TypeAbi, TypeAbiFrom, TypeName}, + codec::{ + self, + derive::{NestedDecode, NestedEncode, TopDecode, TopEncode}, + }, }; /// Message hash type for the `verifyCustomSecp256k1` CryptoApi function @@ -38,6 +40,8 @@ impl From for MessageHashType { } } +impl TypeAbiFrom for MessageHashType {} + impl TypeAbi for MessageHashType { fn type_name() -> TypeName { "MessageHashType".into() diff --git a/framework/base/src/types/flags/code_metadata.rs b/framework/base/src/types/flags/code_metadata.rs index 6c65859c1a..a360909602 100644 --- a/framework/base/src/types/flags/code_metadata.rs +++ b/framework/base/src/types/flags/code_metadata.rs @@ -1,7 +1,7 @@ #![allow(clippy::bad_bit_mask)] use crate::{ - abi::{TypeAbi, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeName}, codec::*, formatter::{hex_util, FormatByteReceiver, SCBinary, SCDisplay, SCLowerHex}, }; @@ -103,6 +103,8 @@ impl TopDecode for CodeMetadata { } } +impl TypeAbiFrom for CodeMetadata {} + impl TypeAbi for CodeMetadata { fn type_name() -> TypeName { "CodeMetadata".into() diff --git a/framework/base/src/types/heap/async_call_result.rs b/framework/base/src/types/heap/async_call_result.rs index 4084c83bc7..e5def9b718 100644 --- a/framework/base/src/types/heap/async_call_result.rs +++ b/framework/base/src/types/heap/async_call_result.rs @@ -1,5 +1,5 @@ use crate::{ - abi::{TypeAbi, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeName}, codec::{ DecodeErrorHandler, EncodeErrorHandler, TopDecodeMulti, TopDecodeMultiInput, TopEncodeMulti, TopEncodeMultiOutput, @@ -82,6 +82,8 @@ where } } +impl TypeAbiFrom for AsyncCallResult {} + impl TypeAbi for AsyncCallResult { fn type_name() -> TypeName { let mut repr = TypeName::from("AsyncCallResult<"); diff --git a/framework/base/src/types/heap/boxed_bytes.rs b/framework/base/src/types/heap/boxed_bytes.rs index 1b7c2b35e7..f29b772a36 100644 --- a/framework/base/src/types/heap/boxed_bytes.rs +++ b/framework/base/src/types/heap/boxed_bytes.rs @@ -1,5 +1,5 @@ use crate::{ - abi::{TypeAbi, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeName}, codec::*, }; use alloc::{ @@ -240,6 +240,8 @@ impl TopDecode for BoxedBytes { } } +impl TypeAbiFrom for BoxedBytes {} + impl TypeAbi for BoxedBytes { fn type_name() -> TypeName { "bytes".into() diff --git a/framework/base/src/types/heap/h256.rs b/framework/base/src/types/heap/h256.rs index a097b0d08d..c7c20b26c3 100644 --- a/framework/base/src/types/heap/h256.rs +++ b/framework/base/src/types/heap/h256.rs @@ -1,5 +1,5 @@ use crate::{ - abi::{TypeAbi, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeName}, types::heap::BoxedBytes, }; use alloc::{boxed::Box, vec::Vec}; @@ -224,6 +224,8 @@ impl TopDecode for H256 { } } +impl TypeAbiFrom for H256 {} + impl TypeAbi for H256 { fn type_name() -> TypeName { "H256".into() diff --git a/framework/base/src/types/heap/h256_address.rs b/framework/base/src/types/heap/h256_address.rs index 5e4712df7a..0eed2a0ede 100644 --- a/framework/base/src/types/heap/h256_address.rs +++ b/framework/base/src/types/heap/h256_address.rs @@ -1,6 +1,6 @@ use super::h256::H256; use crate::{ - abi::{TypeAbi, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeName}, types::heap::BoxedBytes, }; use alloc::{boxed::Box, vec::Vec}; @@ -202,6 +202,8 @@ impl TopDecode for Address { } } +impl TypeAbiFrom for Address {} + impl TypeAbi for Address { fn type_name() -> TypeName { "Address".into() diff --git a/framework/base/src/types/heap/queue.rs b/framework/base/src/types/heap/queue.rs index 1c32848acf..8cdb66c8b1 100644 --- a/framework/base/src/types/heap/queue.rs +++ b/framework/base/src/types/heap/queue.rs @@ -1,5 +1,5 @@ use crate::{ - abi::{TypeAbi, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeName}, codec::*, }; use alloc::vec::Vec; @@ -136,6 +136,8 @@ impl TopDecode for Queue { } } +impl TypeAbiFrom for Queue {} + impl TypeAbi for Queue { fn type_name() -> TypeName { let mut repr = TypeName::from("Queue<"); diff --git a/framework/base/src/types/interaction/managed_arg_buffer.rs b/framework/base/src/types/interaction/managed_arg_buffer.rs index e2d13f3566..ab103040f7 100644 --- a/framework/base/src/types/interaction/managed_arg_buffer.rs +++ b/framework/base/src/types/interaction/managed_arg_buffer.rs @@ -1,5 +1,5 @@ use crate::{ - abi::{TypeAbi, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeName}, api::{ErrorApi, ManagedTypeApi}, codec::{ DecodeErrorHandler, EncodeErrorHandler, NestedDecode, NestedDecodeInput, NestedEncode, @@ -299,6 +299,8 @@ where } } +impl TypeAbiFrom for ManagedArgBuffer where M: ManagedTypeApi {} + impl TypeAbi for ManagedArgBuffer where M: ManagedTypeApi, diff --git a/framework/base/src/types/interaction/tx_data/function_call.rs b/framework/base/src/types/interaction/tx_data/function_call.rs index 9242e141cf..2f110040fd 100644 --- a/framework/base/src/types/interaction/tx_data/function_call.rs +++ b/framework/base/src/types/interaction/tx_data/function_call.rs @@ -4,7 +4,7 @@ use multiversx_sc_codec::{ }; use crate::{ - abi::{TypeAbi, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeName}, api::{ CallTypeApi, ManagedTypeApi, ESDT_MULTI_TRANSFER_FUNC_NAME, ESDT_NFT_TRANSFER_FUNC_NAME, ESDT_TRANSFER_FUNC_NAME, @@ -136,6 +136,8 @@ where } } +impl TypeAbiFrom for FunctionCall where Api: ManagedTypeApi {} + impl TypeAbi for FunctionCall where Api: ManagedTypeApi, diff --git a/framework/base/src/types/io/operation_completion_status.rs b/framework/base/src/types/io/operation_completion_status.rs index b2c7e5bb0c..125674ec30 100644 --- a/framework/base/src/types/io/operation_completion_status.rs +++ b/framework/base/src/types/io/operation_completion_status.rs @@ -4,7 +4,7 @@ use multiversx_sc_codec::{ use crate::{ abi::{ - ExplicitEnumVariantDescription, TypeAbi, TypeContents, TypeDescription, + ExplicitEnumVariantDescription, TypeAbi, TypeAbiFrom, TypeContents, TypeDescription, TypeDescriptionContainer, TypeName, }, api::ManagedTypeApi, @@ -77,6 +77,12 @@ impl CodecFrom for ManagedBuffer for crate::types::heap::BoxedBytes {} impl CodecFrom for crate::types::heap::Vec {} +impl TypeAbiFrom for ManagedBuffer {} +impl TypeAbiFrom for crate::types::heap::BoxedBytes {} +impl TypeAbiFrom for crate::types::heap::Vec {} + +impl TypeAbiFrom for OperationCompletionStatus {} + impl TypeAbi for OperationCompletionStatus { fn type_name() -> TypeName { TypeName::from("OperationCompletionStatus") diff --git a/framework/base/src/types/io/sc_result.rs b/framework/base/src/types/io/sc_result.rs index 78a4d2ec18..fcad33270a 100644 --- a/framework/base/src/types/io/sc_result.rs +++ b/framework/base/src/types/io/sc_result.rs @@ -1,6 +1,9 @@ use alloc::format; -use crate::codec::{EncodeErrorHandler, TopEncodeMulti, TopEncodeMultiOutput}; +use crate::{ + abi::TypeAbiFrom, + codec::{EncodeErrorHandler, TopEncodeMulti, TopEncodeMultiOutput}, +}; use crate::{ abi::{OutputAbis, TypeAbi, TypeDescriptionContainer, TypeName}, @@ -129,6 +132,8 @@ where } } +impl TypeAbiFrom for SCResult {} + impl TypeAbi for SCResult { fn type_name() -> TypeName { T::type_name() diff --git a/framework/base/src/types/managed/basic/big_float.rs b/framework/base/src/types/managed/basic/big_float.rs index 83ef5613e3..62126efd19 100644 --- a/framework/base/src/types/managed/basic/big_float.rs +++ b/framework/base/src/types/managed/basic/big_float.rs @@ -1,6 +1,7 @@ use super::ManagedBuffer; use crate::{ + abi::{TypeAbi, TypeAbiFrom}, api::{ use_raw_handle, BigFloatApiImpl, ManagedTypeApi, ManagedTypeApiImpl, Sign, StaticVarApiImpl, }, @@ -285,7 +286,9 @@ impl NestedDecode for BigFloat { } } -impl crate::abi::TypeAbi for BigFloat { +impl TypeAbiFrom for BigFloat where M: ManagedTypeApi {} + +impl TypeAbi for BigFloat { fn type_name() -> String { String::from("BigFloat") } diff --git a/framework/base/src/types/managed/basic/big_int.rs b/framework/base/src/types/managed/basic/big_int.rs index e924a14787..a27611a903 100644 --- a/framework/base/src/types/managed/basic/big_int.rs +++ b/framework/base/src/types/managed/basic/big_int.rs @@ -1,7 +1,7 @@ use core::{convert::TryInto, marker::PhantomData}; use crate::{ - abi::TypeName, + abi::{TypeAbiFrom, TypeName}, api::{ const_handles, use_raw_handle, BigIntApiImpl, HandleConstraints, ManagedBufferApiImpl, ManagedTypeApi, ManagedTypeApiImpl, RawHandle, StaticVarApiImpl, @@ -298,6 +298,8 @@ impl TopDecode for BigInt { } } +impl TypeAbiFrom for BigInt where M: ManagedTypeApi {} + impl crate::abi::TypeAbi for BigInt { fn type_name() -> TypeName { TypeName::from("BigInt") diff --git a/framework/base/src/types/managed/basic/big_int_sign.rs b/framework/base/src/types/managed/basic/big_int_sign.rs index 641e1c9328..0ed8cabbc2 100644 --- a/framework/base/src/types/managed/basic/big_int_sign.rs +++ b/framework/base/src/types/managed/basic/big_int_sign.rs @@ -3,7 +3,7 @@ use crate::codec::{ NestedEncodeOutput, TopDecode, TopDecodeInput, TopEncode, TopEncodeOutput, }; -use crate::abi::TypeName; +use crate::abi::{TypeAbi, TypeAbiFrom, TypeName}; // BigInt sign. #[allow(clippy::enum_variant_names)] @@ -79,7 +79,9 @@ impl TopDecode for Sign { } } -impl crate::abi::TypeAbi for Sign { +impl TypeAbiFrom for Sign {} + +impl TypeAbi for Sign { fn type_name() -> TypeName { TypeName::from("Sign") } diff --git a/framework/base/src/types/managed/basic/big_uint.rs b/framework/base/src/types/managed/basic/big_uint.rs index 5f32388093..9f78792eab 100644 --- a/framework/base/src/types/managed/basic/big_uint.rs +++ b/framework/base/src/types/managed/basic/big_uint.rs @@ -1,7 +1,7 @@ use core::convert::TryInto; use crate::{ - abi::TypeName, + abi::{TypeAbiFrom, TypeName}, api::{ const_handles, use_raw_handle, BigIntApiImpl, HandleConstraints, ManagedBufferApiImpl, ManagedTypeApi, ManagedTypeApiImpl, RawHandle, StaticVarApiImpl, @@ -287,6 +287,8 @@ impl TopDecode for BigUint { } } +impl TypeAbiFrom for BigUint where M: ManagedTypeApi {} + impl crate::abi::TypeAbi for BigUint { fn type_name() -> TypeName { TypeName::from("BigUint") diff --git a/framework/base/src/types/managed/basic/elliptic_curve.rs b/framework/base/src/types/managed/basic/elliptic_curve.rs index 904a0de67a..9359ecfce3 100644 --- a/framework/base/src/types/managed/basic/elliptic_curve.rs +++ b/framework/base/src/types/managed/basic/elliptic_curve.rs @@ -1,5 +1,5 @@ use crate::{ - abi::{TypeAbi, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeName}, api::{use_raw_handle, BigIntApiImpl, EllipticCurveApiImpl, ManagedTypeApi}, types::{BigUint, ManagedType}, }; @@ -418,6 +418,8 @@ impl TopEncode for EllipticCurve { } } +impl TypeAbiFrom for EllipticCurve where M: ManagedTypeApi {} + impl TypeAbi for EllipticCurve { fn type_name() -> TypeName { TypeName::from("EllipticCurve") diff --git a/framework/base/src/types/managed/basic/managed_buffer.rs b/framework/base/src/types/managed/basic/managed_buffer.rs index b39643a27d..a9d7483125 100644 --- a/framework/base/src/types/managed/basic/managed_buffer.rs +++ b/framework/base/src/types/managed/basic/managed_buffer.rs @@ -1,5 +1,5 @@ use crate::{ - abi::TypeName, + abi::{TypeAbiFrom, TypeName}, api::{ use_raw_handle, ErrorApiImpl, HandleConstraints, InvalidSliceError, ManagedBufferApiImpl, ManagedTypeApi, StaticVarApiImpl, @@ -461,6 +461,8 @@ impl TopDecode for ManagedBuffer { } } +impl TypeAbiFrom for ManagedBuffer where M: ManagedTypeApi {} + impl crate::abi::TypeAbi for ManagedBuffer { fn type_name() -> TypeName { "bytes".into() diff --git a/framework/base/src/types/managed/multi_value/async_call_result_managed.rs b/framework/base/src/types/managed/multi_value/async_call_result_managed.rs index 6cdd2d7513..b8b37e20da 100644 --- a/framework/base/src/types/managed/multi_value/async_call_result_managed.rs +++ b/framework/base/src/types/managed/multi_value/async_call_result_managed.rs @@ -1,5 +1,5 @@ use crate::{ - abi::{TypeAbi, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeName}, api::ManagedTypeApi, codec::{ DecodeErrorHandler, EncodeErrorHandler, TopDecodeMulti, TopDecodeMultiInput, @@ -97,6 +97,13 @@ where } } +impl TypeAbiFrom for ManagedAsyncCallResult +where + M: ManagedTypeApi, + T: TypeAbi, +{ +} + impl TypeAbi for ManagedAsyncCallResult where M: ManagedTypeApi, diff --git a/framework/base/src/types/managed/multi_value/esdt_token_payment_multi_value.rs b/framework/base/src/types/managed/multi_value/esdt_token_payment_multi_value.rs index 9f27f1cd89..11c81faaaa 100644 --- a/framework/base/src/types/managed/multi_value/esdt_token_payment_multi_value.rs +++ b/framework/base/src/types/managed/multi_value/esdt_token_payment_multi_value.rs @@ -1,6 +1,9 @@ -use crate::codec::{ - multi_types::MultiValue3, DecodeErrorHandler, EncodeErrorHandler, TopDecodeMulti, - TopDecodeMultiInput, TopDecodeMultiLength, TopEncodeMulti, TopEncodeMultiOutput, +use crate::{ + abi::TypeAbiFrom, + codec::{ + multi_types::MultiValue3, DecodeErrorHandler, EncodeErrorHandler, TopDecodeMulti, + TopDecodeMultiInput, TopDecodeMultiLength, TopEncodeMulti, TopEncodeMultiOutput, + }, }; use crate::{ @@ -98,6 +101,8 @@ where const LEN: usize = 3; } +impl TypeAbiFrom for EsdtTokenPaymentMultiValue where M: ManagedTypeApi {} + impl TypeAbi for EsdtTokenPaymentMultiValue where M: ManagedTypeApi, diff --git a/framework/base/src/types/managed/multi_value/multi_value_encoded.rs b/framework/base/src/types/managed/multi_value/multi_value_encoded.rs index be22e29b10..01e894cf3e 100644 --- a/framework/base/src/types/managed/multi_value/multi_value_encoded.rs +++ b/framework/base/src/types/managed/multi_value/multi_value_encoded.rs @@ -1,5 +1,5 @@ use crate::{ - abi::{TypeAbi, TypeDescriptionContainer, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeDescriptionContainer, TypeName}, api::{ErrorApi, ManagedTypeApi}, codec::{ try_cast_execute_or_else, CodecFromSelf, DecodeErrorHandler, EncodeErrorHandler, TopDecode, @@ -222,6 +222,13 @@ where } } +impl TypeAbiFrom for MultiValueEncoded +where + M: ManagedTypeApi, + T: TypeAbi, +{ +} + impl TypeAbi for MultiValueEncoded where M: ManagedTypeApi, diff --git a/framework/base/src/types/managed/multi_value/multi_value_managed_vec.rs b/framework/base/src/types/managed/multi_value/multi_value_managed_vec.rs index 6779df703b..7bae85617e 100644 --- a/framework/base/src/types/managed/multi_value/multi_value_managed_vec.rs +++ b/framework/base/src/types/managed/multi_value/multi_value_managed_vec.rs @@ -1,5 +1,5 @@ use crate::{ - abi::{TypeAbi, TypeDescriptionContainer, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeDescriptionContainer, TypeName}, api::ManagedTypeApi, codec::{ DecodeErrorHandler, EncodeErrorHandler, TopDecodeMulti, TopDecodeMultiInput, @@ -210,6 +210,13 @@ where } } +impl TypeAbiFrom for MultiValueManagedVec +where + M: ManagedTypeApi, + T: ManagedVecItem, +{ +} + impl TypeAbi for MultiValueManagedVec where M: ManagedTypeApi, diff --git a/framework/base/src/types/managed/multi_value/multi_value_managed_vec_counted.rs b/framework/base/src/types/managed/multi_value/multi_value_managed_vec_counted.rs index eaab79dbed..74e71e7960 100644 --- a/framework/base/src/types/managed/multi_value/multi_value_managed_vec_counted.rs +++ b/framework/base/src/types/managed/multi_value/multi_value_managed_vec_counted.rs @@ -1,5 +1,5 @@ use crate::{ - abi::{TypeAbi, TypeDescriptionContainer, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeDescriptionContainer, TypeName}, api::ManagedTypeApi, codec::{ DecodeErrorHandler, EncodeErrorHandler, TopDecodeMulti, TopDecodeMultiInput, @@ -126,6 +126,13 @@ where } } +impl TypeAbiFrom for MultiValueManagedVecCounted +where + M: ManagedTypeApi, + T: ManagedVecItem + TypeAbi, +{ +} + impl TypeAbi for MultiValueManagedVecCounted where M: ManagedTypeApi, diff --git a/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs b/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs index c363853203..16f6714ff0 100644 --- a/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs +++ b/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs @@ -1,5 +1,5 @@ use crate::{ - abi::{TypeAbi, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeName}, api::{HandleConstraints, ManagedTypeApi}, codec::*, derive::ManagedVecItem, @@ -213,6 +213,8 @@ impl CodecFrom<&TokenIdentifier> for EgldOrEsdtTokenIdentifier where M: impl CodecFrom<&[u8]> for EgldOrEsdtTokenIdentifier where M: ManagedTypeApi {} impl CodecFrom<&str> for EgldOrEsdtTokenIdentifier where M: ManagedTypeApi {} +impl TypeAbiFrom for EgldOrEsdtTokenIdentifier {} + impl TypeAbi for EgldOrEsdtTokenIdentifier { fn type_name() -> TypeName { "EgldOrEsdtTokenIdentifier".into() diff --git a/framework/base/src/types/managed/wrapped/managed_address.rs b/framework/base/src/types/managed/wrapped/managed_address.rs index d0bf38f9dc..5ab0941f47 100644 --- a/framework/base/src/types/managed/wrapped/managed_address.rs +++ b/framework/base/src/types/managed/wrapped/managed_address.rs @@ -1,7 +1,7 @@ use core::convert::{TryFrom, TryInto}; use crate::{ - abi::{TypeAbi, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeName}, api::ManagedTypeApi, codec::{ CodecFrom, CodecFromSelf, DecodeError, DecodeErrorHandler, EncodeErrorHandler, @@ -234,6 +234,8 @@ where } } +impl TypeAbiFrom for ManagedAddress where M: ManagedTypeApi {} + impl TypeAbi for ManagedAddress where M: ManagedTypeApi, diff --git a/framework/base/src/types/managed/wrapped/managed_byte_array.rs b/framework/base/src/types/managed/wrapped/managed_byte_array.rs index 5ff3b37c6f..79bc111792 100644 --- a/framework/base/src/types/managed/wrapped/managed_byte_array.rs +++ b/framework/base/src/types/managed/wrapped/managed_byte_array.rs @@ -3,7 +3,7 @@ use core::convert::TryFrom; use alloc::format; use crate::{ - abi::{TypeAbi, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeName}, api::ManagedTypeApi, codec::{ DecodeError, DecodeErrorHandler, EncodeErrorHandler, NestedDecode, NestedDecodeInput, @@ -205,13 +205,15 @@ where } } +impl TypeAbiFrom for ManagedByteArray where M: ManagedTypeApi {} + impl TypeAbi for ManagedByteArray where M: ManagedTypeApi, { /// It is semantically equivalent to `[u8; N]`. fn type_name() -> TypeName { - <&[u8; N] as TypeAbi>::type_name() + <[u8; N] as TypeAbi>::type_name() } fn type_name_rust() -> TypeName { diff --git a/framework/base/src/types/managed/wrapped/managed_option.rs b/framework/base/src/types/managed/wrapped/managed_option.rs index 7dd8ed2dad..b7bafe4055 100644 --- a/framework/base/src/types/managed/wrapped/managed_option.rs +++ b/framework/base/src/types/managed/wrapped/managed_option.rs @@ -1,8 +1,11 @@ use core::marker::PhantomData; -use crate::codec::{ - DecodeErrorHandler, EncodeErrorHandler, NestedDecode, NestedDecodeInput, NestedEncode, - NestedEncodeOutput, TopDecode, TopDecodeInput, TopEncode, TopEncodeOutput, +use crate::{ + abi::TypeAbiFrom, + codec::{ + DecodeErrorHandler, EncodeErrorHandler, NestedDecode, NestedDecodeInput, NestedEncode, + NestedEncodeOutput, TopDecode, TopDecodeInput, TopEncode, TopEncodeOutput, + }, }; use crate::{ @@ -269,6 +272,29 @@ where } } +impl TypeAbiFrom> for ManagedOption +where + M: ManagedTypeApi, + U: ManagedType, + T: ManagedType + TypeAbiFrom, +{ +} + +impl TypeAbiFrom> for ManagedOption +where + M: ManagedTypeApi, + T: ManagedType + TypeAbiFrom, +{ +} + +impl TypeAbiFrom> for Option +where + M: ManagedTypeApi, + U: ManagedType, + T: TypeAbiFrom, +{ +} + impl TypeAbi for ManagedOption where M: ManagedTypeApi, diff --git a/framework/base/src/types/managed/wrapped/managed_vec.rs b/framework/base/src/types/managed/wrapped/managed_vec.rs index 0b6b4c996a..3897ff2604 100644 --- a/framework/base/src/types/managed/wrapped/managed_vec.rs +++ b/framework/base/src/types/managed/wrapped/managed_vec.rs @@ -1,6 +1,6 @@ use super::EncodedManagedVecItem; use crate::{ - abi::{TypeAbi, TypeDescriptionContainer, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeDescriptionContainer, TypeName}, api::{ErrorApiImpl, InvalidSliceError, ManagedTypeApi}, codec::{ DecodeErrorHandler, EncodeErrorHandler, IntoMultiValue, NestedDecode, NestedDecodeInput, @@ -678,6 +678,29 @@ where } } +impl TypeAbiFrom> for ManagedVec +where + M: ManagedTypeApi, + U: ManagedVecItem, + T: ManagedVecItem + TypeAbiFrom, +{ +} + +impl TypeAbiFrom> for ManagedVec +where + M: ManagedTypeApi, + T: ManagedVecItem + TypeAbiFrom, +{ +} + +impl TypeAbiFrom> for Vec +where + M: ManagedTypeApi, + U: ManagedVecItem, + T: TypeAbiFrom, +{ +} + impl TypeAbi for ManagedVec where M: ManagedTypeApi, diff --git a/framework/base/src/types/managed/wrapped/token_identifier.rs b/framework/base/src/types/managed/wrapped/token_identifier.rs index 53078e09d7..8eea09f437 100644 --- a/framework/base/src/types/managed/wrapped/token_identifier.rs +++ b/framework/base/src/types/managed/wrapped/token_identifier.rs @@ -1,5 +1,5 @@ use crate::{ - abi::{TypeAbi, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeName}, api::{ErrorApi, ErrorApiImpl, HandleConstraints, ManagedTypeApi, ManagedTypeApiImpl}, codec::*, err_msg, @@ -168,6 +168,8 @@ impl CodecFrom<&[u8]> for TokenIdentifier where M: ManagedTypeApi {} impl CodecFrom> for TokenIdentifier where M: ManagedTypeApi {} +impl TypeAbiFrom for TokenIdentifier {} + impl TypeAbi for TokenIdentifier { fn type_name() -> TypeName { "TokenIdentifier".into() diff --git a/framework/base/src/types/static_buffer/sparse_array.rs b/framework/base/src/types/static_buffer/sparse_array.rs index a0e556f2d8..9d35219466 100644 --- a/framework/base/src/types/static_buffer/sparse_array.rs +++ b/framework/base/src/types/static_buffer/sparse_array.rs @@ -1,7 +1,7 @@ use alloc::format; use crate::{ - abi::{TypeAbi, TypeDescriptionContainer, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeDescriptionContainer, TypeName}, api::{ErrorApi, ErrorApiImpl}, codec::{self, arrayvec::ArrayVec, NestedDecode, NestedEncode, TopDecode, TopEncode}, }; @@ -304,6 +304,8 @@ where } } +impl TypeAbiFrom for SparseArray where E: ErrorApi {} + impl TypeAbi for SparseArray where E: ErrorApi, diff --git a/framework/derive/src/type_abi_derive.rs b/framework/derive/src/type_abi_derive.rs index 6799aac9d2..3c95ca3dda 100644 --- a/framework/derive/src/type_abi_derive.rs +++ b/framework/derive/src/type_abi_derive.rs @@ -123,6 +123,8 @@ pub fn type_abi_derive(input: proc_macro::TokenStream) -> proc_macro2::TokenStre let name_str = name.to_string(); let (impl_generics, ty_generics, where_clause) = &ast.generics.split_for_impl(); quote! { + impl #impl_generics multiversx_sc::abi::TypeAbiFrom for #name #ty_generics #where_clause {} + impl #impl_generics multiversx_sc::abi::TypeAbi for #name #ty_generics #where_clause { fn type_name() -> multiversx_sc::abi::TypeName { #name_str.into() From a3ee194c657f527daf9344144fcad7b44689a487 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sat, 4 May 2024 15:44:10 +0300 Subject: [PATCH 435/461] TypeAbiFrom in new proxies, impl for more types --- .../tests/price_aggregator_proxy.rs | 62 ++++++++-------- contracts/examples/adder/src/adder_proxy.rs | 6 +- .../src/crowdfunding_esdt_proxy.rs | 8 +- .../src/kitty_ownership_proxy.rs | 60 +++++++-------- .../src/kitty_genetic_alg_proxy.rs | 4 +- .../src/kitty_ownership_proxy.rs | 60 +++++++-------- .../src/proxy_crypto_zombies.rs | 30 ++++---- .../digital-cash/src/digital_cash_proxy.rs | 44 +++++------ .../src/nft_marketplace_proxy.rs | 6 +- .../examples/multisig/src/multisig_proxy.rs | 74 +++++++++---------- .../nft-minter/src/nft_marketplace_proxy.rs | 6 +- .../src/rewards_distribution_proxy.rs | 37 +++++----- .../src/seed_nft_minter_proxy.rs | 28 +++---- .../tests/mock_seed_nft_minter_proxy.rs | 4 +- .../src/nft_marketplace_proxy.rs | 6 +- .../feature-tests/abi-tester/src/abi_proxy.rs | 36 ++++----- .../parent/src/child_proxy.rs | 6 +- .../forwarder/src/vault_proxy.rs | 28 +++---- .../promises-features/src/vault_proxy.rs | 28 +++---- .../proxy-test-first/src/message_me_proxy.rs | 10 +-- .../proxy-test-first/src/pay_me_proxy.rs | 4 +- .../recursive-caller/src/self_proxy.rs | 8 +- .../recursive-caller/src/vault_proxy.rs | 28 +++---- .../crowdfunding-erc20/src/erc20_proxy.rs | 22 +++--- .../erc1155-marketplace/src/erc1155_proxy.rs | 58 +++++++-------- .../erc1155/src/erc1155_user_proxy.rs | 20 ++--- .../lottery-erc20/src/erc20_proxy.rs | 22 +++--- .../panic-message-features/tests/pmf_proxy.rs | 2 +- .../src/scenario_tester_proxy.rs | 6 +- contracts/modules/src/dns_proxy.rs | 2 +- framework/base/src/abi/type_abi_impl_basic.rs | 36 +++++++++ .../types/interaction/expr/test_address.rs | 2 + .../types/interaction/expr/test_sc_address.rs | 2 + .../interaction/expr/test_token_identifier.rs | 3 + .../types/interaction/managed_arg_buffer.rs | 1 + .../markers/esdt_system_sc_address.rs | 2 + .../system_proxy/builtin_func_proxy.rs | 8 +- .../base/src/types/interaction/tx_proxy.rs | 16 ++++ .../base/src/types/managed/basic/big_float.rs | 1 + .../base/src/types/managed/basic/big_int.rs | 2 + .../base/src/types/managed/basic/big_uint.rs | 7 ++ .../src/types/managed/basic/managed_buffer.rs | 10 +++ .../multi_value/multi_value_encoded.rs | 18 +++++ .../wrapped/egld_or_esdt_token_identifier.rs | 13 ++++ .../types/managed/wrapped/managed_address.rs | 14 ++++ .../managed/wrapped/managed_byte_array.rs | 1 + .../types/managed/wrapped/token_identifier.rs | 1 + .../src/types/static_buffer/sparse_array.rs | 1 + framework/derive/src/type_abi_derive.rs | 1 + .../generate_proxy/proxy_generator.rs | 2 +- .../src/facade/expr/bech32_address.rs | 4 + 51 files changed, 498 insertions(+), 362 deletions(-) diff --git a/contracts/core/price-aggregator/tests/price_aggregator_proxy.rs b/contracts/core/price-aggregator/tests/price_aggregator_proxy.rs index fbdab94593..bc84320d13 100644 --- a/contracts/core/price-aggregator/tests/price_aggregator_proxy.rs +++ b/contracts/core/price-aggregator/tests/price_aggregator_proxy.rs @@ -44,12 +44,12 @@ where Gas: TxGas, { pub fn init< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>, - Arg3: CodecInto, - Arg4: CodecInto, - Arg5: CodecInto>>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>, + Arg3: ProxyArg, + Arg4: ProxyArg, + Arg5: ProxyArg>>, >( self, staking_token: Arg0, @@ -81,8 +81,8 @@ where Gas: TxGas, { pub fn change_amounts< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, staking_amount: Arg0, @@ -96,7 +96,7 @@ where } pub fn add_oracles< - Arg0: CodecInto>>, + Arg0: ProxyArg>>, >( self, oracles: Arg0, @@ -110,8 +110,8 @@ where /// Also receives submission count, /// so the owner does not have to update it manually with setSubmissionCount before this call pub fn remove_oracles< - Arg0: CodecInto, - Arg1: CodecInto>>, + Arg0: ProxyArg, + Arg1: ProxyArg>>, >( self, submission_count: Arg0, @@ -125,11 +125,11 @@ where } pub fn submit< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto, - Arg3: CodecInto>, - Arg4: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg, + Arg3: ProxyArg>, + Arg4: ProxyArg, >( self, from: Arg0, @@ -149,7 +149,7 @@ where } pub fn submit_batch< - Arg0: CodecInto, ManagedBuffer, u64, BigUint, u8>>>, + Arg0: ProxyArg, ManagedBuffer, u64, BigUint, u8>>>, >( self, submissions: Arg0, @@ -169,8 +169,8 @@ where } pub fn latest_price_feed< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, from: Arg0, @@ -184,8 +184,8 @@ where } pub fn latest_price_feed_optional< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, from: Arg0, @@ -199,7 +199,7 @@ where } pub fn set_submission_count< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, submission_count: Arg0, @@ -219,9 +219,9 @@ where } pub fn set_pair_decimals< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg, >( self, from: Arg0, @@ -237,8 +237,8 @@ where } pub fn get_pair_decimals< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, from: Arg0, @@ -292,7 +292,7 @@ where } pub fn unstake< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, unstake_amount: Arg0, @@ -304,7 +304,7 @@ where } pub fn vote_slash_member< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, member_to_slash: Arg0, @@ -316,7 +316,7 @@ where } pub fn cancel_vote_slash_member< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, member_to_slash: Arg0, @@ -328,7 +328,7 @@ where } pub fn slash_member< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, member_to_slash: Arg0, diff --git a/contracts/examples/adder/src/adder_proxy.rs b/contracts/examples/adder/src/adder_proxy.rs index 0b1b663669..b7a7025709 100644 --- a/contracts/examples/adder/src/adder_proxy.rs +++ b/contracts/examples/adder/src/adder_proxy.rs @@ -44,7 +44,7 @@ where Gas: TxGas, { pub fn init< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, initial_value: Arg0, @@ -66,7 +66,7 @@ where Gas: TxGas, { pub fn upgrade< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, initial_value: Arg0, @@ -97,7 +97,7 @@ where /// Add desired amount to the storage variable. pub fn add< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, value: Arg0, diff --git a/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt_proxy.rs b/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt_proxy.rs index 385d77ce82..08c8d0ef14 100644 --- a/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt_proxy.rs +++ b/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt_proxy.rs @@ -44,9 +44,9 @@ where Gas: TxGas, { pub fn init< - Arg0: CodecInto>, - Arg1: CodecInto, - Arg2: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg, + Arg2: ProxyArg>, >( self, target: Arg0, @@ -120,7 +120,7 @@ where } pub fn deposit< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, donor: Arg0, diff --git a/contracts/examples/crypto-kitties/kitty-auction/src/kitty_ownership_proxy.rs b/contracts/examples/crypto-kitties/kitty-auction/src/kitty_ownership_proxy.rs index e43a200ce2..87f5bdb4a2 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/src/kitty_ownership_proxy.rs +++ b/contracts/examples/crypto-kitties/kitty-auction/src/kitty_ownership_proxy.rs @@ -44,9 +44,9 @@ where Gas: TxGas, { pub fn init< - Arg0: CodecInto>, - Arg1: CodecInto>>, - Arg2: CodecInto>>, + Arg0: ProxyArg>, + Arg1: ProxyArg>>, + Arg2: ProxyArg>>, >( self, birth_fee: Arg0, @@ -72,7 +72,7 @@ where Gas: TxGas, { pub fn set_gene_science_contract_address_endpoint< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, address: Arg0, @@ -84,7 +84,7 @@ where } pub fn set_kitty_auction_contract_address_endpoint< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, address: Arg0, @@ -112,7 +112,7 @@ where } pub fn balance_of< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, address: Arg0, @@ -124,7 +124,7 @@ where } pub fn owner_of< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, kitty_id: Arg0, @@ -136,8 +136,8 @@ where } pub fn approve< - Arg0: CodecInto>, - Arg1: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg, >( self, to: Arg0, @@ -151,8 +151,8 @@ where } pub fn transfer< - Arg0: CodecInto>, - Arg1: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg, >( self, to: Arg0, @@ -166,9 +166,9 @@ where } pub fn transfer_from< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg, >( self, from: Arg0, @@ -184,7 +184,7 @@ where } pub fn tokens_of_owner< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, address: Arg0, @@ -196,8 +196,8 @@ where } pub fn allow_auctioning< - Arg0: CodecInto>, - Arg1: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg, >( self, by: Arg0, @@ -211,9 +211,9 @@ where } pub fn approve_siring_and_return_kitty< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg, >( self, approved_address: Arg0, @@ -237,7 +237,7 @@ where } pub fn get_kitty_by_id_endpoint< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, kitty_id: Arg0, @@ -249,7 +249,7 @@ where } pub fn is_ready_to_breed< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, kitty_id: Arg0, @@ -261,7 +261,7 @@ where } pub fn is_pregnant< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, kitty_id: Arg0, @@ -273,8 +273,8 @@ where } pub fn can_breed_with< - Arg0: CodecInto, - Arg1: CodecInto, + Arg0: ProxyArg, + Arg1: ProxyArg, >( self, matron_id: Arg0, @@ -288,8 +288,8 @@ where } pub fn approve_siring< - Arg0: CodecInto>, - Arg1: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg, >( self, address: Arg0, @@ -303,8 +303,8 @@ where } pub fn breed_with< - Arg0: CodecInto, - Arg1: CodecInto, + Arg0: ProxyArg, + Arg1: ProxyArg, >( self, matron_id: Arg0, @@ -318,7 +318,7 @@ where } pub fn give_birth< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, matron_id: Arg0, diff --git a/contracts/examples/crypto-kitties/kitty-ownership/src/kitty_genetic_alg_proxy.rs b/contracts/examples/crypto-kitties/kitty-ownership/src/kitty_genetic_alg_proxy.rs index 53f3409e9f..1acee7fe43 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/src/kitty_genetic_alg_proxy.rs +++ b/contracts/examples/crypto-kitties/kitty-ownership/src/kitty_genetic_alg_proxy.rs @@ -62,8 +62,8 @@ where Gas: TxGas, { pub fn generate_kitty_genes< - Arg0: CodecInto, - Arg1: CodecInto, + Arg0: ProxyArg, + Arg1: ProxyArg, >( self, matron: Arg0, diff --git a/contracts/examples/crypto-zombies/src/kitty_ownership_proxy.rs b/contracts/examples/crypto-zombies/src/kitty_ownership_proxy.rs index e43a200ce2..87f5bdb4a2 100644 --- a/contracts/examples/crypto-zombies/src/kitty_ownership_proxy.rs +++ b/contracts/examples/crypto-zombies/src/kitty_ownership_proxy.rs @@ -44,9 +44,9 @@ where Gas: TxGas, { pub fn init< - Arg0: CodecInto>, - Arg1: CodecInto>>, - Arg2: CodecInto>>, + Arg0: ProxyArg>, + Arg1: ProxyArg>>, + Arg2: ProxyArg>>, >( self, birth_fee: Arg0, @@ -72,7 +72,7 @@ where Gas: TxGas, { pub fn set_gene_science_contract_address_endpoint< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, address: Arg0, @@ -84,7 +84,7 @@ where } pub fn set_kitty_auction_contract_address_endpoint< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, address: Arg0, @@ -112,7 +112,7 @@ where } pub fn balance_of< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, address: Arg0, @@ -124,7 +124,7 @@ where } pub fn owner_of< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, kitty_id: Arg0, @@ -136,8 +136,8 @@ where } pub fn approve< - Arg0: CodecInto>, - Arg1: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg, >( self, to: Arg0, @@ -151,8 +151,8 @@ where } pub fn transfer< - Arg0: CodecInto>, - Arg1: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg, >( self, to: Arg0, @@ -166,9 +166,9 @@ where } pub fn transfer_from< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg, >( self, from: Arg0, @@ -184,7 +184,7 @@ where } pub fn tokens_of_owner< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, address: Arg0, @@ -196,8 +196,8 @@ where } pub fn allow_auctioning< - Arg0: CodecInto>, - Arg1: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg, >( self, by: Arg0, @@ -211,9 +211,9 @@ where } pub fn approve_siring_and_return_kitty< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg, >( self, approved_address: Arg0, @@ -237,7 +237,7 @@ where } pub fn get_kitty_by_id_endpoint< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, kitty_id: Arg0, @@ -249,7 +249,7 @@ where } pub fn is_ready_to_breed< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, kitty_id: Arg0, @@ -261,7 +261,7 @@ where } pub fn is_pregnant< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, kitty_id: Arg0, @@ -273,8 +273,8 @@ where } pub fn can_breed_with< - Arg0: CodecInto, - Arg1: CodecInto, + Arg0: ProxyArg, + Arg1: ProxyArg, >( self, matron_id: Arg0, @@ -288,8 +288,8 @@ where } pub fn approve_siring< - Arg0: CodecInto>, - Arg1: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg, >( self, address: Arg0, @@ -303,8 +303,8 @@ where } pub fn breed_with< - Arg0: CodecInto, - Arg1: CodecInto, + Arg0: ProxyArg, + Arg1: ProxyArg, >( self, matron_id: Arg0, @@ -318,7 +318,7 @@ where } pub fn give_birth< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, matron_id: Arg0, diff --git a/contracts/examples/crypto-zombies/src/proxy_crypto_zombies.rs b/contracts/examples/crypto-zombies/src/proxy_crypto_zombies.rs index 1881df3acc..7f490cccbd 100644 --- a/contracts/examples/crypto-zombies/src/proxy_crypto_zombies.rs +++ b/contracts/examples/crypto-zombies/src/proxy_crypto_zombies.rs @@ -80,7 +80,7 @@ where Gas: TxGas, { pub fn set_crypto_kitties_sc_address< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, address: Arg0, @@ -100,7 +100,7 @@ where } pub fn create_random_zombie< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, name: Arg0, @@ -112,7 +112,7 @@ where } pub fn is_ready< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, zombie_id: Arg0, @@ -124,8 +124,8 @@ where } pub fn feed_on_kitty< - Arg0: CodecInto, - Arg1: CodecInto, + Arg0: ProxyArg, + Arg1: ProxyArg, >( self, zombie_id: Arg0, @@ -155,7 +155,7 @@ where } pub fn zombies< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, id: Arg0, @@ -167,7 +167,7 @@ where } pub fn zombie_owner< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, id: Arg0, @@ -195,7 +195,7 @@ where } pub fn owned_zombies< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, owner: Arg0, @@ -207,7 +207,7 @@ where } pub fn level_up< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, zombie_id: Arg0, @@ -227,8 +227,8 @@ where } pub fn change_name< - Arg0: CodecInto, - Arg1: CodecInto>, + Arg0: ProxyArg, + Arg1: ProxyArg>, >( self, zombie_id: Arg0, @@ -242,8 +242,8 @@ where } pub fn change_dna< - Arg0: CodecInto, - Arg1: CodecInto, + Arg0: ProxyArg, + Arg1: ProxyArg, >( self, zombie_id: Arg0, @@ -257,8 +257,8 @@ where } pub fn attack< - Arg0: CodecInto, - Arg1: CodecInto, + Arg0: ProxyArg, + Arg1: ProxyArg, >( self, zombie_id: Arg0, diff --git a/contracts/examples/digital-cash/src/digital_cash_proxy.rs b/contracts/examples/digital-cash/src/digital_cash_proxy.rs index 644e17c671..ad7a29fe7e 100644 --- a/contracts/examples/digital-cash/src/digital_cash_proxy.rs +++ b/contracts/examples/digital-cash/src/digital_cash_proxy.rs @@ -44,8 +44,8 @@ where Gas: TxGas, { pub fn init< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, fee: Arg0, @@ -69,8 +69,8 @@ where Gas: TxGas, { pub fn whitelist_fee_token< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, fee: Arg0, @@ -84,7 +84,7 @@ where } pub fn blacklist_fee_token< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, token: Arg0, @@ -104,9 +104,9 @@ where } pub fn get_amount< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg, >( self, address: Arg0, @@ -122,8 +122,8 @@ where } pub fn pay_fee_and_fund_esdt< - Arg0: CodecInto>, - Arg1: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg, >( self, address: Arg0, @@ -137,8 +137,8 @@ where } pub fn pay_fee_and_fund_egld< - Arg0: CodecInto>, - Arg1: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg, >( self, address: Arg0, @@ -152,8 +152,8 @@ where } pub fn fund< - Arg0: CodecInto>, - Arg1: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg, >( self, address: Arg0, @@ -167,7 +167,7 @@ where } pub fn deposit_fees< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, address: Arg0, @@ -179,7 +179,7 @@ where } pub fn withdraw< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, address: Arg0, @@ -191,8 +191,8 @@ where } pub fn claim< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, address: Arg0, @@ -206,9 +206,9 @@ where } pub fn forward< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>, >( self, address: Arg0, @@ -224,7 +224,7 @@ where } pub fn deposit< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, donor: Arg0, diff --git a/contracts/examples/fractional-nfts/src/nft_marketplace_proxy.rs b/contracts/examples/fractional-nfts/src/nft_marketplace_proxy.rs index c8d8381ac0..b977042583 100644 --- a/contracts/examples/fractional-nfts/src/nft_marketplace_proxy.rs +++ b/contracts/examples/fractional-nfts/src/nft_marketplace_proxy.rs @@ -38,9 +38,9 @@ where Gas: TxGas, { pub fn claim_tokens< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg, >( self, claim_destination: Arg0, diff --git a/contracts/examples/multisig/src/multisig_proxy.rs b/contracts/examples/multisig/src/multisig_proxy.rs index 616fb88be5..1d39617160 100644 --- a/contracts/examples/multisig/src/multisig_proxy.rs +++ b/contracts/examples/multisig/src/multisig_proxy.rs @@ -44,8 +44,8 @@ where Gas: TxGas, { pub fn init< - Arg0: CodecInto, - Arg1: CodecInto>>, + Arg0: ProxyArg, + Arg1: ProxyArg>>, >( self, quorum: Arg0, @@ -69,8 +69,8 @@ where Gas: TxGas, { pub fn upgrade< - Arg0: CodecInto, - Arg1: CodecInto>>, + Arg0: ProxyArg, + Arg1: ProxyArg>>, >( self, quorum: Arg0, @@ -118,8 +118,8 @@ where /// Returns `true` (`1`) if the user has signed the action. /// Does not check whether or not the user is still a board member and the signature valid. pub fn signed< - Arg0: CodecInto>, - Arg1: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg, >( self, user: Arg0, @@ -137,7 +137,7 @@ where /// `1` = can propose, but not sign, /// `2` = can propose and sign. pub fn user_role< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, user: Arg0, @@ -168,7 +168,7 @@ where /// Used by board members to sign actions. pub fn sign< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, action_id: Arg0, @@ -182,7 +182,7 @@ where /// Board members can withdraw their signatures if they no longer desire for the action to be executed. /// Actions that are left with no valid signatures can be then deleted to free up storage. pub fn unsign< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, action_id: Arg0, @@ -197,7 +197,7 @@ where /// Any signatures that the action received must first be removed, via `unsign`. /// Otherwise this endpoint would be prone to abuse. pub fn discard_action< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, action_id: Arg0, @@ -249,7 +249,7 @@ where /// Serialized action data of an action with index. pub fn get_action_data< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, action_id: Arg0, @@ -264,7 +264,7 @@ where /// Does not check if those users are still board members or not, /// so the result may contain invalid signers. pub fn get_action_signers< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, action_id: Arg0, @@ -278,7 +278,7 @@ where /// Gets addresses of all users who signed an action and are still board members. /// All these signatures are currently valid. pub fn get_action_signer_count< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, action_id: Arg0, @@ -295,7 +295,7 @@ where /// This function is used to validate the signers before performing an action. /// It also makes it easy to check before performing an action. pub fn get_action_valid_signer_count< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, action_id: Arg0, @@ -309,7 +309,7 @@ where /// Initiates board member addition process. /// Can also be used to promote a proposer to board member. pub fn propose_add_board_member< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, board_member_address: Arg0, @@ -323,7 +323,7 @@ where /// Initiates proposer addition process.. /// Can also be used to demote a board member to proposer. pub fn propose_add_proposer< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, proposer_address: Arg0, @@ -336,7 +336,7 @@ where /// Removes user regardless of whether it is a board member or proposer. pub fn propose_remove_user< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, user_address: Arg0, @@ -348,7 +348,7 @@ where } pub fn propose_change_quorum< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, new_quorum: Arg0, @@ -364,9 +364,9 @@ where /// Can call smart contract endpoints directly. /// Doesn't really work with builtin functions. pub fn propose_transfer_execute< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>, >( self, to: Arg0, @@ -387,9 +387,9 @@ where /// Works well with builtin functions. /// Cannot simply send EGLD directly without calling anything. pub fn propose_async_call< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>, >( self, to: Arg0, @@ -405,10 +405,10 @@ where } pub fn propose_sc_deploy_from_source< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto, - Arg3: CodecInto>>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg, + Arg3: ProxyArg>>, >( self, amount: Arg0, @@ -426,11 +426,11 @@ where } pub fn propose_sc_upgrade_from_source< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>, - Arg3: CodecInto, - Arg4: CodecInto>>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>, + Arg3: ProxyArg, + Arg4: ProxyArg>>, >( self, sc_address: Arg0, @@ -451,7 +451,7 @@ where /// Returns `true` (`1`) if `getActionValidSignerCount >= getQuorum`. pub fn quorum_reached< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, action_id: Arg0, @@ -464,7 +464,7 @@ where /// Proposers and board members use this to launch signed actions. pub fn perform_action_endpoint< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, action_id: Arg0, @@ -476,8 +476,8 @@ where } pub fn dns_register< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, dns_address: Arg0, diff --git a/contracts/examples/nft-minter/src/nft_marketplace_proxy.rs b/contracts/examples/nft-minter/src/nft_marketplace_proxy.rs index 7dbe98ed89..7c6028d1fd 100644 --- a/contracts/examples/nft-minter/src/nft_marketplace_proxy.rs +++ b/contracts/examples/nft-minter/src/nft_marketplace_proxy.rs @@ -36,9 +36,9 @@ where Gas: TxGas, { pub fn claim_tokens< - Arg0: CodecInto>, - Arg1: CodecInto, - Arg2: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg, + Arg2: ProxyArg>, >( self, token_id: Arg0, diff --git a/contracts/examples/rewards-distribution/src/rewards_distribution_proxy.rs b/contracts/examples/rewards-distribution/src/rewards_distribution_proxy.rs index 4a02c6c098..83ec15b473 100644 --- a/contracts/examples/rewards-distribution/src/rewards_distribution_proxy.rs +++ b/contracts/examples/rewards-distribution/src/rewards_distribution_proxy.rs @@ -44,8 +44,8 @@ where Gas: TxGas, { pub fn init< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, seed_nft_minter_address: Arg0, @@ -85,9 +85,9 @@ where } pub fn claim_rewards< - Arg0: CodecInto, - Arg1: CodecInto, - Arg2: CodecInto, u64>>>, + Arg0: ProxyArg, + Arg1: ProxyArg, + Arg2: ProxyArg, u64>>>, >( self, raffle_id_start: Arg0, @@ -103,10 +103,10 @@ where } pub fn compute_claimable_amount< - Arg0: CodecInto, - Arg1: CodecInto>, - Arg2: CodecInto, - Arg3: CodecInto, + Arg0: ProxyArg, + Arg1: ProxyArg>, + Arg2: ProxyArg, + Arg3: ProxyArg, >( self, raffle_id: Arg0, @@ -140,9 +140,9 @@ where } pub fn royalties< - Arg0: CodecInto, - Arg1: CodecInto>, - Arg2: CodecInto, + Arg0: ProxyArg, + Arg1: ProxyArg>, + Arg2: ProxyArg, >( self, raffle_id: Arg0, @@ -158,8 +158,8 @@ where } pub fn nft_reward_percent< - Arg0: CodecInto, - Arg1: CodecInto, + Arg0: ProxyArg, + Arg1: ProxyArg, >( self, raffle_id: Arg0, @@ -173,10 +173,10 @@ where } pub fn was_claimed< - Arg0: CodecInto, - Arg1: CodecInto>, - Arg2: CodecInto, - Arg3: CodecInto, + Arg0: ProxyArg, + Arg1: ProxyArg>, + Arg2: ProxyArg, + Arg3: ProxyArg, >( self, raffle_id: Arg0, @@ -226,6 +226,7 @@ where } } +#[type_abi] #[derive(ManagedVecItem, NestedEncode, NestedDecode)] pub struct Bracket { pub index_percent: u64, diff --git a/contracts/examples/rewards-distribution/src/seed_nft_minter_proxy.rs b/contracts/examples/rewards-distribution/src/seed_nft_minter_proxy.rs index 10047be064..49186da9ce 100644 --- a/contracts/examples/rewards-distribution/src/seed_nft_minter_proxy.rs +++ b/contracts/examples/rewards-distribution/src/seed_nft_minter_proxy.rs @@ -44,8 +44,8 @@ where Gas: TxGas, { pub fn init< - Arg0: CodecInto>>, - Arg1: CodecInto>>, + Arg0: ProxyArg>>, + Arg1: ProxyArg>>, >( self, marketplaces: Arg0, @@ -69,12 +69,12 @@ where Gas: TxGas, { pub fn create_nft< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>, - Arg3: CodecInto>, - Arg4: CodecInto>>, - Arg5: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>, + Arg3: ProxyArg>, + Arg4: ProxyArg>>, + Arg5: ProxyArg>, >( self, name: Arg0, @@ -96,8 +96,8 @@ where } pub fn claim_and_distribute< - Arg0: CodecInto>, - Arg1: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg, >( self, token_id: Arg0, @@ -135,8 +135,8 @@ where } pub fn issue_token< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, token_display_name: Arg0, @@ -150,7 +150,7 @@ where } pub fn buy_nft< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, nft_nonce: Arg0, @@ -162,7 +162,7 @@ where } pub fn get_nft_price< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, nft_nonce: Arg0, diff --git a/contracts/examples/rewards-distribution/tests/mock_seed_nft_minter_proxy.rs b/contracts/examples/rewards-distribution/tests/mock_seed_nft_minter_proxy.rs index 22d9e055cd..379b8e0d05 100644 --- a/contracts/examples/rewards-distribution/tests/mock_seed_nft_minter_proxy.rs +++ b/contracts/examples/rewards-distribution/tests/mock_seed_nft_minter_proxy.rs @@ -35,7 +35,7 @@ where Gas: TxGas, { pub fn init< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, nft_token_id: Arg0, @@ -57,7 +57,7 @@ where Gas: TxGas, { pub fn set_nft_count< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, nft_count: Arg0, diff --git a/contracts/examples/seed-nft-minter/src/nft_marketplace_proxy.rs b/contracts/examples/seed-nft-minter/src/nft_marketplace_proxy.rs index 8cbc28e5df..e41b477e03 100644 --- a/contracts/examples/seed-nft-minter/src/nft_marketplace_proxy.rs +++ b/contracts/examples/seed-nft-minter/src/nft_marketplace_proxy.rs @@ -55,9 +55,9 @@ where Gas: TxGas, { pub fn claim_tokens< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg, >( self, claim_destination: Arg0, diff --git a/contracts/feature-tests/abi-tester/src/abi_proxy.rs b/contracts/feature-tests/abi-tester/src/abi_proxy.rs index feea268d49..a91b6d1961 100644 --- a/contracts/feature-tests/abi-tester/src/abi_proxy.rs +++ b/contracts/feature-tests/abi-tester/src/abi_proxy.rs @@ -45,8 +45,8 @@ where { /// Contract constructor. pub fn init< - Arg0: CodecInto, - Arg1: CodecInto, + Arg0: ProxyArg, + Arg1: ProxyArg, >( self, _constructor_arg_1: Arg0, @@ -71,8 +71,8 @@ where { /// Upgrade constructor. pub fn upgrade< - Arg0: CodecInto, - Arg1: CodecInto, + Arg0: ProxyArg, + Arg1: ProxyArg, >( self, _constructor_arg_1: Arg0, @@ -97,7 +97,7 @@ where { /// Example endpoint docs. pub fn echo_abi_test_type< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, att: Arg0, @@ -109,7 +109,7 @@ where } pub fn echo_enum< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, e: Arg0, @@ -121,7 +121,7 @@ where } pub fn take_managed_type< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, _arg: Arg0, @@ -149,8 +149,8 @@ where } pub fn var_args< - Arg0: CodecInto, - Arg1: CodecInto>>, + Arg0: ProxyArg, + Arg1: ProxyArg>>, >( self, _simple_arg: Arg0, @@ -172,8 +172,8 @@ where } pub fn optional_arg< - Arg0: CodecInto, - Arg1: CodecInto>, + Arg0: ProxyArg, + Arg1: ProxyArg>, >( self, _simple_arg: Arg0, @@ -195,8 +195,8 @@ where } pub fn address_vs_h256< - Arg0: CodecInto
, - Arg1: CodecInto, + Arg0: ProxyArg
, + Arg1: ProxyArg, >( self, address: Arg0, @@ -210,8 +210,8 @@ where } pub fn managed_address_vs_byte_array< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, address: Arg0, @@ -281,7 +281,7 @@ where } pub fn item_for_array< - Arg0: CodecInto<[OnlyShowsUpAsNestedInArray; 5]>, + Arg0: ProxyArg<[OnlyShowsUpAsNestedInArray; 5]>, >( self, _array: Arg0, @@ -309,7 +309,7 @@ where } pub fn item_for_ref< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, _ref: Arg0, @@ -321,7 +321,7 @@ where } pub fn item_for_slice< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, _ref: Arg0, diff --git a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/child_proxy.rs b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/child_proxy.rs index bb3e97cc56..b4808f8eba 100644 --- a/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/child_proxy.rs +++ b/contracts/feature-tests/composability/execute-on-dest-esdt-issue-callback/parent/src/child_proxy.rs @@ -62,9 +62,9 @@ where Gas: TxGas, { pub fn issue_wrapped_egld< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>, >( self, token_display_name: Arg0, diff --git a/contracts/feature-tests/composability/forwarder/src/vault_proxy.rs b/contracts/feature-tests/composability/forwarder/src/vault_proxy.rs index 656db40983..c43f59c36a 100644 --- a/contracts/feature-tests/composability/forwarder/src/vault_proxy.rs +++ b/contracts/feature-tests/composability/forwarder/src/vault_proxy.rs @@ -44,7 +44,7 @@ where Gas: TxGas, { pub fn init< - Arg0: CodecInto>>, + Arg0: ProxyArg>>, >( self, opt_arg_to_echo: Arg0, @@ -66,7 +66,7 @@ where Gas: TxGas, { pub fn upgrade< - Arg0: CodecInto>>, + Arg0: ProxyArg>>, >( self, opt_arg_to_echo: Arg0, @@ -88,7 +88,7 @@ where Gas: TxGas, { pub fn echo_arguments< - Arg0: CodecInto>>, + Arg0: ProxyArg>>, >( self, args: Arg0, @@ -100,7 +100,7 @@ where } pub fn echo_arguments_without_storage< - Arg0: CodecInto>>, + Arg0: ProxyArg>>, >( self, args: Arg0, @@ -152,9 +152,9 @@ where } pub fn retrieve_funds_with_transfer_exec< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>>, >( self, token: Arg0, @@ -170,8 +170,8 @@ where } pub fn retrieve_funds_promises< - Arg0: CodecInto>, - Arg1: CodecInto>>, + Arg0: ProxyArg>, + Arg1: ProxyArg>>, >( self, back_transfers: Arg0, @@ -185,9 +185,9 @@ where } pub fn retrieve_funds< - Arg0: CodecInto>, - Arg1: CodecInto, - Arg2: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg, + Arg2: ProxyArg>, >( self, token: Arg0, @@ -203,7 +203,7 @@ where } pub fn retrieve_multi_funds_async< - Arg0: CodecInto, u64, BigUint>>>, + Arg0: ProxyArg, u64, BigUint>>>, >( self, token_payments: Arg0, @@ -233,7 +233,7 @@ where /// We already leave a trace of the calls using the event logs; /// this additional counter has the role of showing that storage also gets saved correctly. pub fn call_counts< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, endpoint: Arg0, diff --git a/contracts/feature-tests/composability/promises-features/src/vault_proxy.rs b/contracts/feature-tests/composability/promises-features/src/vault_proxy.rs index 656db40983..c43f59c36a 100644 --- a/contracts/feature-tests/composability/promises-features/src/vault_proxy.rs +++ b/contracts/feature-tests/composability/promises-features/src/vault_proxy.rs @@ -44,7 +44,7 @@ where Gas: TxGas, { pub fn init< - Arg0: CodecInto>>, + Arg0: ProxyArg>>, >( self, opt_arg_to_echo: Arg0, @@ -66,7 +66,7 @@ where Gas: TxGas, { pub fn upgrade< - Arg0: CodecInto>>, + Arg0: ProxyArg>>, >( self, opt_arg_to_echo: Arg0, @@ -88,7 +88,7 @@ where Gas: TxGas, { pub fn echo_arguments< - Arg0: CodecInto>>, + Arg0: ProxyArg>>, >( self, args: Arg0, @@ -100,7 +100,7 @@ where } pub fn echo_arguments_without_storage< - Arg0: CodecInto>>, + Arg0: ProxyArg>>, >( self, args: Arg0, @@ -152,9 +152,9 @@ where } pub fn retrieve_funds_with_transfer_exec< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>>, >( self, token: Arg0, @@ -170,8 +170,8 @@ where } pub fn retrieve_funds_promises< - Arg0: CodecInto>, - Arg1: CodecInto>>, + Arg0: ProxyArg>, + Arg1: ProxyArg>>, >( self, back_transfers: Arg0, @@ -185,9 +185,9 @@ where } pub fn retrieve_funds< - Arg0: CodecInto>, - Arg1: CodecInto, - Arg2: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg, + Arg2: ProxyArg>, >( self, token: Arg0, @@ -203,7 +203,7 @@ where } pub fn retrieve_multi_funds_async< - Arg0: CodecInto, u64, BigUint>>>, + Arg0: ProxyArg, u64, BigUint>>>, >( self, token_payments: Arg0, @@ -233,7 +233,7 @@ where /// We already leave a trace of the calls using the event logs; /// this additional counter has the role of showing that storage also gets saved correctly. pub fn call_counts< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, endpoint: Arg0, diff --git a/contracts/feature-tests/composability/proxy-test-first/src/message_me_proxy.rs b/contracts/feature-tests/composability/proxy-test-first/src/message_me_proxy.rs index 2a4242c2f2..4609a3a0bd 100644 --- a/contracts/feature-tests/composability/proxy-test-first/src/message_me_proxy.rs +++ b/contracts/feature-tests/composability/proxy-test-first/src/message_me_proxy.rs @@ -44,7 +44,7 @@ where Gas: TxGas, { pub fn init< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, init_arg: Arg0, @@ -84,10 +84,10 @@ where Gas: TxGas, { pub fn message_me< - Arg0: CodecInto, - Arg1: CodecInto>, - Arg2: CodecInto>, - Arg3: CodecInto>, + Arg0: ProxyArg, + Arg1: ProxyArg>, + Arg2: ProxyArg>, + Arg3: ProxyArg>, >( self, arg1: Arg0, diff --git a/contracts/feature-tests/composability/proxy-test-first/src/pay_me_proxy.rs b/contracts/feature-tests/composability/proxy-test-first/src/pay_me_proxy.rs index ff801b93f9..cfd32f2516 100644 --- a/contracts/feature-tests/composability/proxy-test-first/src/pay_me_proxy.rs +++ b/contracts/feature-tests/composability/proxy-test-first/src/pay_me_proxy.rs @@ -80,7 +80,7 @@ where Gas: TxGas, { pub fn pay_me< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, arg1: Arg0, @@ -92,7 +92,7 @@ where } pub fn pay_me_with_result< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, arg1: Arg0, diff --git a/contracts/feature-tests/composability/recursive-caller/src/self_proxy.rs b/contracts/feature-tests/composability/recursive-caller/src/self_proxy.rs index bda44ef4b3..7fd86a1c8f 100644 --- a/contracts/feature-tests/composability/recursive-caller/src/self_proxy.rs +++ b/contracts/feature-tests/composability/recursive-caller/src/self_proxy.rs @@ -62,10 +62,10 @@ where Gas: TxGas, { pub fn recursive_send_funds< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>, - Arg3: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>, + Arg3: ProxyArg, >( self, to: Arg0, diff --git a/contracts/feature-tests/composability/recursive-caller/src/vault_proxy.rs b/contracts/feature-tests/composability/recursive-caller/src/vault_proxy.rs index 656db40983..c43f59c36a 100644 --- a/contracts/feature-tests/composability/recursive-caller/src/vault_proxy.rs +++ b/contracts/feature-tests/composability/recursive-caller/src/vault_proxy.rs @@ -44,7 +44,7 @@ where Gas: TxGas, { pub fn init< - Arg0: CodecInto>>, + Arg0: ProxyArg>>, >( self, opt_arg_to_echo: Arg0, @@ -66,7 +66,7 @@ where Gas: TxGas, { pub fn upgrade< - Arg0: CodecInto>>, + Arg0: ProxyArg>>, >( self, opt_arg_to_echo: Arg0, @@ -88,7 +88,7 @@ where Gas: TxGas, { pub fn echo_arguments< - Arg0: CodecInto>>, + Arg0: ProxyArg>>, >( self, args: Arg0, @@ -100,7 +100,7 @@ where } pub fn echo_arguments_without_storage< - Arg0: CodecInto>>, + Arg0: ProxyArg>>, >( self, args: Arg0, @@ -152,9 +152,9 @@ where } pub fn retrieve_funds_with_transfer_exec< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>>, >( self, token: Arg0, @@ -170,8 +170,8 @@ where } pub fn retrieve_funds_promises< - Arg0: CodecInto>, - Arg1: CodecInto>>, + Arg0: ProxyArg>, + Arg1: ProxyArg>>, >( self, back_transfers: Arg0, @@ -185,9 +185,9 @@ where } pub fn retrieve_funds< - Arg0: CodecInto>, - Arg1: CodecInto, - Arg2: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg, + Arg2: ProxyArg>, >( self, token: Arg0, @@ -203,7 +203,7 @@ where } pub fn retrieve_multi_funds_async< - Arg0: CodecInto, u64, BigUint>>>, + Arg0: ProxyArg, u64, BigUint>>>, >( self, token_payments: Arg0, @@ -233,7 +233,7 @@ where /// We already leave a trace of the calls using the event logs; /// this additional counter has the role of showing that storage also gets saved correctly. pub fn call_counts< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, endpoint: Arg0, diff --git a/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/src/erc20_proxy.rs b/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/src/erc20_proxy.rs index 5d53567a38..eaceb1da73 100644 --- a/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/src/erc20_proxy.rs +++ b/contracts/feature-tests/erc-style-contracts/crowdfunding-erc20/src/erc20_proxy.rs @@ -46,7 +46,7 @@ where /// Constructor, is called immediately after the contract is created /// Will set the fixed global token supply and give all the supply to the creator. pub fn init< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, total_supply: Arg0, @@ -83,7 +83,7 @@ where /// * `address` The address to query the the balance of /// pub fn token_balance< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, address: Arg0, @@ -102,8 +102,8 @@ where /// * `spender` The address that will spend the funds. /// pub fn allowance< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, owner: Arg0, @@ -123,8 +123,8 @@ where /// * `to` The address to transfer to. /// pub fn transfer< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, to: Arg0, @@ -146,9 +146,9 @@ where /// * `amount` the amount of tokens to be transferred. /// pub fn transfer_from< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>, >( self, sender: Arg0, @@ -172,8 +172,8 @@ where /// * `amount` The amount of tokens to be spent. /// pub fn approve< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, spender: Arg0, diff --git a/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/src/erc1155_proxy.rs b/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/src/erc1155_proxy.rs index 41773ae924..899a036f41 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/src/erc1155_proxy.rs +++ b/contracts/feature-tests/erc-style-contracts/erc1155-marketplace/src/erc1155_proxy.rs @@ -63,11 +63,11 @@ where { /// `value` is amount for fungible, nft_id for non-fungible pub fn safe_transfer_from< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>, - Arg3: CodecInto>, - Arg4: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>, + Arg3: ProxyArg>, + Arg4: ProxyArg>, >( self, from: Arg0, @@ -88,11 +88,11 @@ where /// `value` is amount for fungible, nft_id for non-fungible pub fn safe_batch_transfer_from< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto]>>, - Arg3: CodecInto]>>, - Arg4: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg]>>, + Arg3: ProxyArg]>>, + Arg4: ProxyArg>, >( self, from: Arg0, @@ -112,8 +112,8 @@ where } pub fn set_approved_for_all< - Arg0: CodecInto>, - Arg1: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg, >( self, operator: Arg0, @@ -127,9 +127,9 @@ where } pub fn create_token< - Arg0: CodecInto, - Arg1: CodecInto>, - Arg2: CodecInto, + Arg0: ProxyArg, + Arg1: ProxyArg>, + Arg2: ProxyArg, >( self, uri: Arg0, @@ -145,8 +145,8 @@ where } pub fn mint< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, type_id: Arg0, @@ -160,8 +160,8 @@ where } pub fn burn< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, type_id: Arg0, @@ -175,8 +175,8 @@ where } pub fn balance_of< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, owner: Arg0, @@ -190,7 +190,7 @@ where } pub fn balance_of_batch< - Arg0: CodecInto, BigUint>>>, + Arg0: ProxyArg, BigUint>>>, >( self, owner_type_id_pairs: Arg0, @@ -202,8 +202,8 @@ where } pub fn token_owner< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, type_id: Arg0, @@ -217,7 +217,7 @@ where } pub fn token_type_creator< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, type_id: Arg0, @@ -229,7 +229,7 @@ where } pub fn token_type_uri< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, type_id: Arg0, @@ -241,7 +241,7 @@ where } pub fn is_fungible< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, type_id: Arg0, @@ -253,8 +253,8 @@ where } pub fn is_approved< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, operator: Arg0, diff --git a/contracts/feature-tests/erc-style-contracts/erc1155/src/erc1155_user_proxy.rs b/contracts/feature-tests/erc-style-contracts/erc1155/src/erc1155_user_proxy.rs index 8dd67d4061..600c12792f 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/src/erc1155_user_proxy.rs +++ b/contracts/feature-tests/erc-style-contracts/erc1155/src/erc1155_user_proxy.rs @@ -38,11 +38,11 @@ where Gas: TxGas, { pub fn on_erc1155_received< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>, - Arg3: CodecInto>, - Arg4: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>, + Arg3: ProxyArg>, + Arg4: ProxyArg>, >( self, operator: Arg0, @@ -62,11 +62,11 @@ where } pub fn on_erc1155_batch_received< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>>, - Arg3: CodecInto>>, - Arg4: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>>, + Arg3: ProxyArg>>, + Arg4: ProxyArg>, >( self, operator: Arg0, diff --git a/contracts/feature-tests/erc-style-contracts/lottery-erc20/src/erc20_proxy.rs b/contracts/feature-tests/erc-style-contracts/lottery-erc20/src/erc20_proxy.rs index 5d53567a38..eaceb1da73 100644 --- a/contracts/feature-tests/erc-style-contracts/lottery-erc20/src/erc20_proxy.rs +++ b/contracts/feature-tests/erc-style-contracts/lottery-erc20/src/erc20_proxy.rs @@ -46,7 +46,7 @@ where /// Constructor, is called immediately after the contract is created /// Will set the fixed global token supply and give all the supply to the creator. pub fn init< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, total_supply: Arg0, @@ -83,7 +83,7 @@ where /// * `address` The address to query the the balance of /// pub fn token_balance< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, address: Arg0, @@ -102,8 +102,8 @@ where /// * `spender` The address that will spend the funds. /// pub fn allowance< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, owner: Arg0, @@ -123,8 +123,8 @@ where /// * `to` The address to transfer to. /// pub fn transfer< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, to: Arg0, @@ -146,9 +146,9 @@ where /// * `amount` the amount of tokens to be transferred. /// pub fn transfer_from< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>, >( self, sender: Arg0, @@ -172,8 +172,8 @@ where /// * `amount` The amount of tokens to be spent. /// pub fn approve< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, spender: Arg0, diff --git a/contracts/feature-tests/panic-message-features/tests/pmf_proxy.rs b/contracts/feature-tests/panic-message-features/tests/pmf_proxy.rs index 7413bf0ed9..6e4c6e0cea 100644 --- a/contracts/feature-tests/panic-message-features/tests/pmf_proxy.rs +++ b/contracts/feature-tests/panic-message-features/tests/pmf_proxy.rs @@ -62,7 +62,7 @@ where Gas: TxGas, { pub fn panic_with_message< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, some_value: Arg0, diff --git a/contracts/feature-tests/scenario-tester/src/scenario_tester_proxy.rs b/contracts/feature-tests/scenario-tester/src/scenario_tester_proxy.rs index d3abf4b9b7..3358a126e4 100644 --- a/contracts/feature-tests/scenario-tester/src/scenario_tester_proxy.rs +++ b/contracts/feature-tests/scenario-tester/src/scenario_tester_proxy.rs @@ -44,7 +44,7 @@ where Gas: TxGas, { pub fn init< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, initial_value: Arg0, @@ -66,7 +66,7 @@ where Gas: TxGas, { pub fn upgrade< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, initial_value: Arg0, @@ -97,7 +97,7 @@ where /// Add desired amount to the storage variable. pub fn add< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, value: Arg0, diff --git a/contracts/modules/src/dns_proxy.rs b/contracts/modules/src/dns_proxy.rs index bdaf2ed13b..25ac68e4c4 100644 --- a/contracts/modules/src/dns_proxy.rs +++ b/contracts/modules/src/dns_proxy.rs @@ -38,7 +38,7 @@ where Gas: TxGas, { pub fn register< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, name: Arg0, diff --git a/framework/base/src/abi/type_abi_impl_basic.rs b/framework/base/src/abi/type_abi_impl_basic.rs index 1d0378259e..4e93eda28a 100644 --- a/framework/base/src/abi/type_abi_impl_basic.rs +++ b/framework/base/src/abi/type_abi_impl_basic.rs @@ -122,6 +122,7 @@ impl TypeAbi for Box<[T]> { } impl TypeAbiFrom for String {} +impl TypeAbiFrom<&String> for String {} impl TypeAbiFrom<&str> for String {} impl TypeAbiFrom> for String {} @@ -160,6 +161,7 @@ impl TypeAbi for Box { macro_rules! type_abi_name_only { ($ty:ty, $name:expr) => { impl TypeAbiFrom<$ty> for $ty {} + impl TypeAbiFrom<&$ty> for $ty {} impl TypeAbi for $ty { fn type_name() -> TypeName { @@ -186,6 +188,40 @@ type_abi_name_only!(i64, "i64"); type_abi_name_only!(core::num::NonZeroUsize, "NonZeroUsize"); type_abi_name_only!(bool, "bool"); +// Unsigned integer types: the contract can return a smaller capacity result and and we can interpret it as a larger capacity type. + +impl TypeAbiFrom for u64 {} +impl TypeAbiFrom for u64 {} +impl TypeAbiFrom for u64 {} +impl TypeAbiFrom for u64 {} + +impl TypeAbiFrom for u32 {} +impl TypeAbiFrom for u32 {} +impl TypeAbiFrom for u32 {} + +impl TypeAbiFrom for usize {} +impl TypeAbiFrom for usize {} +impl TypeAbiFrom for usize {} + +impl TypeAbiFrom for u16 {} + +// Signed, the same. + +impl TypeAbiFrom for i64 {} +impl TypeAbiFrom for i64 {} +impl TypeAbiFrom for i64 {} +impl TypeAbiFrom for i64 {} + +impl TypeAbiFrom for i32 {} +impl TypeAbiFrom for i32 {} +impl TypeAbiFrom for i32 {} + +impl TypeAbiFrom for isize {} +impl TypeAbiFrom for isize {} +impl TypeAbiFrom for isize {} + +impl TypeAbiFrom for i16 {} + impl TypeAbiFrom> for Option where T: TypeAbiFrom {} impl TypeAbi for Option { diff --git a/framework/base/src/types/interaction/expr/test_address.rs b/framework/base/src/types/interaction/expr/test_address.rs index b01840ce06..d2824002ba 100644 --- a/framework/base/src/types/interaction/expr/test_address.rs +++ b/framework/base/src/types/interaction/expr/test_address.rs @@ -3,6 +3,7 @@ use core::ptr; use multiversx_sc_codec::{CodecFrom, EncodeErrorHandler, TopEncode, TopEncodeOutput}; use crate::{ + abi::TypeAbiFrom, api::ManagedTypeApi, types::{ AnnotatedValue, ManagedAddress, ManagedBuffer, TxEnv, TxFrom, TxFromSpecified, TxTo, @@ -85,6 +86,7 @@ impl<'a> TopEncode for TestAddress<'a> { } impl<'a, Api> CodecFrom> for ManagedAddress where Api: ManagedTypeApi {} +impl<'a, Api> TypeAbiFrom> for ManagedAddress where Api: ManagedTypeApi {} #[cfg(test)] pub mod tests { diff --git a/framework/base/src/types/interaction/expr/test_sc_address.rs b/framework/base/src/types/interaction/expr/test_sc_address.rs index 973ab80d92..c752777bfa 100644 --- a/framework/base/src/types/interaction/expr/test_sc_address.rs +++ b/framework/base/src/types/interaction/expr/test_sc_address.rs @@ -3,6 +3,7 @@ use core::ptr; use multiversx_sc_codec::{CodecFrom, EncodeErrorHandler, TopEncode, TopEncodeOutput}; use crate::{ + abi::TypeAbiFrom, api::ManagedTypeApi, types::{ heap::Address, AnnotatedValue, ManagedAddress, ManagedBuffer, TxEnv, TxFrom, @@ -105,6 +106,7 @@ impl<'a> TopEncode for TestSCAddress<'a> { } impl<'a, Api> CodecFrom> for ManagedAddress where Api: ManagedTypeApi {} +impl<'a, Api> TypeAbiFrom> for ManagedAddress where Api: ManagedTypeApi {} #[cfg(test)] pub mod tests { diff --git a/framework/base/src/types/interaction/expr/test_token_identifier.rs b/framework/base/src/types/interaction/expr/test_token_identifier.rs index b22854b507..1230a15664 100644 --- a/framework/base/src/types/interaction/expr/test_token_identifier.rs +++ b/framework/base/src/types/interaction/expr/test_token_identifier.rs @@ -1,6 +1,7 @@ use multiversx_sc_codec::{CodecFrom, EncodeErrorHandler, TopEncode, TopEncodeOutput}; use crate::{ + abi::TypeAbiFrom, api::ManagedTypeApi, types::{AnnotatedValue, ManagedBuffer, TokenIdentifier, TxEnv}, }; @@ -62,3 +63,5 @@ impl<'a> TopEncode for TestTokenIdentifier<'a> { } impl<'a, Api> CodecFrom> for TokenIdentifier where Api: ManagedTypeApi {} +impl<'a, Api> TypeAbiFrom> for TokenIdentifier where Api: ManagedTypeApi +{} diff --git a/framework/base/src/types/interaction/managed_arg_buffer.rs b/framework/base/src/types/interaction/managed_arg_buffer.rs index ab103040f7..e3ca9c67e5 100644 --- a/framework/base/src/types/interaction/managed_arg_buffer.rs +++ b/framework/base/src/types/interaction/managed_arg_buffer.rs @@ -300,6 +300,7 @@ where } impl TypeAbiFrom for ManagedArgBuffer where M: ManagedTypeApi {} +impl TypeAbiFrom<&Self> for ManagedArgBuffer where M: ManagedTypeApi {} impl TypeAbi for ManagedArgBuffer where diff --git a/framework/base/src/types/interaction/markers/esdt_system_sc_address.rs b/framework/base/src/types/interaction/markers/esdt_system_sc_address.rs index 8d59b682be..0cfe2e5588 100644 --- a/framework/base/src/types/interaction/markers/esdt_system_sc_address.rs +++ b/framework/base/src/types/interaction/markers/esdt_system_sc_address.rs @@ -2,6 +2,7 @@ use hex_literal::hex; use multiversx_sc_codec::{CodecFrom, EncodeErrorHandler, TopEncode, TopEncodeOutput}; use crate::{ + abi::TypeAbiFrom, api::{CallTypeApi, ManagedTypeApi}, types::{AnnotatedValue, ManagedAddress, ManagedBuffer, TxScEnv, TxTo, TxToSpecified}, }; @@ -61,6 +62,7 @@ impl TopEncode for ESDTSystemSCAddress { } impl CodecFrom for ManagedAddress where M: ManagedTypeApi {} +impl TypeAbiFrom for ManagedAddress where M: ManagedTypeApi {} impl core::fmt::Display for ESDTSystemSCAddress { fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { diff --git a/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs b/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs index fe421c5ef7..11972f72e8 100644 --- a/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs +++ b/framework/base/src/types/interaction/system_proxy/builtin_func_proxy.rs @@ -1,8 +1,8 @@ -use multiversx_sc_codec::{CodecInto, Empty, TopEncode}; +use multiversx_sc_codec::{Empty, TopEncode}; use crate::types::{ - BigUint, ManagedAddress, ManagedBuffer, ManagedVec, TokenIdentifier, Tx, TxEnv, TxFrom, TxGas, - TxProxyCall, TxProxyTrait, TxTo, + BigUint, ManagedAddress, ManagedBuffer, ManagedVec, ProxyArg, TokenIdentifier, Tx, TxEnv, + TxFrom, TxGas, TxProxyCall, TxProxyTrait, TxTo, }; use super::builtin_func_names::{ @@ -46,7 +46,7 @@ where To: TxTo, Gas: TxGas, { - pub fn set_user_name>>( + pub fn set_user_name>>( self, name: Arg0, ) -> TxProxyCall { diff --git a/framework/base/src/types/interaction/tx_proxy.rs b/framework/base/src/types/interaction/tx_proxy.rs index 7bb0c67439..2929a7bc4b 100644 --- a/framework/base/src/types/interaction/tx_proxy.rs +++ b/framework/base/src/types/interaction/tx_proxy.rs @@ -1,3 +1,7 @@ +use multiversx_sc_codec::TopEncodeMulti; + +use crate::abi::TypeAbiFrom; + use super::{ DeployCall, FunctionCall, OriginalResultMarker, Tx, TxEnv, TxFrom, TxGas, TxTo, UpgradeCall, }; @@ -27,3 +31,15 @@ pub type TxProxyCall = /// Alias for a `Tx` generated from a proxy, in `upgrade`. pub type TxProxyUpgrade = Tx, OriginalResultMarker>; + +/// Trait that is automatically implemented for all types that are allowed as proxy inputs. +/// +/// Is automatically implemented for all traits that are `TypeAbiInto + TopEncodeMulti`. +pub trait ProxyArg: TopEncodeMulti {} + +impl ProxyArg for T +where + O: TypeAbiFrom, + T: TopEncodeMulti, +{ +} diff --git a/framework/base/src/types/managed/basic/big_float.rs b/framework/base/src/types/managed/basic/big_float.rs index 62126efd19..0bc2980e35 100644 --- a/framework/base/src/types/managed/basic/big_float.rs +++ b/framework/base/src/types/managed/basic/big_float.rs @@ -287,6 +287,7 @@ impl NestedDecode for BigFloat { } impl TypeAbiFrom for BigFloat where M: ManagedTypeApi {} +impl TypeAbiFrom<&Self> for BigFloat where M: ManagedTypeApi {} impl TypeAbi for BigFloat { fn type_name() -> String { diff --git a/framework/base/src/types/managed/basic/big_int.rs b/framework/base/src/types/managed/basic/big_int.rs index a27611a903..4d9fca8fe2 100644 --- a/framework/base/src/types/managed/basic/big_int.rs +++ b/framework/base/src/types/managed/basic/big_int.rs @@ -101,6 +101,7 @@ macro_rules! big_int_conv_num { } impl CodecFrom<$num_ty> for BigInt {} + impl CodecFrom<&$num_ty> for BigInt {} }; } @@ -299,6 +300,7 @@ impl TopDecode for BigInt { } impl TypeAbiFrom for BigInt where M: ManagedTypeApi {} +impl TypeAbiFrom<&Self> for BigInt where M: ManagedTypeApi {} impl crate::abi::TypeAbi for BigInt { fn type_name() -> TypeName { diff --git a/framework/base/src/types/managed/basic/big_uint.rs b/framework/base/src/types/managed/basic/big_uint.rs index 9f78792eab..2766a42f1d 100644 --- a/framework/base/src/types/managed/basic/big_uint.rs +++ b/framework/base/src/types/managed/basic/big_uint.rs @@ -95,6 +95,7 @@ macro_rules! big_uint_conv_num { } impl CodecFrom<$num_ty> for BigUint {} + impl TypeAbiFrom<$num_ty> for BigUint {} }; } @@ -111,6 +112,11 @@ impl CodecFrom for BigUint #[cfg(feature = "num-bigint")] impl CodecFrom> for crate::codec::num_bigint::BigUint {} +#[cfg(feature = "num-bigint")] +impl TypeAbiFrom for BigUint {} +#[cfg(feature = "num-bigint")] +impl TypeAbiFrom> for crate::codec::num_bigint::BigUint {} + #[cfg(feature = "num-bigint")] impl From<&crate::codec::num_bigint::BigUint> for BigUint { fn from(alloc_big_uint: &crate::codec::num_bigint::BigUint) -> Self { @@ -288,6 +294,7 @@ impl TopDecode for BigUint { } impl TypeAbiFrom for BigUint where M: ManagedTypeApi {} +impl TypeAbiFrom<&Self> for BigUint where M: ManagedTypeApi {} impl crate::abi::TypeAbi for BigUint { fn type_name() -> TypeName { diff --git a/framework/base/src/types/managed/basic/managed_buffer.rs b/framework/base/src/types/managed/basic/managed_buffer.rs index a9d7483125..5d2b975b4a 100644 --- a/framework/base/src/types/managed/basic/managed_buffer.rs +++ b/framework/base/src/types/managed/basic/managed_buffer.rs @@ -419,12 +419,21 @@ impl CodecFrom<&[u8]> for ManagedBuffer where M: ManagedTypeApi {} impl CodecFrom<&str> for ManagedBuffer where M: ManagedTypeApi {} impl CodecFrom<&[u8; N]> for ManagedBuffer where M: ManagedTypeApi {} +impl TypeAbiFrom<&[u8]> for ManagedBuffer where M: ManagedTypeApi {} +impl TypeAbiFrom<&str> for ManagedBuffer where M: ManagedTypeApi {} +impl TypeAbiFrom<&[u8; N]> for ManagedBuffer where M: ManagedTypeApi {} + macro_rules! managed_buffer_codec_from_impl_bi_di { ($other_ty:ty) => { impl CodecFrom<$other_ty> for ManagedBuffer {} impl CodecFrom<&$other_ty> for ManagedBuffer {} impl CodecFrom> for $other_ty {} impl CodecFrom<&ManagedBuffer> for $other_ty {} + + impl TypeAbiFrom<$other_ty> for ManagedBuffer {} + impl TypeAbiFrom<&$other_ty> for ManagedBuffer {} + impl TypeAbiFrom> for $other_ty {} + impl TypeAbiFrom<&ManagedBuffer> for $other_ty {} }; } @@ -462,6 +471,7 @@ impl TopDecode for ManagedBuffer { } impl TypeAbiFrom for ManagedBuffer where M: ManagedTypeApi {} +impl TypeAbiFrom<&Self> for ManagedBuffer where M: ManagedTypeApi {} impl crate::abi::TypeAbi for ManagedBuffer { fn type_name() -> TypeName { diff --git a/framework/base/src/types/managed/multi_value/multi_value_encoded.rs b/framework/base/src/types/managed/multi_value/multi_value_encoded.rs index 01e894cf3e..6154942fa6 100644 --- a/framework/base/src/types/managed/multi_value/multi_value_encoded.rs +++ b/framework/base/src/types/managed/multi_value/multi_value_encoded.rs @@ -265,6 +265,15 @@ where { } +#[cfg(feature = "alloc")] +impl TypeAbiFrom> for MultiValueEncoded +where + M: ManagedTypeApi + ErrorApi, + T: TopEncodeMulti, + U: TypeAbiFrom, +{ +} + #[cfg(feature = "alloc")] impl CodecFrom> for MultiValueVec where @@ -274,6 +283,15 @@ where { } +#[cfg(feature = "alloc")] +impl TypeAbiFrom> for MultiValueVec +where + M: ManagedTypeApi + ErrorApi, + T: TopEncodeMulti, + U: TypeAbiFrom, +{ +} + impl FromIterator for MultiValueEncoded where M: ManagedTypeApi, diff --git a/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs b/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs index 16f6714ff0..a31a4d6d02 100644 --- a/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs +++ b/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs @@ -4,6 +4,7 @@ use crate::{ codec::*, derive::ManagedVecItem, formatter::{FormatByteReceiver, SCDisplay, SCLowerHex}, + proxy_imports::TestTokenIdentifier, types::{ManagedBuffer, ManagedOption, ManagedRef, ManagedType, TokenIdentifier}, }; @@ -213,7 +214,19 @@ impl CodecFrom<&TokenIdentifier> for EgldOrEsdtTokenIdentifier where M: impl CodecFrom<&[u8]> for EgldOrEsdtTokenIdentifier where M: ManagedTypeApi {} impl CodecFrom<&str> for EgldOrEsdtTokenIdentifier where M: ManagedTypeApi {} +impl TypeAbiFrom> for EgldOrEsdtTokenIdentifier where M: ManagedTypeApi {} +impl TypeAbiFrom<&TokenIdentifier> for EgldOrEsdtTokenIdentifier where M: ManagedTypeApi {} +impl<'a, M> TypeAbiFrom> for EgldOrEsdtTokenIdentifier where + M: ManagedTypeApi +{ +} +impl<'a, M> TypeAbiFrom<&TestTokenIdentifier<'a>> for EgldOrEsdtTokenIdentifier where + M: ManagedTypeApi +{ +} + impl TypeAbiFrom for EgldOrEsdtTokenIdentifier {} +impl TypeAbiFrom<&Self> for EgldOrEsdtTokenIdentifier {} impl TypeAbi for EgldOrEsdtTokenIdentifier { fn type_name() -> TypeName { diff --git a/framework/base/src/types/managed/wrapped/managed_address.rs b/framework/base/src/types/managed/wrapped/managed_address.rs index 5ab0941f47..cf5341775d 100644 --- a/framework/base/src/types/managed/wrapped/managed_address.rs +++ b/framework/base/src/types/managed/wrapped/managed_address.rs @@ -235,6 +235,7 @@ where } impl TypeAbiFrom for ManagedAddress where M: ManagedTypeApi {} +impl TypeAbiFrom<&Self> for ManagedAddress where M: ManagedTypeApi {} impl TypeAbi for ManagedAddress where @@ -274,6 +275,7 @@ impl core::fmt::Debug for ManagedAddress { impl CodecFromSelf for ManagedAddress where M: ManagedTypeApi {} impl CodecFrom<[u8; 32]> for ManagedAddress where M: ManagedTypeApi {} +impl TypeAbiFrom<[u8; 32]> for ManagedAddress where M: ManagedTypeApi {} #[cfg(feature = "alloc")] impl CodecFrom
for ManagedAddress where M: ManagedTypeApi {} @@ -286,3 +288,15 @@ impl CodecFrom> for Address where M: ManagedTypeApi {} #[cfg(feature = "alloc")] impl CodecFrom<&ManagedAddress> for Address where M: ManagedTypeApi {} + +#[cfg(feature = "alloc")] +impl TypeAbiFrom
for ManagedAddress where M: ManagedTypeApi {} + +#[cfg(feature = "alloc")] +impl TypeAbiFrom<&Address> for ManagedAddress where M: ManagedTypeApi {} + +#[cfg(feature = "alloc")] +impl TypeAbiFrom> for Address where M: ManagedTypeApi {} + +#[cfg(feature = "alloc")] +impl TypeAbiFrom<&ManagedAddress> for Address where M: ManagedTypeApi {} diff --git a/framework/base/src/types/managed/wrapped/managed_byte_array.rs b/framework/base/src/types/managed/wrapped/managed_byte_array.rs index 79bc111792..b63064e7a4 100644 --- a/framework/base/src/types/managed/wrapped/managed_byte_array.rs +++ b/framework/base/src/types/managed/wrapped/managed_byte_array.rs @@ -206,6 +206,7 @@ where } impl TypeAbiFrom for ManagedByteArray where M: ManagedTypeApi {} +impl TypeAbiFrom<&Self> for ManagedByteArray where M: ManagedTypeApi {} impl TypeAbi for ManagedByteArray where diff --git a/framework/base/src/types/managed/wrapped/token_identifier.rs b/framework/base/src/types/managed/wrapped/token_identifier.rs index 8eea09f437..6cb98703cc 100644 --- a/framework/base/src/types/managed/wrapped/token_identifier.rs +++ b/framework/base/src/types/managed/wrapped/token_identifier.rs @@ -169,6 +169,7 @@ impl CodecFrom<&[u8]> for TokenIdentifier where M: ManagedTypeApi {} impl CodecFrom> for TokenIdentifier where M: ManagedTypeApi {} impl TypeAbiFrom for TokenIdentifier {} +impl TypeAbiFrom<&Self> for TokenIdentifier {} impl TypeAbi for TokenIdentifier { fn type_name() -> TypeName { diff --git a/framework/base/src/types/static_buffer/sparse_array.rs b/framework/base/src/types/static_buffer/sparse_array.rs index 9d35219466..2c5a0b6900 100644 --- a/framework/base/src/types/static_buffer/sparse_array.rs +++ b/framework/base/src/types/static_buffer/sparse_array.rs @@ -305,6 +305,7 @@ where } impl TypeAbiFrom for SparseArray where E: ErrorApi {} +impl TypeAbiFrom<&Self> for SparseArray where E: ErrorApi {} impl TypeAbi for SparseArray where diff --git a/framework/derive/src/type_abi_derive.rs b/framework/derive/src/type_abi_derive.rs index 3c95ca3dda..e9e9db4008 100644 --- a/framework/derive/src/type_abi_derive.rs +++ b/framework/derive/src/type_abi_derive.rs @@ -124,6 +124,7 @@ pub fn type_abi_derive(input: proc_macro::TokenStream) -> proc_macro2::TokenStre let (impl_generics, ty_generics, where_clause) = &ast.generics.split_for_impl(); quote! { impl #impl_generics multiversx_sc::abi::TypeAbiFrom for #name #ty_generics #where_clause {} + impl #impl_generics multiversx_sc::abi::TypeAbiFrom<&Self> for #name #ty_generics #where_clause {} impl #impl_generics multiversx_sc::abi::TypeAbi for #name #ty_generics #where_clause { fn type_name() -> multiversx_sc::abi::TypeName { diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs index 82f37cdfba..59f00e22c7 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs @@ -372,7 +372,7 @@ where fn write_argument(&mut self, index: usize, rust_name: &str) { let adjusted = self.adjust_type_name_with_env_api(rust_name); - self.writeln(format!(" Arg{index}: CodecInto<{adjusted}>,")); + self.writeln(format!(" Arg{index}: ProxyArg<{adjusted}>,")); } fn write_parameters(&mut self, inputs: &[InputAbi]) { diff --git a/framework/scenario/src/facade/expr/bech32_address.rs b/framework/scenario/src/facade/expr/bech32_address.rs index abc9d00cff..4cfa9b2bf5 100644 --- a/framework/scenario/src/facade/expr/bech32_address.rs +++ b/framework/scenario/src/facade/expr/bech32_address.rs @@ -2,6 +2,7 @@ use std::fmt::Display; use crate::bech32; use multiversx_sc::{ + abi::TypeAbiFrom, api::ManagedTypeApi, codec::*, types::{ @@ -180,6 +181,9 @@ impl TopDecode for Bech32Address { impl CodecFrom for ManagedAddress where M: ManagedTypeApi {} impl CodecFrom<&Bech32Address> for ManagedAddress where M: ManagedTypeApi {} +impl TypeAbiFrom for ManagedAddress where M: ManagedTypeApi {} +impl TypeAbiFrom<&Bech32Address> for ManagedAddress where M: ManagedTypeApi {} + impl Serialize for Bech32Address { fn serialize(&self, serializer: S) -> Result where From a6b72556e131e285c6af01c15edb0c05a3a8d05e Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sat, 4 May 2024 15:53:59 +0300 Subject: [PATCH 436/461] TypeAbiFrom in old proxies --- .../types/managed/multi_value/multi_value_encoded.rs | 7 +++++++ .../managed/wrapped/egld_or_esdt_token_identifier.rs | 4 +++- .../base/src/types/managed/wrapped/token_identifier.rs | 4 +++- framework/derive/src/generate/proxy_gen.rs | 2 +- framework/scenario/src/facade/contract_info.rs | 10 ++++++++-- 5 files changed, 22 insertions(+), 5 deletions(-) diff --git a/framework/base/src/types/managed/multi_value/multi_value_encoded.rs b/framework/base/src/types/managed/multi_value/multi_value_encoded.rs index 6154942fa6..1548f8ebd4 100644 --- a/framework/base/src/types/managed/multi_value/multi_value_encoded.rs +++ b/framework/base/src/types/managed/multi_value/multi_value_encoded.rs @@ -229,6 +229,13 @@ where { } +impl TypeAbiFrom<&Self> for MultiValueEncoded +where + M: ManagedTypeApi, + T: TypeAbi, +{ +} + impl TypeAbi for MultiValueEncoded where M: ManagedTypeApi, diff --git a/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs b/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs index a31a4d6d02..e8bcf44c05 100644 --- a/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs +++ b/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs @@ -210,12 +210,14 @@ impl CodecFromSelf for EgldOrEsdtTokenIdentifier where M: ManagedTypeApi { impl CodecFrom> for EgldOrEsdtTokenIdentifier where M: ManagedTypeApi {} impl CodecFrom<&TokenIdentifier> for EgldOrEsdtTokenIdentifier where M: ManagedTypeApi {} - impl CodecFrom<&[u8]> for EgldOrEsdtTokenIdentifier where M: ManagedTypeApi {} impl CodecFrom<&str> for EgldOrEsdtTokenIdentifier where M: ManagedTypeApi {} impl TypeAbiFrom> for EgldOrEsdtTokenIdentifier where M: ManagedTypeApi {} impl TypeAbiFrom<&TokenIdentifier> for EgldOrEsdtTokenIdentifier where M: ManagedTypeApi {} +impl TypeAbiFrom<&[u8]> for EgldOrEsdtTokenIdentifier where M: ManagedTypeApi {} +impl TypeAbiFrom<&str> for EgldOrEsdtTokenIdentifier where M: ManagedTypeApi {} + impl<'a, M> TypeAbiFrom> for EgldOrEsdtTokenIdentifier where M: ManagedTypeApi { diff --git a/framework/base/src/types/managed/wrapped/token_identifier.rs b/framework/base/src/types/managed/wrapped/token_identifier.rs index 6cb98703cc..3500fb99eb 100644 --- a/framework/base/src/types/managed/wrapped/token_identifier.rs +++ b/framework/base/src/types/managed/wrapped/token_identifier.rs @@ -165,9 +165,11 @@ impl TopDecode for TokenIdentifier { impl CodecFromSelf for TokenIdentifier where M: ManagedTypeApi {} impl CodecFrom<&[u8]> for TokenIdentifier where M: ManagedTypeApi {} - impl CodecFrom> for TokenIdentifier where M: ManagedTypeApi {} +impl TypeAbiFrom<&[u8]> for TokenIdentifier where M: ManagedTypeApi {} +impl TypeAbiFrom> for TokenIdentifier where M: ManagedTypeApi {} + impl TypeAbiFrom for TokenIdentifier {} impl TypeAbiFrom<&Self> for TokenIdentifier {} diff --git a/framework/derive/src/generate/proxy_gen.rs b/framework/derive/src/generate/proxy_gen.rs index b904c69f20..81b416c009 100644 --- a/framework/derive/src/generate/proxy_gen.rs +++ b/framework/derive/src/generate/proxy_gen.rs @@ -313,7 +313,7 @@ fn equivalent_encode_path_gen(ty: &syn::Type) -> syn::Path { let owned_type = convert_to_owned_type(ty); syn::parse_str( format!( - "multiversx_sc::codec::CodecInto<{}>", + "multiversx_sc::types::ProxyArg<{}>", owned_type.to_token_stream() ) .as_str(), diff --git a/framework/scenario/src/facade/contract_info.rs b/framework/scenario/src/facade/contract_info.rs index 2652732494..d0df35df96 100644 --- a/framework/scenario/src/facade/contract_info.rs +++ b/framework/scenario/src/facade/contract_info.rs @@ -1,7 +1,8 @@ use std::ops::{Deref, DerefMut}; -use multiversx_sc::types::{ - AnnotatedValue, ManagedBuffer, TxEnv, TxFrom, TxFromSpecified, TxTo, TxToSpecified, +use multiversx_sc::{ + abi::TypeAbiFrom, + types::{AnnotatedValue, ManagedBuffer, TxEnv, TxFrom, TxFromSpecified, TxTo, TxToSpecified}, }; use crate::multiversx_sc::{ @@ -108,6 +109,11 @@ impl CodecFrom<&ContractInfo

> for Address {} impl CodecFrom> for ManagedAddress {} impl CodecFrom<&ContractInfo

> for ManagedAddress {} +impl TypeAbiFrom> for Address {} +impl TypeAbiFrom<&ContractInfo

> for Address {} +impl TypeAbiFrom> for ManagedAddress {} +impl TypeAbiFrom<&ContractInfo

> for ManagedAddress {} + impl AnnotatedValue> for &ContractInfo

where Env: TxEnv, From 99294647807dd709eba277f2d87b51a6216d12eb Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sat, 4 May 2024 17:12:12 +0300 Subject: [PATCH 437/461] cleanup --- contracts/examples/rewards-distribution/sc-config.toml | 3 --- framework/base/src/types/managed/basic/big_int.rs | 3 +++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/contracts/examples/rewards-distribution/sc-config.toml b/contracts/examples/rewards-distribution/sc-config.toml index 888d97a79f..9661ab3dc5 100644 --- a/contracts/examples/rewards-distribution/sc-config.toml +++ b/contracts/examples/rewards-distribution/sc-config.toml @@ -1,5 +1,2 @@ [[proxy]] path = "src/rewards_distribution_proxy.rs" -[[proxy.path-rename]] -from = "multiversx_sc::types::io::operation_completion_status::" -to = "" diff --git a/framework/base/src/types/managed/basic/big_int.rs b/framework/base/src/types/managed/basic/big_int.rs index 4d9fca8fe2..6026341975 100644 --- a/framework/base/src/types/managed/basic/big_int.rs +++ b/framework/base/src/types/managed/basic/big_int.rs @@ -102,6 +102,9 @@ macro_rules! big_int_conv_num { impl CodecFrom<$num_ty> for BigInt {} impl CodecFrom<&$num_ty> for BigInt {} + + impl TypeAbiFrom<$num_ty> for BigInt {} + impl TypeAbiFrom<&$num_ty> for BigInt {} }; } From b4acf882baa3623748c5c64d953f64ad3152709e Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sat, 4 May 2024 17:13:01 +0300 Subject: [PATCH 438/461] proxy gen - type_abi annotation --- .../examples/crowdfunding-esdt/src/crowdfunding_esdt_proxy.rs | 1 + contracts/examples/crypto-zombies/src/proxy_crypto_zombies.rs | 1 + contracts/examples/digital-cash/src/digital_cash_proxy.rs | 2 ++ contracts/examples/multisig/src/multisig_proxy.rs | 4 ++++ .../rewards-distribution/src/seed_nft_minter_proxy.rs | 1 + .../meta/src/cmd/contract/generate_proxy/proxy_generator.rs | 1 + 6 files changed, 10 insertions(+) diff --git a/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt_proxy.rs b/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt_proxy.rs index 08c8d0ef14..a1fe1dddda 100644 --- a/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt_proxy.rs +++ b/contracts/examples/crowdfunding-esdt/src/crowdfunding_esdt_proxy.rs @@ -140,6 +140,7 @@ where } } +#[type_abi] #[derive(TopEncode, TopDecode, PartialEq, Eq, Clone, Copy, Debug)] pub enum Status { FundingPeriod, diff --git a/contracts/examples/crypto-zombies/src/proxy_crypto_zombies.rs b/contracts/examples/crypto-zombies/src/proxy_crypto_zombies.rs index 7f490cccbd..1e056fee19 100644 --- a/contracts/examples/crypto-zombies/src/proxy_crypto_zombies.rs +++ b/contracts/examples/crypto-zombies/src/proxy_crypto_zombies.rs @@ -272,6 +272,7 @@ where } } +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct Zombie where diff --git a/contracts/examples/digital-cash/src/digital_cash_proxy.rs b/contracts/examples/digital-cash/src/digital_cash_proxy.rs index ad7a29fe7e..85e7dc06ae 100644 --- a/contracts/examples/digital-cash/src/digital_cash_proxy.rs +++ b/contracts/examples/digital-cash/src/digital_cash_proxy.rs @@ -236,6 +236,7 @@ where } } +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct DepositInfo where @@ -249,6 +250,7 @@ where pub fees: Fee, } +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct Fee where diff --git a/contracts/examples/multisig/src/multisig_proxy.rs b/contracts/examples/multisig/src/multisig_proxy.rs index 1d39617160..6f789f298a 100644 --- a/contracts/examples/multisig/src/multisig_proxy.rs +++ b/contracts/examples/multisig/src/multisig_proxy.rs @@ -491,6 +491,7 @@ where } } +#[type_abi] #[derive(TopEncode)] pub struct ActionFullInfo where @@ -502,6 +503,7 @@ where } #[rustfmt::skip] +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, Clone)] pub enum Action where @@ -529,6 +531,7 @@ where }, } +#[type_abi] #[derive(NestedEncode, NestedDecode, Clone)] pub struct CallActionData where @@ -540,6 +543,7 @@ where pub arguments: ManagedVec>, } +#[type_abi] #[derive(TopEncode, TopDecode)] pub enum UserRole { None, diff --git a/contracts/examples/rewards-distribution/src/seed_nft_minter_proxy.rs b/contracts/examples/rewards-distribution/src/seed_nft_minter_proxy.rs index 49186da9ce..84349daae7 100644 --- a/contracts/examples/rewards-distribution/src/seed_nft_minter_proxy.rs +++ b/contracts/examples/rewards-distribution/src/seed_nft_minter_proxy.rs @@ -182,6 +182,7 @@ where } } +#[type_abi] #[derive(ManagedVecItem, NestedEncode, NestedDecode)] pub struct Distribution where diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs index 59f00e22c7..391f93aaa6 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs @@ -530,6 +530,7 @@ where name: &str, ) { self.writeln(""); + self.writeln("#[type_abi]"); self.write_macro_attributes(&type_description.macro_attributes); self.write(format!(r#"pub {type_type} {name}"#)); From 612f55c4bd391a952c739d8a37cb47e68d1baed8 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sat, 4 May 2024 18:12:46 +0300 Subject: [PATCH 439/461] TypeAbiFrom in legacy tests/interactor --- framework/base/src/abi/type_abi_impl_basic.rs | 2 +- .../base/src/abi/type_abi_impl_codec_multi.rs | 2 +- .../contract_call_legacy/contract_deploy.rs | 10 ++++--- .../interaction/tx_exec/tx_exec_deploy.rs | 7 +++-- .../src/facade/scenario_world_steps.rs | 28 +++++++++++-------- .../src/scenario/model/step/sc_call_step.rs | 9 ++++-- .../src/scenario/model/step/sc_query_step.rs | 12 ++++---- .../src/scenario/model/step/typed_sc_call.rs | 15 ++++++---- .../scenario/model/step/typed_sc_deploy.rs | 14 ++++++---- .../src/scenario/model/step/typed_sc_query.rs | 10 ++++--- .../scenario/src/scenario/run_vm/sc_call.rs | 5 ++-- .../interactor_sc_extra.rs | 17 +++++------ .../interactor_vm_query.rs | 4 +-- 13 files changed, 78 insertions(+), 57 deletions(-) diff --git a/framework/base/src/abi/type_abi_impl_basic.rs b/framework/base/src/abi/type_abi_impl_basic.rs index 4e93eda28a..2355f18834 100644 --- a/framework/base/src/abi/type_abi_impl_basic.rs +++ b/framework/base/src/abi/type_abi_impl_basic.rs @@ -33,7 +33,7 @@ impl TypeAbi for &T { } } -impl TypeAbiFrom> for U where T: TypeAbiFrom {} +impl TypeAbiFrom> for Box where T: TypeAbiFrom {} impl TypeAbi for Box { fn type_name() -> TypeName { diff --git a/framework/base/src/abi/type_abi_impl_codec_multi.rs b/framework/base/src/abi/type_abi_impl_codec_multi.rs index e347388625..043ff22a9a 100644 --- a/framework/base/src/abi/type_abi_impl_codec_multi.rs +++ b/framework/base/src/abi/type_abi_impl_codec_multi.rs @@ -32,7 +32,7 @@ impl TypeAbi for crate::codec::multi_types::MultiValueVec { } } -impl TypeAbiFrom for IgnoreValue {} +impl TypeAbiFrom for IgnoreValue {} impl TypeAbi for IgnoreValue { fn type_name() -> TypeName { diff --git a/framework/base/src/types/interaction/contract_call_legacy/contract_deploy.rs b/framework/base/src/types/interaction/contract_call_legacy/contract_deploy.rs index bdc15e5509..0cb83f408b 100644 --- a/framework/base/src/types/interaction/contract_call_legacy/contract_deploy.rs +++ b/framework/base/src/types/interaction/contract_call_legacy/contract_deploy.rs @@ -1,6 +1,8 @@ use core::marker::PhantomData; -use crate::codec::{CodecFrom, TopEncodeMulti}; +use multiversx_sc_codec::TopDecodeMulti; + +use crate::{abi::TypeAbiFrom, codec::TopEncodeMulti}; use crate::{ api::{BlockchainApiImpl, CallTypeApi}, @@ -101,7 +103,7 @@ where raw_result: ManagedVec>, ) -> RequestedResult where - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, { let mut loader = ManagedResultArgLoader::new(raw_result); let arg_id = ArgId::from(&b"init result"[..]); @@ -118,7 +120,7 @@ where code_metadata: CodeMetadata, ) -> (ManagedAddress, RequestedResult) where - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, { let (address, raw_result) = SendRawWrapper::::new().deploy_contract( self.resolve_gas_limit(), @@ -139,7 +141,7 @@ where code_metadata: CodeMetadata, ) -> (ManagedAddress, RequestedResult) where - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, { let (address, raw_result) = SendRawWrapper::::new().deploy_from_source_contract( self.resolve_gas_limit(), diff --git a/framework/base/src/types/interaction/tx_exec/tx_exec_deploy.rs b/framework/base/src/types/interaction/tx_exec/tx_exec_deploy.rs index 9ccb4bdd2a..ac93f909e8 100644 --- a/framework/base/src/types/interaction/tx_exec/tx_exec_deploy.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_exec_deploy.rs @@ -1,6 +1,7 @@ -use multiversx_sc_codec::{CodecFrom, TopEncodeMulti}; +use multiversx_sc_codec::{TopDecodeMulti, TopEncodeMulti}; use crate::{ + abi::TypeAbiFrom, api::CallTypeApi, contract_base::SendRawWrapper, tuple_util::NestedTupleFlatten, @@ -168,7 +169,7 @@ where code_metadata: CodeMetadata, ) -> (ManagedAddress, RequestedResult) where - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, { let (new_address, raw_results, _) = self .code(code.clone()) @@ -191,7 +192,7 @@ where code_metadata: CodeMetadata, ) -> (ManagedAddress, RequestedResult) where - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, { let (new_address, raw_results, _) = self .from_source(source_address.clone()) diff --git a/framework/scenario/src/facade/scenario_world_steps.rs b/framework/scenario/src/facade/scenario_world_steps.rs index 37bc5e88c3..389b58ecf6 100644 --- a/framework/scenario/src/facade/scenario_world_steps.rs +++ b/framework/scenario/src/facade/scenario_world_steps.rs @@ -1,9 +1,13 @@ -use multiversx_sc::types::{heap::Address, ContractCall}; +use multiversx_sc::{ + abi::TypeAbiFrom, + codec::TopDecodeMulti, + types::{heap::Address, ContractCall}, +}; use crate::{ api::StaticApi, facade::ScenarioWorld, - multiversx_sc::codec::{CodecFrom, TopEncodeMulti}, + multiversx_sc::codec::TopEncodeMulti, scenario::{model::*, ScenarioRunner}, }; @@ -47,7 +51,7 @@ impl ScenarioWorld { ) -> &mut Self where OriginalResult: TopEncodeMulti, - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, F: FnOnce(TypedResponse), { self.sc_call_use_raw_response(step, |response| { @@ -62,7 +66,7 @@ impl ScenarioWorld { ) -> RequestedResult where OriginalResult: TopEncodeMulti, - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, { self.run_sc_call_step(&mut step.sc_call_step); let response = unwrap_response(&step.sc_call_step.response); @@ -98,7 +102,7 @@ impl ScenarioWorld { ) -> &mut Self where OriginalResult: TopEncodeMulti, - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, F: FnOnce(TypedResponse), { self.sc_query_use_raw_response(step, |response| { @@ -113,7 +117,7 @@ impl ScenarioWorld { ) -> RequestedResult where OriginalResult: TopEncodeMulti, - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, { self.run_sc_query_step(&mut step.sc_query_step); let response = unwrap_response(&step.sc_query_step.response); @@ -129,7 +133,7 @@ impl ScenarioWorld { pub fn quick_query(&mut self, contract_call: CC) -> RequestedResult where CC: ContractCall, - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, { self.sc_query_get_result(ScQueryStep::new().call(contract_call)) } @@ -166,7 +170,7 @@ impl ScenarioWorld { ) -> &mut Self where OriginalResult: TopEncodeMulti, - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, F: FnOnce(Address, TypedResponse), { self.sc_deploy_use_raw_response(step, |response| { @@ -182,7 +186,7 @@ impl ScenarioWorld { ) -> (Address, RequestedResult) where OriginalResult: TopEncodeMulti, - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, { self.run_sc_deploy_step(&mut step.sc_deploy_step); let response = unwrap_response(&step.sc_deploy_step.response); @@ -223,7 +227,7 @@ impl TypedScCallExecutor for ScenarioWorld { ) -> RequestedResult where OriginalResult: TopEncodeMulti, - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, { self.sc_call_get_result(typed_sc_call) } @@ -236,7 +240,7 @@ impl TypedScDeployExecutor for ScenarioWorld { ) -> (Address, RequestedResult) where OriginalResult: TopEncodeMulti, - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, { self.sc_deploy_get_result(typed_sc_call) } @@ -254,7 +258,7 @@ impl TypedScQueryExecutor for ScenarioWorld { ) -> RequestedResult where OriginalResult: TopEncodeMulti, - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, { self.sc_query_get_result(typed_sc_query) } 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 e971cbaf23..3bcd3d861e 100644 --- a/framework/scenario/src/scenario/model/step/sc_call_step.rs +++ b/framework/scenario/src/scenario/model/step/sc_call_step.rs @@ -1,4 +1,7 @@ -use multiversx_sc::types::{ContractCallBase, H256}; +use multiversx_sc::{ + abi::TypeAbiFrom, + types::{ContractCallBase, H256}, +}; use crate::{ api::StaticApi, @@ -7,7 +10,7 @@ use crate::{ }; use crate::multiversx_sc::{ - codec::{CodecFrom, PanicErrorHandler, TopEncodeMulti}, + codec::{PanicErrorHandler, TopEncodeMulti}, types::{ContractCall, ManagedArgBuffer}, }; @@ -174,7 +177,7 @@ impl ScCallStep { ) -> TypedScCall where CC: ContractCall, - ExpectedResult: CodecFrom + TopEncodeMulti, + ExpectedResult: TypeAbiFrom + TopEncodeMulti, { self.call(contract_call).expect_value(expected_value) } diff --git a/framework/scenario/src/scenario/model/step/sc_query_step.rs b/framework/scenario/src/scenario/model/step/sc_query_step.rs index 8e62ff5473..7a99fd4163 100644 --- a/framework/scenario/src/scenario/model/step/sc_query_step.rs +++ b/framework/scenario/src/scenario/model/step/sc_query_step.rs @@ -1,12 +1,12 @@ -use multiversx_sc::types::{ContractCallBase, H256}; +use multiversx_sc::{ + abi::TypeAbiFrom, + types::{ContractCallBase, H256}, +}; use num_traits::Zero; use crate::{ api::StaticApi, - multiversx_sc::{ - codec::{CodecFrom, TopEncodeMulti}, - types::ContractCall, - }, + multiversx_sc::{codec::TopEncodeMulti, types::ContractCall}, scenario::model::{AddressValue, BytesValue, TxExpect, TxQuery}, scenario_model::TxResponse, }; @@ -96,7 +96,7 @@ impl ScQueryStep { ) -> TypedScQuery where CC: ContractCall, - ExpectedResult: CodecFrom + TopEncodeMulti, + ExpectedResult: TypeAbiFrom + TopEncodeMulti, { let typed = self.call(contract_call); typed.expect_value(expected_value) diff --git a/framework/scenario/src/scenario/model/step/typed_sc_call.rs b/framework/scenario/src/scenario/model/step/typed_sc_call.rs index bf939ee590..084cd3e71f 100644 --- a/framework/scenario/src/scenario/model/step/typed_sc_call.rs +++ b/framework/scenario/src/scenario/model/step/typed_sc_call.rs @@ -1,8 +1,11 @@ use std::marker::PhantomData; -use multiversx_sc::codec::PanicErrorHandler; +use multiversx_sc::{ + abi::TypeAbiFrom, + codec::{PanicErrorHandler, TopDecodeMulti}, +}; -use crate::multiversx_sc::codec::{CodecFrom, TopEncodeMulti}; +use crate::multiversx_sc::codec::TopEncodeMulti; use crate::{ scenario::model::{AddressValue, U64Value}, @@ -22,7 +25,7 @@ impl TypedScCall { pub fn result(&self) -> Result where OriginalResult: TopEncodeMulti, - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, { let mut raw_result = self.response().out.clone(); Ok( @@ -109,7 +112,7 @@ impl TypedScCall { pub fn expect_value(self, expected_value: ExpectedResult) -> Self where OriginalResult: TopEncodeMulti, - ExpectedResult: CodecFrom + TopEncodeMulti, + ExpectedResult: TypeAbiFrom + TopEncodeMulti, { self.expect(format_expect(expected_value)) } @@ -151,7 +154,7 @@ pub trait TypedScCallExecutor { ) -> RequestedResult where OriginalResult: TopEncodeMulti, - RequestedResult: CodecFrom; + RequestedResult: TopDecodeMulti + TypeAbiFrom; } impl TypedScCall @@ -164,7 +167,7 @@ where executor: &mut E, ) -> RequestedResult where - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, { executor.execute_typed_sc_call(self) } diff --git a/framework/scenario/src/scenario/model/step/typed_sc_deploy.rs b/framework/scenario/src/scenario/model/step/typed_sc_deploy.rs index c440f9bd29..74249e8f97 100644 --- a/framework/scenario/src/scenario/model/step/typed_sc_deploy.rs +++ b/framework/scenario/src/scenario/model/step/typed_sc_deploy.rs @@ -1,11 +1,15 @@ use std::marker::PhantomData; -use multiversx_sc::{codec::PanicErrorHandler, types::ContractDeploy}; +use multiversx_sc::{ + abi::TypeAbiFrom, + codec::{PanicErrorHandler, TopDecodeMulti}, + types::ContractDeploy, +}; use crate::{ api::StaticApi, multiversx_sc::{ - codec::{CodecFrom, TopEncodeMulti}, + codec::TopEncodeMulti, types::{Address, CodeMetadata}, }, scenario_format::interpret_trait::InterpreterContext, @@ -27,7 +31,7 @@ impl TypedScDeploy { pub fn result(&self) -> Result where OriginalResult: TopEncodeMulti, - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, { let mut raw_result = self.response().out.clone(); Ok( @@ -145,7 +149,7 @@ pub trait TypedScDeployExecutor { ) -> (Address, RequestedResult) where OriginalResult: TopEncodeMulti, - RequestedResult: CodecFrom; + RequestedResult: TopDecodeMulti + TypeAbiFrom; } impl TypedScDeploy @@ -158,7 +162,7 @@ where executor: &mut E, ) -> (Address, RequestedResult) where - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, { executor.execute_typed_sc_deploy(self) } diff --git a/framework/scenario/src/scenario/model/step/typed_sc_query.rs b/framework/scenario/src/scenario/model/step/typed_sc_query.rs index 60b3b91818..3e7e819c4e 100644 --- a/framework/scenario/src/scenario/model/step/typed_sc_query.rs +++ b/framework/scenario/src/scenario/model/step/typed_sc_query.rs @@ -1,6 +1,8 @@ use std::marker::PhantomData; -use crate::multiversx_sc::codec::{CodecFrom, TopEncodeMulti}; +use multiversx_sc::{abi::TypeAbiFrom, codec::TopDecodeMulti}; + +use crate::multiversx_sc::codec::TopEncodeMulti; use crate::{ scenario::model::{AddressValue, BytesValue, TxExpect}, @@ -72,7 +74,7 @@ impl TypedScQuery { pub fn expect_value(self, expected_value: ExpectedResult) -> Self where OriginalResult: TopEncodeMulti, - ExpectedResult: CodecFrom + TopEncodeMulti, + ExpectedResult: TypeAbiFrom + TopEncodeMulti, { self.expect(format_expect(expected_value)) } @@ -105,7 +107,7 @@ pub trait TypedScQueryExecutor { ) -> RequestedResult where OriginalResult: TopEncodeMulti, - RequestedResult: CodecFrom; + RequestedResult: TopDecodeMulti + TypeAbiFrom; } impl TypedScQuery @@ -118,7 +120,7 @@ where executor: &mut E, ) -> RequestedResult where - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, { executor.execute_typed_sc_query(self) } diff --git a/framework/scenario/src/scenario/run_vm/sc_call.rs b/framework/scenario/src/scenario/run_vm/sc_call.rs index abbe9ee6ff..ceb9863478 100644 --- a/framework/scenario/src/scenario/run_vm/sc_call.rs +++ b/framework/scenario/src/scenario/run_vm/sc_call.rs @@ -1,5 +1,5 @@ use crate::{ - multiversx_sc::codec::{CodecFrom, PanicErrorHandler, TopEncodeMulti}, + multiversx_sc::codec::{PanicErrorHandler, TopEncodeMulti}, scenario::model::{ScCallStep, TxESDT, TypedScCall}, scenario_model::TxResponse, }; @@ -8,6 +8,7 @@ use multiversx_chain_vm::{ tx_execution::execute_current_tx_context_input, tx_mock::{TxInput, TxResult, TxTokenTransfer}, }; +use multiversx_sc::{abi::TypeAbiFrom, codec::TopDecodeMulti}; use super::{check_tx_output, tx_input_util::generate_tx_hash, ScenarioVMRunner}; @@ -34,7 +35,7 @@ impl ScenarioVMRunner { ) -> RequestedResult where OriginalResult: TopEncodeMulti, - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, { let sc_call_step: ScCallStep = typed_sc_call.into(); let tx_result = diff --git a/framework/snippets/src/interactor_scenario/interactor_sc_extra.rs b/framework/snippets/src/interactor_scenario/interactor_sc_extra.rs index 277adcd6e9..8d25f32e9d 100644 --- a/framework/snippets/src/interactor_scenario/interactor_sc_extra.rs +++ b/framework/snippets/src/interactor_scenario/interactor_sc_extra.rs @@ -2,7 +2,8 @@ use crate::Interactor; use multiversx_sc_scenario::{ api::StaticApi, multiversx_sc::{ - codec::{CodecFrom, TopEncodeMulti}, + abi::TypeAbiFrom, + codec::{TopDecodeMulti, TopEncodeMulti}, types::{Address, ContractCallBase}, }, scenario_model::{ @@ -34,7 +35,7 @@ impl Interactor { ) -> &mut Self where OriginalResult: TopEncodeMulti, - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, F: FnOnce(TypedResponse), { use_result(self.sc_call_get_result(step).await); @@ -47,7 +48,7 @@ impl Interactor { ) -> TypedResponse where OriginalResult: TopEncodeMulti, - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, { self.sc_call(step.as_mut()).await; let response = unwrap_response(&step.as_mut().response); @@ -76,7 +77,7 @@ impl Interactor { ) -> &mut Self where OriginalResult: TopEncodeMulti, - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, F: FnOnce(TypedResponse), { use_result(self.sc_query_get_result(step).await); @@ -89,7 +90,7 @@ impl Interactor { ) -> TypedResponse where OriginalResult: TopEncodeMulti, - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, { self.sc_query(step.as_mut()).await; let response = unwrap_response(&step.sc_query_step.response); @@ -99,7 +100,7 @@ impl Interactor { pub async fn quick_query(&mut self, contract_call: CC) -> RequestedResult where CC: ContractCallBase, - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, { let mut typed_sc_query = ScQueryStep::new().call(contract_call); self.sc_query(&mut typed_sc_query).await; @@ -130,7 +131,7 @@ impl Interactor { ) -> &mut Self where OriginalResult: TopEncodeMulti, - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, F: FnOnce(Address, TypedResponse), { let (new_address, response) = self.sc_deploy_get_result(step).await; @@ -144,7 +145,7 @@ impl Interactor { ) -> (Address, TypedResponse) where OriginalResult: TopEncodeMulti, - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, { self.sc_deploy(step.as_mut()).await; let response = unwrap_response(&step.sc_deploy_step.response); diff --git a/framework/snippets/src/interactor_scenario/interactor_vm_query.rs b/framework/snippets/src/interactor_scenario/interactor_vm_query.rs index 56a54961d2..d08c114623 100644 --- a/framework/snippets/src/interactor_scenario/interactor_vm_query.rs +++ b/framework/snippets/src/interactor_scenario/interactor_vm_query.rs @@ -3,7 +3,7 @@ use log::info; use multiversx_sc_scenario::{ api::StaticApi, mandos_system::ScenarioRunner, - multiversx_sc::{codec::CodecFrom, types::ContractCall}, + multiversx_sc::{abi::TypeAbiFrom, codec::TopDecodeMulti, types::ContractCall}, scenario_model::{ScQueryStep, TxResponse}, }; use multiversx_sdk::{data::vm::VmValueRequest, utils::base64_decode}; @@ -50,7 +50,7 @@ impl Interactor { pub async fn vm_query(&mut self, contract_call: CC) -> RequestedResult where CC: ContractCall, - RequestedResult: CodecFrom, + RequestedResult: TopDecodeMulti + TypeAbiFrom, { self.quick_query(contract_call).await } From 81f975c3be455d655aafbd419f58d33c7fd28663 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sat, 4 May 2024 18:20:00 +0300 Subject: [PATCH 440/461] TypeAbiFrom in result handlers --- .../result_handlers/returns_result_conv.rs | 13 ++++++------- .../interaction/result_handlers/with_result_conv.rs | 13 ++++++------- .../src/facade/result_handlers/expect_value.rs | 7 ++++--- .../src/facade/world_tx/scenario_rh_impl.rs | 9 ++++----- 4 files changed, 20 insertions(+), 22 deletions(-) diff --git a/framework/base/src/types/interaction/result_handlers/returns_result_conv.rs b/framework/base/src/types/interaction/result_handlers/returns_result_conv.rs index 05f2dfaa3d..842ae01eb8 100644 --- a/framework/base/src/types/interaction/result_handlers/returns_result_conv.rs +++ b/framework/base/src/types/interaction/result_handlers/returns_result_conv.rs @@ -1,9 +1,10 @@ use core::marker::PhantomData; -use multiversx_sc_codec::{CodecFrom, TopEncodeMulti}; +use multiversx_sc_codec::TopDecodeMulti; -use crate::types::{ - interaction::decode_result, RHListItem, RHListItemExec, SyncCallRawResult, TxEnv, +use crate::{ + abi::TypeAbiFrom, + types::{interaction::decode_result, RHListItem, RHListItemExec, SyncCallRawResult, TxEnv}, }; /// Indicates that result will be returned. @@ -30,8 +31,7 @@ impl ReturnsResultAs { impl RHListItem for ReturnsResultAs where Env: TxEnv, - Original: TopEncodeMulti, - T: CodecFrom, + T: TopDecodeMulti + TypeAbiFrom, { type Returns = T; } @@ -40,8 +40,7 @@ impl RHListItemExec, Env, Original for ReturnsResultAs where Env: TxEnv, - Original: TopEncodeMulti, - T: CodecFrom, + T: TopDecodeMulti + TypeAbiFrom, { fn item_process_result(self, raw_result: &SyncCallRawResult) -> Self::Returns { decode_result::(raw_result.0.clone()) diff --git a/framework/base/src/types/interaction/result_handlers/with_result_conv.rs b/framework/base/src/types/interaction/result_handlers/with_result_conv.rs index 263017fe87..c87bd9f36e 100644 --- a/framework/base/src/types/interaction/result_handlers/with_result_conv.rs +++ b/framework/base/src/types/interaction/result_handlers/with_result_conv.rs @@ -1,9 +1,10 @@ use core::marker::PhantomData; -use multiversx_sc_codec::{CodecFrom, TopEncodeMulti}; +use multiversx_sc_codec::TopDecodeMulti; -use crate::types::{ - interaction::decode_result, RHListItem, RHListItemExec, SyncCallRawResult, TxEnv, +use crate::{ + abi::TypeAbiFrom, + types::{interaction::decode_result, RHListItem, RHListItemExec, SyncCallRawResult, TxEnv}, }; /// Defines a lambda function to be called on the decoded result. @@ -32,8 +33,7 @@ where impl RHListItem for WithResultConv where Env: TxEnv, - Original: TopEncodeMulti, - T: CodecFrom, + T: TopDecodeMulti + TypeAbiFrom, F: FnOnce(T), { type Returns = (); @@ -43,8 +43,7 @@ impl RHListItemExec, Env, Origi for WithResultConv where Env: TxEnv, - Original: TopEncodeMulti, - T: CodecFrom, + T: TopDecodeMulti + TypeAbiFrom, F: FnOnce(T), { fn item_process_result(self, raw_result: &SyncCallRawResult) -> Self::Returns { diff --git a/framework/scenario/src/facade/result_handlers/expect_value.rs b/framework/scenario/src/facade/result_handlers/expect_value.rs index 05ebe0f79f..582737cb84 100644 --- a/framework/scenario/src/facade/result_handlers/expect_value.rs +++ b/framework/scenario/src/facade/result_handlers/expect_value.rs @@ -1,5 +1,6 @@ use multiversx_sc::{ - codec::{CodecFrom, TopEncodeMulti}, + abi::TypeAbiFrom, + codec::TopEncodeMulti, types::{RHListItem, RHListItemExec, TxEnv}, }; @@ -14,7 +15,7 @@ impl RHListItem for ExpectValue where Env: TxEnv, T: TopEncodeMulti, - Original: CodecFrom, + Original: TypeAbiFrom, { type Returns = (); } @@ -23,7 +24,7 @@ impl RHListItemExec for ExpectValue where Env: TxEnv, T: TopEncodeMulti, - Original: CodecFrom, + Original: TypeAbiFrom, { fn item_tx_expect(&self, mut prev: TxExpect) -> TxExpect { let mut encoded = Vec::>::new(); diff --git a/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs b/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs index 343fdc8382..3a4e34ec69 100644 --- a/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs +++ b/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs @@ -1,5 +1,6 @@ use multiversx_sc::{ - codec::{CodecFrom, TopDecodeMulti, TopEncodeMulti}, + abi::TypeAbiFrom, + codec::TopDecodeMulti, types::{ ManagedAddress, RHListItemExec, ReturnsNewAddress, ReturnsNewManagedAddress, ReturnsResult, ReturnsResultAs, TxEnv, WithNewAddress, WithResultConv, @@ -24,8 +25,7 @@ where impl RHListItemExec for ReturnsResultAs where Env: TxEnv, - Original: TopEncodeMulti, - T: CodecFrom, + T: TopDecodeMulti + TypeAbiFrom, { fn item_process_result(self, tx_response: &TxResponse) -> Self::Returns { let response = TypedResponse::::from_raw(tx_response); @@ -38,8 +38,7 @@ where impl RHListItemExec for WithResultConv where Env: TxEnv, - Original: TopEncodeMulti, - T: CodecFrom, + T: TopDecodeMulti + TypeAbiFrom, F: FnOnce(T), { fn item_process_result(self, tx_response: &TxResponse) -> Self::Returns { From e4fff2c2150b39de12cda31c79cf3572f64b3c27 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sat, 4 May 2024 18:30:55 +0300 Subject: [PATCH 441/461] deprecated CodecFrom --- data/codec/src/equivalent/codec_from.rs | 2 ++ data/codec/src/equivalent/codec_into.rs | 1 + data/codec/src/equivalent/mod.rs | 2 ++ data/codec/src/multi_types/mod.rs | 2 ++ framework/scenario/src/facade/contract_info.rs | 2 ++ framework/scenario/src/facade/expr/bech32_address.rs | 2 ++ 6 files changed, 11 insertions(+) diff --git a/data/codec/src/equivalent/codec_from.rs b/data/codec/src/equivalent/codec_from.rs index 27695a56a2..47fe8b801c 100644 --- a/data/codec/src/equivalent/codec_from.rs +++ b/data/codec/src/equivalent/codec_from.rs @@ -1,12 +1,14 @@ use crate::{TopDecodeMulti, TopEncodeMulti}; /// Signals that after serializing `T`, we can safely deserialize it as `Self`. +#[deprecated(since = "0.49.0", note = "Please use method `TypeAbiFrom` instead.")] pub trait CodecFrom: TopDecodeMulti where T: TopEncodeMulti, { } +#[deprecated(since = "0.49.0", note = "Please use method `TypeAbiFrom` instead.")] pub auto trait CodecFromSelf {} impl CodecFrom for T where T: TopEncodeMulti + TopDecodeMulti + CodecFromSelf {} diff --git a/data/codec/src/equivalent/codec_into.rs b/data/codec/src/equivalent/codec_into.rs index 3f4a60cdb2..761b9d35f4 100644 --- a/data/codec/src/equivalent/codec_into.rs +++ b/data/codec/src/equivalent/codec_into.rs @@ -1,6 +1,7 @@ use crate::{CodecFrom, TopDecodeMulti, TopEncodeMulti}; /// Signals that we can safely serialize `Self` in order to obtain a `T` on the other size. +#[deprecated(since = "0.49.0", note = "Please use method `TypeAbiFrom` instead.")] pub trait CodecInto: TopEncodeMulti where T: TopDecodeMulti, diff --git a/data/codec/src/equivalent/mod.rs b/data/codec/src/equivalent/mod.rs index 3715c4a87c..632fef5ae1 100644 --- a/data/codec/src/equivalent/mod.rs +++ b/data/codec/src/equivalent/mod.rs @@ -1,3 +1,5 @@ +#![allow(deprecated)] + mod codec_convert; mod codec_from; mod codec_into; diff --git a/data/codec/src/multi_types/mod.rs b/data/codec/src/multi_types/mod.rs index 2bb9948b41..0a7ae541c4 100644 --- a/data/codec/src/multi_types/mod.rs +++ b/data/codec/src/multi_types/mod.rs @@ -1,3 +1,5 @@ +#![allow(deprecated)] // TODO: remove after deleting CodecFrom + mod multi_value_ignore; mod multi_value_optional; mod multi_value_placeholder; diff --git a/framework/scenario/src/facade/contract_info.rs b/framework/scenario/src/facade/contract_info.rs index d0df35df96..e7b4dd0190 100644 --- a/framework/scenario/src/facade/contract_info.rs +++ b/framework/scenario/src/facade/contract_info.rs @@ -1,3 +1,5 @@ +#![allow(deprecated)] // TODO: remove after deleting CodecFrom + use std::ops::{Deref, DerefMut}; use multiversx_sc::{ diff --git a/framework/scenario/src/facade/expr/bech32_address.rs b/framework/scenario/src/facade/expr/bech32_address.rs index 4cfa9b2bf5..76fca96c86 100644 --- a/framework/scenario/src/facade/expr/bech32_address.rs +++ b/framework/scenario/src/facade/expr/bech32_address.rs @@ -178,7 +178,9 @@ impl TopDecode for Bech32Address { } } +#[allow(deprecated)] impl CodecFrom for ManagedAddress where M: ManagedTypeApi {} +#[allow(deprecated)] impl CodecFrom<&Bech32Address> for ManagedAddress where M: ManagedTypeApi {} impl TypeAbiFrom for ManagedAddress where M: ManagedTypeApi {} From ddcb9b0cd8b91553f9bdeeec53fb2d34f7aec4d2 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sat, 4 May 2024 19:21:52 +0300 Subject: [PATCH 442/461] TypeAbi Unmanaged field --- framework/base/src/abi.rs | 3 ++ framework/base/src/abi/type_abi.rs | 2 ++ framework/base/src/abi/type_abi_impl_basic.rs | 30 +++++++++++++++++ .../base/src/abi/type_abi_impl_big_int.rs | 33 +++++++++++++++++++ .../base/src/abi/type_abi_impl_codec_multi.rs | 8 +++++ .../base/src/storage/mappers/bi_di_mapper.rs | 2 ++ .../src/storage/mappers/linked_list_mapper.rs | 2 ++ .../base/src/storage/mappers/map_mapper.rs | 2 ++ .../base/src/storage/mappers/queue_mapper.rs | 2 ++ .../base/src/storage/mappers/set_mapper.rs | 2 ++ .../storage/mappers/single_value_mapper.rs | 2 ++ .../mappers/token/fungible_token_mapper.rs | 2 ++ .../token/non_fungible_token_mapper.rs | 2 ++ .../src/storage/mappers/unique_id_mapper.rs | 2 ++ .../storage/mappers/unordered_set_mapper.rs | 2 ++ .../base/src/storage/mappers/user_mapper.rs | 2 ++ .../base/src/storage/mappers/vec_mapper.rs | 2 ++ .../src/types/crypto/message_hash_type.rs | 2 ++ .../base/src/types/flags/code_metadata.rs | 2 ++ .../base/src/types/heap/async_call_result.rs | 2 ++ framework/base/src/types/heap/boxed_bytes.rs | 2 ++ framework/base/src/types/heap/h256.rs | 2 ++ framework/base/src/types/heap/h256_address.rs | 2 ++ framework/base/src/types/heap/queue.rs | 2 ++ .../types/interaction/managed_arg_buffer.rs | 4 +++ .../interaction/tx_data/function_call.rs | 2 ++ .../types/io/operation_completion_status.rs | 2 ++ framework/base/src/types/io/sc_result.rs | 2 ++ .../base/src/types/managed/basic/big_float.rs | 4 +++ .../base/src/types/managed/basic/big_int.rs | 11 +++++++ .../src/types/managed/basic/big_int_sign.rs | 2 ++ .../base/src/types/managed/basic/big_uint.rs | 10 ++++-- .../src/types/managed/basic/elliptic_curve.rs | 2 ++ .../src/types/managed/basic/managed_buffer.rs | 6 ++-- .../multi_value/async_call_result_managed.rs | 2 ++ .../esdt_token_payment_multi_value.rs | 2 ++ .../multi_value/multi_value_encoded.rs | 2 ++ .../multi_value/multi_value_managed_vec.rs | 2 ++ .../multi_value_managed_vec_counted.rs | 2 ++ .../wrapped/egld_or_esdt_token_identifier.rs | 2 ++ .../types/managed/wrapped/managed_address.rs | 2 ++ .../managed/wrapped/managed_byte_array.rs | 4 +++ .../types/managed/wrapped/managed_option.rs | 2 ++ .../src/types/managed/wrapped/managed_vec.rs | 2 ++ .../types/managed/wrapped/token_identifier.rs | 2 ++ .../src/types/static_buffer/sparse_array.rs | 2 ++ framework/derive/src/type_abi_derive.rs | 2 ++ 47 files changed, 183 insertions(+), 4 deletions(-) create mode 100644 framework/base/src/abi/type_abi_impl_big_int.rs diff --git a/framework/base/src/abi.rs b/framework/base/src/abi.rs index c0002739d7..993518acb2 100644 --- a/framework/base/src/abi.rs +++ b/framework/base/src/abi.rs @@ -10,6 +10,9 @@ mod type_abi_impl_codec_multi; mod type_description; mod type_description_container; +#[cfg(feature = "num-bigint")] +mod type_abi_impl_big_int; + pub use build_info_abi::*; pub use contract_abi::*; pub use endpoint_abi::*; diff --git a/framework/base/src/abi/type_abi.rs b/framework/base/src/abi/type_abi.rs index 18163eb7e7..25d4e92b46 100644 --- a/framework/base/src/abi/type_abi.rs +++ b/framework/base/src/abi/type_abi.rs @@ -9,6 +9,8 @@ use alloc::{format, string::ToString, vec::Vec}; /// /// Will be automatically implemented for struct ad enum types via the `#[type_abi]` annotation. pub trait TypeAbi: TypeAbiFrom { + type Unmanaged: TypeAbiFrom; + fn type_names() -> TypeNames { TypeNames { abi: Self::type_name(), diff --git a/framework/base/src/abi/type_abi_impl_basic.rs b/framework/base/src/abi/type_abi_impl_basic.rs index 2355f18834..f5f5ece466 100644 --- a/framework/base/src/abi/type_abi_impl_basic.rs +++ b/framework/base/src/abi/type_abi_impl_basic.rs @@ -10,6 +10,8 @@ use alloc::{ impl TypeAbiFrom<()> for () {} impl TypeAbi for () { + type Unmanaged = Self; + /// No another exception from the 1-type-1-output-abi rule: /// the unit type produces no output. fn output_abis(_output_names: &[&'static str]) -> OutputAbis { @@ -20,6 +22,8 @@ impl TypeAbi for () { impl TypeAbiFrom<&U> for &T where T: TypeAbiFrom {} impl TypeAbi for &T { + type Unmanaged = Self; + fn type_name() -> TypeName { T::type_name() } @@ -36,6 +40,8 @@ impl TypeAbi for &T { impl TypeAbiFrom> for Box where T: TypeAbiFrom {} impl TypeAbi for Box { + type Unmanaged = Self; + fn type_name() -> TypeName { T::type_name() } @@ -52,6 +58,8 @@ impl TypeAbi for Box { impl TypeAbiFrom<&[T]> for &[U] where T: TypeAbiFrom {} impl TypeAbi for &[T] { + type Unmanaged = Self; + fn type_name() -> TypeName { let t_name = T::type_name(); if t_name == "u8" { @@ -76,6 +84,8 @@ impl TypeAbi for &[T] { impl TypeAbiFrom> for Vec where T: TypeAbiFrom {} impl TypeAbi for Vec { + type Unmanaged = Self; + fn type_name() -> TypeName { <&[T]>::type_name() } @@ -92,6 +102,8 @@ impl TypeAbi for Vec { impl TypeAbiFrom> for ArrayVec {} impl TypeAbi for ArrayVec { + type Unmanaged = Self; + fn type_name() -> TypeName { <&[T]>::type_name() } @@ -108,6 +120,8 @@ impl TypeAbi for ArrayVec { impl TypeAbiFrom> for Box<[T]> {} impl TypeAbi for Box<[T]> { + type Unmanaged = Self; + fn type_name() -> TypeName { <&[T]>::type_name() } @@ -127,6 +141,8 @@ impl TypeAbiFrom<&str> for String {} impl TypeAbiFrom> for String {} impl TypeAbi for String { + type Unmanaged = Self; + fn type_name() -> TypeName { "utf-8 string".into() } @@ -135,6 +151,8 @@ impl TypeAbi for String { impl TypeAbiFrom<&'static str> for &'static str {} impl TypeAbi for &'static str { + type Unmanaged = Self; + fn type_name() -> TypeName { String::type_name() } @@ -149,6 +167,8 @@ impl TypeAbiFrom<&str> for Box {} impl TypeAbiFrom for Box {} impl TypeAbi for Box { + type Unmanaged = Self; + fn type_name() -> TypeName { String::type_name() } @@ -164,6 +184,8 @@ macro_rules! type_abi_name_only { impl TypeAbiFrom<&$ty> for $ty {} impl TypeAbi for $ty { + type Unmanaged = Self; + fn type_name() -> TypeName { TypeName::from($name) } @@ -225,6 +247,8 @@ impl TypeAbiFrom for i16 {} impl TypeAbiFrom> for Option where T: TypeAbiFrom {} impl TypeAbi for Option { + type Unmanaged = Self; + fn type_name() -> TypeName { format!("Option<{}>", T::type_name()) } @@ -241,6 +265,8 @@ impl TypeAbi for Option { impl TypeAbiFrom> for Result where T: TypeAbiFrom {} impl TypeAbi for Result { + type Unmanaged = Self; + fn type_name() -> TypeName { T::type_name() } @@ -275,6 +301,8 @@ macro_rules! tuple_impls { where $($name: TypeAbi,)+ { + type Unmanaged = Self; + fn type_name() -> TypeName { let mut repr = TypeName::from("tuple<"); $( @@ -331,6 +359,8 @@ tuple_impls! { impl TypeAbiFrom<[T; N]> for [U; N] where T: TypeAbiFrom {} impl TypeAbi for [T; N] { + type Unmanaged = Self; + fn type_name() -> TypeName { let mut repr = TypeName::from("array"); repr.push_str(N.to_string().as_str()); diff --git a/framework/base/src/abi/type_abi_impl_big_int.rs b/framework/base/src/abi/type_abi_impl_big_int.rs new file mode 100644 index 0000000000..c3b0e6bccf --- /dev/null +++ b/framework/base/src/abi/type_abi_impl_big_int.rs @@ -0,0 +1,33 @@ +use crate::codec::num_bigint::{BigInt, BigUint}; + +use super::{TypeAbi, TypeAbiFrom, TypeName}; + +impl TypeAbiFrom for BigUint {} +impl TypeAbiFrom<&Self> for BigUint {} + +impl TypeAbi for BigUint { + type Unmanaged = Self; + + fn type_name() -> TypeName { + TypeName::from("BigUint") + } + + fn type_name_rust() -> TypeName { + TypeName::from("num_bigint::BigUint") + } +} + +impl TypeAbiFrom for BigInt {} +impl TypeAbiFrom<&Self> for BigInt {} + +impl TypeAbi for BigInt { + type Unmanaged = Self; + + fn type_name() -> TypeName { + TypeName::from("BigInt") + } + + fn type_name_rust() -> TypeName { + TypeName::from("num_bigint::BigInt") + } +} diff --git a/framework/base/src/abi/type_abi_impl_codec_multi.rs b/framework/base/src/abi/type_abi_impl_codec_multi.rs index 043ff22a9a..e86f7c9614 100644 --- a/framework/base/src/abi/type_abi_impl_codec_multi.rs +++ b/framework/base/src/abi/type_abi_impl_codec_multi.rs @@ -15,6 +15,8 @@ where #[cfg(feature = "alloc")] impl TypeAbi for crate::codec::multi_types::MultiValueVec { + type Unmanaged = Self; + fn type_name() -> TypeName { super::type_name_variadic::() } @@ -35,6 +37,8 @@ impl TypeAbi for crate::codec::multi_types::MultiValueVec { impl TypeAbiFrom for IgnoreValue {} impl TypeAbi for IgnoreValue { + type Unmanaged = Self; + fn type_name() -> TypeName { TypeName::from("ignore") } @@ -51,6 +55,8 @@ impl TypeAbi for IgnoreValue { impl TypeAbiFrom> for OptionalValue where T: TypeAbiFrom {} impl TypeAbi for OptionalValue { + type Unmanaged = Self; + fn type_name() -> TypeName { super::type_name_optional::() } @@ -80,6 +86,8 @@ macro_rules! multi_arg_impls { where $($name: TypeAbi,)+ { + type Unmanaged = Self; + fn type_name() -> TypeName { let mut repr = TypeName::from("multi"); repr.push('<'); diff --git a/framework/base/src/storage/mappers/bi_di_mapper.rs b/framework/base/src/storage/mappers/bi_di_mapper.rs index 1ac77da0ae..4c59caa0ce 100644 --- a/framework/base/src/storage/mappers/bi_di_mapper.rs +++ b/framework/base/src/storage/mappers/bi_di_mapper.rs @@ -345,6 +345,8 @@ where + PartialEq + TypeAbi, { + type Unmanaged = Self; + fn type_name() -> TypeName { MultiValueEncoded::>::type_name() } diff --git a/framework/base/src/storage/mappers/linked_list_mapper.rs b/framework/base/src/storage/mappers/linked_list_mapper.rs index 826de864e6..d2d8af3b10 100644 --- a/framework/base/src/storage/mappers/linked_list_mapper.rs +++ b/framework/base/src/storage/mappers/linked_list_mapper.rs @@ -640,6 +640,8 @@ where SA: StorageMapperApi, T: TopEncode + TopDecode + NestedEncode + NestedDecode + Clone + TypeAbi, { + type Unmanaged = Self; + fn type_name() -> TypeName { crate::abi::type_name_variadic::() } diff --git a/framework/base/src/storage/mappers/map_mapper.rs b/framework/base/src/storage/mappers/map_mapper.rs index ab3d0664dc..eda95d8930 100644 --- a/framework/base/src/storage/mappers/map_mapper.rs +++ b/framework/base/src/storage/mappers/map_mapper.rs @@ -572,6 +572,8 @@ where K: TopEncode + TopDecode + NestedEncode + NestedDecode + TypeAbi + 'static, V: TopEncode + TopDecode + TypeAbi + 'static, { + type Unmanaged = Self; + fn type_name() -> TypeName { MultiValueEncoded::>::type_name() } diff --git a/framework/base/src/storage/mappers/queue_mapper.rs b/framework/base/src/storage/mappers/queue_mapper.rs index 80269c9366..a1ba11e2a6 100644 --- a/framework/base/src/storage/mappers/queue_mapper.rs +++ b/framework/base/src/storage/mappers/queue_mapper.rs @@ -545,6 +545,8 @@ where SA: StorageMapperApi, T: TopEncode + TopDecode + TypeAbi, { + type Unmanaged = Self; + fn type_name() -> TypeName { crate::abi::type_name_variadic::() } diff --git a/framework/base/src/storage/mappers/set_mapper.rs b/framework/base/src/storage/mappers/set_mapper.rs index 12c83dbd98..1579f1938e 100644 --- a/framework/base/src/storage/mappers/set_mapper.rs +++ b/framework/base/src/storage/mappers/set_mapper.rs @@ -321,6 +321,8 @@ where SA: StorageMapperApi, T: TopEncode + TopDecode + NestedEncode + NestedDecode + TypeAbi, { + type Unmanaged = Self; + fn type_name() -> TypeName { crate::abi::type_name_variadic::() } diff --git a/framework/base/src/storage/mappers/single_value_mapper.rs b/framework/base/src/storage/mappers/single_value_mapper.rs index 528a988ddf..dfaa41a393 100644 --- a/framework/base/src/storage/mappers/single_value_mapper.rs +++ b/framework/base/src/storage/mappers/single_value_mapper.rs @@ -244,6 +244,8 @@ where SA: StorageMapperApi, T: TopEncode + TopDecode + TypeAbi, { + type Unmanaged = Self; + fn type_name() -> TypeName { T::type_name() } diff --git a/framework/base/src/storage/mappers/token/fungible_token_mapper.rs b/framework/base/src/storage/mappers/token/fungible_token_mapper.rs index 309902d02f..6164e919df 100644 --- a/framework/base/src/storage/mappers/token/fungible_token_mapper.rs +++ b/framework/base/src/storage/mappers/token/fungible_token_mapper.rs @@ -286,6 +286,8 @@ impl TypeAbi for FungibleTokenMapper where SA: StorageMapperApi + CallTypeApi, { + type Unmanaged = Self; + fn type_name() -> TypeName { TokenIdentifier::::type_name() } diff --git a/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs b/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs index 3f3c466fea..193c73bc68 100644 --- a/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs +++ b/framework/base/src/storage/mappers/token/non_fungible_token_mapper.rs @@ -427,6 +427,8 @@ impl TypeAbi for NonFungibleTokenMapper where SA: StorageMapperApi + CallTypeApi, { + type Unmanaged = Self; + fn type_name() -> TypeName { TokenIdentifier::::type_name() } diff --git a/framework/base/src/storage/mappers/unique_id_mapper.rs b/framework/base/src/storage/mappers/unique_id_mapper.rs index 051bfafd1b..4eb3a7d638 100644 --- a/framework/base/src/storage/mappers/unique_id_mapper.rs +++ b/framework/base/src/storage/mappers/unique_id_mapper.rs @@ -231,6 +231,8 @@ impl TypeAbi for UniqueIdMapper where SA: StorageMapperApi, { + type Unmanaged = Self; + fn type_name() -> TypeName { crate::abi::type_name_variadic::() } diff --git a/framework/base/src/storage/mappers/unordered_set_mapper.rs b/framework/base/src/storage/mappers/unordered_set_mapper.rs index 4817b6776e..2b0cf7cac1 100644 --- a/framework/base/src/storage/mappers/unordered_set_mapper.rs +++ b/framework/base/src/storage/mappers/unordered_set_mapper.rs @@ -252,6 +252,8 @@ where SA: StorageMapperApi, T: TopEncode + TopDecode + NestedEncode + NestedDecode + TypeAbi, { + type Unmanaged = Self; + fn type_name() -> TypeName { crate::abi::type_name_variadic::() } diff --git a/framework/base/src/storage/mappers/user_mapper.rs b/framework/base/src/storage/mappers/user_mapper.rs index a2dad255c3..6d511fe567 100644 --- a/framework/base/src/storage/mappers/user_mapper.rs +++ b/framework/base/src/storage/mappers/user_mapper.rs @@ -239,6 +239,8 @@ impl TypeAbi for UserMapper where SA: StorageMapperApi, { + type Unmanaged = Self; + fn type_name() -> TypeName { crate::abi::type_name_variadic::>() } diff --git a/framework/base/src/storage/mappers/vec_mapper.rs b/framework/base/src/storage/mappers/vec_mapper.rs index f4468d2957..5bde908ee2 100644 --- a/framework/base/src/storage/mappers/vec_mapper.rs +++ b/framework/base/src/storage/mappers/vec_mapper.rs @@ -371,6 +371,8 @@ where SA: StorageMapperApi, T: TopEncode + TopDecode + TypeAbi, { + type Unmanaged = Self; + fn type_name() -> TypeName { crate::abi::type_name_variadic::() } diff --git a/framework/base/src/types/crypto/message_hash_type.rs b/framework/base/src/types/crypto/message_hash_type.rs index c6cd93d181..209887fdfc 100644 --- a/framework/base/src/types/crypto/message_hash_type.rs +++ b/framework/base/src/types/crypto/message_hash_type.rs @@ -43,6 +43,8 @@ impl From for MessageHashType { impl TypeAbiFrom for MessageHashType {} impl TypeAbi for MessageHashType { + type Unmanaged = Self; + fn type_name() -> TypeName { "MessageHashType".into() } diff --git a/framework/base/src/types/flags/code_metadata.rs b/framework/base/src/types/flags/code_metadata.rs index a360909602..9275e976cf 100644 --- a/framework/base/src/types/flags/code_metadata.rs +++ b/framework/base/src/types/flags/code_metadata.rs @@ -106,6 +106,8 @@ impl TopDecode for CodeMetadata { impl TypeAbiFrom for CodeMetadata {} impl TypeAbi for CodeMetadata { + type Unmanaged = Self; + fn type_name() -> TypeName { "CodeMetadata".into() } diff --git a/framework/base/src/types/heap/async_call_result.rs b/framework/base/src/types/heap/async_call_result.rs index e5def9b718..ab738cba71 100644 --- a/framework/base/src/types/heap/async_call_result.rs +++ b/framework/base/src/types/heap/async_call_result.rs @@ -85,6 +85,8 @@ where impl TypeAbiFrom for AsyncCallResult {} impl TypeAbi for AsyncCallResult { + type Unmanaged = Self; + fn type_name() -> TypeName { let mut repr = TypeName::from("AsyncCallResult<"); repr.push_str(T::type_name().as_str()); diff --git a/framework/base/src/types/heap/boxed_bytes.rs b/framework/base/src/types/heap/boxed_bytes.rs index f29b772a36..338af818c2 100644 --- a/framework/base/src/types/heap/boxed_bytes.rs +++ b/framework/base/src/types/heap/boxed_bytes.rs @@ -243,6 +243,8 @@ impl TopDecode for BoxedBytes { impl TypeAbiFrom for BoxedBytes {} impl TypeAbi for BoxedBytes { + type Unmanaged = Self; + fn type_name() -> TypeName { "bytes".into() } diff --git a/framework/base/src/types/heap/h256.rs b/framework/base/src/types/heap/h256.rs index c7c20b26c3..f440765d00 100644 --- a/framework/base/src/types/heap/h256.rs +++ b/framework/base/src/types/heap/h256.rs @@ -227,6 +227,8 @@ impl TopDecode for H256 { impl TypeAbiFrom for H256 {} impl TypeAbi for H256 { + type Unmanaged = Self; + fn type_name() -> TypeName { "H256".into() } diff --git a/framework/base/src/types/heap/h256_address.rs b/framework/base/src/types/heap/h256_address.rs index 0eed2a0ede..a9fa69c2e7 100644 --- a/framework/base/src/types/heap/h256_address.rs +++ b/framework/base/src/types/heap/h256_address.rs @@ -205,6 +205,8 @@ impl TopDecode for Address { impl TypeAbiFrom for Address {} impl TypeAbi for Address { + type Unmanaged = Self; + fn type_name() -> TypeName { "Address".into() } diff --git a/framework/base/src/types/heap/queue.rs b/framework/base/src/types/heap/queue.rs index 8cdb66c8b1..cbb0b03d58 100644 --- a/framework/base/src/types/heap/queue.rs +++ b/framework/base/src/types/heap/queue.rs @@ -139,6 +139,8 @@ impl TopDecode for Queue { impl TypeAbiFrom for Queue {} impl TypeAbi for Queue { + type Unmanaged = Self; + fn type_name() -> TypeName { let mut repr = TypeName::from("Queue<"); repr.push_str(T::type_name().as_str()); diff --git a/framework/base/src/types/interaction/managed_arg_buffer.rs b/framework/base/src/types/interaction/managed_arg_buffer.rs index e3ca9c67e5..342f1c0d3d 100644 --- a/framework/base/src/types/interaction/managed_arg_buffer.rs +++ b/framework/base/src/types/interaction/managed_arg_buffer.rs @@ -299,6 +299,8 @@ where } } +impl TypeAbiFrom> for ArgBuffer where M: ManagedTypeApi {} + impl TypeAbiFrom for ManagedArgBuffer where M: ManagedTypeApi {} impl TypeAbiFrom<&Self> for ManagedArgBuffer where M: ManagedTypeApi {} @@ -306,6 +308,8 @@ impl TypeAbi for ManagedArgBuffer where M: ManagedTypeApi, { + type Unmanaged = ArgBuffer; + /// It is semantically equivalent to any list of `T`. fn type_name() -> TypeName { <&[ManagedBuffer] as TypeAbi>::type_name() diff --git a/framework/base/src/types/interaction/tx_data/function_call.rs b/framework/base/src/types/interaction/tx_data/function_call.rs index 2f110040fd..7ebf20dd1a 100644 --- a/framework/base/src/types/interaction/tx_data/function_call.rs +++ b/framework/base/src/types/interaction/tx_data/function_call.rs @@ -142,6 +142,8 @@ impl TypeAbi for FunctionCall where Api: ManagedTypeApi, { + type Unmanaged = Self; + fn type_name() -> TypeName { crate::abi::type_name_variadic::>() } diff --git a/framework/base/src/types/io/operation_completion_status.rs b/framework/base/src/types/io/operation_completion_status.rs index 125674ec30..b1da830356 100644 --- a/framework/base/src/types/io/operation_completion_status.rs +++ b/framework/base/src/types/io/operation_completion_status.rs @@ -84,6 +84,8 @@ impl TypeAbiFrom for crate::types::heap::Vec {} impl TypeAbiFrom for OperationCompletionStatus {} impl TypeAbi for OperationCompletionStatus { + type Unmanaged = Self; + fn type_name() -> TypeName { TypeName::from("OperationCompletionStatus") } diff --git a/framework/base/src/types/io/sc_result.rs b/framework/base/src/types/io/sc_result.rs index fcad33270a..0557cd9f94 100644 --- a/framework/base/src/types/io/sc_result.rs +++ b/framework/base/src/types/io/sc_result.rs @@ -135,6 +135,8 @@ where impl TypeAbiFrom for SCResult {} impl TypeAbi for SCResult { + type Unmanaged = Self; + fn type_name() -> TypeName { T::type_name() } diff --git a/framework/base/src/types/managed/basic/big_float.rs b/framework/base/src/types/managed/basic/big_float.rs index 0bc2980e35..dd8a04b080 100644 --- a/framework/base/src/types/managed/basic/big_float.rs +++ b/framework/base/src/types/managed/basic/big_float.rs @@ -286,10 +286,14 @@ impl NestedDecode for BigFloat { } } +impl TypeAbiFrom> for f64 where M: ManagedTypeApi {} + impl TypeAbiFrom for BigFloat where M: ManagedTypeApi {} impl TypeAbiFrom<&Self> for BigFloat where M: ManagedTypeApi {} impl TypeAbi for BigFloat { + type Unmanaged = f64; + fn type_name() -> String { String::from("BigFloat") } diff --git a/framework/base/src/types/managed/basic/big_int.rs b/framework/base/src/types/managed/basic/big_int.rs index 6026341975..b73fbab6fa 100644 --- a/framework/base/src/types/managed/basic/big_int.rs +++ b/framework/base/src/types/managed/basic/big_int.rs @@ -302,10 +302,21 @@ impl TopDecode for BigInt { } } +#[cfg(feature = "num-bigint")] +impl TypeAbiFrom for BigInt {} +#[cfg(feature = "num-bigint")] +impl TypeAbiFrom> for crate::codec::num_bigint::BigInt {} + impl TypeAbiFrom for BigInt where M: ManagedTypeApi {} impl TypeAbiFrom<&Self> for BigInt where M: ManagedTypeApi {} impl crate::abi::TypeAbi for BigInt { + #[cfg(feature = "num-bigint")] + type Unmanaged = crate::codec::num_bigint::BigInt; + + #[cfg(not(feature = "num-bigint"))] + type Unmanaged = Self; + fn type_name() -> TypeName { TypeName::from("BigInt") } diff --git a/framework/base/src/types/managed/basic/big_int_sign.rs b/framework/base/src/types/managed/basic/big_int_sign.rs index 0ed8cabbc2..178e55f981 100644 --- a/framework/base/src/types/managed/basic/big_int_sign.rs +++ b/framework/base/src/types/managed/basic/big_int_sign.rs @@ -82,6 +82,8 @@ impl TopDecode for Sign { impl TypeAbiFrom for Sign {} impl TypeAbi for Sign { + type Unmanaged = Self; + fn type_name() -> TypeName { TypeName::from("Sign") } diff --git a/framework/base/src/types/managed/basic/big_uint.rs b/framework/base/src/types/managed/basic/big_uint.rs index 2766a42f1d..34a6c6df23 100644 --- a/framework/base/src/types/managed/basic/big_uint.rs +++ b/framework/base/src/types/managed/basic/big_uint.rs @@ -1,7 +1,7 @@ use core::convert::TryInto; use crate::{ - abi::{TypeAbiFrom, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeName}, api::{ const_handles, use_raw_handle, BigIntApiImpl, HandleConstraints, ManagedBufferApiImpl, ManagedTypeApi, ManagedTypeApiImpl, RawHandle, StaticVarApiImpl, @@ -296,7 +296,13 @@ impl TopDecode for BigUint { impl TypeAbiFrom for BigUint where M: ManagedTypeApi {} impl TypeAbiFrom<&Self> for BigUint where M: ManagedTypeApi {} -impl crate::abi::TypeAbi for BigUint { +impl TypeAbi for BigUint { + #[cfg(feature = "num-bigint")] + type Unmanaged = crate::codec::num_bigint::BigUint; + + #[cfg(not(feature = "num-bigint"))] + type Unmanaged = Self; + fn type_name() -> TypeName { TypeName::from("BigUint") } diff --git a/framework/base/src/types/managed/basic/elliptic_curve.rs b/framework/base/src/types/managed/basic/elliptic_curve.rs index 9359ecfce3..8c6d66990f 100644 --- a/framework/base/src/types/managed/basic/elliptic_curve.rs +++ b/framework/base/src/types/managed/basic/elliptic_curve.rs @@ -421,6 +421,8 @@ impl TopEncode for EllipticCurve { impl TypeAbiFrom for EllipticCurve where M: ManagedTypeApi {} impl TypeAbi for EllipticCurve { + type Unmanaged = Self; + fn type_name() -> TypeName { TypeName::from("EllipticCurve") } diff --git a/framework/base/src/types/managed/basic/managed_buffer.rs b/framework/base/src/types/managed/basic/managed_buffer.rs index 5d2b975b4a..358444c445 100644 --- a/framework/base/src/types/managed/basic/managed_buffer.rs +++ b/framework/base/src/types/managed/basic/managed_buffer.rs @@ -1,5 +1,5 @@ use crate::{ - abi::{TypeAbiFrom, TypeName}, + abi::{TypeAbi, TypeAbiFrom, TypeName}, api::{ use_raw_handle, ErrorApiImpl, HandleConstraints, InvalidSliceError, ManagedBufferApiImpl, ManagedTypeApi, StaticVarApiImpl, @@ -473,7 +473,9 @@ impl TopDecode for ManagedBuffer { impl TypeAbiFrom for ManagedBuffer where M: ManagedTypeApi {} impl TypeAbiFrom<&Self> for ManagedBuffer where M: ManagedTypeApi {} -impl crate::abi::TypeAbi for ManagedBuffer { +impl TypeAbi for ManagedBuffer { + type Unmanaged = multiversx_sc_codec::Vec; + fn type_name() -> TypeName { "bytes".into() } diff --git a/framework/base/src/types/managed/multi_value/async_call_result_managed.rs b/framework/base/src/types/managed/multi_value/async_call_result_managed.rs index b8b37e20da..afa978f429 100644 --- a/framework/base/src/types/managed/multi_value/async_call_result_managed.rs +++ b/framework/base/src/types/managed/multi_value/async_call_result_managed.rs @@ -109,6 +109,8 @@ where M: ManagedTypeApi, T: TypeAbi, { + type Unmanaged = Self; + fn type_name() -> TypeName { let mut repr = TypeName::from("AsyncCallResult<"); repr.push_str(T::type_name().as_str()); diff --git a/framework/base/src/types/managed/multi_value/esdt_token_payment_multi_value.rs b/framework/base/src/types/managed/multi_value/esdt_token_payment_multi_value.rs index 11c81faaaa..d9b312f45b 100644 --- a/framework/base/src/types/managed/multi_value/esdt_token_payment_multi_value.rs +++ b/framework/base/src/types/managed/multi_value/esdt_token_payment_multi_value.rs @@ -107,6 +107,8 @@ impl TypeAbi for EsdtTokenPaymentMultiValue where M: ManagedTypeApi, { + type Unmanaged = Self; + fn type_name() -> TypeName { MultiValue3::, u64, BigUint>::type_name() } diff --git a/framework/base/src/types/managed/multi_value/multi_value_encoded.rs b/framework/base/src/types/managed/multi_value/multi_value_encoded.rs index 1548f8ebd4..42567e7ae3 100644 --- a/framework/base/src/types/managed/multi_value/multi_value_encoded.rs +++ b/framework/base/src/types/managed/multi_value/multi_value_encoded.rs @@ -241,6 +241,8 @@ where M: ManagedTypeApi, T: TypeAbi, { + type Unmanaged = Self; + fn type_name() -> TypeName { crate::abi::type_name_variadic::() } diff --git a/framework/base/src/types/managed/multi_value/multi_value_managed_vec.rs b/framework/base/src/types/managed/multi_value/multi_value_managed_vec.rs index 7bae85617e..a7f1337080 100644 --- a/framework/base/src/types/managed/multi_value/multi_value_managed_vec.rs +++ b/framework/base/src/types/managed/multi_value/multi_value_managed_vec.rs @@ -222,6 +222,8 @@ where M: ManagedTypeApi, T: ManagedVecItem, { + type Unmanaged = Self; + fn type_name() -> TypeName { crate::abi::type_name_variadic::() } diff --git a/framework/base/src/types/managed/multi_value/multi_value_managed_vec_counted.rs b/framework/base/src/types/managed/multi_value/multi_value_managed_vec_counted.rs index 74e71e7960..60ffb780ee 100644 --- a/framework/base/src/types/managed/multi_value/multi_value_managed_vec_counted.rs +++ b/framework/base/src/types/managed/multi_value/multi_value_managed_vec_counted.rs @@ -138,6 +138,8 @@ where M: ManagedTypeApi, T: ManagedVecItem + TypeAbi, { + type Unmanaged = Self; + fn type_name() -> TypeName { let mut repr = TypeName::from("counted-variadic<"); repr.push_str(T::type_name().as_str()); diff --git a/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs b/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs index e8bcf44c05..8fa90f8186 100644 --- a/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs +++ b/framework/base/src/types/managed/wrapped/egld_or_esdt_token_identifier.rs @@ -231,6 +231,8 @@ impl TypeAbiFrom for EgldOrEsdtTokenIdentifier {} impl TypeAbiFrom<&Self> for EgldOrEsdtTokenIdentifier {} impl TypeAbi for EgldOrEsdtTokenIdentifier { + type Unmanaged = Self; + fn type_name() -> TypeName { "EgldOrEsdtTokenIdentifier".into() } diff --git a/framework/base/src/types/managed/wrapped/managed_address.rs b/framework/base/src/types/managed/wrapped/managed_address.rs index cf5341775d..f3136a3bd9 100644 --- a/framework/base/src/types/managed/wrapped/managed_address.rs +++ b/framework/base/src/types/managed/wrapped/managed_address.rs @@ -241,6 +241,8 @@ impl TypeAbi for ManagedAddress where M: ManagedTypeApi, { + type Unmanaged = Address; + /// `"Address"` instead of `"array32"`. fn type_name() -> TypeName { Address::type_name() diff --git a/framework/base/src/types/managed/wrapped/managed_byte_array.rs b/framework/base/src/types/managed/wrapped/managed_byte_array.rs index b63064e7a4..83e95d332c 100644 --- a/framework/base/src/types/managed/wrapped/managed_byte_array.rs +++ b/framework/base/src/types/managed/wrapped/managed_byte_array.rs @@ -205,6 +205,8 @@ where } } +impl TypeAbiFrom> for [u8; N] where M: ManagedTypeApi {} + impl TypeAbiFrom for ManagedByteArray where M: ManagedTypeApi {} impl TypeAbiFrom<&Self> for ManagedByteArray where M: ManagedTypeApi {} @@ -212,6 +214,8 @@ impl TypeAbi for ManagedByteArray where M: ManagedTypeApi, { + type Unmanaged = [u8; N]; + /// It is semantically equivalent to `[u8; N]`. fn type_name() -> TypeName { <[u8; N] as TypeAbi>::type_name() diff --git a/framework/base/src/types/managed/wrapped/managed_option.rs b/framework/base/src/types/managed/wrapped/managed_option.rs index b7bafe4055..a34a4f7ab3 100644 --- a/framework/base/src/types/managed/wrapped/managed_option.rs +++ b/framework/base/src/types/managed/wrapped/managed_option.rs @@ -300,6 +300,8 @@ where M: ManagedTypeApi, T: ManagedType + TypeAbi, { + type Unmanaged = Option; + /// It is semantically equivalent to any list of `T`. fn type_name() -> TypeName { Option::::type_name() diff --git a/framework/base/src/types/managed/wrapped/managed_vec.rs b/framework/base/src/types/managed/wrapped/managed_vec.rs index 3897ff2604..8ba9b1d355 100644 --- a/framework/base/src/types/managed/wrapped/managed_vec.rs +++ b/framework/base/src/types/managed/wrapped/managed_vec.rs @@ -706,6 +706,8 @@ where M: ManagedTypeApi, T: ManagedVecItem + TypeAbi, { + type Unmanaged = Vec; + /// It is semantically equivalent to any list of `T`. fn type_name() -> TypeName { <&[T] as TypeAbi>::type_name() diff --git a/framework/base/src/types/managed/wrapped/token_identifier.rs b/framework/base/src/types/managed/wrapped/token_identifier.rs index 3500fb99eb..f4c978b0d1 100644 --- a/framework/base/src/types/managed/wrapped/token_identifier.rs +++ b/framework/base/src/types/managed/wrapped/token_identifier.rs @@ -174,6 +174,8 @@ impl TypeAbiFrom for TokenIdentifier {} impl TypeAbiFrom<&Self> for TokenIdentifier {} impl TypeAbi for TokenIdentifier { + type Unmanaged = Self; + fn type_name() -> TypeName { "TokenIdentifier".into() } diff --git a/framework/base/src/types/static_buffer/sparse_array.rs b/framework/base/src/types/static_buffer/sparse_array.rs index 2c5a0b6900..bb3a083243 100644 --- a/framework/base/src/types/static_buffer/sparse_array.rs +++ b/framework/base/src/types/static_buffer/sparse_array.rs @@ -311,6 +311,8 @@ impl TypeAbi for SparseArray where E: ErrorApi, { + type Unmanaged = Self; + /// It is semantically equivalent to any list of `usize`. fn type_name() -> TypeName { <&[usize] as TypeAbi>::type_name() diff --git a/framework/derive/src/type_abi_derive.rs b/framework/derive/src/type_abi_derive.rs index e9e9db4008..8c70b56af8 100644 --- a/framework/derive/src/type_abi_derive.rs +++ b/framework/derive/src/type_abi_derive.rs @@ -127,6 +127,8 @@ pub fn type_abi_derive(input: proc_macro::TokenStream) -> proc_macro2::TokenStre impl #impl_generics multiversx_sc::abi::TypeAbiFrom<&Self> for #name #ty_generics #where_clause {} impl #impl_generics multiversx_sc::abi::TypeAbi for #name #ty_generics #where_clause { + type Unmanaged = Self; + fn type_name() -> multiversx_sc::abi::TypeName { #name_str.into() } From fabc1e99ba51cdbf221e010249b0e54a0fff20d8 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sat, 4 May 2024 19:48:56 +0300 Subject: [PATCH 443/461] ReturnsResultUnmanaged result handler --- .../adder/interact/src/basic_interact.rs | 2 +- .../scenario-tester/tests/st_blackbox_test.rs | 5 ++-- .../src/types/interaction/result_handlers.rs | 6 ++-- ...ns_result_conv.rs => returns_result_as.rs} | 0 .../returns_result_unmanaged.rs | 30 +++++++++++++++++++ .../src/facade/world_tx/scenario_rh_impl.rs | 18 +++++++++-- 6 files changed, 53 insertions(+), 8 deletions(-) rename framework/base/src/types/interaction/result_handlers/{returns_result_conv.rs => returns_result_as.rs} (100%) create mode 100644 framework/base/src/types/interaction/result_handlers/returns_result_unmanaged.rs diff --git a/contracts/examples/adder/interact/src/basic_interact.rs b/contracts/examples/adder/interact/src/basic_interact.rs index b0c38bb4bb..363f7efde2 100644 --- a/contracts/examples/adder/interact/src/basic_interact.rs +++ b/contracts/examples/adder/interact/src/basic_interact.rs @@ -152,7 +152,7 @@ impl AdderInteract { .to(self.state.current_adder_address()) .typed(adder_proxy::AdderProxy) .sum() - .returns(ReturnsResultAs::::new()) + .returns(ReturnsResultUnmanaged) .prepare_async() .run() .await; diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs index 75d8448c3b..72e580081f 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_test.rs @@ -1,5 +1,4 @@ use multiversx_sc_scenario::imports::*; -use num_bigint::BigUint; use scenario_tester::*; @@ -66,9 +65,9 @@ fn st_blackbox() { .to(ST_ADDRESS) .typed(scenario_tester_proxy::ScenarioTesterProxy) .sum() - .returns(ReturnsResultAs::::new()) + .returns(ReturnsResultUnmanaged) .run(); - assert_eq!(value, BigUint::from(5u32)); + assert_eq!(value, RustBigUint::from(5u32)); world .tx() diff --git a/framework/base/src/types/interaction/result_handlers.rs b/framework/base/src/types/interaction/result_handlers.rs index ed43a292df..3f0d2b0cee 100644 --- a/framework/base/src/types/interaction/result_handlers.rs +++ b/framework/base/src/types/interaction/result_handlers.rs @@ -3,7 +3,8 @@ mod returns_new_address; mod returns_new_managed_address; mod returns_raw_result; mod returns_result; -mod returns_result_conv; +mod returns_result_as; +mod returns_result_unmanaged; mod with_new_address; mod with_raw_result; mod with_result; @@ -14,7 +15,8 @@ pub use returns_new_address::*; pub use returns_new_managed_address::*; pub use returns_raw_result::*; pub use returns_result::*; -pub use returns_result_conv::*; +pub use returns_result_as::*; +pub use returns_result_unmanaged::ReturnsResultUnmanaged; pub use with_new_address::*; pub use with_raw_result::WithRawResult; pub use with_result::WithResult; diff --git a/framework/base/src/types/interaction/result_handlers/returns_result_conv.rs b/framework/base/src/types/interaction/result_handlers/returns_result_as.rs similarity index 100% rename from framework/base/src/types/interaction/result_handlers/returns_result_conv.rs rename to framework/base/src/types/interaction/result_handlers/returns_result_as.rs diff --git a/framework/base/src/types/interaction/result_handlers/returns_result_unmanaged.rs b/framework/base/src/types/interaction/result_handlers/returns_result_unmanaged.rs new file mode 100644 index 0000000000..4785aef50a --- /dev/null +++ b/framework/base/src/types/interaction/result_handlers/returns_result_unmanaged.rs @@ -0,0 +1,30 @@ +use multiversx_sc_codec::TopDecodeMulti; + +use crate::{ + abi::TypeAbi, + types::{interaction::decode_result, RHListItem, RHListItemExec, SyncCallRawResult, TxEnv}, +}; + +/// Indicates that the unmanaged version of the result will be returned. +pub struct ReturnsResultUnmanaged; + +impl RHListItem for ReturnsResultUnmanaged +where + Env: TxEnv, + Original: TypeAbi, + Original::Unmanaged: TopDecodeMulti, +{ + type Returns = Original::Unmanaged; +} + +impl RHListItemExec, Env, Original> + for ReturnsResultUnmanaged +where + Env: TxEnv, + Original: TypeAbi, + Original::Unmanaged: TopDecodeMulti, +{ + fn item_process_result(self, raw_result: &SyncCallRawResult) -> Self::Returns { + decode_result::(raw_result.0.clone()) + } +} diff --git a/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs b/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs index 3a4e34ec69..46cedf3743 100644 --- a/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs +++ b/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs @@ -1,9 +1,9 @@ use multiversx_sc::{ - abi::TypeAbiFrom, + abi::{TypeAbi, TypeAbiFrom}, codec::TopDecodeMulti, types::{ ManagedAddress, RHListItemExec, ReturnsNewAddress, ReturnsNewManagedAddress, ReturnsResult, - ReturnsResultAs, TxEnv, WithNewAddress, WithResultConv, + ReturnsResultAs, ReturnsResultUnmanaged, TxEnv, WithNewAddress, WithResultConv, }, }; @@ -35,6 +35,20 @@ where } } +impl RHListItemExec for ReturnsResultUnmanaged +where + Env: TxEnv, + Original: TypeAbi, + Original::Unmanaged: TopDecodeMulti, +{ + fn item_process_result(self, tx_response: &TxResponse) -> Self::Returns { + let response = TypedResponse::::from_raw(tx_response); + response + .result + .expect("ReturnsResultUnmanaged expects that transaction is successful") + } +} + impl RHListItemExec for WithResultConv where Env: TxEnv, From e3945e08f27a3be2b72e66ee3ea7eebd956ec4dc Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Sat, 4 May 2024 20:00:11 +0300 Subject: [PATCH 444/461] build fix --- framework/base/src/types/managed/wrapped/managed_address.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/framework/base/src/types/managed/wrapped/managed_address.rs b/framework/base/src/types/managed/wrapped/managed_address.rs index f3136a3bd9..318e5940ce 100644 --- a/framework/base/src/types/managed/wrapped/managed_address.rs +++ b/framework/base/src/types/managed/wrapped/managed_address.rs @@ -241,7 +241,11 @@ impl TypeAbi for ManagedAddress where M: ManagedTypeApi, { - type Unmanaged = Address; + #[cfg(feature = "alloc")] + type Unmanaged = crate::types::heap::Address; + + #[cfg(not(feature = "alloc"))] + type Unmanaged = Self; /// `"Address"` instead of `"array32"`. fn type_name() -> TypeName { From 01c54bcf922fc12f5cab8450d1941bd4506c885f Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 7 May 2024 09:43:42 +0300 Subject: [PATCH 445/461] cleanup --- data/codec/src/equivalent/codec_from.rs | 4 ++-- data/codec/src/equivalent/codec_into.rs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/data/codec/src/equivalent/codec_from.rs b/data/codec/src/equivalent/codec_from.rs index 47fe8b801c..f6fc1ffda2 100644 --- a/data/codec/src/equivalent/codec_from.rs +++ b/data/codec/src/equivalent/codec_from.rs @@ -1,14 +1,14 @@ use crate::{TopDecodeMulti, TopEncodeMulti}; /// Signals that after serializing `T`, we can safely deserialize it as `Self`. -#[deprecated(since = "0.49.0", note = "Please use method `TypeAbiFrom` instead.")] +#[deprecated(since = "0.49.0", note = "Please use trait `TypeAbiFrom` instead.")] pub trait CodecFrom: TopDecodeMulti where T: TopEncodeMulti, { } -#[deprecated(since = "0.49.0", note = "Please use method `TypeAbiFrom` instead.")] +#[deprecated(since = "0.49.0", note = "Please use trait `TypeAbiFrom` instead.")] pub auto trait CodecFromSelf {} impl CodecFrom for T where T: TopEncodeMulti + TopDecodeMulti + CodecFromSelf {} diff --git a/data/codec/src/equivalent/codec_into.rs b/data/codec/src/equivalent/codec_into.rs index 761b9d35f4..06013c41bb 100644 --- a/data/codec/src/equivalent/codec_into.rs +++ b/data/codec/src/equivalent/codec_into.rs @@ -1,7 +1,7 @@ use crate::{CodecFrom, TopDecodeMulti, TopEncodeMulti}; /// Signals that we can safely serialize `Self` in order to obtain a `T` on the other size. -#[deprecated(since = "0.49.0", note = "Please use method `TypeAbiFrom` instead.")] +#[deprecated(since = "0.49.0", note = "Please use trait `TypeAbiFrom` instead.")] pub trait CodecInto: TopEncodeMulti where T: TopDecodeMulti, From 282c021f97316f95bd3f39e1d068673c2fc157c3 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Tue, 7 May 2024 12:05:14 +0300 Subject: [PATCH 446/461] increase code coverage - add rust type for EsdtTokenType --- .../composability/forwarder/sc-config.toml | 3 --- .../base/src/types/flags/esdt_token_type.rs | 19 +++++++++++++++---- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/contracts/feature-tests/composability/forwarder/sc-config.toml b/contracts/feature-tests/composability/forwarder/sc-config.toml index b12e3401e6..b78f0086a5 100644 --- a/contracts/feature-tests/composability/forwarder/sc-config.toml +++ b/contracts/feature-tests/composability/forwarder/sc-config.toml @@ -1,5 +1,2 @@ [[proxy]] path = "src/forwarder_proxy.rs" -[[proxy.path-rename]] -from = "multiversx_sc::types::flags::esdt_token_type::" -to = "" diff --git a/framework/base/src/types/flags/esdt_token_type.rs b/framework/base/src/types/flags/esdt_token_type.rs index 1993fd1cfa..d644f41333 100644 --- a/framework/base/src/types/flags/esdt_token_type.rs +++ b/framework/base/src/types/flags/esdt_token_type.rs @@ -1,8 +1,11 @@ use multiversx_sc_derive::ManagedVecItem; use crate::{ - codec, - codec::derive::{NestedDecode, NestedEncode, TopDecode, TopEncode}, + abi::{TypeAbi, TypeName}, + codec::{ + self, + derive::{NestedDecode, NestedEncode, TopDecode, TopEncode}, + }, }; const ESDT_TYPE_FUNGIBLE: &[u8] = b"FungibleESDT"; @@ -12,11 +15,9 @@ const ESDT_TYPE_META: &[u8] = b"MetaESDT"; const ESDT_TYPE_INVALID: &[u8] = &[]; use crate as multiversx_sc; // needed by the TypeAbi generated code -use crate::derive::type_abi; // Note: In the current implementation, SemiFungible is never returned -#[type_abi] #[derive( TopDecode, TopEncode, NestedDecode, NestedEncode, Clone, PartialEq, Eq, Debug, ManagedVecItem, )] @@ -87,3 +88,13 @@ impl<'a> From<&'a [u8]> for EsdtTokenType { } } } + +impl TypeAbi for EsdtTokenType { + fn type_name() -> TypeName { + "EsdtTokenType".into() + } + + fn type_name_rust() -> TypeName { + "EsdtTokenType".into() + } +} From 1c81db7af7b72d1044502a8f1f42f5ce418bce5b Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Tue, 7 May 2024 12:45:23 +0300 Subject: [PATCH 447/461] increase code coverage - fix test --- .../base/src/types/flags/esdt_token_type.rs | 22 +++++-------------- .../generate_proxy/proxy_generator.rs | 1 + 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/framework/base/src/types/flags/esdt_token_type.rs b/framework/base/src/types/flags/esdt_token_type.rs index d644f41333..e80b91590d 100644 --- a/framework/base/src/types/flags/esdt_token_type.rs +++ b/framework/base/src/types/flags/esdt_token_type.rs @@ -1,11 +1,8 @@ -use multiversx_sc_derive::ManagedVecItem; +use multiversx_sc_derive::{type_abi, ManagedVecItem}; -use crate::{ - abi::{TypeAbi, TypeName}, - codec::{ - self, - derive::{NestedDecode, NestedEncode, TopDecode, TopEncode}, - }, +use crate::codec::{ + self, + derive::{NestedDecode, NestedEncode, TopDecode, TopEncode}, }; const ESDT_TYPE_FUNGIBLE: &[u8] = b"FungibleESDT"; @@ -18,6 +15,7 @@ use crate as multiversx_sc; // needed by the TypeAbi generated code // Note: In the current implementation, SemiFungible is never returned +#[type_abi] #[derive( TopDecode, TopEncode, NestedDecode, NestedEncode, Clone, PartialEq, Eq, Debug, ManagedVecItem, )] @@ -88,13 +86,3 @@ impl<'a> From<&'a [u8]> for EsdtTokenType { } } } - -impl TypeAbi for EsdtTokenType { - fn type_name() -> TypeName { - "EsdtTokenType".into() - } - - fn type_name_rust() -> TypeName { - "EsdtTokenType".into() - } -} diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs index 82f37cdfba..e74035371e 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs @@ -36,6 +36,7 @@ const TYPES_FROM_FRAMEWORK: &[&str] = &[ "EgldOrMultiEsdtPayment", "EsdtTokenData", "EsdtLocalRole", + "EsdtTokenType" ]; pub struct ProxyGenerator<'a> { From d00322615bacb3077a9e7150b5fe38dbd81057a0 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Tue, 7 May 2024 13:00:20 +0300 Subject: [PATCH 448/461] increase code coverage - remove depricated CodecInto from proxy --- .../forwarder/src/forwarder_proxy.rs | 302 +++++++++--------- 1 file changed, 151 insertions(+), 151 deletions(-) diff --git a/contracts/feature-tests/composability/forwarder/src/forwarder_proxy.rs b/contracts/feature-tests/composability/forwarder/src/forwarder_proxy.rs index 4d0f3f7bdd..77b959106e 100644 --- a/contracts/feature-tests/composability/forwarder/src/forwarder_proxy.rs +++ b/contracts/feature-tests/composability/forwarder/src/forwarder_proxy.rs @@ -62,8 +62,8 @@ where Gas: TxGas, { pub fn send_egld< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, to: Arg0, @@ -77,8 +77,8 @@ where } pub fn echo_arguments_sync< - Arg0: CodecInto>, - Arg1: CodecInto>>, + Arg0: ProxyArg>, + Arg1: ProxyArg>>, >( self, to: Arg0, @@ -92,8 +92,8 @@ where } pub fn echo_arguments_sync_twice< - Arg0: CodecInto>, - Arg1: CodecInto>>, + Arg0: ProxyArg>, + Arg1: ProxyArg>>, >( self, to: Arg0, @@ -107,7 +107,7 @@ where } pub fn forward_sync_accept_funds< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, to: Arg0, @@ -119,8 +119,8 @@ where } pub fn forward_sync_accept_funds_with_fees< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, to: Arg0, @@ -134,7 +134,7 @@ where } pub fn forward_sync_accept_funds_then_read< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, to: Arg0, @@ -146,10 +146,10 @@ where } pub fn forward_sync_retrieve_funds< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto, - Arg3: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg, + Arg3: ProxyArg>, >( self, to: Arg0, @@ -167,9 +167,9 @@ where } pub fn forward_sync_retrieve_funds_with_accept_func< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>, >( self, to: Arg0, @@ -193,8 +193,8 @@ where } pub fn forward_sync_accept_funds_multi_transfer< - Arg0: CodecInto>, - Arg1: CodecInto, u64, BigUint>>>, + Arg0: ProxyArg>, + Arg1: ProxyArg, u64, BigUint>>>, >( self, to: Arg0, @@ -208,8 +208,8 @@ where } pub fn echo_args_async< - Arg0: CodecInto>, - Arg1: CodecInto>>, + Arg0: ProxyArg>, + Arg1: ProxyArg>>, >( self, to: Arg0, @@ -223,7 +223,7 @@ where } pub fn forward_async_accept_funds< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, to: Arg0, @@ -235,7 +235,7 @@ where } pub fn forward_async_accept_funds_half_payment< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, to: Arg0, @@ -247,8 +247,8 @@ where } pub fn forward_async_accept_funds_with_fees< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, to: Arg0, @@ -262,10 +262,10 @@ where } pub fn forward_async_retrieve_funds< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto, - Arg3: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg, + Arg3: ProxyArg>, >( self, to: Arg0, @@ -283,9 +283,9 @@ where } pub fn send_funds_twice< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>, >( self, to: Arg0, @@ -301,8 +301,8 @@ where } pub fn send_async_accept_multi_transfer< - Arg0: CodecInto>, - Arg1: CodecInto, u64, BigUint>>>, + Arg0: ProxyArg>, + Arg1: ProxyArg, u64, BigUint>>>, >( self, to: Arg0, @@ -324,7 +324,7 @@ where } pub fn callback_data_at_index< - Arg0: CodecInto, + Arg0: ProxyArg, >( self, index: Arg0, @@ -344,7 +344,7 @@ where } pub fn forward_transf_exec_accept_funds< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, to: Arg0, @@ -356,8 +356,8 @@ where } pub fn forward_transf_execu_accept_funds_with_fees< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, to: Arg0, @@ -371,7 +371,7 @@ where } pub fn forward_transf_exec_accept_funds_twice< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, to: Arg0, @@ -385,7 +385,7 @@ where /// Test that the default gas provided to the transfer_execute call /// leaves enough in the transaction for finish to happen. pub fn forward_transf_exec_accept_funds_return_values< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, to: Arg0, @@ -397,8 +397,8 @@ where } pub fn transf_exec_multi_accept_funds< - Arg0: CodecInto>, - Arg1: CodecInto, u64, BigUint>>>, + Arg0: ProxyArg>, + Arg1: ProxyArg, u64, BigUint>>>, >( self, to: Arg0, @@ -412,8 +412,8 @@ where } pub fn forward_transf_exec_reject_funds_multi_transfer< - Arg0: CodecInto>, - Arg1: CodecInto, u64, BigUint>>>, + Arg0: ProxyArg>, + Arg1: ProxyArg, u64, BigUint>>>, >( self, to: Arg0, @@ -427,8 +427,8 @@ where } pub fn transf_exec_multi_reject_funds< - Arg0: CodecInto>, - Arg1: CodecInto, u64, BigUint>>>, + Arg0: ProxyArg>, + Arg1: ProxyArg, u64, BigUint>>>, >( self, to: Arg0, @@ -442,8 +442,8 @@ where } pub fn change_owner< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, child_sc_address: Arg0, @@ -457,8 +457,8 @@ where } pub fn deploy_contract< - Arg0: CodecInto>, - Arg1: CodecInto>>, + Arg0: ProxyArg>, + Arg1: ProxyArg>>, >( self, code: Arg0, @@ -472,7 +472,7 @@ where } pub fn deploy_two_contracts< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, code: Arg0, @@ -484,8 +484,8 @@ where } pub fn deploy_vault_from_source< - Arg0: CodecInto>, - Arg1: CodecInto>>, + Arg0: ProxyArg>, + Arg1: ProxyArg>>, >( self, source_address: Arg0, @@ -499,9 +499,9 @@ where } pub fn upgrade_vault< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>>, >( self, child_sc_address: Arg0, @@ -517,9 +517,9 @@ where } pub fn upgrade_vault_from_source< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>>, >( self, child_sc_address: Arg0, @@ -535,7 +535,7 @@ where } pub fn get_fungible_esdt_balance< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, token_identifier: Arg0, @@ -547,7 +547,7 @@ where } pub fn get_current_nft_nonce< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, token_identifier: Arg0, @@ -559,9 +559,9 @@ where } pub fn send_esdt< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>, >( self, to: Arg0, @@ -577,8 +577,8 @@ where } pub fn send_esdt_with_fees< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, to: Arg0, @@ -592,10 +592,10 @@ where } pub fn send_esdt_twice< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>, - Arg3: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>, + Arg3: ProxyArg>, >( self, to: Arg0, @@ -613,8 +613,8 @@ where } pub fn send_esdt_direct_multi_transfer< - Arg0: CodecInto>, - Arg1: CodecInto, u64, BigUint>>>, + Arg0: ProxyArg>, + Arg1: ProxyArg, u64, BigUint>>>, >( self, to: Arg0, @@ -628,9 +628,9 @@ where } pub fn issue_fungible_token< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>, >( self, token_display_name: Arg0, @@ -646,8 +646,8 @@ where } pub fn local_mint< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, token_identifier: Arg0, @@ -661,8 +661,8 @@ where } pub fn local_burn< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, token_identifier: Arg0, @@ -676,7 +676,7 @@ where } pub fn get_esdt_local_roles< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, token_id: Arg0, @@ -688,9 +688,9 @@ where } pub fn get_esdt_token_data< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg, >( self, address: Arg0, @@ -706,9 +706,9 @@ where } pub fn is_esdt_frozen< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg, >( self, address: Arg0, @@ -724,7 +724,7 @@ where } pub fn is_esdt_paused< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, token_id: Arg0, @@ -736,7 +736,7 @@ where } pub fn is_esdt_limited_transfer< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, token_id: Arg0, @@ -748,7 +748,7 @@ where } pub fn validate_token_identifier< - Arg0: CodecInto>, + Arg0: ProxyArg>, >( self, token_id: Arg0, @@ -760,8 +760,8 @@ where } pub fn sft_issue< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, token_display_name: Arg0, @@ -775,8 +775,8 @@ where } pub fn get_nft_balance< - Arg0: CodecInto>, - Arg1: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg, >( self, token_identifier: Arg0, @@ -790,9 +790,9 @@ where } pub fn buy_nft< - Arg0: CodecInto>, - Arg1: CodecInto, - Arg2: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg, + Arg2: ProxyArg>, >( self, nft_id: Arg0, @@ -808,8 +808,8 @@ where } pub fn nft_issue< - Arg0: CodecInto>, - Arg1: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, >( self, token_display_name: Arg0, @@ -823,13 +823,13 @@ where } pub fn nft_create< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>, - Arg3: CodecInto>, - Arg4: CodecInto>, - Arg5: CodecInto, - Arg6: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>, + Arg3: ProxyArg>, + Arg4: ProxyArg>, + Arg5: ProxyArg, + Arg6: ProxyArg>, >( self, token_identifier: Arg0, @@ -853,9 +853,9 @@ where } pub fn nft_create_compact< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg, >( self, token_identifier: Arg0, @@ -871,9 +871,9 @@ where } pub fn nft_add_uris< - Arg0: CodecInto>, - Arg1: CodecInto, - Arg2: CodecInto>>, + Arg0: ProxyArg>, + Arg1: ProxyArg, + Arg2: ProxyArg>>, >( self, token_identifier: Arg0, @@ -889,9 +889,9 @@ where } pub fn nft_update_attributes< - Arg0: CodecInto>, - Arg1: CodecInto, - Arg2: CodecInto, + Arg0: ProxyArg>, + Arg1: ProxyArg, + Arg2: ProxyArg, >( self, token_identifier: Arg0, @@ -907,13 +907,13 @@ where } pub fn nft_decode_complex_attributes< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>, - Arg3: CodecInto>, - Arg4: CodecInto>, - Arg5: CodecInto>, - Arg6: CodecInto, ManagedBuffer, TokenIdentifier, bool, ManagedBuffer>>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>, + Arg3: ProxyArg>, + Arg4: ProxyArg>, + Arg5: ProxyArg>, + Arg6: ProxyArg, ManagedBuffer, TokenIdentifier, bool, ManagedBuffer>>, >( self, token_identifier: Arg0, @@ -937,9 +937,9 @@ where } pub fn nft_add_quantity< - Arg0: CodecInto>, - Arg1: CodecInto, - Arg2: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg, + Arg2: ProxyArg>, >( self, token_identifier: Arg0, @@ -955,9 +955,9 @@ where } pub fn nft_burn< - Arg0: CodecInto>, - Arg1: CodecInto, - Arg2: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg, + Arg2: ProxyArg>, >( self, token_identifier: Arg0, @@ -973,10 +973,10 @@ where } pub fn transfer_nft_via_async_call< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto, - Arg3: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg, + Arg3: ProxyArg>, >( self, to: Arg0, @@ -994,12 +994,12 @@ where } pub fn transfer_nft_and_execute< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto, - Arg3: CodecInto>, - Arg4: CodecInto>, - Arg5: CodecInto>>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg, + Arg3: ProxyArg>, + Arg4: ProxyArg>, + Arg5: ProxyArg>>, >( self, to: Arg0, @@ -1021,14 +1021,14 @@ where } pub fn create_and_send< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>, - Arg3: CodecInto>, - Arg4: CodecInto>, - Arg5: CodecInto>, - Arg6: CodecInto, - Arg7: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>, + Arg3: ProxyArg>, + Arg4: ProxyArg>, + Arg5: ProxyArg>, + Arg6: ProxyArg, + Arg7: ProxyArg>, >( self, to: Arg0, @@ -1054,9 +1054,9 @@ where } pub fn set_local_roles< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>, >( self, address: Arg0, @@ -1072,9 +1072,9 @@ where } pub fn unset_local_roles< - Arg0: CodecInto>, - Arg1: CodecInto>, - Arg2: CodecInto>, + Arg0: ProxyArg>, + Arg1: ProxyArg>, + Arg2: ProxyArg>, >( self, address: Arg0, From 58f37e3e9a64e9351ada3e918077676033a93128 Mon Sep 17 00:00:00 2001 From: BiancaIalangi Date: Tue, 7 May 2024 13:16:25 +0300 Subject: [PATCH 449/461] increase code coverage - add type abi in forwarder proxy --- .../composability/forwarder/src/forwarder_proxy.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/contracts/feature-tests/composability/forwarder/src/forwarder_proxy.rs b/contracts/feature-tests/composability/forwarder/src/forwarder_proxy.rs index 77b959106e..c5e53db05d 100644 --- a/contracts/feature-tests/composability/forwarder/src/forwarder_proxy.rs +++ b/contracts/feature-tests/composability/forwarder/src/forwarder_proxy.rs @@ -1106,6 +1106,7 @@ where } } +#[type_abi] #[derive(TopEncode, TopDecode)] pub struct CallbackData where @@ -1118,6 +1119,7 @@ where pub args: ManagedVec>, } +#[type_abi] #[derive(TopEncode, TopDecode, Clone, Copy, PartialEq, Debug)] pub struct Color { pub r: u8, From 13823a9f3c8b0ee8a5a83b635e916a618118de50 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 7 May 2024 13:39:16 +0300 Subject: [PATCH 450/461] deprecated older non-unified syntax --- .../tests/linked_list_repeat_blackbox_test.rs | 2 + .../interact/src/bf_interact.rs | 2 + .../interact/src/comp_interact_main.rs | 1 + .../tests/forwarder_blackbox_legacy_test.rs | 2 + .../tests/promises_feature_blackbox_test.rs | 2 + .../tests/transfer_role_blackbox_test.rs | 2 + .../tests/tester_blackbox_test.rs | 2 + .../src/facade/scenario_world_steps.rs | 38 +++++++++++++++++ framework/scenario/src/imports.rs | 2 +- .../src/scenario/model/step/sc_call_step.rs | 12 ++++-- .../src/scenario/model/step/typed_sc_call.rs | 14 +++++++ .../scenario/src/scenario/run_vm/sc_call.rs | 9 +++- .../interactor_sc_extra.rs | 42 +++++++++++++++++++ .../interactor_vm_query.rs | 2 + 14 files changed, 125 insertions(+), 7 deletions(-) diff --git a/contracts/benchmarks/mappers/linked-list-repeat/tests/linked_list_repeat_blackbox_test.rs b/contracts/benchmarks/mappers/linked-list-repeat/tests/linked_list_repeat_blackbox_test.rs index 12fde7ba31..bd5a4198e3 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/tests/linked_list_repeat_blackbox_test.rs +++ b/contracts/benchmarks/mappers/linked-list-repeat/tests/linked_list_repeat_blackbox_test.rs @@ -1,3 +1,5 @@ +#![allow(deprecated)] // TODO: unified syntax + use benchmark_common::ExampleStruct; use linked_list_repeat::ProxyTrait; use multiversx_sc_scenario::imports::*; diff --git a/contracts/feature-tests/basic-features/interact/src/bf_interact.rs b/contracts/feature-tests/basic-features/interact/src/bf_interact.rs index acc8b90715..e02d281120 100644 --- a/contracts/feature-tests/basic-features/interact/src/bf_interact.rs +++ b/contracts/feature-tests/basic-features/interact/src/bf_interact.rs @@ -1,3 +1,5 @@ +#![allow(deprecated)] // TODO: unified syntax + mod bf_interact_cli; mod bf_interact_config; mod bf_interact_state; diff --git a/contracts/feature-tests/composability/interact/src/comp_interact_main.rs b/contracts/feature-tests/composability/interact/src/comp_interact_main.rs index cefa9272f2..9f4a6d6872 100644 --- a/contracts/feature-tests/composability/interact/src/comp_interact_main.rs +++ b/contracts/feature-tests/composability/interact/src/comp_interact_main.rs @@ -1,4 +1,5 @@ #![allow(clippy::too_many_arguments)] +#![allow(deprecated)] // TODO: switch to unified syntax mod call_tree; mod call_tree_calling_functions; diff --git a/contracts/feature-tests/composability/tests/forwarder_blackbox_legacy_test.rs b/contracts/feature-tests/composability/tests/forwarder_blackbox_legacy_test.rs index 9620e12277..cc13982a2d 100644 --- a/contracts/feature-tests/composability/tests/forwarder_blackbox_legacy_test.rs +++ b/contracts/feature-tests/composability/tests/forwarder_blackbox_legacy_test.rs @@ -1,3 +1,5 @@ +#![allow(deprecated)] + use forwarder_legacy::nft_legacy::{Color, ProxyTrait as _}; use multiversx_sc_scenario::{ diff --git a/contracts/feature-tests/composability/tests/promises_feature_blackbox_test.rs b/contracts/feature-tests/composability/tests/promises_feature_blackbox_test.rs index e29ff1c7ca..180cb1c508 100644 --- a/contracts/feature-tests/composability/tests/promises_feature_blackbox_test.rs +++ b/contracts/feature-tests/composability/tests/promises_feature_blackbox_test.rs @@ -1,3 +1,5 @@ +#![allow(deprecated)] // TODO: unified syntax + use multiversx_sc::types::BigUint; use multiversx_sc_scenario::imports::*; 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 2428a9a6bc..a1588759d6 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,3 +1,5 @@ +#![allow(deprecated)] // TODO: unified syntax + use multiversx_sc_scenario::imports::*; use transfer_role_features::ProxyTrait as _; diff --git a/contracts/feature-tests/rust-testing-framework-tester/tests/tester_blackbox_test.rs b/contracts/feature-tests/rust-testing-framework-tester/tests/tester_blackbox_test.rs index d927b1ba4a..b47c83fcef 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/tests/tester_blackbox_test.rs +++ b/contracts/feature-tests/rust-testing-framework-tester/tests/tester_blackbox_test.rs @@ -16,6 +16,7 @@ fn world() -> ScenarioWorld { } #[test] +#[allow(deprecated)] fn tester_deploy_test() { let mut world = world(); let code = world.code_expression(WASM_PATH_EXPR); @@ -45,6 +46,7 @@ fn tester_deploy_test() { } #[test] +#[allow(deprecated)] fn tester_deploy_test_spawned_thread() { let handler = std::thread::spawn(|| { let mut world = world(); diff --git a/framework/scenario/src/facade/scenario_world_steps.rs b/framework/scenario/src/facade/scenario_world_steps.rs index 389b58ecf6..7f786d9e65 100644 --- a/framework/scenario/src/facade/scenario_world_steps.rs +++ b/framework/scenario/src/facade/scenario_world_steps.rs @@ -1,3 +1,5 @@ +#![allow(deprecated)] + use multiversx_sc::{ abi::TypeAbiFrom, codec::TopDecodeMulti, @@ -33,6 +35,10 @@ impl ScenarioWorld { self } + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] pub fn sc_call_use_raw_response(&mut self, mut step: S, use_raw_response: F) -> &mut Self where S: AsMut, @@ -44,6 +50,10 @@ impl ScenarioWorld { self } + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] pub fn sc_call_use_result( &mut self, step: TypedScCall, @@ -60,6 +70,10 @@ impl ScenarioWorld { }) } + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] pub fn sc_call_get_result( &mut self, mut step: TypedScCall, @@ -83,6 +97,10 @@ impl ScenarioWorld { self } + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] pub fn sc_query_use_raw_response(&mut self, mut step: S, use_raw_response: F) -> &mut Self where S: AsMut, @@ -95,6 +113,10 @@ impl ScenarioWorld { self } + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] pub fn sc_query_use_result( &mut self, step: TypedScQuery, @@ -111,6 +133,10 @@ impl ScenarioWorld { }) } + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] pub fn sc_query_get_result( &mut self, mut step: TypedScQuery, @@ -147,6 +173,10 @@ impl ScenarioWorld { self } + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] pub fn sc_deploy_use_raw_response( &mut self, mut step: S, @@ -163,6 +193,10 @@ impl ScenarioWorld { self } + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] pub fn sc_deploy_use_result( &mut self, step: TypedScDeploy, @@ -180,6 +214,10 @@ impl ScenarioWorld { }) } + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] pub fn sc_deploy_get_result( &mut self, mut step: TypedScDeploy, diff --git a/framework/scenario/src/imports.rs b/framework/scenario/src/imports.rs index aa30283dc3..9eac89fc70 100644 --- a/framework/scenario/src/imports.rs +++ b/framework/scenario/src/imports.rs @@ -15,7 +15,7 @@ pub use crate::{ model::{ Account, AddressValue, BytesValue, CheckAccount, CheckStateStep, ScCallStep, ScDeployStep, ScQueryStep, Scenario, SetStateStep, TransferStep, TxESDT, TxExpect, - TypedResponse, TypedScCall, TypedScDeploy, + TypedResponse, TypedScDeploy, }, ScenarioRunner, }, 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 3bcd3d861e..55de65f4a4 100644 --- a/framework/scenario/src/scenario/model/step/sc_call_step.rs +++ b/framework/scenario/src/scenario/model/step/sc_call_step.rs @@ -14,8 +14,6 @@ use crate::multiversx_sc::{ types::{ContractCall, ManagedArgBuffer}, }; -use super::TypedScCall; - #[derive(Debug, Clone)] pub struct ScCallStep { pub id: String, @@ -139,7 +137,12 @@ impl ScCallStep { /// - "to" /// - "function" /// - "arguments" - pub fn call(mut self, contract_call: CC) -> TypedScCall + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] + #[allow(deprecated)] + pub fn call(mut self, contract_call: CC) -> super::TypedScCall where CC: ContractCallBase, { @@ -170,11 +173,12 @@ impl ScCallStep { since = "0.42.0", note = "Please use `call` followed by `expect`, there is no point in having a method that does both." )] + #[allow(deprecated)] pub fn call_expect( self, contract_call: CC, expected_value: ExpectedResult, - ) -> TypedScCall + ) -> super::TypedScCall where CC: ContractCall, ExpectedResult: TypeAbiFrom + TopEncodeMulti, diff --git a/framework/scenario/src/scenario/model/step/typed_sc_call.rs b/framework/scenario/src/scenario/model/step/typed_sc_call.rs index 084cd3e71f..e70e00aa64 100644 --- a/framework/scenario/src/scenario/model/step/typed_sc_call.rs +++ b/framework/scenario/src/scenario/model/step/typed_sc_call.rs @@ -1,3 +1,5 @@ +#![allow(deprecated)] + use std::marker::PhantomData; use multiversx_sc::{ @@ -15,6 +17,10 @@ use crate::{ use super::{format_expect, ScCallStep}; /// `SCCallStep` with explicit return type. +#[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." +)] #[derive(Default, Debug)] pub struct TypedScCall { pub sc_call_step: ScCallStep, @@ -147,7 +153,15 @@ impl From for TypedScCall { /// Helps with syntax. Allows the `TypedScCall` to call the `execute` operation directly. /// /// The trait defines the connection to the executor. +#[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." +)] pub trait TypedScCallExecutor { + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] fn execute_typed_sc_call( &mut self, typed_sc_call: TypedScCall, diff --git a/framework/scenario/src/scenario/run_vm/sc_call.rs b/framework/scenario/src/scenario/run_vm/sc_call.rs index ceb9863478..0a66578eaf 100644 --- a/framework/scenario/src/scenario/run_vm/sc_call.rs +++ b/framework/scenario/src/scenario/run_vm/sc_call.rs @@ -1,6 +1,6 @@ use crate::{ multiversx_sc::codec::{PanicErrorHandler, TopEncodeMulti}, - scenario::model::{ScCallStep, TxESDT, TypedScCall}, + scenario::model::{ScCallStep, TxESDT}, scenario_model::TxResponse, }; @@ -29,9 +29,14 @@ impl ScenarioVMRunner { /// /// It takes the `contract_call` argument separately from the SC call step, /// so we can benefit from type inference in the result. + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] + #[allow(deprecated)] pub fn perform_sc_call_get_result( &mut self, - typed_sc_call: TypedScCall, + typed_sc_call: crate::scenario_model::TypedScCall, ) -> RequestedResult where OriginalResult: TopEncodeMulti, diff --git a/framework/snippets/src/interactor_scenario/interactor_sc_extra.rs b/framework/snippets/src/interactor_scenario/interactor_sc_extra.rs index 8d25f32e9d..44e5efa744 100644 --- a/framework/snippets/src/interactor_scenario/interactor_sc_extra.rs +++ b/framework/snippets/src/interactor_scenario/interactor_sc_extra.rs @@ -1,3 +1,5 @@ +#![allow(deprecated)] + use crate::Interactor; use multiversx_sc_scenario::{ api::StaticApi, @@ -13,6 +15,10 @@ use multiversx_sc_scenario::{ }; impl Interactor { + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] pub async fn sc_call_use_raw_response( &mut self, mut step: S, @@ -28,6 +34,10 @@ impl Interactor { self } + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] pub async fn sc_call_use_result( &mut self, step: TypedScCall, @@ -42,6 +52,10 @@ impl Interactor { self } + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] pub async fn sc_call_get_result( &mut self, mut step: TypedScCall, @@ -55,6 +69,10 @@ impl Interactor { TypedResponse::from_raw(response) } + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] pub async fn sc_query_use_raw_response( &mut self, mut step: S, @@ -70,6 +88,10 @@ impl Interactor { self } + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] pub async fn sc_query_use_result( &mut self, step: TypedScQuery, @@ -84,6 +106,10 @@ impl Interactor { self } + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] pub async fn sc_query_get_result( &mut self, mut step: TypedScQuery, @@ -97,6 +123,10 @@ impl Interactor { TypedResponse::from_raw(response) } + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] pub async fn quick_query(&mut self, contract_call: CC) -> RequestedResult where CC: ContractCallBase, @@ -109,6 +139,10 @@ impl Interactor { typed_response.result.unwrap() } + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] pub async fn sc_deploy_use_raw_response( &mut self, mut step: S, @@ -124,6 +158,10 @@ impl Interactor { self } + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] pub async fn sc_deploy_use_result( &mut self, step: TypedScDeploy, @@ -139,6 +177,10 @@ impl Interactor { self } + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] pub async fn sc_deploy_get_result( &mut self, mut step: TypedScDeploy, diff --git a/framework/snippets/src/interactor_scenario/interactor_vm_query.rs b/framework/snippets/src/interactor_scenario/interactor_vm_query.rs index d08c114623..15de064d95 100644 --- a/framework/snippets/src/interactor_scenario/interactor_vm_query.rs +++ b/framework/snippets/src/interactor_scenario/interactor_vm_query.rs @@ -1,3 +1,5 @@ +#![allow(deprecated)] + use crate::{address_h256_to_erdrs, Interactor}; use log::info; use multiversx_sc_scenario::{ From 933f88d10e7651fb87c45dfd8c105147f853127d Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 7 May 2024 13:50:47 +0300 Subject: [PATCH 451/461] renamed WithResultConv -> WithResultAs --- .../scenario-tester/tests/st_blackbox_chained_test.rs | 2 +- .../base/src/types/interaction/result_handlers.rs | 4 ++-- .../{with_result_conv.rs => with_result_as.rs} | 10 +++++----- .../scenario/src/facade/world_tx/scenario_rh_impl.rs | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) rename framework/base/src/types/interaction/result_handlers/{with_result_conv.rs => with_result_as.rs} (89%) diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs index 439dc586de..71b8a982c5 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_chained_test.rs @@ -39,7 +39,7 @@ fn st_blackbox_chained() { tx.to(TestSCAddress::new("adder")) .typed(scenario_tester_proxy::ScenarioTesterProxy) .sum() - .with_result(WithResultConv::new(|value: BigUint| { + .with_result(WithResultAs::new(|value: BigUint| { assert_eq!(value, BigUint::from(5u32)); })) }) diff --git a/framework/base/src/types/interaction/result_handlers.rs b/framework/base/src/types/interaction/result_handlers.rs index 3f0d2b0cee..f8faf2fe95 100644 --- a/framework/base/src/types/interaction/result_handlers.rs +++ b/framework/base/src/types/interaction/result_handlers.rs @@ -8,7 +8,7 @@ mod returns_result_unmanaged; mod with_new_address; mod with_raw_result; mod with_result; -mod with_result_conv; +mod with_result_as; pub use returns_bt::*; pub use returns_new_address::*; @@ -20,7 +20,7 @@ pub use returns_result_unmanaged::ReturnsResultUnmanaged; pub use with_new_address::*; pub use with_raw_result::WithRawResult; pub use with_result::WithResult; -pub use with_result_conv::*; +pub use with_result_as::*; use super::TxEnv; diff --git a/framework/base/src/types/interaction/result_handlers/with_result_conv.rs b/framework/base/src/types/interaction/result_handlers/with_result_as.rs similarity index 89% rename from framework/base/src/types/interaction/result_handlers/with_result_conv.rs rename to framework/base/src/types/interaction/result_handlers/with_result_as.rs index c87bd9f36e..4a2aed8f35 100644 --- a/framework/base/src/types/interaction/result_handlers/with_result_conv.rs +++ b/framework/base/src/types/interaction/result_handlers/with_result_as.rs @@ -10,7 +10,7 @@ use crate::{ /// Defines a lambda function to be called on the decoded result. /// /// Value will be converted to type `T`, which should be compatible with the original type. -pub struct WithResultConv +pub struct WithResultAs where F: FnOnce(T), { @@ -18,19 +18,19 @@ where pub f: F, } -impl WithResultConv +impl WithResultAs where F: FnOnce(T), { pub fn new(f: F) -> Self { - WithResultConv { + WithResultAs { _phantom: PhantomData, f, } } } -impl RHListItem for WithResultConv +impl RHListItem for WithResultAs where Env: TxEnv, T: TopDecodeMulti + TypeAbiFrom, @@ -40,7 +40,7 @@ where } impl RHListItemExec, Env, Original> - for WithResultConv + for WithResultAs where Env: TxEnv, T: TopDecodeMulti + TypeAbiFrom, diff --git a/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs b/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs index 46cedf3743..1aaaedae9f 100644 --- a/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs +++ b/framework/scenario/src/facade/world_tx/scenario_rh_impl.rs @@ -3,7 +3,7 @@ use multiversx_sc::{ codec::TopDecodeMulti, types::{ ManagedAddress, RHListItemExec, ReturnsNewAddress, ReturnsNewManagedAddress, ReturnsResult, - ReturnsResultAs, ReturnsResultUnmanaged, TxEnv, WithNewAddress, WithResultConv, + ReturnsResultAs, ReturnsResultUnmanaged, TxEnv, WithNewAddress, WithResultAs, }, }; @@ -49,7 +49,7 @@ where } } -impl RHListItemExec for WithResultConv +impl RHListItemExec for WithResultAs where Env: TxEnv, T: TopDecodeMulti + TypeAbiFrom, From b98ee2c3390b6b59b4d8592163ffd50c187de3e9 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 7 May 2024 14:03:05 +0300 Subject: [PATCH 452/461] deprecated legacy ContractCall --- .../forwarder/src/forwarder_main.rs | 2 +- .../contract_call_legacy/async_call.rs | 5 +++++ .../contract_call_legacy/async_call_promises.rs | 4 ++++ .../contract_call_no_payment.rs | 4 ++++ .../contract_call_with_any_payment.rs | 4 ++++ .../contract_call_with_egld.rs | 4 ++++ .../contract_call_with_egld_or_single_esdt.rs | 4 ++++ .../contract_call_with_multi_esdt.rs | 4 ++++ .../contract_call_legacy/contract_deploy.rs | 4 ++++ .../contract/generate_proxy/proxy_generator.rs | 2 +- .../src/scenario/model/step/sc_call_step.rs | 1 + .../src/scenario/model/step/sc_deploy_step.rs | 16 +++++++++++++--- .../src/scenario/model/step/typed_sc_deploy.rs | 15 +++++++++++---- .../src/scenario/model/transaction/tx_call.rs | 11 ++++++++--- framework/scenario/tests/contract_call_test.rs | 1 + .../scenario/tests/contract_without_macros.rs | 1 + .../interactor_scenario/interactor_sc_call.rs | 7 +++++-- 17 files changed, 75 insertions(+), 14 deletions(-) diff --git a/contracts/feature-tests/composability/forwarder/src/forwarder_main.rs b/contracts/feature-tests/composability/forwarder/src/forwarder_main.rs index 7ded2d1957..1344c66be5 100644 --- a/contracts/feature-tests/composability/forwarder/src/forwarder_main.rs +++ b/contracts/feature-tests/composability/forwarder/src/forwarder_main.rs @@ -8,12 +8,12 @@ pub mod contract_change_owner; pub mod contract_deploy; pub mod contract_upgrade; pub mod esdt; +pub mod forwarder_proxy; pub mod nft; pub mod roles; pub mod sft; pub mod storage; pub mod vault_proxy; -pub mod forwarder_proxy; multiversx_sc::imports!(); diff --git a/framework/base/src/types/interaction/contract_call_legacy/async_call.rs b/framework/base/src/types/interaction/contract_call_legacy/async_call.rs index 62396de515..05faf11c2d 100644 --- a/framework/base/src/types/interaction/contract_call_legacy/async_call.rs +++ b/framework/base/src/types/interaction/contract_call_legacy/async_call.rs @@ -3,6 +3,11 @@ use crate::{ types::{CallbackClosure, EgldPayment, FunctionCall, ManagedAddress, Tx, TxScEnv}, }; +/// Kept as alias for backwards compatibility. +#[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." +)] pub type AsyncCall = Tx< TxScEnv, (), diff --git a/framework/base/src/types/interaction/contract_call_legacy/async_call_promises.rs b/framework/base/src/types/interaction/contract_call_legacy/async_call_promises.rs index be22afd129..ee3726c0eb 100644 --- a/framework/base/src/types/interaction/contract_call_legacy/async_call_promises.rs +++ b/framework/base/src/types/interaction/contract_call_legacy/async_call_promises.rs @@ -5,6 +5,10 @@ use crate::{ }; /// Will be renamed to `AsyncCall` and `AsyncCall` to `AsyncCallLegacy` when the promises end up on the mainnet. +#[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." +)] #[must_use] pub struct AsyncCallPromises where diff --git a/framework/base/src/types/interaction/contract_call_legacy/contract_call_no_payment.rs b/framework/base/src/types/interaction/contract_call_legacy/contract_call_no_payment.rs index db5d0c8561..0f870d775e 100644 --- a/framework/base/src/types/interaction/contract_call_legacy/contract_call_no_payment.rs +++ b/framework/base/src/types/interaction/contract_call_legacy/contract_call_no_payment.rs @@ -23,6 +23,10 @@ use super::{ /// (unless there are payment arguments in the endpoint - but these are mostly obsolete now). /// /// It is also the basis for all other contract call types, all of them contain this one. +#[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." +)] #[must_use] pub struct ContractCallNoPayment where diff --git a/framework/base/src/types/interaction/contract_call_legacy/contract_call_with_any_payment.rs b/framework/base/src/types/interaction/contract_call_legacy/contract_call_with_any_payment.rs index d195cb3889..2a8a4262f0 100644 --- a/framework/base/src/types/interaction/contract_call_legacy/contract_call_with_any_payment.rs +++ b/framework/base/src/types/interaction/contract_call_legacy/contract_call_with_any_payment.rs @@ -13,6 +13,10 @@ use super::{ /// Holds data for calling another contract, with any type of payment: none, EGLD, Multi-ESDT. /// /// Gets created when chaining method `with_any_payment`. +#[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." +)] #[must_use] pub struct ContractCallWithAnyPayment where diff --git a/framework/base/src/types/interaction/contract_call_legacy/contract_call_with_egld.rs b/framework/base/src/types/interaction/contract_call_legacy/contract_call_with_egld.rs index 9d6d749b08..47d1fa0c11 100644 --- a/framework/base/src/types/interaction/contract_call_legacy/contract_call_with_egld.rs +++ b/framework/base/src/types/interaction/contract_call_legacy/contract_call_with_egld.rs @@ -18,6 +18,10 @@ use super::{ /// /// It also represents the normalized form of any contract call, since ESDT transfers /// (the only payment not available here) get converted to builtin function calls in normalized form. +#[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." +)] #[must_use] pub struct ContractCallWithEgld where diff --git a/framework/base/src/types/interaction/contract_call_legacy/contract_call_with_egld_or_single_esdt.rs b/framework/base/src/types/interaction/contract_call_legacy/contract_call_with_egld_or_single_esdt.rs index 843653a532..a6d9a76845 100644 --- a/framework/base/src/types/interaction/contract_call_legacy/contract_call_with_egld_or_single_esdt.rs +++ b/framework/base/src/types/interaction/contract_call_legacy/contract_call_with_egld_or_single_esdt.rs @@ -15,6 +15,10 @@ use super::{ /// Holds data for calling another contract, with a single payment, either EGLD or a single ESDT token. /// /// Gets created when chaining method `with_egld_or_single_esdt_transfer`. +#[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." +)] #[must_use] pub struct ContractCallWithEgldOrSingleEsdt where diff --git a/framework/base/src/types/interaction/contract_call_legacy/contract_call_with_multi_esdt.rs b/framework/base/src/types/interaction/contract_call_legacy/contract_call_with_multi_esdt.rs index d93f023db9..9064507dbf 100644 --- a/framework/base/src/types/interaction/contract_call_legacy/contract_call_with_multi_esdt.rs +++ b/framework/base/src/types/interaction/contract_call_legacy/contract_call_with_multi_esdt.rs @@ -12,6 +12,10 @@ use super::{ ContractCall, ContractCallWithEgld, }; +#[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." +)] #[must_use] pub struct ContractCallWithMultiEsdt where diff --git a/framework/base/src/types/interaction/contract_call_legacy/contract_deploy.rs b/framework/base/src/types/interaction/contract_call_legacy/contract_deploy.rs index 0cb83f408b..c04ec0ab4b 100644 --- a/framework/base/src/types/interaction/contract_call_legacy/contract_deploy.rs +++ b/framework/base/src/types/interaction/contract_call_legacy/contract_deploy.rs @@ -17,6 +17,10 @@ use crate::{ use super::UNSPECIFIED_GAS_LIMIT; +#[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." +)] #[must_use] pub struct ContractDeploy where diff --git a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs index d39222ec07..9c0e2a2479 100644 --- a/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs +++ b/framework/meta/src/cmd/contract/generate_proxy/proxy_generator.rs @@ -36,7 +36,7 @@ const TYPES_FROM_FRAMEWORK: &[&str] = &[ "EgldOrMultiEsdtPayment", "EsdtTokenData", "EsdtLocalRole", - "EsdtTokenType" + "EsdtTokenType", ]; pub struct ProxyGenerator<'a> { 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 55de65f4a4..475ef6ae9b 100644 --- a/framework/scenario/src/scenario/model/step/sc_call_step.rs +++ b/framework/scenario/src/scenario/model/step/sc_call_step.rs @@ -227,6 +227,7 @@ impl AsMut for ScCallStep { /// - recipient, /// - endpoint name, /// - the arguments. +#[allow(deprecated)] pub(super) fn process_contract_call( contract_call: CC, ) -> (String, String, BigUintValue, Vec) diff --git a/framework/scenario/src/scenario/model/step/sc_deploy_step.rs b/framework/scenario/src/scenario/model/step/sc_deploy_step.rs index d062baa15a..7e520e1a17 100644 --- a/framework/scenario/src/scenario/model/step/sc_deploy_step.rs +++ b/framework/scenario/src/scenario/model/step/sc_deploy_step.rs @@ -10,7 +10,7 @@ use crate::{ scenario_model::TxResponse, }; -use crate::multiversx_sc::types::{CodeMetadata, ContractDeploy}; +use crate::multiversx_sc::types::CodeMetadata; use super::{convert_call_args, TypedScDeploy}; @@ -98,9 +98,14 @@ impl ScDeployStep { /// Sets following fields based on the smart contract proxy: /// - "function" /// - "arguments" + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] + #[allow(deprecated)] pub fn call(mut self, contract_deploy: CD) -> TypedScDeploy where - CD: Into>, + CD: Into>, { let (_, mandos_args) = process_contract_deploy(contract_deploy.into()); for arg in mandos_args { @@ -149,8 +154,13 @@ impl AsMut for ScDeployStep { /// Extracts /// - (optional) recipient (needed for contract upgrade, not yet used); /// - the arguments. +#[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." +)] +#[allow(deprecated)] pub(crate) fn process_contract_deploy( - contract_deploy: ContractDeploy, + contract_deploy: multiversx_sc::types::ContractDeploy, ) -> (Option, Vec) { let to_str = contract_deploy .to diff --git a/framework/scenario/src/scenario/model/step/typed_sc_deploy.rs b/framework/scenario/src/scenario/model/step/typed_sc_deploy.rs index 74249e8f97..2fa49c188f 100644 --- a/framework/scenario/src/scenario/model/step/typed_sc_deploy.rs +++ b/framework/scenario/src/scenario/model/step/typed_sc_deploy.rs @@ -3,7 +3,6 @@ use std::marker::PhantomData; use multiversx_sc::{ abi::TypeAbiFrom, codec::{PanicErrorHandler, TopDecodeMulti}, - types::ContractDeploy, }; use crate::{ @@ -18,7 +17,7 @@ use crate::{ use crate::scenario::model::{AddressValue, BigUintValue, TxExpect, U64Value}; -use super::{process_contract_deploy, ScDeployStep}; +use super::ScDeployStep; /// `ScDeployStep` with explicit return type. #[derive(Default, Debug)] @@ -104,8 +103,16 @@ impl TypedScDeploy { /// Sets following fields based on the smart contract proxy: /// - "function" /// - "arguments" - pub fn call(mut self, contract_deploy: ContractDeploy) -> Self { - let (_, mandos_args) = process_contract_deploy(contract_deploy); + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] + #[allow(deprecated)] + pub fn call( + mut self, + contract_deploy: multiversx_sc::types::ContractDeploy, + ) -> Self { + let (_, mandos_args) = super::process_contract_deploy(contract_deploy); for arg in mandos_args { self.sc_deploy_step.tx.arguments.push(BytesValue::from(arg)); } diff --git a/framework/scenario/src/scenario/model/transaction/tx_call.rs b/framework/scenario/src/scenario/model/transaction/tx_call.rs index 102ef3ef4e..547466032e 100644 --- a/framework/scenario/src/scenario/model/transaction/tx_call.rs +++ b/framework/scenario/src/scenario/model/transaction/tx_call.rs @@ -1,6 +1,6 @@ use crate::{ api::StaticApi, - multiversx_sc::types::{ContractCall, ContractCallWithEgld, EsdtTokenPayment}, + multiversx_sc::types::{ContractCall, EsdtTokenPayment}, scenario::model::{AddressValue, BigUintValue, BytesValue, U64Value}, scenario_format::{ interpret_trait::{InterpretableFrom, InterpreterContext, IntoRaw}, @@ -87,8 +87,13 @@ impl IntoRaw for TxCall { } impl TxCall { - pub fn to_contract_call(&self) -> ContractCallWithEgld { - let mut contract_call = ContractCallWithEgld::new( + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] + #[allow(deprecated)] + pub fn to_contract_call(&self) -> multiversx_sc::types::ContractCallWithEgld { + let mut contract_call = multiversx_sc::types::ContractCallWithEgld::new( (&self.to.value).into(), self.function.as_bytes(), (&self.egld_value.value).into(), diff --git a/framework/scenario/tests/contract_call_test.rs b/framework/scenario/tests/contract_call_test.rs index cacd39fd96..b6ff5ea1fb 100644 --- a/framework/scenario/tests/contract_call_test.rs +++ b/framework/scenario/tests/contract_call_test.rs @@ -3,6 +3,7 @@ use multiversx_sc_scenario::scenario_model::ScCallStep; use num_traits::Zero; #[test] +#[allow(deprecated)] fn test_contract_call_multi_esdt() { let tx = ScCallStep::new() .from("address:sender") diff --git a/framework/scenario/tests/contract_without_macros.rs b/framework/scenario/tests/contract_without_macros.rs index 87323d5dbb..cf9033b529 100644 --- a/framework/scenario/tests/contract_without_macros.rs +++ b/framework/scenario/tests/contract_without_macros.rs @@ -7,6 +7,7 @@ // and maintenance. #![allow(unused)] +#![allow(deprecated)] // TODO: unified syntax use multiversx_sc::{ contract_base::ProxyObjNew, diff --git a/framework/snippets/src/interactor_scenario/interactor_sc_call.rs b/framework/snippets/src/interactor_scenario/interactor_sc_call.rs index a0e0498ae9..d01e4af590 100644 --- a/framework/snippets/src/interactor_scenario/interactor_sc_call.rs +++ b/framework/snippets/src/interactor_scenario/interactor_sc_call.rs @@ -2,7 +2,6 @@ use crate::{address_h256_to_erdrs, mandos_to_erdrs_address, Interactor}; use log::info; use multiversx_sc_scenario::{ api::StaticApi, - multiversx_sc::types::ContractCallWithEgld, scenario::ScenarioRunner, scenario_model::{ScCallStep, SetStateStep, TxCall, TxResponse}, }; @@ -45,6 +44,7 @@ impl Interactor { tx_hash } + #[allow(deprecated)] // TODO pub(crate) fn tx_call_to_blockchain_tx(&self, tx_call: &TxCall) -> Transaction { let contract_call = tx_call.to_contract_call(); let contract_call_tx_data = contract_call_to_tx_data(&contract_call); @@ -70,7 +70,10 @@ impl Interactor { } } -fn contract_call_to_tx_data(contract_call: &ContractCallWithEgld) -> String { +#[allow(deprecated)] // TODO +fn contract_call_to_tx_data( + contract_call: &multiversx_sc_scenario::imports::ContractCallWithEgld, +) -> String { let mut result = String::from_utf8( contract_call .basic From 52209c2491ccd3588eaa4982b6ff2d70ee99c95a Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 7 May 2024 14:58:51 +0300 Subject: [PATCH 453/461] unified syntax - cleanup, more docs, renames --- .../forwarder-queue/src/forwarder_queue.rs | 2 +- .../src/call_promise_direct.rs | 2 +- .../tests/st_blackbox_legacy_proxy_test.rs | 6 +- .../{interaction/mod.rs => interaction.rs} | 6 +- .../base/src/types/interaction/annotated.rs | 3 + .../contract_call_exec.rs | 2 +- .../contract_call_no_payment.rs | 2 +- .../contract_call_trait.rs | 5 + .../src/types/interaction/result_handlers.rs | 27 -- framework/base/src/types/interaction/tx.rs | 274 +++++++++--------- .../base/src/types/interaction/tx_data.rs | 3 + .../types/interaction/tx_exec/tx_env_sc.rs | 3 + .../types/interaction/tx_exec/tx_exec_sync.rs | 9 + .../types/interaction/tx_exec/tx_exec_te.rs | 1 + .../base/src/types/interaction/tx_from.rs | 4 + .../types/interaction/tx_result_handler.rs | 33 +++ .../interaction/tx_result_handler_list.rs | 9 + .../original_result.rs} | 0 .../tx_result_handler_list_cons.rs} | 0 .../tx_result_handler_list_exec.rs} | 0 .../tx_result_handler_list_item.rs} | 0 .../base/src/types/interaction/tx_rh_list.rs | 9 - framework/base/src/types/interaction/tx_to.rs | 4 + .../src/scenario/model/step/sc_call_step.rs | 9 +- .../src/scenario/model/step/sc_query_step.rs | 17 +- 25 files changed, 245 insertions(+), 185 deletions(-) rename framework/base/src/types/{interaction/mod.rs => interaction.rs} (85%) create mode 100644 framework/base/src/types/interaction/tx_result_handler.rs create mode 100644 framework/base/src/types/interaction/tx_result_handler_list.rs rename framework/base/src/types/interaction/{tx_rh_list/tx_rh_original_result.rs => tx_result_handler_list/original_result.rs} (100%) rename framework/base/src/types/interaction/{tx_rh_list/tx_rh_list_cons.rs => tx_result_handler_list/tx_result_handler_list_cons.rs} (100%) rename framework/base/src/types/interaction/{tx_rh_list/tx_rh_list_exec.rs => tx_result_handler_list/tx_result_handler_list_exec.rs} (100%) rename framework/base/src/types/interaction/{tx_rh_list/tx_rh_list_item.rs => tx_result_handler_list/tx_result_handler_list_item.rs} (100%) delete mode 100644 framework/base/src/types/interaction/tx_rh_list.rs diff --git a/contracts/feature-tests/composability/forwarder-queue/src/forwarder_queue.rs b/contracts/feature-tests/composability/forwarder-queue/src/forwarder_queue.rs index 7b353e4ab0..376fc61d76 100644 --- a/contracts/feature-tests/composability/forwarder-queue/src/forwarder_queue.rs +++ b/contracts/feature-tests/composability/forwarder-queue/src/forwarder_queue.rs @@ -209,7 +209,7 @@ pub trait ForwarderQueue { .tx() .to(&ManagedAddress::default()) .payment(payments) - .function_call(FunctionCall::empty()) + .raw_call("") .to_call_data_string(); self.callback_payments().set(payments_data_string); diff --git a/contracts/feature-tests/composability/promises-features/src/call_promise_direct.rs b/contracts/feature-tests/composability/promises-features/src/call_promise_direct.rs index 55093fc8d6..b722ad4f5d 100644 --- a/contracts/feature-tests/composability/promises-features/src/call_promise_direct.rs +++ b/contracts/feature-tests/composability/promises-features/src/call_promise_direct.rs @@ -44,7 +44,7 @@ pub trait CallPromisesDirectModule { self.tx() .to(&to) .raw_call(endpoint_name) - .egld_or_multi_esdt(EgldOrMultiEsdtPayment::MultiEsdt(token_payments_vec)) + .payment(EgldOrMultiEsdtPayment::MultiEsdt(token_payments_vec)) .gas(gas_limit) .async_call_promise() .callback(self.callbacks().the_one_callback(2001, 2002u32.into())) diff --git a/contracts/feature-tests/scenario-tester/tests/st_blackbox_legacy_proxy_test.rs b/contracts/feature-tests/scenario-tester/tests/st_blackbox_legacy_proxy_test.rs index b20fbff6f3..f62672bb36 100644 --- a/contracts/feature-tests/scenario-tester/tests/st_blackbox_legacy_proxy_test.rs +++ b/contracts/feature-tests/scenario-tester/tests/st_blackbox_legacy_proxy_test.rs @@ -1,3 +1,5 @@ +#![allow(deprecated)] + use multiversx_sc_scenario::imports::*; use num_bigint::BigUint; @@ -50,7 +52,7 @@ fn st_blackbox_legacy_proxy() { let value = world .query() - .call(st_contract.sum()) + .legacy_proxy_call(st_contract.sum()) .returns(ReturnsResultAs::>::new()) .run(); assert_eq!(value.into(), BigUint::from(5u32)); @@ -58,7 +60,7 @@ fn st_blackbox_legacy_proxy() { world .tx() .from(OWNER) - .call(st_contract.add(3u32)) + .legacy_proxy_call(st_contract.add(3u32)) .with_result(WithRawTxResponse(|response| { assert!(response.tx_error.is_success()); })) diff --git a/framework/base/src/types/interaction/mod.rs b/framework/base/src/types/interaction.rs similarity index 85% rename from framework/base/src/types/interaction/mod.rs rename to framework/base/src/types/interaction.rs index e73cf9491b..710b482b8c 100644 --- a/framework/base/src/types/interaction/mod.rs +++ b/framework/base/src/types/interaction.rs @@ -16,7 +16,8 @@ mod tx_from; mod tx_gas; mod tx_payment; mod tx_proxy; -mod tx_rh_list; +mod tx_result_handler; +mod tx_result_handler_list; mod tx_to; pub use annotated::*; @@ -38,7 +39,8 @@ pub use tx_from::*; pub use tx_gas::*; pub use tx_payment::*; pub use tx_proxy::*; -pub use tx_rh_list::*; +pub use tx_result_handler::{TxEmptyResultHandler, TxResultHandler}; +pub use tx_result_handler_list::*; pub use tx_to::*; pub type TxScBase = TxBaseWithEnv>; diff --git a/framework/base/src/types/interaction/annotated.rs b/framework/base/src/types/interaction/annotated.rs index 015aa4e648..315994e66e 100644 --- a/framework/base/src/types/interaction/annotated.rs +++ b/framework/base/src/types/interaction/annotated.rs @@ -12,6 +12,9 @@ use crate::{ use super::TxEnv; +/// Describes a value can also have a custom representation in a mandos scenario. +/// +/// It is based on managed types in order to be embedded into parametric tests too. pub trait AnnotatedValue: Sized where Env: TxEnv, diff --git a/framework/base/src/types/interaction/contract_call_legacy/contract_call_exec.rs b/framework/base/src/types/interaction/contract_call_legacy/contract_call_exec.rs index 6928ee862b..427218f1c8 100644 --- a/framework/base/src/types/interaction/contract_call_legacy/contract_call_exec.rs +++ b/framework/base/src/types/interaction/contract_call_legacy/contract_call_exec.rs @@ -61,7 +61,7 @@ where Tx::new_tx_from_sc() .to(self.basic.to) .egld(self.egld_payment) - .function_call(self.basic.function_call) + .raw_data(self.basic.function_call) .callback(None) } } diff --git a/framework/base/src/types/interaction/contract_call_legacy/contract_call_no_payment.rs b/framework/base/src/types/interaction/contract_call_legacy/contract_call_no_payment.rs index 0f870d775e..2a067c761b 100644 --- a/framework/base/src/types/interaction/contract_call_legacy/contract_call_no_payment.rs +++ b/framework/base/src/types/interaction/contract_call_legacy/contract_call_no_payment.rs @@ -179,6 +179,6 @@ where } pub fn tx(self) -> Tx, (), (), (), (), FunctionCall, ()> { - Tx::new_tx_from_sc().function_call(self.function_call) + Tx::new_tx_from_sc().raw_data(self.function_call) } } diff --git a/framework/base/src/types/interaction/contract_call_legacy/contract_call_trait.rs b/framework/base/src/types/interaction/contract_call_legacy/contract_call_trait.rs index 07b5b86868..70c5faaac3 100644 --- a/framework/base/src/types/interaction/contract_call_legacy/contract_call_trait.rs +++ b/framework/base/src/types/interaction/contract_call_legacy/contract_call_trait.rs @@ -6,6 +6,11 @@ use crate::{ use super::{ContractCallNoPayment, ContractCallWithEgld}; +/// Converts into a legacy contract call. +#[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." +)] pub trait ContractCallBase where SA: CallTypeApi + 'static, diff --git a/framework/base/src/types/interaction/result_handlers.rs b/framework/base/src/types/interaction/result_handlers.rs index f8faf2fe95..dd3a334e2c 100644 --- a/framework/base/src/types/interaction/result_handlers.rs +++ b/framework/base/src/types/interaction/result_handlers.rs @@ -21,30 +21,3 @@ pub use with_new_address::*; pub use with_raw_result::WithRawResult; pub use with_result::WithResult; pub use with_result_as::*; - -use super::TxEnv; - -pub trait TxResultHandler -where - Env: TxEnv, -{ - type OriginalResult; -} - -impl TxResultHandler for () -where - Env: TxEnv, -{ - type OriginalResult = (); -} - -/// Indicates that given result handler is empty, i.e. doesn't cause any side effects and returns nothing. -/// -/// Implemented for `()` and `OriginalResultMarker`. -pub trait TxEmptyResultHandler: TxResultHandler -where - Env: TxEnv, -{ -} - -impl TxEmptyResultHandler for () where Env: TxEnv {} diff --git a/framework/base/src/types/interaction/tx.rs b/framework/base/src/types/interaction/tx.rs index 7fc12c896b..b1e6de8a10 100644 --- a/framework/base/src/types/interaction/tx.rs +++ b/framework/base/src/types/interaction/tx.rs @@ -20,6 +20,13 @@ use super::{ TxToSpecified, UpgradeCall, UNSPECIFIED_GAS_LIMIT, }; +/// Universal representation of a blockchain transaction. +/// +/// Uses 7 generic type arguments to encode all aspects of the transaction. +/// +/// It is future-like, does nothing by itself, it needs a specialized method call to actually run or send it. +/// +/// Rationale: https://twitter.com/andreimmarinica/status/1777157322155966601 #[must_use] pub struct Tx where @@ -40,31 +47,6 @@ where pub result_handler: RH, } -impl Tx -where - Env: TxEnv, - From: TxFrom, - To: TxTo, - Payment: TxPayment, - Gas: TxGas, - Data: TxData, - RH: TxResultHandler, -{ - /// TODO: does nothing, delete, added for easier copy-paste. - #[inline] - pub fn nothing(self) -> Tx { - Tx { - env: self.env, - from: self.from, - to: self.to, - payment: self.payment, - gas: self.gas, - data: self.data, - result_handler: self.result_handler, - } - } -} - impl Tx where Env: TxEnv, @@ -75,6 +57,7 @@ where Data: TxDataFunctionCall, RH: TxResultHandler, { + /// Converts object to a MultiversX transaction data field string. pub fn to_call_data_string(&self) -> ManagedBuffer { self.data.to_call_data_string() } @@ -86,6 +69,7 @@ impl TxBaseWithEnv where Env: TxEnv, { + /// Constructor, needs to take an environment object. #[inline] pub fn new_with_env(env: Env) -> Self { Tx { @@ -109,6 +93,7 @@ where Data: TxData, RH: TxResultHandler, { + /// Specifies transaction sender. pub fn from(self, from: From) -> Tx where From: TxFrom, @@ -281,6 +266,9 @@ where self.payment(payment.into()) } + /// Converts argument to `EgldOrMultiEsdtPayment`, then sets it as payment. + /// + /// In most cases, `payment` should be used instead. pub fn egld_or_multi_esdt>>( self, payment: P, @@ -419,36 +407,33 @@ where Gas: TxGas, RH: TxResultHandler, { + /// Sets the data field. Do not use directly. #[inline] - pub fn raw_call>>( - self, - function_name: N, - ) -> Tx, RH> { + #[doc(hidden)] + pub fn raw_data(self, data: Data) -> Tx + where + Data: TxData, + { Tx { env: self.env, from: self.from, to: self.to, payment: self.payment, gas: self.gas, - data: FunctionCall::new(function_name), + data, result_handler: self.result_handler, } } + /// Starts a contract call, serialized by hand. + /// + /// Whenever possible, should use proxies instead, since manual serialization is not type-safe. #[inline] - pub fn function_call( + pub fn raw_call>>( self, - call: FunctionCall, + function_name: N, ) -> Tx, RH> { - Tx { - env: self.env, - from: self.from, - to: self.to, - payment: self.payment, - gas: self.gas, - data: call, - result_handler: self.result_handler, - } + self.raw_data(FunctionCall::new(function_name)) } } @@ -461,6 +446,7 @@ where Gas: TxGas, RH: TxResultHandler, { + /// Converts tx to a simple FunctionCall, to be used as argument or data in contracts. pub fn into_function_call(self) -> FunctionCall { self.data } @@ -474,12 +460,12 @@ where Gas: TxGas, { /// Merges the argument data into the current tx. - /// Used for function calls originating in proxies. + /// Used for function calls originating in legacy proxies. /// /// Different environment in the argument allowed because of compatibility with old proxies. /// /// Method still subject to considerable change. - pub fn call( + pub fn legacy_proxy_call( self, call: Tx, OriginalResultMarker>, ) -> Tx, OriginalResultMarker> @@ -508,18 +494,22 @@ where Gas: TxGas, RH: TxResultHandler, { - #[inline] - pub fn function_name>>(mut self, function_name: N) -> Self { - self.data.function_name = function_name.into(); - self - } - + /// Adds argument to function call. + /// + /// Whenever possible, use proxies instead. + /// + /// It serializes the value, but does not enforce type safety. #[inline] pub fn argument(mut self, arg: &T) -> Self { self.data = self.data.argument(arg); self } + /// Adds serialized argument to function call. + /// + /// Whenever possible, use proxies instead. + /// + /// Doesa not serialize, does not enforce type safety. #[inline] pub fn arguments_raw(mut self, raw: ManagedArgBuffer) -> Self { self.data.arg_buffer = raw; @@ -536,6 +526,9 @@ where Gas: TxGas, Data: TxData, { + /// Type marker to set the original contract or VM function return type. + /// + /// Only the compile-time type annotation is given. #[inline] pub fn original_result( self, @@ -559,6 +552,9 @@ where To: TxTo, Gas: TxGas, { + /// Starts a proxy call, deploy, or upgrade. + /// + /// The proxy object will be given, the subsequent call will be from a proxy context, containing all the contract endpoint names. pub fn typed(self, proxy: Proxy) -> Proxy::TxProxyMethods where Proxy: TxProxyTrait, @@ -578,6 +574,7 @@ where Data: TxData, ResultList: RHList, { + /// Adds a result handler that doesn't return anything. #[inline] pub fn with_result( self, @@ -598,6 +595,7 @@ where } } + /// Adds a result handler that can also return processed data. #[inline] pub fn returns( self, @@ -619,44 +617,6 @@ where } } -impl ContractCallBase - for Tx< - TxScEnv, - (), - To, - Payment, - (), - FunctionCall, - OriginalResultMarker, - > -where - Api: CallTypeApi + 'static, - To: TxToSpecified>, - Payment: TxPayment>, - OriginalResult: TopEncodeMulti, -{ - type OriginalResult = OriginalResult; - - fn into_normalized(self) -> ContractCallWithEgld { - self.payment.with_normalized( - &self.env, - &self.from, - self.to, - self.data, - |norm_to, norm_egld, norm_fc| ContractCallWithEgld { - basic: ContractCallNoPayment { - _phantom: core::marker::PhantomData, - to: norm_to.clone(), - function_call: norm_fc.clone(), - explicit_gas_limit: UNSPECIFIED_GAS_LIMIT, - _return_type: core::marker::PhantomData, - }, - egld_payment: norm_egld.clone(), - }, - ) - } -} - impl Tx where Env: TxEnv, @@ -666,38 +626,11 @@ where Gas: TxGas, RH: TxResultHandler, { + /// Starts a contract deploy call, serialized by hand. + /// + /// Whenever possible, should use proxies instead, since manual serialization is not type-safe. pub fn raw_deploy(self) -> Tx, RH> { - Tx { - env: self.env, - from: self.from, - to: self.to, - payment: self.payment, - gas: self.gas, - data: DeployCall::default(), - result_handler: self.result_handler, - } - } -} - -impl Tx -where - Env: TxEnv, - From: TxFrom, - To: TxTo, - Payment: TxPaymentEgldOnly, - Gas: TxGas, - RH: TxResultHandler, -{ - pub fn raw_upgrade(self) -> Tx, RH> { - Tx { - env: self.env, - from: self.from, - to: self.to, - payment: self.payment, - gas: self.gas, - data: UpgradeCall::default(), - result_handler: self.result_handler, - } + self.raw_data(DeployCall::default()) } } @@ -710,6 +643,7 @@ where Gas: TxGas, RH: TxResultHandler, { + /// Sets upgrade code source as explicit code bytes. pub fn code( self, code: CodeValue, @@ -728,6 +662,7 @@ where } } + /// Sets upgrade code source as another deployed contract code. pub fn from_source( self, source_address: FromSourceValue, @@ -756,6 +691,7 @@ where Gas: TxGas, RH: TxResultHandler, { + /// Sets deploy code source as explicit code bytes. pub fn code( self, code: CodeValue, @@ -774,6 +710,7 @@ where } } + /// Sets deploy code source as another deployed contract code. pub fn from_source( self, source_address: FromSourceValue, @@ -804,17 +741,28 @@ where CodeSource: TxCodeSource, RH: TxResultHandler, { + /// Sets code metadata to deploy. pub fn code_metadata(mut self, code_metadata: CodeMetadata) -> Self { self.data = self.data.code_metadata(code_metadata); self } + /// Adds argument to a contract deploy. + /// + /// Whenever possible, use proxies instead. + /// + /// It serializes the value, but does not enforce type safety. #[inline] pub fn argument(mut self, arg: &T) -> Self { self.data = self.data.argument(arg); self } + /// Adds serialized argument to a contract deploy. + /// + /// Whenever possible, use proxies instead. + /// + /// Doesa not serialize, does not enforce type safety. #[inline] pub fn arguments_raw(mut self, raw: ManagedArgBuffer) -> Self { self.data.arg_buffer = raw; @@ -845,25 +793,20 @@ where } } -impl Tx +impl Tx where - Env: TxEnvWithTxHash, - From: TxFromSpecified, + Env: TxEnv, + From: TxFrom, To: TxTo, Payment: TxPaymentEgldOnly, Gas: TxGas, - Data: TxDataFunctionCall, RH: TxResultHandler, { - /// Sets the mock transaction hash to be used in a test. + /// Starts a contract deploy upgrade, serialized by hand. /// - /// Only allowed in tests. - pub fn tx_hash(mut self, tx_hash: H) -> Self - where - H256: core::convert::From, - { - self.env.set_tx_hash(H256::from(tx_hash)); - self + /// Whenever possible, should use proxies instead, since manual serialization is not type-safe. + pub fn raw_upgrade(self) -> Tx, RH> { + self.raw_data(UpgradeCall::default()) } } @@ -883,12 +826,22 @@ where self } + /// Adds argument to upgrade call. + /// + /// Whenever possible, use proxies instead. + /// + /// It serializes the value, but does not enforce type safety. #[inline] pub fn argument(mut self, arg: &T) -> Self { self.data = self.data.argument(arg); self } + /// Adds serialized argument to an upgrade call. + /// + /// Whenever possible, use proxies instead. + /// + /// Doesa not serialize, does not enforce type safety. #[inline] pub fn arguments_raw(mut self, raw: ManagedArgBuffer) -> Self { self.data.arg_buffer = raw; @@ -896,6 +849,28 @@ where } } +impl Tx +where + Env: TxEnvWithTxHash, + From: TxFromSpecified, + To: TxTo, + Payment: TxPaymentEgldOnly, + Gas: TxGas, + Data: TxDataFunctionCall, + RH: TxResultHandler, +{ + /// Sets the mock transaction hash to be used in a test. + /// + /// Only allowed in tests. + pub fn tx_hash(mut self, tx_hash: H) -> Self + where + H256: core::convert::From, + { + self.env.set_tx_hash(H256::from(tx_hash)); + self + } +} + impl From< Tx< @@ -935,3 +910,42 @@ where } } } + +// Conversion from new syntax to old syntax. +impl ContractCallBase + for Tx< + TxScEnv, + (), + To, + Payment, + (), + FunctionCall, + OriginalResultMarker, + > +where + Api: CallTypeApi + 'static, + To: TxToSpecified>, + Payment: TxPayment>, + OriginalResult: TopEncodeMulti, +{ + type OriginalResult = OriginalResult; + + fn into_normalized(self) -> ContractCallWithEgld { + self.payment.with_normalized( + &self.env, + &self.from, + self.to, + self.data, + |norm_to, norm_egld, norm_fc| ContractCallWithEgld { + basic: ContractCallNoPayment { + _phantom: core::marker::PhantomData, + to: norm_to.clone(), + function_call: norm_fc.clone(), + explicit_gas_limit: UNSPECIFIED_GAS_LIMIT, + _return_type: core::marker::PhantomData, + }, + egld_payment: norm_egld.clone(), + }, + ) + } +} diff --git a/framework/base/src/types/interaction/tx_data.rs b/framework/base/src/types/interaction/tx_data.rs index dc6db88135..ddab631b1a 100644 --- a/framework/base/src/types/interaction/tx_data.rs +++ b/framework/base/src/types/interaction/tx_data.rs @@ -15,6 +15,9 @@ use crate::{ use super::TxEnv; +/// Marks the data field of a transaction in `Tx`. +/// +/// Can be nothing, deploy data, call data, etc. pub trait TxData where Env: TxEnv, diff --git a/framework/base/src/types/interaction/tx_exec/tx_env_sc.rs b/framework/base/src/types/interaction/tx_exec/tx_env_sc.rs index 48cf21b0bb..249d74c2bc 100644 --- a/framework/base/src/types/interaction/tx_exec/tx_env_sc.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_env_sc.rs @@ -9,6 +9,9 @@ use crate::{ }, }; +/// The transaction environment used in calls launched from a SC. +/// +/// Contains no data, just a generic type for the (also zero-sized) API. pub struct TxScEnv where Api: CallTypeApi, diff --git a/framework/base/src/types/interaction/tx_exec/tx_exec_sync.rs b/framework/base/src/types/interaction/tx_exec/tx_exec_sync.rs index e66e76cf26..4ab9c29759 100644 --- a/framework/base/src/types/interaction/tx_exec/tx_exec_sync.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_exec_sync.rs @@ -48,6 +48,9 @@ where (raw_result, self.result_handler) } + /// Executes transaction synchronously. + /// + /// Only works with contracts from the same shard. pub fn sync_call(self) -> ::Unpacked { let (raw_result, result_handler) = self.execute_sync_call_raw(); let sync_raw_result = SyncCallRawResult(raw_result); @@ -79,6 +82,9 @@ where (raw_result, self.result_handler) } + /// Executes transaction synchronously, in the same context (performed in the name of the caller). + /// + /// Only works with contracts from the same shard. pub fn sync_call_same_context(self) -> ::Unpacked { let (raw_result, result_handler) = self.execute_sync_call_same_context_raw(); let sync_raw_result = SyncCallRawResult(raw_result); @@ -114,6 +120,9 @@ where (raw_result, self.result_handler) } + /// Executes transaction synchronously, in readonly mode (target contract cannot have its state altered). + /// + /// Only works with contracts from the same shard. pub fn sync_call_readonly(self) -> ::Unpacked { let (raw_result, result_handler) = self.execute_sync_call_readonly_raw(); let sync_raw_result = SyncCallRawResult(raw_result); diff --git a/framework/base/src/types/interaction/tx_exec/tx_exec_te.rs b/framework/base/src/types/interaction/tx_exec/tx_exec_te.rs index a484dd2fdb..b9db7539b9 100644 --- a/framework/base/src/types/interaction/tx_exec/tx_exec_te.rs +++ b/framework/base/src/types/interaction/tx_exec/tx_exec_te.rs @@ -22,6 +22,7 @@ where }); } + /// Sends transaction asynchronously, and doesn't wait for callback ("fire and forget".) pub fn transfer_execute(self) { let gas_limit: u64; if self.data.is_no_call() { diff --git a/framework/base/src/types/interaction/tx_from.rs b/framework/base/src/types/interaction/tx_from.rs index 039cb2c34c..ff5dd73b88 100644 --- a/framework/base/src/types/interaction/tx_from.rs +++ b/framework/base/src/types/interaction/tx_from.rs @@ -2,6 +2,7 @@ use crate::types::{heap::Address, ManagedAddress}; use super::{AnnotatedValue, TxEnv}; +/// Marks the sender of any transaction. pub trait TxFrom where Env: TxEnv, @@ -9,6 +10,9 @@ where fn resolve_address(&self, env: &Env) -> ManagedAddress; } +/// Marks the non-empty sender of a transaction. +/// +/// Enforces the reciipent to be explicitly specified. pub trait TxFromSpecified: TxFrom + AnnotatedValue> where diff --git a/framework/base/src/types/interaction/tx_result_handler.rs b/framework/base/src/types/interaction/tx_result_handler.rs new file mode 100644 index 0000000000..099d060c44 --- /dev/null +++ b/framework/base/src/types/interaction/tx_result_handler.rs @@ -0,0 +1,33 @@ +use super::TxEnv; + +/// Marks a general result handler, to be used in the transaction unified syntax. +/// +/// Rationale described here: https://twitter.com/andreimmarinica/status/1781371938750841288 +/// +/// Used for: +/// - async callbacks +/// - processing of results in sync calls, tests and interactors. +pub trait TxResultHandler +where + Env: TxEnv, +{ + type OriginalResult; +} + +impl TxResultHandler for () +where + Env: TxEnv, +{ + type OriginalResult = (); +} + +/// Indicates that given result handler is empty, i.e. doesn't cause any side effects and returns nothing. +/// +/// Implemented for `()` and `OriginalResultMarker`. +pub trait TxEmptyResultHandler: TxResultHandler +where + Env: TxEnv, +{ +} + +impl TxEmptyResultHandler for () where Env: TxEnv {} diff --git a/framework/base/src/types/interaction/tx_result_handler_list.rs b/framework/base/src/types/interaction/tx_result_handler_list.rs new file mode 100644 index 0000000000..b66a4ba52e --- /dev/null +++ b/framework/base/src/types/interaction/tx_result_handler_list.rs @@ -0,0 +1,9 @@ +mod original_result; +mod tx_result_handler_list_cons; +mod tx_result_handler_list_exec; +mod tx_result_handler_list_item; + +pub use original_result::OriginalResultMarker; +pub use tx_result_handler_list_cons::*; +pub use tx_result_handler_list_exec::*; +pub use tx_result_handler_list_item::*; diff --git a/framework/base/src/types/interaction/tx_rh_list/tx_rh_original_result.rs b/framework/base/src/types/interaction/tx_result_handler_list/original_result.rs similarity index 100% rename from framework/base/src/types/interaction/tx_rh_list/tx_rh_original_result.rs rename to framework/base/src/types/interaction/tx_result_handler_list/original_result.rs diff --git a/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_cons.rs b/framework/base/src/types/interaction/tx_result_handler_list/tx_result_handler_list_cons.rs similarity index 100% rename from framework/base/src/types/interaction/tx_rh_list/tx_rh_list_cons.rs rename to framework/base/src/types/interaction/tx_result_handler_list/tx_result_handler_list_cons.rs diff --git a/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_exec.rs b/framework/base/src/types/interaction/tx_result_handler_list/tx_result_handler_list_exec.rs similarity index 100% rename from framework/base/src/types/interaction/tx_rh_list/tx_rh_list_exec.rs rename to framework/base/src/types/interaction/tx_result_handler_list/tx_result_handler_list_exec.rs diff --git a/framework/base/src/types/interaction/tx_rh_list/tx_rh_list_item.rs b/framework/base/src/types/interaction/tx_result_handler_list/tx_result_handler_list_item.rs similarity index 100% rename from framework/base/src/types/interaction/tx_rh_list/tx_rh_list_item.rs rename to framework/base/src/types/interaction/tx_result_handler_list/tx_result_handler_list_item.rs diff --git a/framework/base/src/types/interaction/tx_rh_list.rs b/framework/base/src/types/interaction/tx_rh_list.rs deleted file mode 100644 index 7c4ccf74bd..0000000000 --- a/framework/base/src/types/interaction/tx_rh_list.rs +++ /dev/null @@ -1,9 +0,0 @@ -mod tx_rh_list_cons; -mod tx_rh_list_exec; -mod tx_rh_list_item; -mod tx_rh_original_result; - -pub use tx_rh_list_cons::*; -pub use tx_rh_list_exec::*; -pub use tx_rh_list_item::*; -pub use tx_rh_original_result::OriginalResultMarker; diff --git a/framework/base/src/types/interaction/tx_to.rs b/framework/base/src/types/interaction/tx_to.rs index 6ba0f6eec8..ad165a488f 100644 --- a/framework/base/src/types/interaction/tx_to.rs +++ b/framework/base/src/types/interaction/tx_to.rs @@ -2,6 +2,7 @@ use crate::types::{heap::Address, ManagedAddress}; use super::{AnnotatedValue, TxEnv}; +/// Marks the recipient of any transaction. pub trait TxTo where Env: TxEnv, @@ -10,6 +11,9 @@ where impl TxTo for () where Env: TxEnv {} +/// Marks the non-empty recipient of a transaction. +/// +/// Enforces the reciipent to be explicitly specified. pub trait TxToSpecified: TxTo + AnnotatedValue> where Env: TxEnv, 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 475ef6ae9b..07bc120fea 100644 --- a/framework/scenario/src/scenario/model/step/sc_call_step.rs +++ b/framework/scenario/src/scenario/model/step/sc_call_step.rs @@ -1,7 +1,4 @@ -use multiversx_sc::{ - abi::TypeAbiFrom, - types::{ContractCallBase, H256}, -}; +use multiversx_sc::{abi::TypeAbiFrom, types::H256}; use crate::{ api::StaticApi, @@ -144,7 +141,7 @@ impl ScCallStep { #[allow(deprecated)] pub fn call(mut self, contract_call: CC) -> super::TypedScCall where - CC: ContractCallBase, + CC: multiversx_sc::types::ContractCallBase, { let (to_str, function, egld_value_expr, scenario_args) = process_contract_call(contract_call); @@ -232,7 +229,7 @@ pub(super) fn process_contract_call( contract_call: CC, ) -> (String, String, BigUintValue, Vec) where - CC: ContractCallBase, + CC: multiversx_sc::types::ContractCallBase, { let normalized_cc = contract_call.into_normalized(); let to_str = format!( diff --git a/framework/scenario/src/scenario/model/step/sc_query_step.rs b/framework/scenario/src/scenario/model/step/sc_query_step.rs index 7a99fd4163..8183dcd579 100644 --- a/framework/scenario/src/scenario/model/step/sc_query_step.rs +++ b/framework/scenario/src/scenario/model/step/sc_query_step.rs @@ -1,7 +1,4 @@ -use multiversx_sc::{ - abi::TypeAbiFrom, - types::{ContractCallBase, H256}, -}; +use multiversx_sc::{abi::TypeAbiFrom, types::H256}; use num_traits::Zero; use crate::{ @@ -65,9 +62,14 @@ impl ScQueryStep { /// - "to" /// - "function" /// - "arguments" + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] + #[allow(deprecated)] pub fn call(mut self, contract_call: CC) -> TypedScQuery where - CC: ContractCallBase, + CC: multiversx_sc::types::ContractCallBase, { let (to_str, function, egld_value_expr, mandos_args) = process_contract_call(contract_call); assert!( @@ -89,6 +91,11 @@ impl ScQueryStep { /// - "expect" /// - "out" /// - "status" set to 0 + #[deprecated( + since = "0.49.0", + note = "Please use the unified transaction syntax instead." + )] + #[allow(deprecated)] pub fn call_expect( self, contract_call: CC, From 473e7892860fd6c08b5ccbd772aea9c83347da23 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 7 May 2024 15:04:30 +0300 Subject: [PATCH 454/461] comment --- contracts/examples/adder/interact/src/basic_interact.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/contracts/examples/adder/interact/src/basic_interact.rs b/contracts/examples/adder/interact/src/basic_interact.rs index 363f7efde2..ee11ac5844 100644 --- a/contracts/examples/adder/interact/src/basic_interact.rs +++ b/contracts/examples/adder/interact/src/basic_interact.rs @@ -73,6 +73,9 @@ impl AdderInteract { } async fn deploy(&mut self) { + // warning: multi deploy not yet fully supported + // only works with last deployed address + self.set_state().await; let new_address = self @@ -113,6 +116,10 @@ impl AdderInteract { } let results = buffer.run().await; + + // warning: multi deploy not yet fully supported + // only works with last deployed address + for new_address in results { println!("new address: {new_address}"); From 8d1dae152f347117f8670b1c278dc3baccaa138e Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 7 May 2024 15:08:26 +0300 Subject: [PATCH 455/461] re-generated proxies --- .../tests/price_aggregator_proxy.rs | 2 ++ .../feature-tests/abi-tester/src/abi_proxy.rs | 27 +++++++++++++++++++ .../scenario-tester/sc-config.toml | 2 +- 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/contracts/core/price-aggregator/tests/price_aggregator_proxy.rs b/contracts/core/price-aggregator/tests/price_aggregator_proxy.rs index bc84320d13..ae5e00c94a 100644 --- a/contracts/core/price-aggregator/tests/price_aggregator_proxy.rs +++ b/contracts/core/price-aggregator/tests/price_aggregator_proxy.rs @@ -340,6 +340,7 @@ where } } +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct PriceFeed where @@ -353,6 +354,7 @@ where pub decimals: u8, } +#[type_abi] #[derive(TopEncode)] pub struct NewRoundEvent where diff --git a/contracts/feature-tests/abi-tester/src/abi_proxy.rs b/contracts/feature-tests/abi-tester/src/abi_proxy.rs index a91b6d1961..f02412c39d 100644 --- a/contracts/feature-tests/abi-tester/src/abi_proxy.rs +++ b/contracts/feature-tests/abi-tester/src/abi_proxy.rs @@ -397,11 +397,13 @@ where } } +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpInConstructor { pub something: (), } +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct AbiTestType { pub nested: OnlyShowsUpAsNested01, @@ -409,15 +411,18 @@ pub struct AbiTestType { pub tuple_madness: (OnlyShowsUpAsNested02, Option>), } +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested01 {} +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested02 { pub something: [u8; 0], } #[rustfmt::skip] +#[type_abi] #[derive(TopEncode, TopDecode)] pub enum AbiEnum { Nothing, @@ -429,12 +434,15 @@ pub enum AbiEnum { }, } +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested08 {} +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested09 {} +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct AbiManagedType where @@ -445,62 +453,80 @@ where pub managed_buffer: ManagedBuffer, } +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested03 {} +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested04 {} +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested05 {} +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested06 {} +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested07 {} +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInSingleValueMapper {} +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInVec {} +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInArrayVec {} +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, ManagedVecItem)] pub struct AbiManagedVecItem { pub value1: u32, pub value2: u32, } +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInArray {} +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInBox {} +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInBoxedSlice {} +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInRef {} +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInSlice {} +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNestedInOption {} +#[type_abi] #[derive(TopEncode, TopDecode)] pub struct OnlyShowsUpInEsdtAttr { pub field: OnlyShowsUpAsNested10, } +#[type_abi] #[derive(NestedEncode, NestedDecode, TopEncode, TopDecode)] pub struct OnlyShowsUpAsNested10 {} +#[type_abi] #[derive(TopEncode, TopDecode)] pub enum ExplicitDiscriminant { Zero, @@ -511,6 +537,7 @@ pub enum ExplicitDiscriminant { } #[rustfmt::skip] +#[type_abi] #[derive(TopEncode, TopDecode)] pub enum ExplicitDiscriminantMixed { Zero, diff --git a/contracts/feature-tests/scenario-tester/sc-config.toml b/contracts/feature-tests/scenario-tester/sc-config.toml index 0a83428cbd..4b16ba7311 100644 --- a/contracts/feature-tests/scenario-tester/sc-config.toml +++ b/contracts/feature-tests/scenario-tester/sc-config.toml @@ -1,4 +1,4 @@ [settings] [[proxy]] -path = "src/st_proxy.rs" +path = "src/scenario_tester_proxy.rs" From b4e85ea1306f8ed9a499f05feeb3cb7ef75f749b Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 7 May 2024 15:17:20 +0300 Subject: [PATCH 456/461] replaced tabs with spaces --- data/codec-derive/src/nested_de_derive.rs | 24 +++++----- data/codec/src/impl_for_types/impl_tuple.rs | 20 ++++---- .../tests/derive_enum_or_default_test.rs | 18 ++++---- data/codec/tests/derive_enum_test.rs | 40 ++++++++-------- .../derive_struct_or_default_generic_test.rs | 16 +++---- .../tests/derive_struct_or_default_test.rs | 16 +++---- data/codec/tests/derive_struct_test.rs | 16 +++---- data/codec/tests/derive_tuple_struct_test.rs | 10 ++-- framework/base/src/abi/type_abi_impl_basic.rs | 46 +++++++++---------- .../base/src/abi/type_abi_impl_codec_multi.rs | 4 +- framework/derive/src/generate/abi_gen.rs | 18 ++++---- framework/derive/src/generate/callback_gen.rs | 2 +- framework/derive/src/parse/auto_impl_parse.rs | 22 ++++----- framework/derive/src/parse/endpoint_parse.rs | 4 +- framework/derive/src/parse/payable_parse.rs | 16 +++---- .../derive_managed_vec_item_struct_1_test.rs | 14 +++--- .../derive_managed_vec_item_struct_2_test.rs | 28 +++++------ vm/src/world_mock/account_data.rs | 14 +++--- 18 files changed, 164 insertions(+), 164 deletions(-) diff --git a/data/codec-derive/src/nested_de_derive.rs b/data/codec-derive/src/nested_de_derive.rs index 2eb9d18f41..f24ab1a256 100644 --- a/data/codec-derive/src/nested_de_derive.rs +++ b/data/codec-derive/src/nested_de_derive.rs @@ -27,20 +27,20 @@ pub fn variant_dep_decode_snippets( ) -> Vec { let mut previous_disc: Vec = Vec::new(); data_enum - .variants - .iter() - .enumerate() - .map(|(variant_index, variant)| { + .variants + .iter() + .enumerate() + .map(|(variant_index, variant)| { let variant_discriminant = get_discriminant(variant_index, variant, &mut previous_disc); - let variant_ident = &variant.ident; - let variant_field_snippets = fields_decl_syntax(&variant.fields, |index, field| { - dep_decode_snippet(index, field, input_value) - }); - quote! { + let variant_ident = &variant.ident; + let variant_field_snippets = fields_decl_syntax(&variant.fields, |index, field| { + dep_decode_snippet(index, field, input_value) + }); + quote! { #variant_discriminant => core::result::Result::Ok( #name::#variant_ident #variant_field_snippets ), - } - }) - .collect() + } + }) + .collect() } pub fn nested_decode_impl(ast: &syn::DeriveInput) -> TokenStream { diff --git a/data/codec/src/impl_for_types/impl_tuple.rs b/data/codec/src/impl_for_types/impl_tuple.rs index c59ead5126..b5278a92b5 100644 --- a/data/codec/src/impl_for_types/impl_tuple.rs +++ b/data/codec/src/impl_for_types/impl_tuple.rs @@ -11,18 +11,18 @@ macro_rules! tuple_impls { where $($name: NestedEncode,)+ { - fn top_encode_or_handle_err(&self, output: O, h: H) -> Result<(), H::HandledErr> + fn top_encode_or_handle_err(&self, output: O, h: H) -> Result<(), H::HandledErr> where O: TopEncodeOutput, H: EncodeErrorHandler, { - let mut buffer = output.start_nested_encode(); - $( + let mut buffer = output.start_nested_encode(); + $( self.$n.dep_encode_or_handle_err(&mut buffer, h)?; )+ - output.finalize_nested_encode(buffer); - Ok(()) - } + output.finalize_nested_encode(buffer); + Ok(()) + } } impl<$($name),+> TopDecode for ($($name,)+) @@ -42,16 +42,16 @@ macro_rules! tuple_impls { where $($name: NestedEncode,)+ { - fn dep_encode_or_handle_err(&self, dest: &mut O, h: H) -> Result<(), H::HandledErr> + fn dep_encode_or_handle_err(&self, dest: &mut O, h: H) -> Result<(), H::HandledErr> where O: NestedEncodeOutput, H: EncodeErrorHandler, { - $( + $( self.$n.dep_encode_or_handle_err(dest, h)?; )+ - Ok(()) - } + Ok(()) + } } impl<$($name),+> NestedDecode for ($($name,)+) diff --git a/data/codec/tests/derive_enum_or_default_test.rs b/data/codec/tests/derive_enum_or_default_test.rs index 24d1017654..7d9b57c755 100644 --- a/data/codec/tests/derive_enum_or_default_test.rs +++ b/data/codec/tests/derive_enum_or_default_test.rs @@ -53,15 +53,15 @@ fn enum_not_defaults() { }; #[rustfmt::skip] - let enum_struct_bytes = &[ - /* discriminant */ 2, - /* int */ 0, 0x42, - /* seq length */ 0, 0, 0, 5, - /* seq contents */ 1, 2, 3, 4, 5, - /* another_byte */ 6, - /* uint_32 */ 0x00, 0x01, 0x23, 0x45, - /* uint_64 */ 0x00, 0x00, 0x00, 0x01, 0x23, 0x45, 0x67, 0x89, - ]; + let enum_struct_bytes = &[ + /* discriminant */ 2, + /* int */ 0, 0x42, + /* seq length */ 0, 0, 0, 5, + /* seq contents */ 1, 2, 3, 4, 5, + /* another_byte */ 6, + /* uint_32 */ 0x00, 0x01, 0x23, 0x45, + /* uint_64 */ 0x00, 0x00, 0x00, 0x01, 0x23, 0x45, 0x67, 0x89, + ]; check_top_encode_decode(enum_struct, enum_struct_bytes); } diff --git a/data/codec/tests/derive_enum_test.rs b/data/codec/tests/derive_enum_test.rs index b4626400ac..bd798b33ee 100644 --- a/data/codec/tests/derive_enum_test.rs +++ b/data/codec/tests/derive_enum_test.rs @@ -68,11 +68,11 @@ fn field_enum_variant_with_value() { let enum_tuple_0 = EnumWithEverything::Write(Vec::new(), 0); #[rustfmt::skip] - let enum_tuple_0_bytes = &[ - /* discriminant */ 2, - /* vec length */ 0, 0, 0, 0, - /* u16 */ 0, 0, - ]; + let enum_tuple_0_bytes = &[ + /* discriminant */ 2, + /* vec length */ 0, 0, 0, 0, + /* u16 */ 0, 0, + ]; check_top_encode_decode(enum_tuple_0.clone(), enum_tuple_0_bytes); check_dep_encode_decode(enum_tuple_0, enum_tuple_0_bytes); } @@ -81,12 +81,12 @@ fn field_enum_variant_with_value() { fn field_enum_variant_with_tuple() { let enum_tuple_1 = EnumWithEverything::Write([1, 2, 3].to_vec(), 4); #[rustfmt::skip] - let enum_tuple_1_bytes = &[ - /* discriminant */ 2, - /* vec length */ 0, 0, 0, 3, - /* vec contents */ 1, 2, 3, - /* an extra 16 */ 0, 4, - ]; + let enum_tuple_1_bytes = &[ + /* discriminant */ 2, + /* vec length */ 0, 0, 0, 3, + /* vec contents */ 1, 2, 3, + /* an extra 16 */ 0, 4, + ]; check_top_encode_decode(enum_tuple_1.clone(), enum_tuple_1_bytes); check_dep_encode_decode(enum_tuple_1, enum_tuple_1_bytes); @@ -103,15 +103,15 @@ fn field_enum_struct_variant() { }; #[rustfmt::skip] - let enum_struct_bytes = &[ - /* discriminant */ 3, - /* int */ 0, 0x42, - /* seq length */ 0, 0, 0, 5, - /* seq contents */ 1, 2, 3, 4, 5, - /* another_byte */ 6, - /* uint_32 */ 0x00, 0x01, 0x23, 0x45, - /* uint_64 */ 0x00, 0x00, 0x00, 0x01, 0x23, 0x45, 0x67, 0x89, - ]; + let enum_struct_bytes = &[ + /* discriminant */ 3, + /* int */ 0, 0x42, + /* seq length */ 0, 0, 0, 5, + /* seq contents */ 1, 2, 3, 4, 5, + /* another_byte */ 6, + /* uint_32 */ 0x00, 0x01, 0x23, 0x45, + /* uint_64 */ 0x00, 0x00, 0x00, 0x01, 0x23, 0x45, 0x67, 0x89, + ]; check_top_encode_decode(enum_struct.clone(), enum_struct_bytes); check_dep_encode_decode(enum_struct, enum_struct_bytes); diff --git a/data/codec/tests/derive_struct_or_default_generic_test.rs b/data/codec/tests/derive_struct_or_default_generic_test.rs index e8ab6bbe20..d7631b0ae2 100644 --- a/data/codec/tests/derive_struct_or_default_generic_test.rs +++ b/data/codec/tests/derive_struct_or_default_generic_test.rs @@ -63,14 +63,14 @@ fn struct_or_default_not_default() { }; #[rustfmt::skip] - let bytes_1 = &[ - /* int */ 0, 0x42, - /* seq length */ 0, 0, 0, 5, - /* seq contents */ 1, 2, 3, 4, 5, - /* another_byte */ 6, - /* uint_32 */ 0x00, 0x01, 0x23, 0x45, - /* uint_64 */ 0x00, 0x00, 0x00, 0x01, 0x23, 0x45, 0x67, 0x89, - ]; + let bytes_1 = &[ + /* int */ 0, 0x42, + /* seq length */ 0, 0, 0, 5, + /* seq contents */ 1, 2, 3, 4, 5, + /* another_byte */ 6, + /* uint_32 */ 0x00, 0x01, 0x23, 0x45, + /* uint_64 */ 0x00, 0x00, 0x00, 0x01, 0x23, 0x45, 0x67, 0x89, + ]; check_top_encode_decode(s, bytes_1); } diff --git a/data/codec/tests/derive_struct_or_default_test.rs b/data/codec/tests/derive_struct_or_default_test.rs index 1b75d5962c..8953b94dc6 100644 --- a/data/codec/tests/derive_struct_or_default_test.rs +++ b/data/codec/tests/derive_struct_or_default_test.rs @@ -54,14 +54,14 @@ fn struct_or_default_not_default() { }; #[rustfmt::skip] - let bytes_1 = &[ - /* int */ 0, 0x42, - /* seq length */ 0, 0, 0, 5, - /* seq contents */ 1, 2, 3, 4, 5, - /* another_byte */ 6, - /* uint_32 */ 0x00, 0x01, 0x23, 0x45, - /* uint_64 */ 0x00, 0x00, 0x00, 0x01, 0x23, 0x45, 0x67, 0x89, - ]; + let bytes_1 = &[ + /* int */ 0, 0x42, + /* seq length */ 0, 0, 0, 5, + /* seq contents */ 1, 2, 3, 4, 5, + /* another_byte */ 6, + /* uint_32 */ 0x00, 0x01, 0x23, 0x45, + /* uint_64 */ 0x00, 0x00, 0x00, 0x01, 0x23, 0x45, 0x67, 0x89, + ]; check_top_encode_decode(s, bytes_1); } diff --git a/data/codec/tests/derive_struct_test.rs b/data/codec/tests/derive_struct_test.rs index b7967dd9ae..fbe293b7e1 100644 --- a/data/codec/tests/derive_struct_test.rs +++ b/data/codec/tests/derive_struct_test.rs @@ -26,14 +26,14 @@ fn struct_named_fields_test() { }; #[rustfmt::skip] - let bytes_1 = &[ - /* int */ 0, 0x42, - /* seq length */ 0, 0, 0, 5, - /* seq contents */ 1, 2, 3, 4, 5, - /* another_byte */ 6, - /* uint_32 */ 0x00, 0x01, 0x23, 0x45, - /* uint_64 */ 0x00, 0x00, 0x00, 0x01, 0x23, 0x45, 0x67, 0x89, - ]; + let bytes_1 = &[ + /* int */ 0, 0x42, + /* seq length */ 0, 0, 0, 5, + /* seq contents */ 1, 2, 3, 4, 5, + /* another_byte */ 6, + /* uint_32 */ 0x00, 0x01, 0x23, 0x45, + /* uint_64 */ 0x00, 0x00, 0x00, 0x01, 0x23, 0x45, 0x67, 0x89, + ]; check_top_encode_decode(s.clone(), bytes_1); check_dep_encode_decode(s, bytes_1); diff --git a/data/codec/tests/derive_tuple_struct_test.rs b/data/codec/tests/derive_tuple_struct_test.rs index 53e17ff529..4d6b3c9559 100644 --- a/data/codec/tests/derive_tuple_struct_test.rs +++ b/data/codec/tests/derive_tuple_struct_test.rs @@ -14,11 +14,11 @@ fn tuple_struct_derive_test() { let s = TupleStruct(8, 16, 32); #[rustfmt::skip] - let bytes = &[ - /* 0: u8 */ 8, - /* 1: u32 */ 0, 16, - /* 2: u64 */ 0, 0, 0, 32, - ]; + let bytes = &[ + /* 0: u8 */ 8, + /* 1: u32 */ 0, 16, + /* 2: u64 */ 0, 0, 0, 32, + ]; check_top_encode_decode(s.clone(), bytes); check_dep_encode_decode(s, bytes); diff --git a/framework/base/src/abi/type_abi_impl_basic.rs b/framework/base/src/abi/type_abi_impl_basic.rs index f5f5ece466..878a09bc87 100644 --- a/framework/base/src/abi/type_abi_impl_basic.rs +++ b/framework/base/src/abi/type_abi_impl_basic.rs @@ -303,35 +303,35 @@ macro_rules! tuple_impls { { type Unmanaged = Self; - fn type_name() -> TypeName { - let mut repr = TypeName::from("tuple<"); - $( - if $n > 0 { - repr.push(','); - } - repr.push_str($name::type_name().as_str()); + fn type_name() -> TypeName { + let mut repr = TypeName::from("tuple<"); + $( + if $n > 0 { + repr.push(','); + } + repr.push_str($name::type_name().as_str()); )+ - repr.push('>'); - repr - } + repr.push('>'); + repr + } fn type_name_rust() -> TypeName { - let mut repr = TypeName::from("("); - $( - if $n > 0 { - repr.push_str(", "); - } - repr.push_str($name::type_name_rust().as_str()); + let mut repr = TypeName::from("("); + $( + if $n > 0 { + repr.push_str(", "); + } + repr.push_str($name::type_name_rust().as_str()); )+ - repr.push(')'); - repr - } + repr.push(')'); + repr + } - fn provide_type_descriptions(accumulator: &mut TDC) { - $( - $name::provide_type_descriptions(accumulator); + fn provide_type_descriptions(accumulator: &mut TDC) { + $( + $name::provide_type_descriptions(accumulator); )+ - } + } } )+ } diff --git a/framework/base/src/abi/type_abi_impl_codec_multi.rs b/framework/base/src/abi/type_abi_impl_codec_multi.rs index e86f7c9614..4fc42f37a6 100644 --- a/framework/base/src/abi/type_abi_impl_codec_multi.rs +++ b/framework/base/src/abi/type_abi_impl_codec_multi.rs @@ -115,8 +115,8 @@ macro_rules! multi_arg_impls { } fn provide_type_descriptions(accumulator: &mut TDC) { - $( - $name::provide_type_descriptions(accumulator); + $( + $name::provide_type_descriptions(accumulator); )+ } diff --git a/framework/derive/src/generate/abi_gen.rs b/framework/derive/src/generate/abi_gen.rs index f9a5e8360b..5d5a73934c 100644 --- a/framework/derive/src/generate/abi_gen.rs +++ b/framework/derive/src/generate/abi_gen.rs @@ -197,15 +197,15 @@ fn has_callback(contract: &ContractTrait) -> bool { fn generate_supertrait_snippets(contract: &ContractTrait) -> Vec { contract - .supertraits - .iter() - .map(|supertrait| { - let module_path = &supertrait.module_path; - quote! { - contract_abi.coalesce(<#module_path AbiProvider as multiversx_sc::contract_base::ContractAbiProvider>::abi()); - } - }) - .collect() + .supertraits + .iter() + .map(|supertrait| { + let module_path = &supertrait.module_path; + quote! { + contract_abi.coalesce(<#module_path AbiProvider as multiversx_sc::contract_base::ContractAbiProvider>::abi()); + } + }) + .collect() } fn generate_esdt_attribute_snippets(contract: &ContractTrait) -> Vec { diff --git a/framework/derive/src/generate/callback_gen.rs b/framework/derive/src/generate/callback_gen.rs index 5d1cda744f..d5ed94bc7b 100644 --- a/framework/derive/src/generate/callback_gen.rs +++ b/framework/derive/src/generate/callback_gen.rs @@ -48,7 +48,7 @@ pub fn generate_callback_selector_and_main( let cb_main_body = quote! { if let Some(___cb_closure___) = multiversx_sc::types::CallbackClosureForDeser::storage_load_and_clear::() { if let multiversx_sc::types::CallbackSelectorResult::NotProcessed(_) = - self::EndpointWrappers::callback_selector(self, ___cb_closure___) { + self::EndpointWrappers::callback_selector(self, ___cb_closure___) { multiversx_sc::api::ErrorApiImpl::signal_error( &::error_api_impl(), err_msg::CALLBACK_BAD_FUNC, diff --git a/framework/derive/src/parse/auto_impl_parse.rs b/framework/derive/src/parse/auto_impl_parse.rs index 11553794cd..24002e2139 100644 --- a/framework/derive/src/parse/auto_impl_parse.rs +++ b/framework/derive/src/parse/auto_impl_parse.rs @@ -4,17 +4,17 @@ use super::attributes::*; fn assert_no_other_auto_impl(method: &Method) { assert!( - method.implementation.is_no_implementation(), - "Only one auto-implementation can be specified at one time. Auto-implementations are: {}{}{}{}{}{}{}{}", - "`#[storage_get]`, ", - "`#[storage_set]`, ", - "`#[storage_mapper]`, ", - "`#[storage_is_empty]`, ", - "`#[storage_clear]`, ", - "`#[proxy]`, ", - "`#[module]`, ", - "`#[event]`." - ) + method.implementation.is_no_implementation(), + "Only one auto-implementation can be specified at one time. Auto-implementations are: {}{}{}{}{}{}{}{}", + "`#[storage_get]`, ", + "`#[storage_set]`, ", + "`#[storage_mapper]`, ", + "`#[storage_is_empty]`, ", + "`#[storage_clear]`, ", + "`#[proxy]`, ", + "`#[module]`, ", + "`#[event]`." + ) } pub fn process_event_attribute(attr: &syn::Attribute, method: &mut Method) -> bool { diff --git a/framework/derive/src/parse/endpoint_parse.rs b/framework/derive/src/parse/endpoint_parse.rs index fc68c25c59..5edc30ad08 100644 --- a/framework/derive/src/parse/endpoint_parse.rs +++ b/framework/derive/src/parse/endpoint_parse.rs @@ -15,8 +15,8 @@ use super::{ fn check_single_role(method: &Method) { assert!(matches!(method.public_role, PublicRole::Private), - "Can only annotate with one of the following arguments: `#[init]`, `#[endpoint]`, `#[view]`, `#[callback]`, `#[callback_raw]`, `#[upgrade]`." - ); + "Can only annotate with one of the following arguments: `#[init]`, `#[endpoint]`, `#[view]`, `#[callback]`, `#[callback_raw]`, `#[upgrade]`." + ); } pub fn process_init_attribute( diff --git a/framework/derive/src/parse/payable_parse.rs b/framework/derive/src/parse/payable_parse.rs index 8d199b94a8..91deba4509 100644 --- a/framework/derive/src/parse/payable_parse.rs +++ b/framework/derive/src/parse/payable_parse.rs @@ -6,14 +6,14 @@ pub fn process_payable_attribute( pass_1_data: &mut MethodAttributesPass1, ) -> bool { PayableAttribute::parse(attr).map(|payable_attr| { - if let Some(identifier) = payable_attr.identifier { - pass_1_data.payable = parse_payable_identifier(identifier.as_str()); - } else { - panic!( - "Endpoint `payable` attribute requires one argument. Replace with `#[payable(\"*\")]` or `#[payable(\"EGLD\")]`. Method name: {}", - &pass_1_data.method_name); - } - }).is_some() + if let Some(identifier) = payable_attr.identifier { + pass_1_data.payable = parse_payable_identifier(identifier.as_str()); + } else { + panic!( + "Endpoint `payable` attribute requires one argument. Replace with `#[payable(\"*\")]` or `#[payable(\"EGLD\")]`. Method name: {}", + &pass_1_data.method_name); + } + }).is_some() } fn parse_payable_identifier(identifier: &str) -> MethodPayableMetadata { diff --git a/framework/scenario/tests/derive_managed_vec_item_struct_1_test.rs b/framework/scenario/tests/derive_managed_vec_item_struct_1_test.rs index f69056f5d6..1673008017 100644 --- a/framework/scenario/tests/derive_managed_vec_item_struct_1_test.rs +++ b/framework/scenario/tests/derive_managed_vec_item_struct_1_test.rs @@ -39,13 +39,13 @@ fn struct_1_encode_decode_skips_reserialization() { }; #[rustfmt::skip] - let bytes_1 = &[ - /* u_8 */ 0x01, - /* u_16 */ 0x00, 0x02, - /* u_32 */ 0x00, 0x00, 0x00, 0x03, - /* u_64 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - /* bool */ 0x01, - ]; + let bytes_1 = &[ + /* u_8 */ 0x01, + /* u_16 */ 0x00, 0x02, + /* u_32 */ 0x00, 0x00, 0x00, 0x03, + /* u_64 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + /* bool */ 0x01, + ]; check_top_encode_decode(s.clone(), bytes_1); check_dep_encode_decode(s, bytes_1); diff --git a/framework/scenario/tests/derive_managed_vec_item_struct_2_test.rs b/framework/scenario/tests/derive_managed_vec_item_struct_2_test.rs index 3adfbb34bd..90db2ddddc 100644 --- a/framework/scenario/tests/derive_managed_vec_item_struct_2_test.rs +++ b/framework/scenario/tests/derive_managed_vec_item_struct_2_test.rs @@ -39,15 +39,15 @@ fn struct_to_bytes_writer() { }; #[rustfmt::skip] - let expected_payload = &[ - /* u_8 */ 0x01, - /* u_16 */ 0x00, 0x02, - /* u_32 */ 0x00, 0x00, 0x00, 0x03, - /* u_64 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - /* bool */ 0x01, + let expected_payload = &[ + /* u_8 */ 0x01, + /* u_16 */ 0x00, 0x02, + /* u_32 */ 0x00, 0x00, 0x00, 0x03, + /* u_64 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + /* bool */ 0x01, /* opt */ 0x01, 0x05, /* arr */ 0x61, 0x11, 0x62, 0x22, - ]; + ]; ::to_byte_writer(&s, |bytes| { assert_eq!(bytes, &expected_payload[..]); @@ -67,15 +67,15 @@ fn struct_2_from_bytes_reader() { }; #[rustfmt::skip] - let payload = &[ - /* u_8 */ 0x01, - /* u_16 */ 0x00, 0x02, - /* u_32 */ 0x00, 0x00, 0x00, 0x03, - /* u_64 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - /* bool */ 0x00, + let payload = &[ + /* u_8 */ 0x01, + /* u_16 */ 0x00, 0x02, + /* u_32 */ 0x00, 0x00, 0x00, 0x03, + /* u_64 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + /* bool */ 0x00, /* opt */ 0x01, 0x05, /* arr */ 0x61, 0x11, 0x62, 0x22, - ]; + ]; let struct_from_bytes = ::from_byte_reader(|bytes| { diff --git a/vm/src/world_mock/account_data.rs b/vm/src/world_mock/account_data.rs index 343c49bb8d..9268c4535c 100644 --- a/vm/src/world_mock/account_data.rs +++ b/vm/src/world_mock/account_data.rs @@ -61,13 +61,13 @@ impl fmt::Display for AccountData { write!( f, "AccountData {{ - nonce: {}, - balance: {}, - esdt: [{} ], - username: {}, - storage: [{} ], - developerRewards: {}, - }}", + nonce: {}, + balance: {}, + esdt: [{} ], + username: {}, + storage: [{} ], + developerRewards: {}, + }}", self.nonce, self.egld_balance, self.esdt, From 72751008df70c32cb2a43cf2bb73e3df7f1fa068 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 7 May 2024 15:29:06 +0300 Subject: [PATCH 457/461] cleanup --- framework/base/src/macros.rs | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/framework/base/src/macros.rs b/framework/base/src/macros.rs index 55d023ad79..86c963a057 100644 --- a/framework/base/src/macros.rs +++ b/framework/base/src/macros.rs @@ -185,28 +185,3 @@ macro_rules! non_zero_usize { NonZeroUsize::new($input).unwrap_or_else(|| sc_panic!($error_msg)) }; } - -#[macro_export] -macro_rules! constructors_proxy { - ($opt_address:ident) => { - multiversx_sc::types::new_contract_deploy($opt_address); - }; -} - -#[macro_export] -macro_rules! extract_opt_address { - ($address:expr) => {{ - core::mem::replace( - &mut $address.address, - multiversx_sc::types::ManagedOption::none(), - ) - }}; -} - -#[macro_export] -macro_rules! extract_address { - ($address:expr) => {{ - multiversx_sc::extract_opt_address!($address) - .unwrap_or_sc_panic(multiversx_sc::err_msg::RECIPIENT_ADDRESS_NOT_SET) - }}; -} From ce5740130d9d70770114d59c15db389f234b3089 Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 7 May 2024 17:03:07 +0300 Subject: [PATCH 458/461] release action fix --- .github/workflows/release-upload.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/release-upload.yml b/.github/workflows/release-upload.yml index 6031a5d427..6ecb73df9b 100644 --- a/.github/workflows/release-upload.yml +++ b/.github/workflows/release-upload.yml @@ -54,4 +54,3 @@ jobs: file: ./examples-wasm.zip asset_name: examples-wasm.zip overwrite: true - body: "This is my release text" From 1b5839ada22bd517a1634ee5a5e62048d22a959e Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 7 May 2024 17:18:45 +0300 Subject: [PATCH 459/461] sc 0.49.0, codec 0.18.8, sdk 0.4.0 --- CHANGELOG.md | 8 +++++++ Cargo.lock | 24 +++++++++---------- 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 +- .../Cargo.toml | 2 +- .../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/nft-subscription/Cargo.toml | 6 ++--- .../examples/nft-subscription/meta/Cargo.toml | 2 +- .../examples/nft-subscription/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 +- .../wasm-alloc-mem-fail/Cargo.toml | 2 +- .../wasm-alloc-mem-leaking/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 | 4 ++-- .../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-legacy/Cargo.toml | 4 ++-- .../forwarder-legacy/meta/Cargo.toml | 2 +- .../forwarder-legacy/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 | 2 +- .../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 +- .../vault/wasm-vault-upgrade/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 +- .../exchange-features/Cargo.toml | 4 ++-- .../exchange-features/meta/Cargo.toml | 2 +- .../exchange-features/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 +- .../feature-tests/scenario-tester/Cargo.toml | 4 ++-- .../scenario-tester/meta/Cargo.toml | 2 +- .../scenario-tester/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 +- data/codec/Cargo.toml | 6 ++--- framework/base/Cargo.toml | 6 ++--- framework/derive/Cargo.toml | 2 +- framework/meta/Cargo.toml | 4 ++-- .../generate_snippets/snippet_crate_gen.rs | 2 +- .../meta/src/cmd/contract/meta_config.rs | 4 ++-- framework/meta/src/version_history.rs | 3 ++- framework/scenario/Cargo.toml | 8 +++---- framework/snippets/Cargo.toml | 6 ++--- framework/wasm-adapter/Cargo.toml | 4 ++-- sdk/core/Cargo.toml | 2 +- tools/mxpy-snippet-generator/Cargo.toml | 2 +- tools/rust-debugger/format-tests/Cargo.toml | 4 ++-- 276 files changed, 415 insertions(+), 406 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 382ea1f2f5..030ef99324 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,14 @@ They are: - `multiversx-chain-scenario-format`, in short `scenario-format`, scenario JSON serializer/deserializer, 1 crate. - `multiversx-sdk`, in short `sdk`, allows communication with the chain(s), 1 crate. +## [sc 0.49.0, codec 0.18.8, sdk 0.4.0] - 2024-05-07 +- Unified transaction syntax + - new syntax for sending transactions from contracts + - new syntax for integration tests: tx, set state, check state, etc. + - new syntax for interactors + - new proxies, generated from sc-meta + - support for upgrade in new proxies +- Improved interactor tx result polling performance. ## [sc 0.48.1, codec 0.18.7] - 2024-04-30 - Simplified decoding of small numbers (i64/u64). diff --git a/Cargo.lock b/Cargo.lock index 4c2fff583b..d3eae4e638 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -1821,7 +1821,7 @@ checksum = "b59072fa0624b55ae5ae3fa6bfa91515bbeb4ac440214bc4a509e2c8806d6e9f" [[package]] name = "multiversx-price-aggregator-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "arrayvec", "getrandom 0.2.14", @@ -1842,7 +1842,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags 2.4.2", "hex-literal", @@ -1853,7 +1853,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -1862,7 +1862,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -1872,7 +1872,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -1883,7 +1883,7 @@ dependencies = [ [[package]] name = "multiversx-sc-meta" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "clap", "colored", @@ -1909,14 +1909,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-scenario" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "base64 0.21.7", "bech32", @@ -1942,7 +1942,7 @@ dependencies = [ [[package]] name = "multiversx-sc-snippets" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "base64 0.21.7", "env_logger", @@ -1957,14 +1957,14 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sdk" -version = "0.4.0-alpha.4" +version = "0.4.0" dependencies = [ "anyhow", "base64 0.21.7", @@ -1988,7 +1988,7 @@ dependencies = [ [[package]] name = "multiversx-wegld-swap-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", "multiversx-sc-modules", diff --git a/contracts/benchmarks/large-storage/Cargo.toml b/contracts/benchmarks/large-storage/Cargo.toml index 238cfc0286..dcc5cdf376 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/large-storage/meta/Cargo.toml b/contracts/benchmarks/large-storage/meta/Cargo.toml index 5ab3b3f4ea..7bcc6749aa 100644 --- a/contracts/benchmarks/large-storage/meta/Cargo.toml +++ b/contracts/benchmarks/large-storage/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/large-storage/wasm/Cargo.toml b/contracts/benchmarks/large-storage/wasm/Cargo.toml index ee513468bf..fde48c533f 100644 --- a/contracts/benchmarks/large-storage/wasm/Cargo.toml +++ b/contracts/benchmarks/large-storage/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/benchmark-common/Cargo.toml b/contracts/benchmarks/mappers/benchmark-common/Cargo.toml index 3143c4c059..e040a59306 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/linked-list-repeat/Cargo.toml b/contracts/benchmarks/mappers/linked-list-repeat/Cargo.toml index 390e9c729a..f7ed9b60c4 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 f719432fba..7686ad097b 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/linked-list-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml index 5218df0664..cf4d28c279 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/map-repeat/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/Cargo.toml index 53a9c8cb30..19dd700f43 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml index b8d61cf474..e2f453869c 100644 --- a/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/map-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml index 6153f35d8f..e0cbbf5bb3 100644 --- a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/queue-repeat/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/Cargo.toml index 7eae0e8177..0ef6135592 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml index ef5d420e27..ac96744a95 100644 --- a/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/queue-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml index 2ebeda1f2e..c878a5a4f1 100644 --- a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/set-repeat/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/Cargo.toml index ebf2958e90..20121d24af 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml index 269df5be03..1be790193f 100644 --- a/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/set-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml index aa37b34c3e..ea33bd0bf5 100644 --- a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 34e3426254..075eb30b8e 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 8487ef015b..e693e7e883 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/single-value-repeat/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml index 3ac2ae3b96..e74af019ff 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/mappers/vec-repeat/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/Cargo.toml index 8c7b4a9d8e..97b51e3a6f 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/scenario" diff --git a/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml index fc6c8ebd33..8a7d769dc1 100644 --- a/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/mappers/vec-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml index 8779eaa521..540da31865 100644 --- a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/send-tx-repeat/Cargo.toml b/contracts/benchmarks/send-tx-repeat/Cargo.toml index 440bfa0946..326bafd16e 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml b/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml index fb2c8f50cf..78a283168b 100644 --- a/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/send-tx-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml index f42955ebbd..d25bec0cbf 100644 --- a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/str-repeat/Cargo.toml b/contracts/benchmarks/str-repeat/Cargo.toml index 0d46d631dd..6fe33bc9df 100644 --- a/contracts/benchmarks/str-repeat/Cargo.toml +++ b/contracts/benchmarks/str-repeat/Cargo.toml @@ -12,10 +12,10 @@ path = "src/str_repeat.rs" managed-buffer-builder-cached = ["multiversx-sc/managed-buffer-builder-cached"] [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" diff --git a/contracts/benchmarks/str-repeat/meta/Cargo.toml b/contracts/benchmarks/str-repeat/meta/Cargo.toml index dbf074583d..160503d84f 100644 --- a/contracts/benchmarks/str-repeat/meta/Cargo.toml +++ b/contracts/benchmarks/str-repeat/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml index b840dd0a3b..760ea14af5 100644 --- a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml +++ b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml index 53db7f0b4a..f91e231e9b 100644 --- a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml +++ b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.toml @@ -26,7 +26,7 @@ path = ".." features = ["managed-buffer-builder-cached"] [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/benchmarks/str-repeat/wasm/Cargo.toml b/contracts/benchmarks/str-repeat/wasm/Cargo.toml index fa54772480..c6b036ae15 100644 --- a/contracts/benchmarks/str-repeat/wasm/Cargo.toml +++ b/contracts/benchmarks/str-repeat/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/core/price-aggregator/Cargo.toml b/contracts/core/price-aggregator/Cargo.toml index aad9c4ce9c..290806c1f2 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.49.0-alpha.4" +version = "0.49.0" authors = [ "Claudiu-Marcel Bruda ", "MultiversX ", @@ -19,15 +19,15 @@ edition = "2021" path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" [dependencies] diff --git a/contracts/core/price-aggregator/meta/Cargo.toml b/contracts/core/price-aggregator/meta/Cargo.toml index 5b01eac017..b3ee5b7f88 100644 --- a/contracts/core/price-aggregator/meta/Cargo.toml +++ b/contracts/core/price-aggregator/meta/Cargo.toml @@ -8,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/core/price-aggregator/wasm/Cargo.toml b/contracts/core/price-aggregator/wasm/Cargo.toml index c4d502a4ca..11dc27513d 100644 --- a/contracts/core/price-aggregator/wasm/Cargo.toml +++ b/contracts/core/price-aggregator/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/core/wegld-swap/Cargo.toml b/contracts/core/wegld-swap/Cargo.toml index d61623cc64..cb7582ec0a 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.49.0-alpha.4" +version = "0.49.0" authors = [ "Dorin Iancu ", @@ -20,13 +20,13 @@ edition = "2021" path = "src/wegld.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" diff --git a/contracts/core/wegld-swap/meta/Cargo.toml b/contracts/core/wegld-swap/meta/Cargo.toml index 2956444fc8..d6d2b99c18 100644 --- a/contracts/core/wegld-swap/meta/Cargo.toml +++ b/contracts/core/wegld-swap/meta/Cargo.toml @@ -11,10 +11,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/core/wegld-swap/wasm/Cargo.toml b/contracts/core/wegld-swap/wasm/Cargo.toml index f21e9e13cb..bd89039edf 100644 --- a/contracts/core/wegld-swap/wasm/Cargo.toml +++ b/contracts/core/wegld-swap/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/adder/Cargo.toml b/contracts/examples/adder/Cargo.toml index 489904d6d6..370ddbcc94 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" diff --git a/contracts/examples/adder/interact/Cargo.toml b/contracts/examples/adder/interact/Cargo.toml index 3cd72a5e2b..ead28c7bb3 100644 --- a/contracts/examples/adder/interact/Cargo.toml +++ b/contracts/examples/adder/interact/Cargo.toml @@ -18,5 +18,5 @@ toml = "0.8.6" path = ".." [dependencies.multiversx-sc-snippets] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/snippets" diff --git a/contracts/examples/adder/meta/Cargo.toml b/contracts/examples/adder/meta/Cargo.toml index 3e56ed66d7..c4a84b1d55 100644 --- a/contracts/examples/adder/meta/Cargo.toml +++ b/contracts/examples/adder/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/adder/wasm/Cargo.toml b/contracts/examples/adder/wasm/Cargo.toml index a759e0edf8..aafd60afd7 100644 --- a/contracts/examples/adder/wasm/Cargo.toml +++ b/contracts/examples/adder/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/bonding-curve-contract/Cargo.toml b/contracts/examples/bonding-curve-contract/Cargo.toml index 4a9d90bddc..87585ce189 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" diff --git a/contracts/examples/bonding-curve-contract/meta/Cargo.toml b/contracts/examples/bonding-curve-contract/meta/Cargo.toml index dbcdbc57e0..a8d9d6f565 100644 --- a/contracts/examples/bonding-curve-contract/meta/Cargo.toml +++ b/contracts/examples/bonding-curve-contract/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/bonding-curve-contract/wasm/Cargo.toml b/contracts/examples/bonding-curve-contract/wasm/Cargo.toml index bf4f7f2d5b..0490cd4242 100644 --- a/contracts/examples/bonding-curve-contract/wasm/Cargo.toml +++ b/contracts/examples/bonding-curve-contract/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/check-pause/Cargo.toml b/contracts/examples/check-pause/Cargo.toml index 355224e160..8eae83200f 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" [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" diff --git a/contracts/examples/check-pause/meta/Cargo.toml b/contracts/examples/check-pause/meta/Cargo.toml index 21465dc7ed..444b267995 100644 --- a/contracts/examples/check-pause/meta/Cargo.toml +++ b/contracts/examples/check-pause/meta/Cargo.toml @@ -9,6 +9,6 @@ authors = ["Alin Cruceat "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/check-pause/wasm/Cargo.toml b/contracts/examples/check-pause/wasm/Cargo.toml index 0602c3b653..1fbff49573 100644 --- a/contracts/examples/check-pause/wasm/Cargo.toml +++ b/contracts/examples/check-pause/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crowdfunding-esdt/Cargo.toml b/contracts/examples/crowdfunding-esdt/Cargo.toml index 498b1999b6..ddacb5ea88 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" [dev-dependencies] diff --git a/contracts/examples/crowdfunding-esdt/meta/Cargo.toml b/contracts/examples/crowdfunding-esdt/meta/Cargo.toml index 191c2d0a28..fd8c223775 100644 --- a/contracts/examples/crowdfunding-esdt/meta/Cargo.toml +++ b/contracts/examples/crowdfunding-esdt/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml b/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml index 93c39e692f..0a40e452fc 100644 --- a/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml +++ b/contracts/examples/crowdfunding-esdt/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-bubbles/Cargo.toml b/contracts/examples/crypto-bubbles/Cargo.toml index 6e841be6b9..06d8e5bf0e 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" diff --git a/contracts/examples/crypto-bubbles/meta/Cargo.toml b/contracts/examples/crypto-bubbles/meta/Cargo.toml index 60b167f206..6b38860ee5 100644 --- a/contracts/examples/crypto-bubbles/meta/Cargo.toml +++ b/contracts/examples/crypto-bubbles/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-bubbles/wasm/Cargo.toml b/contracts/examples/crypto-bubbles/wasm/Cargo.toml index cbfe399baf..67549b7a21 100644 --- a/contracts/examples/crypto-bubbles/wasm/Cargo.toml +++ b/contracts/examples/crypto-bubbles/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 d83a9fdd5d..4eb640e54d 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.49.0-alpha.4" +version = "0.49.0" 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 bfab4a12d7..4bae32ba87 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/base" diff --git a/contracts/examples/crypto-kitties/kitty-auction/Cargo.toml b/contracts/examples/crypto-kitties/kitty-auction/Cargo.toml index ce7971579f..261d16405e 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 938f83ffd6..f9f7905ded 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-auction/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml index 5234956e51..85a3695084 100644 --- a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-kitties/kitty-genetic-alg/Cargo.toml b/contracts/examples/crypto-kitties/kitty-genetic-alg/Cargo.toml index 3027dad875..927d5dddb8 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 c0e781f92f..e2a77bc1b2 100644 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false 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 f4a92c4b71..16081ba43d 100644 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-kitties/kitty-ownership/Cargo.toml b/contracts/examples/crypto-kitties/kitty-ownership/Cargo.toml index 642afa1862..051e4a41fe 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 8937e968d2..9352e5ca50 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/meta/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-ownership/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml index def5af05df..c8ec0db96b 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml +++ b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/crypto-zombies/Cargo.toml b/contracts/examples/crypto-zombies/Cargo.toml index 3888d9ecb7..f0df60381e 100644 --- a/contracts/examples/crypto-zombies/Cargo.toml +++ b/contracts/examples/crypto-zombies/Cargo.toml @@ -9,11 +9,11 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" [dependencies.kitty] diff --git a/contracts/examples/crypto-zombies/meta/Cargo.toml b/contracts/examples/crypto-zombies/meta/Cargo.toml index 2d94d2d074..4cda0e49a2 100644 --- a/contracts/examples/crypto-zombies/meta/Cargo.toml +++ b/contracts/examples/crypto-zombies/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/crypto-zombies/wasm/Cargo.toml b/contracts/examples/crypto-zombies/wasm/Cargo.toml index d99df32433..e434220b42 100644 --- a/contracts/examples/crypto-zombies/wasm/Cargo.toml +++ b/contracts/examples/crypto-zombies/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/digital-cash/Cargo.toml b/contracts/examples/digital-cash/Cargo.toml index 05df36f381..5acc43a29e 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" diff --git a/contracts/examples/digital-cash/meta/Cargo.toml b/contracts/examples/digital-cash/meta/Cargo.toml index a54b5f1ea3..2109e5f03f 100644 --- a/contracts/examples/digital-cash/meta/Cargo.toml +++ b/contracts/examples/digital-cash/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/digital-cash/wasm/Cargo.toml b/contracts/examples/digital-cash/wasm/Cargo.toml index fd23cf19e3..260968204c 100644 --- a/contracts/examples/digital-cash/wasm/Cargo.toml +++ b/contracts/examples/digital-cash/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/empty/Cargo.toml b/contracts/examples/empty/Cargo.toml index ff22118a94..bc4fd42421 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" [dev-dependencies] diff --git a/contracts/examples/empty/meta/Cargo.toml b/contracts/examples/empty/meta/Cargo.toml index 80e2c84bdf..e41ae94b75 100644 --- a/contracts/examples/empty/meta/Cargo.toml +++ b/contracts/examples/empty/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/empty/wasm/Cargo.toml b/contracts/examples/empty/wasm/Cargo.toml index 61cf8db541..fe28578b11 100644 --- a/contracts/examples/empty/wasm/Cargo.toml +++ b/contracts/examples/empty/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 10ef50f36c..cb6f14b852 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 a40832325b..4cbd3d2966 100644 --- a/contracts/examples/esdt-transfer-with-fee/meta/Cargo.toml +++ b/contracts/examples/esdt-transfer-with-fee/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml index 07cb085e0f..b69e4d3701 100644 --- a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml +++ b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/factorial/Cargo.toml b/contracts/examples/factorial/Cargo.toml index 49724f1760..deeb24230a 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" diff --git a/contracts/examples/factorial/meta/Cargo.toml b/contracts/examples/factorial/meta/Cargo.toml index 2a5a7f7a8f..d3030adfea 100644 --- a/contracts/examples/factorial/meta/Cargo.toml +++ b/contracts/examples/factorial/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/factorial/wasm/Cargo.toml b/contracts/examples/factorial/wasm/Cargo.toml index 4625a90cc9..80d3ca57a9 100644 --- a/contracts/examples/factorial/wasm/Cargo.toml +++ b/contracts/examples/factorial/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/fractional-nfts/Cargo.toml b/contracts/examples/fractional-nfts/Cargo.toml index ec60d9d32a..85f79c2d3a 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" diff --git a/contracts/examples/fractional-nfts/meta/Cargo.toml b/contracts/examples/fractional-nfts/meta/Cargo.toml index d7a32ed9b1..36b7ab580a 100644 --- a/contracts/examples/fractional-nfts/meta/Cargo.toml +++ b/contracts/examples/fractional-nfts/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/fractional-nfts/wasm/Cargo.toml b/contracts/examples/fractional-nfts/wasm/Cargo.toml index 47c9c4a88c..892c0af17c 100644 --- a/contracts/examples/fractional-nfts/wasm/Cargo.toml +++ b/contracts/examples/fractional-nfts/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/lottery-esdt/Cargo.toml b/contracts/examples/lottery-esdt/Cargo.toml index c4d7d29cd3..0efa27bad0 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" diff --git a/contracts/examples/lottery-esdt/meta/Cargo.toml b/contracts/examples/lottery-esdt/meta/Cargo.toml index b2cd28df5c..c27259bfc9 100644 --- a/contracts/examples/lottery-esdt/meta/Cargo.toml +++ b/contracts/examples/lottery-esdt/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/lottery-esdt/wasm/Cargo.toml b/contracts/examples/lottery-esdt/wasm/Cargo.toml index 5da7483f04..aa99f1ba8b 100644 --- a/contracts/examples/lottery-esdt/wasm/Cargo.toml +++ b/contracts/examples/lottery-esdt/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/multisig/Cargo.toml b/contracts/examples/multisig/Cargo.toml index 035057ec58..0965cf8e44 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" [dev-dependencies.adder] @@ -27,7 +27,7 @@ path = "../adder" path = "../factorial" [dev-dependencies.multiversx-wegld-swap-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../core/wegld-swap" [dev-dependencies] diff --git a/contracts/examples/multisig/interact/Cargo.toml b/contracts/examples/multisig/interact/Cargo.toml index 32869be20c..8e332e4b35 100644 --- a/contracts/examples/multisig/interact/Cargo.toml +++ b/contracts/examples/multisig/interact/Cargo.toml @@ -18,13 +18,13 @@ toml = "0.8.6" path = ".." [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../contracts/modules" [dependencies.multiversx-sc-snippets] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/snippets" [dependencies.multiversx-sc-scenario] -version = "=0.49.0-alpha.4" +version = "=0.49.0" path = "../../../../framework/scenario" diff --git a/contracts/examples/multisig/meta/Cargo.toml b/contracts/examples/multisig/meta/Cargo.toml index 0e29c29265..b5a20507cb 100644 --- a/contracts/examples/multisig/meta/Cargo.toml +++ b/contracts/examples/multisig/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/multisig/wasm-multisig-full/Cargo.toml b/contracts/examples/multisig/wasm-multisig-full/Cargo.toml index a2d98375aa..3496533206 100644 --- a/contracts/examples/multisig/wasm-multisig-full/Cargo.toml +++ b/contracts/examples/multisig/wasm-multisig-full/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 2c6a48b470..6bca11ea28 100644 --- a/contracts/examples/multisig/wasm-multisig-view/Cargo.toml +++ b/contracts/examples/multisig/wasm-multisig-view/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/multisig/wasm/Cargo.toml b/contracts/examples/multisig/wasm/Cargo.toml index f2202ffdb1..605ab510d2 100644 --- a/contracts/examples/multisig/wasm/Cargo.toml +++ b/contracts/examples/multisig/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-minter/Cargo.toml b/contracts/examples/nft-minter/Cargo.toml index eb2ec96156..338861c1c6 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-minter/meta/Cargo.toml b/contracts/examples/nft-minter/meta/Cargo.toml index cee7821359..1f9e5c3426 100644 --- a/contracts/examples/nft-minter/meta/Cargo.toml +++ b/contracts/examples/nft-minter/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-minter/wasm/Cargo.toml b/contracts/examples/nft-minter/wasm/Cargo.toml index 241a4215e2..0027925f16 100644 --- a/contracts/examples/nft-minter/wasm/Cargo.toml +++ b/contracts/examples/nft-minter/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-storage-prepay/Cargo.toml b/contracts/examples/nft-storage-prepay/Cargo.toml index 136281df96..1f84d968f1 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-storage-prepay/meta/Cargo.toml b/contracts/examples/nft-storage-prepay/meta/Cargo.toml index c1ddf2adc1..d5bc2477af 100644 --- a/contracts/examples/nft-storage-prepay/meta/Cargo.toml +++ b/contracts/examples/nft-storage-prepay/meta/Cargo.toml @@ -11,6 +11,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-storage-prepay/wasm/Cargo.toml b/contracts/examples/nft-storage-prepay/wasm/Cargo.toml index 99a5c3c1a6..4bb9934697 100644 --- a/contracts/examples/nft-storage-prepay/wasm/Cargo.toml +++ b/contracts/examples/nft-storage-prepay/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/nft-subscription/Cargo.toml b/contracts/examples/nft-subscription/Cargo.toml index be7a39917e..68d04d57a0 100644 --- a/contracts/examples/nft-subscription/Cargo.toml +++ b/contracts/examples/nft-subscription/Cargo.toml @@ -9,13 +9,13 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" diff --git a/contracts/examples/nft-subscription/meta/Cargo.toml b/contracts/examples/nft-subscription/meta/Cargo.toml index d122df52df..b338b27089 100644 --- a/contracts/examples/nft-subscription/meta/Cargo.toml +++ b/contracts/examples/nft-subscription/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/nft-subscription/wasm/Cargo.toml b/contracts/examples/nft-subscription/wasm/Cargo.toml index 532cc400e4..564dd5b645 100644 --- a/contracts/examples/nft-subscription/wasm/Cargo.toml +++ b/contracts/examples/nft-subscription/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/order-book/factory/Cargo.toml b/contracts/examples/order-book/factory/Cargo.toml index 9a4978df8a..9d2461e39a 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/scenario" diff --git a/contracts/examples/order-book/factory/meta/Cargo.toml b/contracts/examples/order-book/factory/meta/Cargo.toml index 3518de30d2..c218e0d100 100644 --- a/contracts/examples/order-book/factory/meta/Cargo.toml +++ b/contracts/examples/order-book/factory/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/order-book/factory/wasm/Cargo.toml b/contracts/examples/order-book/factory/wasm/Cargo.toml index 1ee94f9d8e..bfc68cb87e 100644 --- a/contracts/examples/order-book/factory/wasm/Cargo.toml +++ b/contracts/examples/order-book/factory/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/order-book/pair/Cargo.toml b/contracts/examples/order-book/pair/Cargo.toml index a93917179a..c888a2b68b 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/scenario" diff --git a/contracts/examples/order-book/pair/meta/Cargo.toml b/contracts/examples/order-book/pair/meta/Cargo.toml index 6f4ba52f4e..916eeb5b35 100644 --- a/contracts/examples/order-book/pair/meta/Cargo.toml +++ b/contracts/examples/order-book/pair/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/examples/order-book/pair/wasm/Cargo.toml b/contracts/examples/order-book/pair/wasm/Cargo.toml index dd343a9dfc..dbb8cf2ffa 100644 --- a/contracts/examples/order-book/pair/wasm/Cargo.toml +++ b/contracts/examples/order-book/pair/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/ping-pong-egld/Cargo.toml b/contracts/examples/ping-pong-egld/Cargo.toml index fc86298452..9b932eeb32 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" diff --git a/contracts/examples/ping-pong-egld/meta/Cargo.toml b/contracts/examples/ping-pong-egld/meta/Cargo.toml index a8bc467391..0d90a922fa 100644 --- a/contracts/examples/ping-pong-egld/meta/Cargo.toml +++ b/contracts/examples/ping-pong-egld/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/ping-pong-egld/wasm/Cargo.toml b/contracts/examples/ping-pong-egld/wasm/Cargo.toml index 8438778f1b..3fc4f94d78 100644 --- a/contracts/examples/ping-pong-egld/wasm/Cargo.toml +++ b/contracts/examples/ping-pong-egld/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/proxy-pause/Cargo.toml b/contracts/examples/proxy-pause/Cargo.toml index 382dfd9f27..ebb7a49d11 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 4be34a41ba..8e8fc44c7f 100644 --- a/contracts/examples/proxy-pause/meta/Cargo.toml +++ b/contracts/examples/proxy-pause/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = [ "you",] path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/proxy-pause/wasm/Cargo.toml b/contracts/examples/proxy-pause/wasm/Cargo.toml index 939f828e70..6cfffd232a 100644 --- a/contracts/examples/proxy-pause/wasm/Cargo.toml +++ b/contracts/examples/proxy-pause/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/rewards-distribution/Cargo.toml b/contracts/examples/rewards-distribution/Cargo.toml index d518ea5586..dad96385d1 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" diff --git a/contracts/examples/rewards-distribution/meta/Cargo.toml b/contracts/examples/rewards-distribution/meta/Cargo.toml index bfddb43d6f..254c15933f 100644 --- a/contracts/examples/rewards-distribution/meta/Cargo.toml +++ b/contracts/examples/rewards-distribution/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = ["Claudiu-Marcel Bruda "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/rewards-distribution/wasm/Cargo.toml b/contracts/examples/rewards-distribution/wasm/Cargo.toml index a62cac8525..9f562d7cac 100644 --- a/contracts/examples/rewards-distribution/wasm/Cargo.toml +++ b/contracts/examples/rewards-distribution/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/seed-nft-minter/Cargo.toml b/contracts/examples/seed-nft-minter/Cargo.toml index a57db6b6dc..2d7df44815 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" diff --git a/contracts/examples/seed-nft-minter/meta/Cargo.toml b/contracts/examples/seed-nft-minter/meta/Cargo.toml index af481426af..a25a40890d 100644 --- a/contracts/examples/seed-nft-minter/meta/Cargo.toml +++ b/contracts/examples/seed-nft-minter/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = ["Claudiu-Marcel Bruda "] path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/seed-nft-minter/wasm/Cargo.toml b/contracts/examples/seed-nft-minter/wasm/Cargo.toml index e6a61820c9..7b224ce48c 100644 --- a/contracts/examples/seed-nft-minter/wasm/Cargo.toml +++ b/contracts/examples/seed-nft-minter/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/examples/token-release/Cargo.toml b/contracts/examples/token-release/Cargo.toml index 7c7c810787..1433b850db 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" diff --git a/contracts/examples/token-release/meta/Cargo.toml b/contracts/examples/token-release/meta/Cargo.toml index 68be5330b2..990c33fa6f 100644 --- a/contracts/examples/token-release/meta/Cargo.toml +++ b/contracts/examples/token-release/meta/Cargo.toml @@ -10,7 +10,7 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/examples/token-release/wasm/Cargo.toml b/contracts/examples/token-release/wasm/Cargo.toml index bce00fce24..3a3f04c9df 100644 --- a/contracts/examples/token-release/wasm/Cargo.toml +++ b/contracts/examples/token-release/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/abi-tester/Cargo.toml b/contracts/feature-tests/abi-tester/Cargo.toml index 714c488750..a2f0a34982 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" [dev-dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 77d8423bfb..c45d388a93 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.49.0-alpha.4" + "version": "0.49.0" } }, "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 f678f60c87..10926621d5 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.49.0-alpha.4" + "version": "0.49.0" } }, "docs": [ diff --git a/contracts/feature-tests/abi-tester/meta/Cargo.toml b/contracts/feature-tests/abi-tester/meta/Cargo.toml index 7edae725e5..2d1614552c 100644 --- a/contracts/feature-tests/abi-tester/meta/Cargo.toml +++ b/contracts/feature-tests/abi-tester/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false 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 963ef8f870..d8896c6b95 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 f5700ad92e..953b746080 100644 --- a/contracts/feature-tests/abi-tester/wasm/Cargo.toml +++ b/contracts/feature-tests/abi-tester/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/Cargo.toml b/contracts/feature-tests/alloc-features/Cargo.toml index 3dd34d56a7..a6b7570493 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 3ed3b16104..39e2e2bbb5 100644 --- a/contracts/feature-tests/alloc-features/meta/Cargo.toml +++ b/contracts/feature-tests/alloc-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml index 130a20cf6e..731b271739 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml index aa66bcb1cb..48125b5285 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/alloc-features/wasm/Cargo.toml b/contracts/feature-tests/alloc-features/wasm/Cargo.toml index 0a8f7e641a..cc94610a76 100644 --- a/contracts/feature-tests/alloc-features/wasm/Cargo.toml +++ b/contracts/feature-tests/alloc-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/basic-features/Cargo.toml b/contracts/feature-tests/basic-features/Cargo.toml index f3633e8bd1..d38410d6b9 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 ef0209cab4..b419907f30 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.8.6" path = ".." [dependencies.multiversx-sc-snippets] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/snippets" diff --git a/contracts/feature-tests/basic-features/meta/Cargo.toml b/contracts/feature-tests/basic-features/meta/Cargo.toml index 670da00dbd..e3ef8d92db 100644 --- a/contracts/feature-tests/basic-features/meta/Cargo.toml +++ b/contracts/feature-tests/basic-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false 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 7d1cc921f4..484bbd9eab 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 cf42ff107a..e8f2e89165 100644 --- a/contracts/feature-tests/basic-features/wasm/Cargo.toml +++ b/contracts/feature-tests/basic-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = true path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 ae27c92b74..9df1290f46 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 603f584ece..86e89a8b3e 100644 --- a/contracts/feature-tests/big-float-features/meta/Cargo.toml +++ b/contracts/feature-tests/big-float-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/big-float-features/wasm/Cargo.toml b/contracts/feature-tests/big-float-features/wasm/Cargo.toml index 13c3fb8bdc..011e22c44a 100644 --- a/contracts/feature-tests/big-float-features/wasm/Cargo.toml +++ b/contracts/feature-tests/big-float-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/Cargo.toml b/contracts/feature-tests/composability/Cargo.toml index 5d372b4128..a046d2fc04 100644 --- a/contracts/feature-tests/composability/Cargo.toml +++ b/contracts/feature-tests/composability/Cargo.toml @@ -36,9 +36,9 @@ path = "recursive-caller" path = "vault" [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 58c9d24215..b3b2c9f699 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 3c33b8d81d..064dbaccaf 100644 --- a/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/builtin-func-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false 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 63dbe95fcb..5cf4535ffd 100644 --- a/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 63b7e46395..721c6184f3 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 49c6e25659..7af866cd4e 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 @@ -9,10 +9,10 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 ccf10c89ad..4abad84c18 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../../framework/meta" default-features = false 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 57c15b6fe2..70121cf1c4 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 89fe5071b8..57e6ed92c9 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 8788acf4ac..c09425c97d 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../../framework/meta" default-features = false 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 aa93fcf9d7..676da35aa5 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 c90b451b29..c5e600ae68 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 a084afe56c..6fc29bfa35 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 a1b68d9807..0d2a3c28e2 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../../framework/meta" default-features = false 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 b9678d7c3e..55541c2438 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 7fbc51b49a..e590beb2ce 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 @@ -9,10 +9,10 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 8e9105a3ad..eaaffc0f52 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,10 +8,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../../framework/meta" default-features = false 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 62fb2dc77c..708e761902 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/forwarder-legacy/Cargo.toml b/contracts/feature-tests/composability/forwarder-legacy/Cargo.toml index 8d985f30c1..ab4e3ef6fc 100644 --- a/contracts/feature-tests/composability/forwarder-legacy/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-legacy/Cargo.toml @@ -12,10 +12,10 @@ path = "src/forwarder_legacy_main.rs" path = "../vault" [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/forwarder-legacy/meta/Cargo.toml b/contracts/feature-tests/composability/forwarder-legacy/meta/Cargo.toml index de74469420..c10276be04 100644 --- a/contracts/feature-tests/composability/forwarder-legacy/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-legacy/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/forwarder-legacy/wasm/Cargo.toml b/contracts/feature-tests/composability/forwarder-legacy/wasm/Cargo.toml index 3ce5ef1de3..6a3b6a7db6 100644 --- a/contracts/feature-tests/composability/forwarder-legacy/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-legacy/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 accf0696e9..aff16f1726 100644 --- a/contracts/feature-tests/composability/forwarder-queue/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/Cargo.toml @@ -9,14 +9,14 @@ publish = false path = "src/forwarder_queue.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" optional = true [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 6347cdc858..87460aa1f3 100644 --- a/contracts/feature-tests/composability/forwarder-queue/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false 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 ea15c56706..738ff2254d 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 ae6dab9b35..6e68841010 100644 --- a/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 98838bf0e4..f7713252f0 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 221d44e4eb..cdba5af76c 100644 --- a/contracts/feature-tests/composability/forwarder-raw/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-raw/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false 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 208dcd4d05..628a019ba9 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 5b4c266c48..4df2025d6e 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 63cfbfed3b..2ada534753 100644 --- a/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/forwarder/Cargo.toml b/contracts/feature-tests/composability/forwarder/Cargo.toml index 6790cc028c..c7c2f34df3 100644 --- a/contracts/feature-tests/composability/forwarder/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/Cargo.toml @@ -9,10 +9,10 @@ publish = false path = "src/forwarder_main.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/forwarder/meta/Cargo.toml b/contracts/feature-tests/composability/forwarder/meta/Cargo.toml index a6b2ad50fa..28d02e3a90 100644 --- a/contracts/feature-tests/composability/forwarder/meta/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml b/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml index 2395849caf..f4afdbd6bc 100644 --- a/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/forwarder/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/interact/Cargo.toml b/contracts/feature-tests/composability/interact/Cargo.toml index 97cd3f93f5..cacf68eb1d 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../contracts/modules" [dependencies.multiversx-sc-snippets] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 b969ae9c8b..e5022c4f59 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 d9aa379fde..e30d729827 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,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false 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 89dfb08625..5aebe2081a 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 d8f4c2ed7e..77cc9ef833 100644 --- a/contracts/feature-tests/composability/promises-features/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = "src/promises_main.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" diff --git a/contracts/feature-tests/composability/promises-features/meta/Cargo.toml b/contracts/feature-tests/composability/promises-features/meta/Cargo.toml index 16159a0190..28c3c0b2c9 100644 --- a/contracts/feature-tests/composability/promises-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml b/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml index cdb0aa0d3e..ed1a31a561 100644 --- a/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/promises-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 6a9fcceaaf..bc21b32a39 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.4.1" [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 02488e11e3..b38a0f5474 100644 --- a/contracts/feature-tests/composability/proxy-test-first/meta/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-first/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false 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 88a44946b0..9ae8feb646 100644 --- a/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 d3d878969d..c9ae4da5f8 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 dcfd56990b..2ca6853d31 100644 --- a/contracts/feature-tests/composability/proxy-test-second/meta/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-second/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false 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 b93eb8a20f..f5f1de43bf 100644 --- a/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 bd7b5fa4af..a85f718ce4 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 4b2f4f93b8..0c59d660b1 100644 --- a/contracts/feature-tests/composability/recursive-caller/meta/Cargo.toml +++ b/contracts/feature-tests/composability/recursive-caller/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml index d12fc3c8c6..7f026d2bf6 100644 --- a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 9f1da71c0b..8d379cdaed 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dependencies.multiversx-sc-modules] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../contracts/modules" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 3100fcd04c..f6823d80da 100644 --- a/contracts/feature-tests/composability/transfer-role-features/meta/Cargo.toml +++ b/contracts/feature-tests/composability/transfer-role-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false 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 6a49bd9d5c..9c071c6f48 100644 --- a/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/vault/Cargo.toml b/contracts/feature-tests/composability/vault/Cargo.toml index 58201feda6..b2e54fbf1a 100644 --- a/contracts/feature-tests/composability/vault/Cargo.toml +++ b/contracts/feature-tests/composability/vault/Cargo.toml @@ -10,9 +10,9 @@ path = "src/vault.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/scenario" diff --git a/contracts/feature-tests/composability/vault/meta/Cargo.toml b/contracts/feature-tests/composability/vault/meta/Cargo.toml index e7d99c51cc..3cb6d85611 100644 --- a/contracts/feature-tests/composability/vault/meta/Cargo.toml +++ b/contracts/feature-tests/composability/vault/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false 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 9d3799aedb..ce209e8861 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml index d0e8dd308b..c09b60d9bd 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 7b8ee74e2c..5556a14d7c 100644 --- a/contracts/feature-tests/composability/vault/wasm/Cargo.toml +++ b/contracts/feature-tests/composability/vault/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 f3e9127598..58f8eb9a66 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 fdee90fda9..c964676fcc 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false 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 20285a8b66..846a20893b 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 630c24b5f2..3c1fd04452 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 64f519f9a3..3f010b8d56 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false 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 b4b0a71b4c..cc9804afef 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 27c5f2d2a6..5a35bd1ac8 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 d662e3f8e9..c95b91c9c8 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false 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 0af2d54c37..e993861b13 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 1566019c49..6e245b8603 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 8cad0e03b2..917bcfdf75 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false 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 6299d90bcb..1f64f8f90b 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 8d12e823b9..e622226f95 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 0db234389f..13356ab1e2 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc20/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false 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 060cf6a1a1..baf2d29699 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 b0aff72a5c..54d2d63fcc 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 05ee5b504e..df452bd789 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/meta/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc721/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false 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 c18d25cd9b..c248eadc43 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.toml +++ b/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/wasm-adapter" [workspace] 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 3995505b5a..abea523dd1 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.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" features = ["alloc"] [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 81e598d14e..1edc440467 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,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/meta" default-features = false 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 0bcd0316c2..5538ad6642 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/esdt-system-sc-mock/Cargo.toml b/contracts/feature-tests/esdt-system-sc-mock/Cargo.toml index 8e8b693ebe..6414a39d8c 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 425d3ee8eb..f53e18476b 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/meta/Cargo.toml +++ b/contracts/feature-tests/esdt-system-sc-mock/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false 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 690f09686b..9ab183ed3f 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.toml +++ b/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/exchange-features/Cargo.toml b/contracts/feature-tests/exchange-features/Cargo.toml index 2963251bb9..8d21d6320b 100644 --- a/contracts/feature-tests/exchange-features/Cargo.toml +++ b/contracts/feature-tests/exchange-features/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/exchange_features.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/exchange-features/meta/Cargo.toml b/contracts/feature-tests/exchange-features/meta/Cargo.toml index a5bb2c339e..539f20a16a 100644 --- a/contracts/feature-tests/exchange-features/meta/Cargo.toml +++ b/contracts/feature-tests/exchange-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/exchange-features/wasm/Cargo.toml b/contracts/feature-tests/exchange-features/wasm/Cargo.toml index 9aed886551..415f4440cb 100644 --- a/contracts/feature-tests/exchange-features/wasm/Cargo.toml +++ b/contracts/feature-tests/exchange-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 3ae3030b5d..6511a95524 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 1dbe41b175..03b89e8914 100644 --- a/contracts/feature-tests/formatted-message-features/meta/Cargo.toml +++ b/contracts/feature-tests/formatted-message-features/meta/Cargo.toml @@ -11,6 +11,6 @@ authors = [ "you",] path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml b/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml index 8230ed884b..3b59f56fac 100644 --- a/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml +++ b/contracts/feature-tests/formatted-message-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/managed-map-features/Cargo.toml b/contracts/feature-tests/managed-map-features/Cargo.toml index 552cbb84b0..f52eefc261 100644 --- a/contracts/feature-tests/managed-map-features/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/Cargo.toml @@ -9,11 +9,11 @@ publish = false path = "src/mmap_features.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 91c7eb646a..ddd71f8b4e 100644 --- a/contracts/feature-tests/managed-map-features/meta/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/managed-map-features/wasm/Cargo.toml b/contracts/feature-tests/managed-map-features/wasm/Cargo.toml index 5762a40856..2124503c5e 100644 --- a/contracts/feature-tests/managed-map-features/wasm/Cargo.toml +++ b/contracts/feature-tests/managed-map-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 213f19e779..2d36eb9bc2 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 866bfa5da1..e3cf62d271 100644 --- a/contracts/feature-tests/multi-contract-features/meta/Cargo.toml +++ b/contracts/feature-tests/multi-contract-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false 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 1f77f836ed..bb41653159 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 f6ebe4edb9..458be4822b 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 @@ -26,7 +26,7 @@ path = ".." features = ["example_feature"] [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 28a8f95c7c..43e72ed5d9 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 ba28d1f0d1..5839b62616 100644 --- a/contracts/feature-tests/multi-contract-features/wasm/Cargo.toml +++ b/contracts/feature-tests/multi-contract-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 11eb995356..608aa93444 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 7e1007837d..c5ffba6f1a 100644 --- a/contracts/feature-tests/panic-message-features/meta/Cargo.toml +++ b/contracts/feature-tests/panic-message-features/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/panic-message-features/wasm/Cargo.toml b/contracts/feature-tests/panic-message-features/wasm/Cargo.toml index 3b0455e096..92951f91d9 100644 --- a/contracts/feature-tests/panic-message-features/wasm/Cargo.toml +++ b/contracts/feature-tests/panic-message-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/payable-features/Cargo.toml b/contracts/feature-tests/payable-features/Cargo.toml index 7973c85f03..d310d91154 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/payable-features/meta/Cargo.toml b/contracts/feature-tests/payable-features/meta/Cargo.toml index bc934da0cf..88c95cb422 100644 --- a/contracts/feature-tests/payable-features/meta/Cargo.toml +++ b/contracts/feature-tests/payable-features/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/payable-features/wasm/Cargo.toml b/contracts/feature-tests/payable-features/wasm/Cargo.toml index 8cd5e49030..0ef022a269 100644 --- a/contracts/feature-tests/payable-features/wasm/Cargo.toml +++ b/contracts/feature-tests/payable-features/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 4f4fb8ba56..3519576de9 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 c84332da38..893542fe1d 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.49.0-alpha.4" +version = "0.49.0" 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 5260217e43..3ca3dc298c 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/meta/Cargo.toml +++ b/contracts/feature-tests/rust-snippets-generator-test/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false 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 13fd970d29..160a3556f0 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.48.1" +// version = "0.49.0" // 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 38946bc17a..200d74fe46 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.toml +++ b/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 aa9942a6d7..41ba45dadf 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.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" features = [ "alloc" ] @@ -17,7 +17,7 @@ path = "../../examples/adder" path = "../../feature-tests/basic-features" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 7e63f066fa..02bfe884d6 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/meta/Cargo.toml +++ b/contracts/feature-tests/rust-testing-framework-tester/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false 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 26a2d8d271..e9abe077df 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.toml +++ b/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/scenario-tester/Cargo.toml b/contracts/feature-tests/scenario-tester/Cargo.toml index 33c6f5cdcc..6e6fe3b9ba 100644 --- a/contracts/feature-tests/scenario-tester/Cargo.toml +++ b/contracts/feature-tests/scenario-tester/Cargo.toml @@ -9,9 +9,9 @@ publish = false path = "src/lib.rs" [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" diff --git a/contracts/feature-tests/scenario-tester/meta/Cargo.toml b/contracts/feature-tests/scenario-tester/meta/Cargo.toml index 2d689e8a13..4737585715 100644 --- a/contracts/feature-tests/scenario-tester/meta/Cargo.toml +++ b/contracts/feature-tests/scenario-tester/meta/Cargo.toml @@ -8,6 +8,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/scenario-tester/wasm/Cargo.toml b/contracts/feature-tests/scenario-tester/wasm/Cargo.toml index fc67b3c6dc..672a7c796c 100644 --- a/contracts/feature-tests/scenario-tester/wasm/Cargo.toml +++ b/contracts/feature-tests/scenario-tester/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/feature-tests/use-module/Cargo.toml b/contracts/feature-tests/use-module/Cargo.toml index 24efcdf34c..a98424a2cf 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.49.0-alpha.4" +version = "0.49.0" path = "../../../contracts/modules" [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/scenario" [dev-dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../framework/meta" diff --git a/contracts/feature-tests/use-module/meta/Cargo.toml b/contracts/feature-tests/use-module/meta/Cargo.toml index bd6cec3fee..f98bb6d842 100644 --- a/contracts/feature-tests/use-module/meta/Cargo.toml +++ b/contracts/feature-tests/use-module/meta/Cargo.toml @@ -9,6 +9,6 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false diff --git a/contracts/feature-tests/use-module/meta/abi/Cargo.toml b/contracts/feature-tests/use-module/meta/abi/Cargo.toml index 7d3415622f..1e5c98bd8f 100644 --- a/contracts/feature-tests/use-module/meta/abi/Cargo.toml +++ b/contracts/feature-tests/use-module/meta/abi/Cargo.toml @@ -9,10 +9,10 @@ publish = false path = ".." [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/base" [dependencies.multiversx-sc-meta] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/meta" default-features = false 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 372d1ca170..d12b746e0e 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.49.0-alpha.4" + "version": "0.49.0" } }, "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 7b0ae08a4f..4ea01b94a8 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.49.0-alpha.4" + "version": "0.49.0" } }, "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 62a866a3e3..eea6ec7dc1 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 @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" 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 f514309260..50a3d5bf82 100644 --- a/contracts/feature-tests/use-module/wasm/Cargo.toml +++ b/contracts/feature-tests/use-module/wasm/Cargo.toml @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../../../framework/wasm-adapter" [workspace] diff --git a/contracts/modules/Cargo.toml b/contracts/modules/Cargo.toml index 924bbab515..a9f513191b 100644 --- a/contracts/modules/Cargo.toml +++ b/contracts/modules/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-modules" -version = "0.49.0-alpha.4" +version = "0.49.0" edition = "2021" authors = ["MultiversX "] @@ -17,5 +17,5 @@ categories = ["no-std", "wasm", "cryptography::cryptocurrencies"] alloc = ["multiversx-sc/alloc"] [dependencies.multiversx-sc] -version = "0.49.0-alpha.4" +version = "0.49.0" path = "../../framework/base" diff --git a/data/codec-derive/Cargo.toml b/data/codec-derive/Cargo.toml index 25c6a716b0..e1cd5d43ad 100644 --- a/data/codec-derive/Cargo.toml +++ b/data/codec-derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" edition = "2021" authors = ["dorin.iancu ", "Andrei Marinica ", "MultiversX "] diff --git a/data/codec/Cargo.toml b/data/codec/Cargo.toml index d3d8d14099..126e22e54f 100644 --- a/data/codec/Cargo.toml +++ b/data/codec/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" edition = "2021" authors = ["Andrei Marinica ", "MultiversX "] @@ -19,7 +19,7 @@ alloc = [] [dependencies.multiversx-sc-codec-derive] path = "../codec-derive" -version = "=0.18.7" +version = "=0.18.8" optional = true [dependencies] @@ -28,4 +28,4 @@ num-bigint = { version = "=0.4.4", optional = true } # can only be used in std c [dev-dependencies.multiversx-sc-codec-derive] path = "../codec-derive" -version = "=0.18.7" +version = "=0.18.8" diff --git a/framework/base/Cargo.toml b/framework/base/Cargo.toml index de706261d1..50e7274de5 100644 --- a/framework/base/Cargo.toml +++ b/framework/base/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" edition = "2021" authors = ["Andrei Marinica ", "MultiversX "] @@ -28,10 +28,10 @@ bitflags = "=2.4.2" num-traits = { version = "=0.2.17", default-features = false } [dependencies.multiversx-sc-derive] -version = "=0.49.0-alpha.4" +version = "=0.49.0" path = "../derive" [dependencies.multiversx-sc-codec] -version = "=0.18.7" +version = "=0.18.8" path = "../../data/codec" features = ["derive"] diff --git a/framework/derive/Cargo.toml b/framework/derive/Cargo.toml index c9c1c4635c..65ccd606ec 100644 --- a/framework/derive/Cargo.toml +++ b/framework/derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" edition = "2021" authors = ["Andrei Marinica ", "MultiversX "] diff --git a/framework/meta/Cargo.toml b/framework/meta/Cargo.toml index 805f3e7942..ef881a2f8c 100644 --- a/framework/meta/Cargo.toml +++ b/framework/meta/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-meta" -version = "0.49.0-alpha.4" +version = "0.49.0" edition = "2021" authors = [ @@ -52,7 +52,7 @@ pathdiff = { version = "0.2.1", optional = true } common-path = { version = "1.0.0", optional = true } [dependencies.multiversx-sc] -version = "=0.49.0-alpha.4" +version = "=0.49.0" path = "../base" features = ["alloc", "num-bigint"] 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 72a192b0aa..09a2efeca1 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.48.1" +version = "0.49.0" # [workspace] diff --git a/framework/meta/src/cmd/contract/meta_config.rs b/framework/meta/src/cmd/contract/meta_config.rs index cf5b91aa48..1e75900261 100644 --- a/framework/meta/src/cmd/contract/meta_config.rs +++ b/framework/meta/src/cmd/contract/meta_config.rs @@ -205,7 +205,7 @@ overflow-checks = false path = \"..\" [dependencies.multiversx-sc-wasm-adapter] -version = \"0.48.1\" +version = \"0.49.0\" path = \"../../../../framework/wasm-adapter\" [workspace] @@ -218,7 +218,7 @@ members = [\".\"] name: "test".to_string(), edition: "2021".to_string(), profile: ContractVariantProfile::default(), - framework_version: "0.48.1".to_string(), + framework_version: "0.49.0".to_string(), framework_path: Option::Some("../../../framework/base".to_string()), contract_features: Vec::::new(), }; diff --git a/framework/meta/src/version_history.rs b/framework/meta/src/version_history.rs index 5db786b025..146ebc4d57 100644 --- a/framework/meta/src/version_history.rs +++ b/framework/meta/src/version_history.rs @@ -3,7 +3,7 @@ use crate::{framework_version, framework_versions, version::FrameworkVersion}; /// 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: FrameworkVersion = framework_version!(0.48.1); +pub const LAST_VERSION: FrameworkVersion = framework_version!(0.49.0); /// Indicates where to stop with the upgrades. pub const LAST_UPGRADE_VERSION: FrameworkVersion = LAST_VERSION; @@ -68,6 +68,7 @@ pub const VERSIONS: &[FrameworkVersion] = framework_versions![ 0.47.8, 0.48.0, 0.48.1, + 0.49.0, ]; #[rustfmt::skip] diff --git a/framework/scenario/Cargo.toml b/framework/scenario/Cargo.toml index d946575a3c..5ad46c5c1a 100644 --- a/framework/scenario/Cargo.toml +++ b/framework/scenario/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-scenario" -version = "0.49.0-alpha.4" +version = "0.49.0" edition = "2021" authors = [ @@ -40,12 +40,12 @@ path = "src/main.rs" run-go-tests = [] [dependencies.multiversx-sc] -version = "=0.49.0-alpha.4" +version = "=0.49.0" features = ["alloc", "num-bigint"] path = "../base" [dependencies.multiversx-sc-meta] -version = "=0.49.0-alpha.4" +version = "=0.49.0" path = "../meta" [dependencies.multiversx-chain-scenario-format] @@ -60,5 +60,5 @@ version = "=0.8.3" path = "../../vm" [dependencies.multiversx-sdk] -version = "=0.4.0-alpha.4" +version = "=0.4.0" path = "../../sdk/core" diff --git a/framework/snippets/Cargo.toml b/framework/snippets/Cargo.toml index 954ebb2ea9..8ce800326f 100644 --- a/framework/snippets/Cargo.toml +++ b/framework/snippets/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sc-snippets" -version = "0.49.0-alpha.4" +version = "0.49.0" edition = "2021" authors = ["MultiversX "] @@ -23,9 +23,9 @@ futures = "0.3" rand = "0.8.5" [dependencies.multiversx-sc-scenario] -version = "=0.49.0-alpha.4" +version = "=0.49.0" path = "../scenario" [dependencies.multiversx-sdk] -version = "=0.4.0-alpha.4" +version = "=0.4.0" path = "../../sdk/core" diff --git a/framework/wasm-adapter/Cargo.toml b/framework/wasm-adapter/Cargo.toml index 8db81d396e..89aabf537c 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.49.0-alpha.4" +version = "0.49.0" edition = "2021" authors = [ @@ -22,5 +22,5 @@ categories = [ ] [dependencies.multiversx-sc] -version = "=0.49.0-alpha.4" +version = "=0.49.0" path = "../base" diff --git a/sdk/core/Cargo.toml b/sdk/core/Cargo.toml index 88b496cd3d..d8039324ba 100644 --- a/sdk/core/Cargo.toml +++ b/sdk/core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multiversx-sdk" -version = "0.4.0-alpha.4" +version = "0.4.0" edition = "2021" authors = [ diff --git a/tools/mxpy-snippet-generator/Cargo.toml b/tools/mxpy-snippet-generator/Cargo.toml index 8390f16c01..44f616b0f3 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.49.0-alpha.4" +version = "0.49.0" path = "../../framework/base" [dependencies] diff --git a/tools/rust-debugger/format-tests/Cargo.toml b/tools/rust-debugger/format-tests/Cargo.toml index b44925e9d1..1e44ac884f 100644 --- a/tools/rust-debugger/format-tests/Cargo.toml +++ b/tools/rust-debugger/format-tests/Cargo.toml @@ -9,11 +9,11 @@ name = "format-tests" path = "src/format_tests.rs" [dependencies.multiversx-sc] -version = "=0.49.0-alpha.4" +version = "=0.49.0" path = "../../../framework/base" [dependencies.multiversx-sc-scenario] -version = "=0.49.0-alpha.4" +version = "=0.49.0" path = "../../../framework/scenario" [dependencies.multiversx-chain-vm] From ebd08263ee80c4a44b574a5ba1c5b67ab9e88e1e Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 7 May 2024 17:32:46 +0300 Subject: [PATCH 460/461] Cargo.lock update --- .../benchmarks/large-storage/wasm/Cargo.lock | 14 ++++++------ .../linked-list-repeat/wasm/Cargo.lock | 14 ++++++------ .../mappers/map-repeat/wasm/Cargo.lock | 14 ++++++------ .../mappers/queue-repeat/wasm/Cargo.lock | 14 ++++++------ .../mappers/set-repeat/wasm/Cargo.lock | 14 ++++++------ .../single-value-repeat/wasm/Cargo.lock | 14 ++++++------ .../mappers/vec-repeat/wasm/Cargo.lock | 14 ++++++------ .../benchmarks/send-tx-repeat/wasm/Cargo.lock | 14 ++++++------ .../Cargo.lock | 14 ++++++------ .../Cargo.lock | 14 ++++++------ .../benchmarks/str-repeat/wasm/Cargo.lock | 14 ++++++------ .../core/price-aggregator/wasm/Cargo.lock | 22 +++++++++---------- contracts/examples/adder/wasm/Cargo.lock | 14 ++++++------ .../bonding-curve-contract/wasm/Cargo.lock | 16 +++++++------- .../examples/check-pause/wasm/Cargo.lock | 16 +++++++------- .../crowdfunding-esdt/wasm/Cargo.lock | 14 ++++++------ .../examples/crypto-bubbles/wasm/Cargo.lock | 14 ++++++------ .../kitty-auction/wasm/Cargo.lock | 14 ++++++------ .../kitty-genetic-alg/wasm/Cargo.lock | 14 ++++++------ .../kitty-ownership/wasm/Cargo.lock | 14 ++++++------ .../examples/crypto-zombies/wasm/Cargo.lock | 14 ++++++------ .../examples/digital-cash/wasm/Cargo.lock | 14 ++++++------ contracts/examples/empty/wasm/Cargo.lock | 14 ++++++------ .../esdt-transfer-with-fee/wasm/Cargo.lock | 14 ++++++------ contracts/examples/factorial/wasm/Cargo.lock | 14 ++++++------ .../examples/fractional-nfts/wasm/Cargo.lock | 16 +++++++------- .../examples/lottery-esdt/wasm/Cargo.lock | 14 ++++++------ .../multisig/wasm-multisig-full/Cargo.lock | 16 +++++++------- .../multisig/wasm-multisig-view/Cargo.lock | 16 +++++++------- contracts/examples/multisig/wasm/Cargo.lock | 16 +++++++------- contracts/examples/nft-minter/wasm/Cargo.lock | 14 ++++++------ .../nft-storage-prepay/wasm/Cargo.lock | 14 ++++++------ .../examples/nft-subscription/wasm/Cargo.lock | 16 +++++++------- .../order-book/factory/wasm/Cargo.lock | 14 ++++++------ .../examples/order-book/pair/wasm/Cargo.lock | 14 ++++++------ .../examples/ping-pong-egld/wasm/Cargo.lock | 14 ++++++------ .../examples/proxy-pause/wasm/Cargo.lock | 14 ++++++------ .../rewards-distribution/wasm/Cargo.lock | 16 +++++++------- .../examples/seed-nft-minter/wasm/Cargo.lock | 16 +++++++------- .../examples/token-release/wasm/Cargo.lock | 14 ++++++------ .../abi-tester/wasm-abi-tester-ev/Cargo.lock | 14 ++++++------ .../feature-tests/abi-tester/wasm/Cargo.lock | 14 ++++++------ .../wasm-alloc-mem-fail/Cargo.lock | 14 ++++++------ .../wasm-alloc-mem-leaking/Cargo.lock | 14 ++++++------ .../alloc-features/wasm/Cargo.lock | 14 ++++++------ .../Cargo.lock | 16 +++++++------- .../basic-features/wasm/Cargo.lock | 16 +++++++------- .../big-float-features/wasm/Cargo.lock | 14 ++++++------ .../builtin-func-features/wasm/Cargo.lock | 14 ++++++------ .../first-contract/wasm/Cargo.lock | 14 ++++++------ .../second-contract/wasm/Cargo.lock | 14 ++++++------ .../child/wasm/Cargo.lock | 14 ++++++------ .../parent/wasm/Cargo.lock | 14 ++++++------ .../forwarder-legacy/wasm/Cargo.lock | 14 ++++++------ .../wasm-forwarder-queue-promises/Cargo.lock | 14 ++++++------ .../forwarder-queue/wasm/Cargo.lock | 14 ++++++------ .../Cargo.lock | 14 ++++++------ .../Cargo.lock | 14 ++++++------ .../forwarder-raw/wasm/Cargo.lock | 14 ++++++------ .../composability/forwarder/wasm/Cargo.lock | 14 ++++++------ .../local-esdt-and-nft/wasm/Cargo.lock | 14 ++++++------ .../promises-features/wasm/Cargo.lock | 14 ++++++------ .../proxy-test-first/wasm/Cargo.lock | 14 ++++++------ .../proxy-test-second/wasm/Cargo.lock | 14 ++++++------ .../recursive-caller/wasm/Cargo.lock | 14 ++++++------ .../transfer-role-features/wasm/Cargo.lock | 16 +++++++------- .../vault/wasm-vault-promises/Cargo.lock | 14 ++++++------ .../vault/wasm-vault-upgrade/Cargo.lock | 14 ++++++------ .../composability/vault/wasm/Cargo.lock | 14 ++++++------ .../crowdfunding-erc20/wasm/Cargo.lock | 14 ++++++------ .../erc1155-marketplace/wasm/Cargo.lock | 14 ++++++------ .../erc1155-user-mock/wasm/Cargo.lock | 14 ++++++------ .../erc1155/wasm/Cargo.lock | 14 ++++++------ .../erc-style-contracts/erc20/wasm/Cargo.lock | 14 ++++++------ .../erc721/wasm/Cargo.lock | 14 ++++++------ .../lottery-erc20/wasm/Cargo.lock | 14 ++++++------ .../esdt-system-sc-mock/wasm/Cargo.lock | 14 ++++++------ .../exchange-features/wasm/Cargo.lock | 14 ++++++------ .../wasm/Cargo.lock | 14 ++++++------ .../managed-map-features/wasm/Cargo.lock | 14 ++++++------ .../wasm-multi-contract-alt-impl/Cargo.lock | 14 ++++++------ .../Cargo.lock | 14 ++++++------ .../Cargo.lock | 14 ++++++------ .../multi-contract-features/wasm/Cargo.lock | 14 ++++++------ .../panic-message-features/wasm/Cargo.lock | 14 ++++++------ .../payable-features/wasm/Cargo.lock | 14 ++++++------ .../wasm/Cargo.lock | 14 ++++++------ .../wasm/Cargo.lock | 14 ++++++------ .../scenario-tester/wasm/Cargo.lock | 14 ++++++------ .../wasm-use-module-view/Cargo.lock | 16 +++++++------- .../feature-tests/use-module/wasm/Cargo.lock | 16 +++++++------- 91 files changed, 655 insertions(+), 655 deletions(-) diff --git a/contracts/benchmarks/large-storage/wasm/Cargo.lock b/contracts/benchmarks/large-storage/wasm/Cargo.lock index b662f443d9..3b11d697fe 100755 --- a/contracts/benchmarks/large-storage/wasm/Cargo.lock +++ b/contracts/benchmarks/large-storage/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 7e08a995d1..449c08ea0f 100644 --- a/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/linked-list-repeat/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "benchmark-common" @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -82,7 +82,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock index 1c21676a00..19bbfef34c 100644 --- a/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/map-repeat/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "benchmark-common" @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -82,7 +82,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock index ad70d21672..3142322933 100644 --- a/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/queue-repeat/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "benchmark-common" @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -58,7 +58,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock index 1cee879d4d..5f6c1735e6 100644 --- a/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/set-repeat/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "benchmark-common" @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -58,7 +58,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 dbb15cc548..8b63d51212 100644 --- a/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/single-value-repeat/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "benchmark-common" @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -58,7 +58,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock index b212e81e0d..66f60c60c1 100644 --- a/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/mappers/vec-repeat/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "benchmark-common" @@ -47,7 +47,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -58,7 +58,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -87,7 +87,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock index 5dca9592c8..cf7a8f3585 100755 --- a/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/send-tx-repeat/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.lock b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.lock index e33366ed86..f855655dcc 100644 --- a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.lock +++ b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-basic/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.lock b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.lock index 6ccbcbaadd..938e18a3af 100644 --- a/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.lock +++ b/contracts/benchmarks/str-repeat/wasm-str-repeat-mb-builder-cached/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/benchmarks/str-repeat/wasm/Cargo.lock b/contracts/benchmarks/str-repeat/wasm/Cargo.lock index 39020dc5b8..e7ac6d7c34 100755 --- a/contracts/benchmarks/str-repeat/wasm/Cargo.lock +++ b/contracts/benchmarks/str-repeat/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/core/price-aggregator/wasm/Cargo.lock b/contracts/core/price-aggregator/wasm/Cargo.lock index e67c9cc32c..22f75ad2dc 100644 --- a/contracts/core/price-aggregator/wasm/Cargo.lock +++ b/contracts/core/price-aggregator/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,9 +40,9 @@ checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" [[package]] name = "getrandom" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "js-sys", @@ -86,7 +86,7 @@ checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "multiversx-price-aggregator-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "arrayvec", "getrandom", @@ -105,7 +105,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -116,7 +116,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -124,7 +124,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -134,7 +134,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -145,14 +145,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/adder/wasm/Cargo.lock b/contracts/examples/adder/wasm/Cargo.lock index 2773eb0d37..32d924124d 100755 --- a/contracts/examples/adder/wasm/Cargo.lock +++ b/contracts/examples/adder/wasm/Cargo.lock @@ -25,9 +25,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/bonding-curve-contract/wasm/Cargo.lock b/contracts/examples/bonding-curve-contract/wasm/Cargo.lock index 698514f67d..1651cd25a5 100644 --- a/contracts/examples/bonding-curve-contract/wasm/Cargo.lock +++ b/contracts/examples/bonding-curve-contract/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -67,7 +67,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/check-pause/wasm/Cargo.lock b/contracts/examples/check-pause/wasm/Cargo.lock index 814b67a5c7..08d28dc3c1 100644 --- a/contracts/examples/check-pause/wasm/Cargo.lock +++ b/contracts/examples/check-pause/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -67,7 +67,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock b/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock index 346820f735..bd090a21c2 100644 --- a/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock +++ b/contracts/examples/crowdfunding-esdt/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/crypto-bubbles/wasm/Cargo.lock b/contracts/examples/crypto-bubbles/wasm/Cargo.lock index a3381f8c16..02af9ea52a 100755 --- a/contracts/examples/crypto-bubbles/wasm/Cargo.lock +++ b/contracts/examples/crypto-bubbles/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 a5bb4027f4..c4ed9a8d55 100755 --- a/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.lock +++ b/contracts/examples/crypto-kitties/kitty-auction/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -113,7 +113,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -124,7 +124,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 264017dfc5..1cfdbcd549 100755 --- a/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.lock +++ b/contracts/examples/crypto-kitties/kitty-genetic-alg/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -65,7 +65,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -76,7 +76,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -94,7 +94,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -105,7 +105,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 69e81a180a..51f1a57e2c 100755 --- a/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.lock +++ b/contracts/examples/crypto-kitties/kitty-ownership/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -86,7 +86,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -94,7 +94,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -104,7 +104,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -115,7 +115,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/crypto-zombies/wasm/Cargo.lock b/contracts/examples/crypto-zombies/wasm/Cargo.lock index 01b50384d8..fd15242089 100755 --- a/contracts/examples/crypto-zombies/wasm/Cargo.lock +++ b/contracts/examples/crypto-zombies/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -64,7 +64,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -83,7 +83,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -93,7 +93,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -104,7 +104,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/digital-cash/wasm/Cargo.lock b/contracts/examples/digital-cash/wasm/Cargo.lock index db281885ba..b219c11d18 100644 --- a/contracts/examples/digital-cash/wasm/Cargo.lock +++ b/contracts/examples/digital-cash/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/empty/wasm/Cargo.lock b/contracts/examples/empty/wasm/Cargo.lock index 791a8a78d4..0e20a220f6 100755 --- a/contracts/examples/empty/wasm/Cargo.lock +++ b/contracts/examples/empty/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 b18d50c99d..cbd337a9a1 100644 --- a/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.lock +++ b/contracts/examples/esdt-transfer-with-fee/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/factorial/wasm/Cargo.lock b/contracts/examples/factorial/wasm/Cargo.lock index f11e7fea1f..b6292af287 100755 --- a/contracts/examples/factorial/wasm/Cargo.lock +++ b/contracts/examples/factorial/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/fractional-nfts/wasm/Cargo.lock b/contracts/examples/fractional-nfts/wasm/Cargo.lock index 5c51eaa65f..ac836d1710 100644 --- a/contracts/examples/fractional-nfts/wasm/Cargo.lock +++ b/contracts/examples/fractional-nfts/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -67,7 +67,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/lottery-esdt/wasm/Cargo.lock b/contracts/examples/lottery-esdt/wasm/Cargo.lock index 3618971bb7..f2208fefe8 100755 --- a/contracts/examples/lottery-esdt/wasm/Cargo.lock +++ b/contracts/examples/lottery-esdt/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/multisig/wasm-multisig-full/Cargo.lock b/contracts/examples/multisig/wasm-multisig-full/Cargo.lock index 657d9df054..c70b17ae5c 100644 --- a/contracts/examples/multisig/wasm-multisig-full/Cargo.lock +++ b/contracts/examples/multisig/wasm-multisig-full/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -56,7 +56,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -67,7 +67,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/multisig/wasm-multisig-view/Cargo.lock b/contracts/examples/multisig/wasm-multisig-view/Cargo.lock index 8ad4962469..557912beb6 100644 --- a/contracts/examples/multisig/wasm-multisig-view/Cargo.lock +++ b/contracts/examples/multisig/wasm-multisig-view/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -56,7 +56,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -67,7 +67,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/multisig/wasm/Cargo.lock b/contracts/examples/multisig/wasm/Cargo.lock index 4ca5fcc903..e1bc7eb308 100755 --- a/contracts/examples/multisig/wasm/Cargo.lock +++ b/contracts/examples/multisig/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -56,7 +56,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -67,7 +67,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/nft-minter/wasm/Cargo.lock b/contracts/examples/nft-minter/wasm/Cargo.lock index aac2ace620..bf942dd476 100644 --- a/contracts/examples/nft-minter/wasm/Cargo.lock +++ b/contracts/examples/nft-minter/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/nft-storage-prepay/wasm/Cargo.lock b/contracts/examples/nft-storage-prepay/wasm/Cargo.lock index f877f05711..7905f9c5f5 100755 --- a/contracts/examples/nft-storage-prepay/wasm/Cargo.lock +++ b/contracts/examples/nft-storage-prepay/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/nft-subscription/wasm/Cargo.lock b/contracts/examples/nft-subscription/wasm/Cargo.lock index e8b62546de..63c6100a8e 100644 --- a/contracts/examples/nft-subscription/wasm/Cargo.lock +++ b/contracts/examples/nft-subscription/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/order-book/factory/wasm/Cargo.lock b/contracts/examples/order-book/factory/wasm/Cargo.lock index 7d38576ac4..755a1b87a7 100644 --- a/contracts/examples/order-book/factory/wasm/Cargo.lock +++ b/contracts/examples/order-book/factory/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/order-book/pair/wasm/Cargo.lock b/contracts/examples/order-book/pair/wasm/Cargo.lock index 38fbac9a8f..65336f77d0 100644 --- a/contracts/examples/order-book/pair/wasm/Cargo.lock +++ b/contracts/examples/order-book/pair/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/ping-pong-egld/wasm/Cargo.lock b/contracts/examples/ping-pong-egld/wasm/Cargo.lock index a2d0636590..2ec97eef16 100755 --- a/contracts/examples/ping-pong-egld/wasm/Cargo.lock +++ b/contracts/examples/ping-pong-egld/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/proxy-pause/wasm/Cargo.lock b/contracts/examples/proxy-pause/wasm/Cargo.lock index 5edbcad6e8..bab5be1cc9 100644 --- a/contracts/examples/proxy-pause/wasm/Cargo.lock +++ b/contracts/examples/proxy-pause/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/rewards-distribution/wasm/Cargo.lock b/contracts/examples/rewards-distribution/wasm/Cargo.lock index 018b42f4dc..ac36f04261 100644 --- a/contracts/examples/rewards-distribution/wasm/Cargo.lock +++ b/contracts/examples/rewards-distribution/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/seed-nft-minter/wasm/Cargo.lock b/contracts/examples/seed-nft-minter/wasm/Cargo.lock index 70729a49cd..c88d3f49ab 100644 --- a/contracts/examples/seed-nft-minter/wasm/Cargo.lock +++ b/contracts/examples/seed-nft-minter/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/examples/token-release/wasm/Cargo.lock b/contracts/examples/token-release/wasm/Cargo.lock index 5ec1dea342..082c8ec2a8 100644 --- a/contracts/examples/token-release/wasm/Cargo.lock +++ b/contracts/examples/token-release/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 fee4cf1dbc..dbd1ba809d 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 @@ -25,9 +25,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/abi-tester/wasm/Cargo.lock b/contracts/feature-tests/abi-tester/wasm/Cargo.lock index e5e8466144..09d6167d6f 100755 --- a/contracts/feature-tests/abi-tester/wasm/Cargo.lock +++ b/contracts/feature-tests/abi-tester/wasm/Cargo.lock @@ -25,9 +25,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock index 8b16c89d1b..2e1236933d 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-fail/Cargo.lock @@ -25,9 +25,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock index a9d74ed0f6..72aef64716 100644 --- a/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock +++ b/contracts/feature-tests/alloc-features/wasm-alloc-mem-leaking/Cargo.lock @@ -25,9 +25,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/alloc-features/wasm/Cargo.lock b/contracts/feature-tests/alloc-features/wasm/Cargo.lock index df6ddbb5b6..52ee29d13c 100644 --- a/contracts/feature-tests/alloc-features/wasm/Cargo.lock +++ b/contracts/feature-tests/alloc-features/wasm/Cargo.lock @@ -25,9 +25,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 58a94ca113..24e1340805 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "basic-features" @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -67,7 +67,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/basic-features/wasm/Cargo.lock b/contracts/feature-tests/basic-features/wasm/Cargo.lock index c44431afb1..d047f9419c 100755 --- a/contracts/feature-tests/basic-features/wasm/Cargo.lock +++ b/contracts/feature-tests/basic-features/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "basic-features" @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -67,7 +67,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -96,14 +96,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 8e2d6618a0..5c8dfe26aa 100644 --- a/contracts/feature-tests/big-float-features/wasm/Cargo.lock +++ b/contracts/feature-tests/big-float-features/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "big-float-features" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 a1e69001c6..cdbde8f3c9 100644 --- a/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/builtin-func-features/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 5a7020c0cc..17abe8ee97 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 c4c31a8fb6..324de28ec0 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 77bbdd0fb0..9586e596a4 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 375b37c6d9..42635f16d6 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/forwarder-legacy/wasm/Cargo.lock b/contracts/feature-tests/composability/forwarder-legacy/wasm/Cargo.lock index 6f2efbb4a7..33eb4d9098 100644 --- a/contracts/feature-tests/composability/forwarder-legacy/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder-legacy/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -56,7 +56,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -67,7 +67,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -96,7 +96,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 345df6ab7c..e25422de65 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 618aeb9569..568fd2b429 100644 --- a/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder-queue/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 4efcd69b75..21a05a9eb7 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 5eebcf9076..e6fc2f76dc 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 25b4034e97..0ff5143f0a 100755 --- a/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder-raw/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock b/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock index 9ac4d71496..574f224fed 100755 --- a/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/forwarder/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 a8525f910a..3b8b768bbb 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 1b366a0da0..bb3a4eb0f1 100644 --- a/contracts/feature-tests/composability/promises-features/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/promises-features/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 582b043d05..dc198f5877 100755 --- a/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/proxy-test-first/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 bc6cb03e36..3061dd4018 100755 --- a/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/proxy-test-second/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 612de9c53d..a72449da83 100755 --- a/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/recursive-caller/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 62d98f1411..6af6ebb20e 100644 --- a/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/transfer-role-features/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 ec577ac90a..cbff398e5d 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.lock +++ b/contracts/feature-tests/composability/vault/wasm-vault-promises/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock index 6d9e7ffafe..1a01ab9815 100644 --- a/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock +++ b/contracts/feature-tests/composability/vault/wasm-vault-upgrade/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/composability/vault/wasm/Cargo.lock b/contracts/feature-tests/composability/vault/wasm/Cargo.lock index 64462a7d14..07c100c584 100755 --- a/contracts/feature-tests/composability/vault/wasm/Cargo.lock +++ b/contracts/feature-tests/composability/vault/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 9848b01662..892b386530 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -63,7 +63,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -82,7 +82,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 df492c51db..8207501bb8 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -63,7 +63,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -82,7 +82,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 dc29477e1d..238894c1be 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 f34cb19087..9c0eff36ac 100644 --- a/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/erc1155/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 b0ba8e546c..96b0e0dd78 100644 --- a/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/erc20/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 9b4caaf7b6..3f6cc428c2 100644 --- a/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.lock +++ b/contracts/feature-tests/erc-style-contracts/erc721/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 64019726c1..4beaf5a751 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -82,7 +82,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -92,7 +92,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -103,7 +103,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 b66a768ae1..8ab3a45af6 100644 --- a/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.lock +++ b/contracts/feature-tests/esdt-system-sc-mock/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/exchange-features/wasm/Cargo.lock b/contracts/feature-tests/exchange-features/wasm/Cargo.lock index adf5bb4ee3..4580ca7fa2 100644 --- a/contracts/feature-tests/exchange-features/wasm/Cargo.lock +++ b/contracts/feature-tests/exchange-features/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 9f3eabdcfc..5539245761 100644 --- a/contracts/feature-tests/formatted-message-features/wasm/Cargo.lock +++ b/contracts/feature-tests/formatted-message-features/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 59d4875222..a4d915beb4 100644 --- a/contracts/feature-tests/managed-map-features/wasm/Cargo.lock +++ b/contracts/feature-tests/managed-map-features/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 bd6f9e8daf..ef7b7dd9e6 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 a234b10710..009eb5a826 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 b74f0b96b8..b32b3af13d 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 7b7b14b240..55f0d7e4de 100755 --- a/contracts/feature-tests/multi-contract-features/wasm/Cargo.lock +++ b/contracts/feature-tests/multi-contract-features/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -55,7 +55,7 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -66,7 +66,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -84,7 +84,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -95,7 +95,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 f05b039ab2..4b9d2dd045 100755 --- a/contracts/feature-tests/panic-message-features/wasm/Cargo.lock +++ b/contracts/feature-tests/panic-message-features/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/payable-features/wasm/Cargo.lock b/contracts/feature-tests/payable-features/wasm/Cargo.lock index 46f3efdb23..bb15e9082b 100755 --- a/contracts/feature-tests/payable-features/wasm/Cargo.lock +++ b/contracts/feature-tests/payable-features/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 c5a3c14f3b..f13fb3b27a 100644 --- a/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.lock +++ b/contracts/feature-tests/rust-snippets-generator-test/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 b9637d20a1..0b3ae5f87c 100644 --- a/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.lock +++ b/contracts/feature-tests/rust-testing-framework-tester/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/scenario-tester/wasm/Cargo.lock b/contracts/feature-tests/scenario-tester/wasm/Cargo.lock index c92359d81b..66eca188da 100755 --- a/contracts/feature-tests/scenario-tester/wasm/Cargo.lock +++ b/contracts/feature-tests/scenario-tester/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.6" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.6" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" 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 f5320776c8..6d3a67850c 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 @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] diff --git a/contracts/feature-tests/use-module/wasm/Cargo.lock b/contracts/feature-tests/use-module/wasm/Cargo.lock index 29c091ca70..7bd3915e63 100644 --- a/contracts/feature-tests/use-module/wasm/Cargo.lock +++ b/contracts/feature-tests/use-module/wasm/Cargo.lock @@ -10,9 +10,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bitflags" @@ -40,7 +40,7 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "bitflags", "hex-literal", @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.7" +version = "0.18.8" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -59,7 +59,7 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.7" +version = "0.18.8" dependencies = [ "hex", "proc-macro2", @@ -69,7 +69,7 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "hex", "proc-macro2", @@ -80,14 +80,14 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.49.0-alpha.4" +version = "0.49.0" dependencies = [ "multiversx-sc", ] From df58c72a935efa5192f4e1705d30297fb62cd9ee Mon Sep 17 00:00:00 2001 From: Andrei Marinica Date: Tue, 7 May 2024 18:00:14 +0300 Subject: [PATCH 461/461] removed crypto-kitties dependency from crypto-zombies --- Cargo.lock | 1 - .../kitty-ownership/sc-config.toml | 2 +- contracts/examples/crypto-zombies/Cargo.toml | 4 -- .../examples/crypto-zombies/src/kitty_obj.rs | 40 +++++++++++++++++++ .../src/kitty_ownership_proxy.rs | 2 +- contracts/examples/crypto-zombies/src/lib.rs | 1 + .../crypto-zombies/src/zombie_feeding.rs | 2 +- 7 files changed, 44 insertions(+), 8 deletions(-) create mode 100644 contracts/examples/crypto-zombies/src/kitty_obj.rs diff --git a/Cargo.lock b/Cargo.lock index d3eae4e638..f6ce6930f2 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -630,7 +630,6 @@ dependencies = [ name = "crypto-zombies" version = "0.0.0" dependencies = [ - "kitty", "multiversx-sc", "multiversx-sc-scenario", ] diff --git a/contracts/examples/crypto-kitties/kitty-ownership/sc-config.toml b/contracts/examples/crypto-kitties/kitty-ownership/sc-config.toml index 202f19e321..8af6863e4b 100644 --- a/contracts/examples/crypto-kitties/kitty-ownership/sc-config.toml +++ b/contracts/examples/crypto-kitties/kitty-ownership/sc-config.toml @@ -8,4 +8,4 @@ to = "kitty" path = "../../crypto-zombies/src/kitty_ownership_proxy.rs" [[proxy.path-rename]] from = "kitty::kitty" -to = "kitty" +to = "crate::kitty_obj" diff --git a/contracts/examples/crypto-zombies/Cargo.toml b/contracts/examples/crypto-zombies/Cargo.toml index f0df60381e..19c94cebbb 100644 --- a/contracts/examples/crypto-zombies/Cargo.toml +++ b/contracts/examples/crypto-zombies/Cargo.toml @@ -15,7 +15,3 @@ path = "../../../framework/base" [dev-dependencies.multiversx-sc-scenario] version = "0.49.0" path = "../../../framework/scenario" - -[dependencies.kitty] -version = "0.0.0" -path = "../../../contracts/examples/crypto-kitties/common/kitty" diff --git a/contracts/examples/crypto-zombies/src/kitty_obj.rs b/contracts/examples/crypto-zombies/src/kitty_obj.rs new file mode 100644 index 0000000000..acdc23cfca --- /dev/null +++ b/contracts/examples/crypto-zombies/src/kitty_obj.rs @@ -0,0 +1,40 @@ +use multiversx_sc::derive_imports::*; + +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +pub struct Kitty { + pub genes: KittyGenes, + pub birth_time: u64, // timestamp + pub cooldown_end: u64, // timestamp, used for pregnancy timer and siring cooldown + pub matron_id: u32, + pub sire_id: u32, + pub siring_with_id: u32, // for pregnant cats, 0 otherwise + pub nr_children: u16, // cooldown period increases exponentially with every breeding/siring + pub generation: u16, // max(sire_gen, matron_gen) + 1. Generation also influences cooldown. +} + +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +pub struct KittyGenes { + pub fur_color: Color, + pub eye_color: Color, + pub meow_power: u8, // the higher the value, the louder the cat +} + +#[derive(NestedEncode, NestedDecode, TopEncode, TopDecode, TypeAbi)] +pub struct Color { + pub r: u8, + pub g: u8, + pub b: u8, +} + +impl KittyGenes { + pub fn get_as_u64(&self) -> u64 { + (self.fur_color.as_u64() << 12 | self.eye_color.as_u64()) << 4 + | self.meow_power.to_be() as u64 + } +} + +impl Color { + pub fn as_u64(&self) -> u64 { + ((self.r.to_be() as u64) << 4 | self.r.to_be() as u64) << 4 | self.r.to_be() as u64 + } +} diff --git a/contracts/examples/crypto-zombies/src/kitty_ownership_proxy.rs b/contracts/examples/crypto-zombies/src/kitty_ownership_proxy.rs index 87f5bdb4a2..595c1612c7 100644 --- a/contracts/examples/crypto-zombies/src/kitty_ownership_proxy.rs +++ b/contracts/examples/crypto-zombies/src/kitty_ownership_proxy.rs @@ -241,7 +241,7 @@ where >( self, kitty_id: Arg0, - ) -> TxProxyCall { + ) -> TxProxyCall { self.wrapped_tx .raw_call("getKittyById") .argument(&kitty_id) diff --git a/contracts/examples/crypto-zombies/src/lib.rs b/contracts/examples/crypto-zombies/src/lib.rs index 9fea3b3099..a79de4fcb0 100644 --- a/contracts/examples/crypto-zombies/src/lib.rs +++ b/contracts/examples/crypto-zombies/src/lib.rs @@ -2,6 +2,7 @@ use multiversx_sc::imports::*; +pub mod kitty_obj; pub mod kitty_ownership_proxy; pub mod proxy_crypto_zombies; mod storage; diff --git a/contracts/examples/crypto-zombies/src/zombie_feeding.rs b/contracts/examples/crypto-zombies/src/zombie_feeding.rs index 56ef89cb7c..f98e48452b 100644 --- a/contracts/examples/crypto-zombies/src/zombie_feeding.rs +++ b/contracts/examples/crypto-zombies/src/zombie_feeding.rs @@ -38,7 +38,7 @@ pub trait ZombieFeeding: #[callback] fn get_kitty_callback( &self, - #[call_result] result: ManagedAsyncCallResult, + #[call_result] result: ManagedAsyncCallResult, zombie_id: usize, ) { match result {