From c8615f2372a3deb55f46519a5844ab2eaf33bed5 Mon Sep 17 00:00:00 2001 From: Dorin Marian Iancu Date: Wed, 18 Oct 2023 09:36:40 +0300 Subject: [PATCH] more changes --- Cargo.lock | 9 ---- common/token-module/Cargo.toml | 11 ----- common/token-module/src/lib.rs | 49 --------------------- esdt-safe/Cargo.toml | 3 -- esdt-safe/src/lib.rs | 1 - esdt-safe/src/to_sovereign/create_tx.rs | 18 +++++--- esdt-safe/src/to_sovereign/events.rs | 41 +++++++++++++++-- esdt-safe/src/to_sovereign/refund.rs | 26 ----------- esdt-safe/src/to_sovereign/set_tx_status.rs | 1 - esdt-safe/tests/bridge_setup/mod.rs | 5 +-- esdt-safe/tests/bridge_test.rs | 6 +-- 11 files changed, 54 insertions(+), 116 deletions(-) delete mode 100644 common/token-module/Cargo.toml delete mode 100644 common/token-module/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index dc8afe16..c0c120b5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -683,7 +683,6 @@ dependencies = [ "multiversx-sc-scenario", "num-bigint", "num-traits", - "token-module", "transaction", "tx-batch-module", ] @@ -2210,14 +2209,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" -[[package]] -name = "token-module" -version = "0.0.0" -dependencies = [ - "multiversx-sc", - "multiversx-sc-scenario", -] - [[package]] name = "tokio" version = "1.32.0" diff --git a/common/token-module/Cargo.toml b/common/token-module/Cargo.toml deleted file mode 100644 index 5e6a5b6c..00000000 --- a/common/token-module/Cargo.toml +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name = "token-module" -version = "0.0.0" -authors = ["dorin-iancu "] -edition = "2018" - -[dependencies.multiversx-sc] -version = "=0.43.5" - -[dev-dependencies.multiversx-sc-scenario] -version = "=0.43.5" diff --git a/common/token-module/src/lib.rs b/common/token-module/src/lib.rs deleted file mode 100644 index bbd12970..00000000 --- a/common/token-module/src/lib.rs +++ /dev/null @@ -1,49 +0,0 @@ -#![no_std] - -multiversx_sc::imports!(); -multiversx_sc::derive_imports!(); - -#[multiversx_sc::module] -pub trait TokenModule { - // endpoints - owner-only - - #[only_owner] - #[endpoint(addTokenToWhitelist)] - fn add_token_to_whitelist(&self, token_id: TokenIdentifier) { - let _ = self.token_whitelist().insert(token_id); - } - - #[only_owner] - #[endpoint(removeTokenFromWhitelist)] - fn remove_token_from_whitelist(&self, token_id: TokenIdentifier) { - let _ = self.token_whitelist().swap_remove(&token_id); - } - - // private - - fn require_token_in_whitelist(&self, token_id: &TokenIdentifier) { - require!( - self.token_whitelist().contains(token_id), - "Token not in whitelist" - ); - } - - fn require_local_role_set(&self, token_id: &TokenIdentifier, role: &EsdtLocalRole) { - require!( - self.is_local_role_set(token_id, role), - "Must set local role first" - ); - } - - fn is_local_role_set(&self, token_id: &TokenIdentifier, role: &EsdtLocalRole) -> bool { - let roles = self.blockchain().get_esdt_local_roles(token_id); - - roles.has_role(role) - } - - // storage - - #[view(getAllKnownTokens)] - #[storage_mapper("tokenWhitelist")] - fn token_whitelist(&self) -> UnorderedSetMapper; -} diff --git a/esdt-safe/Cargo.toml b/esdt-safe/Cargo.toml index 86e66651..e621be47 100644 --- a/esdt-safe/Cargo.toml +++ b/esdt-safe/Cargo.toml @@ -11,9 +11,6 @@ path = "src/lib.rs" [dependencies.transaction] path = "../common/transaction" -[dependencies.token-module] -path = "../common/token-module" - [dependencies.tx-batch-module] path = "../common/tx-batch-module" diff --git a/esdt-safe/src/lib.rs b/esdt-safe/src/lib.rs index 2f448e88..68f61cf2 100644 --- a/esdt-safe/src/lib.rs +++ b/esdt-safe/src/lib.rs @@ -22,7 +22,6 @@ pub trait EsdtSafe: + from_sovereign::refund::RefundModule + from_sovereign::token_mapping::TokenMappingModule + from_sovereign::transfer_tokens::TransferTokensModule - + token_module::TokenModule + tx_batch_module::TxBatchModule + max_bridged_amount_module::MaxBridgedAmountModule + multiversx_sc_modules::pause::PauseModule diff --git a/esdt-safe/src/to_sovereign/create_tx.rs b/esdt-safe/src/to_sovereign/create_tx.rs index 7e651718..0b33b93f 100644 --- a/esdt-safe/src/to_sovereign/create_tx.rs +++ b/esdt-safe/src/to_sovereign/create_tx.rs @@ -1,5 +1,7 @@ use transaction::{GasLimit, StolenFromFrameworkEsdtTokenData, Transaction, TransferData}; +use crate::to_sovereign::events::DepositEvent; + multiversx_sc::imports!(); const MAX_USER_TX_GAS_LIMIT: GasLimit = 300_000_000; @@ -8,15 +10,14 @@ const MAX_TRANSFERS_PER_TX: usize = 10; #[multiversx_sc::module] pub trait CreateTxModule: super::events::EventsModule - + token_module::TokenModule + tx_batch_module::TxBatchModule + max_bridged_amount_module::MaxBridgedAmountModule + multiversx_sc_modules::pause::PauseModule { /// Create an Elrond -> Sovereign transaction. #[payable("*")] - #[endpoint(createTransaction)] - fn create_transaction( + #[endpoint] + fn deposit( &self, to: ManagedAddress, opt_transfer_data: OptionalValue>, @@ -37,7 +38,6 @@ pub trait CreateTxModule: let own_sc_address = self.blockchain().get_sc_address(); let mut all_token_data = ManagedVec::new(); for payment in &payments { - self.require_token_in_whitelist(&payment.token_identifier); self.require_below_max_amount(&payment.token_identifier, &payment.amount); if payment.token_nonce > 0 { @@ -55,6 +55,13 @@ pub trait CreateTxModule: let caller = self.blockchain().get_caller(); let block_nonce = self.blockchain().get_block_nonce(); let tx_nonce = self.get_and_save_next_tx_id(); + + self.deposit_event( + &to, + &payments, + DepositEvent::from(tx_nonce, &opt_transfer_data), + ); + let tx = Transaction { block_nonce, nonce: tx_nonce, @@ -66,7 +73,6 @@ pub trait CreateTxModule: is_refund_tx: false, }; - let batch_id = self.add_to_batch(tx); - self.create_transaction_event(batch_id, tx_nonce); + let _ = self.add_to_batch(tx); } } diff --git a/esdt-safe/src/to_sovereign/events.rs b/esdt-safe/src/to_sovereign/events.rs index f1a15e9a..e4f9a28c 100644 --- a/esdt-safe/src/to_sovereign/events.rs +++ b/esdt-safe/src/to_sovereign/events.rs @@ -1,11 +1,46 @@ -use transaction::{transaction_status::TransactionStatus, BatchId, TxId}; +use transaction::{ + transaction_status::TransactionStatus, BatchId, GasLimit, PaymentsVec, TransferData, TxId, +}; multiversx_sc::imports!(); +multiversx_sc::derive_imports!(); + +#[derive(TypeAbi, TopEncode, TopDecode)] +pub struct DepositEvent { + pub tx_nonce: TxId, + pub opt_function: Option>, + pub opt_arguments: Option>>, + pub opt_gas_limit: Option, +} + +impl DepositEvent { + pub fn from(tx_nonce: TxId, opt_transfer_data: &OptionalValue>) -> Self { + match opt_transfer_data { + OptionalValue::Some(transfer_data) => DepositEvent { + tx_nonce, + opt_function: Some(transfer_data.function.clone()), + opt_arguments: Some(transfer_data.args.clone()), + opt_gas_limit: Some(transfer_data.gas_limit), + }, + OptionalValue::None => DepositEvent { + tx_nonce, + opt_function: None, + opt_arguments: None, + opt_gas_limit: None, + }, + } + } +} #[multiversx_sc::module] pub trait EventsModule { - #[event("createTransactionEvent")] - fn create_transaction_event(&self, #[indexed] batch_id: BatchId, #[indexed] tx_id: TxId); + #[event("deposit")] + fn deposit_event( + &self, + #[indexed] dest_address: &ManagedAddress, + #[indexed] tokens: &PaymentsVec, + event_data: DepositEvent, + ); #[event("setStatusEvent")] fn set_status_event( diff --git a/esdt-safe/src/to_sovereign/refund.rs b/esdt-safe/src/to_sovereign/refund.rs index b350fc8c..62c37409 100644 --- a/esdt-safe/src/to_sovereign/refund.rs +++ b/esdt-safe/src/to_sovereign/refund.rs @@ -10,7 +10,6 @@ pub struct NonceAmountPair { #[multiversx_sc::module] pub trait RefundModule: super::events::EventsModule - + token_module::TokenModule + tx_batch_module::TxBatchModule + max_bridged_amount_module::MaxBridgedAmountModule { @@ -37,31 +36,6 @@ pub trait RefundModule: output_payments } - /// Query function that lists all refund amounts for a user. - /// Useful for knowing which token IDs to pass to the claimRefund endpoint. - #[view(getRefundAmounts)] - fn get_refund_amounts( - &self, - address: ManagedAddress, - ) -> MultiValueEncoded> { - let mut refund_amounts = MultiValueEncoded::new(); - for token_id in self.token_whitelist().iter() { - let nonce_amount_pairs = self.refund_amount(&address, &token_id).get(); - for nonce_amount_pair in &nonce_amount_pairs { - refund_amounts.push( - ( - token_id.clone(), - nonce_amount_pair.nonce, - nonce_amount_pair.amount, - ) - .into(), - ); - } - } - - refund_amounts - } - fn mark_refund(&self, to: &ManagedAddress, token: &EsdtTokenPayment) { self.refund_amount(to, &token.token_identifier) .update(|refund| { diff --git a/esdt-safe/src/to_sovereign/set_tx_status.rs b/esdt-safe/src/to_sovereign/set_tx_status.rs index fc185f21..9229866c 100644 --- a/esdt-safe/src/to_sovereign/set_tx_status.rs +++ b/esdt-safe/src/to_sovereign/set_tx_status.rs @@ -8,7 +8,6 @@ pub trait SetTxStatusModule: bls_signature::BlsSignatureModule + super::events::EventsModule + super::refund::RefundModule - + token_module::TokenModule + tx_batch_module::TxBatchModule + max_bridged_amount_module::MaxBridgedAmountModule { diff --git a/esdt-safe/tests/bridge_setup/mod.rs b/esdt-safe/tests/bridge_setup/mod.rs index a8c68b54..c408640d 100644 --- a/esdt-safe/tests/bridge_setup/mod.rs +++ b/esdt-safe/tests/bridge_setup/mod.rs @@ -3,11 +3,10 @@ use esdt_safe::EsdtSafe; use multiversx_sc::types::{Address, MultiValueEncoded}; use multiversx_sc_modules::pause::PauseModule; use multiversx_sc_scenario::{ - managed_token_id, rust_biguint, + rust_biguint, testing_framework::{BlockchainStateWrapper, ContractObjWrapper}, DebugApi, }; -use token_module::TokenModule; use tx_batch_module::TxBatchModule; multiversx_sc::derive_imports!(); @@ -60,8 +59,6 @@ where sc.init(0, MultiValueEncoded::new()); sc.set_max_tx_batch_size(1); sc.set_paused(false); - sc.add_token_to_whitelist(managed_token_id!(FUNGIBLE_TOKEN_ID)); - sc.add_token_to_whitelist(managed_token_id!(NFT_TOKEN_ID)); }) .assert_ok(); diff --git a/esdt-safe/tests/bridge_test.rs b/esdt-safe/tests/bridge_test.rs index 7515514c..fe11d793 100644 --- a/esdt-safe/tests/bridge_test.rs +++ b/esdt-safe/tests/bridge_test.rs @@ -56,7 +56,7 @@ fn transfer_two_tokens_to_sov_ok() { &bridge_setup.bridge_wrapper, &transfers, |sc| { - sc.create_transaction(managed_address!(&dest), OptionalValue::None); + sc.deposit(managed_address!(&dest), OptionalValue::None); }, ) .assert_ok(); @@ -107,7 +107,7 @@ fn refund_failed_tx_to_sov() { &bridge_setup.bridge_wrapper, &transfers, |sc| { - sc.create_transaction(managed_address!(&dest), OptionalValue::None); + sc.deposit(managed_address!(&dest), OptionalValue::None); }, ) .assert_ok(); @@ -185,7 +185,7 @@ fn transfer_token_to_and_from_sov_ok() { &bridge_setup.bridge_wrapper, &transfers, |sc| { - sc.create_transaction(managed_address!(&dest), OptionalValue::None); + sc.deposit(managed_address!(&dest), OptionalValue::None); }, ) .assert_ok();