diff --git a/bridged-tokens-wrapper/src/lib.rs b/bridged-tokens-wrapper/src/lib.rs index f18f28a9..e1727e75 100644 --- a/bridged-tokens-wrapper/src/lib.rs +++ b/bridged-tokens-wrapper/src/lib.rs @@ -18,6 +18,9 @@ pub trait BridgedTokensWrapper: multiversx_sc_modules::pause::PauseModule { self.set_paused(true); } + #[endpoint] + fn upgrade(&self) {} + #[only_owner] #[endpoint(addWrappedToken)] fn add_wrapped_token(&self, universal_bridged_token_ids: TokenIdentifier, num_decimals: u32) { diff --git a/bridged-tokens-wrapper/wasm/Cargo.lock b/bridged-tokens-wrapper/wasm/Cargo.lock index f3a582a2..b8c125ce 100644 --- a/bridged-tokens-wrapper/wasm/Cargo.lock +++ b/bridged-tokens-wrapper/wasm/Cargo.lock @@ -8,7 +8,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "once_cell", "version_check", ] @@ -48,12 +48,6 @@ dependencies = [ "multiversx-sc-wasm-adapter", ] -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" - [[package]] name = "cfg-if" version = "1.0.0" @@ -66,13 +60,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" -[[package]] -name = "eth-address" -version = "0.0.0" -dependencies = [ - "multiversx-sc", -] - [[package]] name = "hashbrown" version = "0.13.2" @@ -94,23 +81,11 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" -[[package]] -name = "libc" -version = "0.2.139" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" - -[[package]] -name = "memory_units" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" - [[package]] name = "multiversx-sc" -version = "0.39.8" +version = "0.43.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31561133b64837f1a7835ae4ba96383ab07d9ce401e703ad2a37aef45789a1e7" +checksum = "406939660d0c79dd191c6677f4b048df873a95f4531d8abafc9cdbe282bf1725" dependencies = [ "bitflags", "hashbrown", @@ -122,20 +97,19 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.17.1" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7638cb46a0e99c636fd55443ac534ff0a5fad0bd772e1037fbac9a75e04c3c9" +checksum = "0f1e15b46c17b87c0c7cdd79b041a4abd7f3a2b45f3c993f6ce38c0f233e82b6" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", - "wee_alloc", ] [[package]] name = "multiversx-sc-codec-derive" -version = "0.17.1" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e976002d51367f16140929c10ee695f95dd8d34c150a45db60d3fcd1328a267a" +checksum = "9a7bc0762cd6d88f8bc54805bc652b042a61cd7fbc2d0a325010f088b78fb2ac" dependencies = [ "hex", "proc-macro2", @@ -145,9 +119,9 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.39.8" +version = "0.43.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23187464277575f8055c92cffbd664592825591f5cebb8dae038d2af04c5e639" +checksum = "9e006240993963b482fe0682ae49b2d07255495e3c86706925d119137376cdfc" dependencies = [ "hex", "proc-macro2", @@ -158,21 +132,20 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.39.8" +version = "0.43.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbcb0b06f37396484f01d89295091db401b8b515ab781e3580a6bb333e912591" +checksum = "75dc2548fe5072cad37b5c816d2344d7cd12e8cafb1a0ff8bbf2bc1829054710" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.39.8" +version = "0.43.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af5fee54f1498ec8181593cd54a96ef7436543ad78848e2e805b9b62c27c4095" +checksum = "40e721d1bc80de2ede4099a9040519486c3c1139cb0287d8fc4f9fc3e8a3f19e" dependencies = [ "multiversx-sc", - "wee_alloc", ] [[package]] @@ -201,18 +174,18 @@ checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" [[package]] name = "proc-macro2" -version = "1.0.51" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.23" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -248,7 +221,6 @@ dependencies = [ name = "transaction" version = "0.0.0" dependencies = [ - "eth-address", "multiversx-sc", ] @@ -263,37 +235,3 @@ name = "version_check" version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "wee_alloc" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb3b5a6b2bb17cb6ad44a2e68a43e8d2722c997da10e928665c72ec6c0a0b8e" -dependencies = [ - "cfg-if 0.1.10", - "libc", - "memory_units", - "winapi", -] - -[[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-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/bridged-tokens-wrapper/wasm/src/lib.rs b/bridged-tokens-wrapper/wasm/src/lib.rs index ca27291f..c59ba42a 100644 --- a/bridged-tokens-wrapper/wasm/src/lib.rs +++ b/bridged-tokens-wrapper/wasm/src/lib.rs @@ -5,12 +5,15 @@ //////////////////////////////////////////////////// // Init: 1 -// Endpoints: 16 +// Endpoints: 17 // Async Callback (empty): 1 -// Total number of exported functions: 18 +// Total number of exported functions: 19 #![no_std] -#![feature(alloc_error_handler, lang_items)] + +// Configuration that works with rustc < 1.73.0. +// TODO: Recommended rustc version: 1.73.0 or newer. +#![feature(lang_items)] multiversx_sc_wasm_adapter::allocator!(); multiversx_sc_wasm_adapter::panic_handler!(); @@ -18,23 +21,25 @@ multiversx_sc_wasm_adapter::panic_handler!(); multiversx_sc_wasm_adapter::endpoints! { bridged_tokens_wrapper ( - addWrappedToken - updateWrappedToken - removeWrappedToken - whitelistToken - updateWhitelistedToken - blacklistToken - depositLiquidity - wrapTokens - unwrapToken - getUniversalBridgedTokenIds - getTokenLiquidity - getChainSpecificToUniversalMapping - getchainSpecificTokenIds - pause - unpause - isPaused + init => init + upgrade => upgrade + addWrappedToken => add_wrapped_token + updateWrappedToken => update_wrapped_token + removeWrappedToken => remove_wrapped_token + whitelistToken => whitelist_token + updateWhitelistedToken => update_whitelisted_token + blacklistToken => blacklist_token + depositLiquidity => deposit_liquidity + wrapTokens => wrap_tokens + unwrapToken => unwrap_token + getUniversalBridgedTokenIds => universal_bridged_token_ids + getTokenLiquidity => token_liquidity + getChainSpecificToUniversalMapping => chain_specific_to_universal_mapping + getchainSpecificTokenIds => chain_specific_token_ids + pause => pause_endpoint + unpause => unpause_endpoint + isPaused => paused_status ) } -multiversx_sc_wasm_adapter::empty_callback! {} +multiversx_sc_wasm_adapter::async_callback_empty! {} diff --git a/esdt-safe/src/lib.rs b/esdt-safe/src/lib.rs index 6dafa9cc..22422f64 100644 --- a/esdt-safe/src/lib.rs +++ b/esdt-safe/src/lib.rs @@ -9,6 +9,7 @@ use transaction::{transaction_status::TransactionStatus, Transaction, TransferDa const DEFAULT_MAX_TX_BATCH_SIZE: usize = 10; const DEFAULT_MAX_TX_BATCH_BLOCK_DURATION: u64 = 100; // ~10 minutes const MAX_TRANSFERS_PER_TX: usize = 10; +const MAX_GAS_LIMIT: u64 = 300_000_000; #[derive(TopEncode, TopDecode, NestedEncode, NestedDecode, ManagedVecItem)] pub struct NonceAmountPair { @@ -45,6 +46,9 @@ pub trait EsdtSafe: self.set_paused(true); } + #[endpoint] + fn upgrade(&self) {} + /// Sets the statuses for the transactions, after they were executed on the Sovereign side. /// /// Only TransactionStatus::Executed (3) and TransactionStatus::Rejected (4) values are allowed. @@ -161,6 +165,13 @@ pub trait EsdtSafe: require!(!payments.is_empty(), "Nothing to transfer"); require!(payments.len() <= MAX_TRANSFERS_PER_TX, "Too many tokens"); + if let OptionalValue::Some(transfer_data) = &opt_transfer_data { + require!( + transfer_data.gas_limit <= MAX_GAS_LIMIT, + "Gas limit too high" + ); + } + let own_sc_address = self.blockchain().get_sc_address(); let mut all_token_data = ManagedVec::new(); for payment in &payments { diff --git a/esdt-safe/wasm/src/lib.rs b/esdt-safe/wasm/src/lib.rs index bb0d544d..a78eb43d 100644 --- a/esdt-safe/wasm/src/lib.rs +++ b/esdt-safe/wasm/src/lib.rs @@ -5,12 +5,15 @@ //////////////////////////////////////////////////// // Init: 1 -// Endpoints: 31 +// Endpoints: 23 // Async Callback (empty): 1 -// Total number of exported functions: 33 +// Total number of exported functions: 25 #![no_std] -#![feature(alloc_error_handler, lang_items)] + +// Configuration that works with rustc < 1.73.0. +// TODO: Recommended rustc version: 1.73.0 or newer. +#![feature(lang_items)] multiversx_sc_wasm_adapter::allocator!(); multiversx_sc_wasm_adapter::panic_handler!(); @@ -18,38 +21,31 @@ multiversx_sc_wasm_adapter::panic_handler!(); multiversx_sc_wasm_adapter::endpoints! { esdt_safe ( - setTransactionBatchStatus - addRefundBatch - createTransaction - claimRefund - getRefundAmounts - setFeeEstimatorContractAddress - setEthTxGasLimit - setDefaultPricePerGasUnit - setTokenTicker - calculateRequiredFee - getFeeEstimatorContractAddress - getDefaultPricePerGasUnit - getEthTxGasLimit - distributeFees - addTokenToWhitelist - removeTokenFromWhitelist - getAllKnownTokens - getAccumulatedTransactionFees - setMaxTxBatchSize - setMaxTxBatchBlockDuration - getCurrentTxBatch - getFirstBatchAnyStatus - getBatch - getBatchStatus - getFirstBatchId - getLastBatchId - setMaxBridgedAmount - getMaxBridgedAmount - pause - unpause - isPaused + init => init + upgrade => upgrade + setTransactionBatchStatus => set_transaction_batch_status + addRefundBatch => add_refund_batch + createTransaction => create_transaction + claimRefund => claim_refund + getRefundAmounts => get_refund_amounts + getSovereignTxGasLimit => sovereign_tx_gas_limit + addTokenToWhitelist => add_token_to_whitelist + removeTokenFromWhitelist => remove_token_from_whitelist + getAllKnownTokens => token_whitelist + setMaxTxBatchSize => set_max_tx_batch_size + setMaxTxBatchBlockDuration => set_max_tx_batch_block_duration + getCurrentTxBatch => get_current_tx_batch + getFirstBatchAnyStatus => get_first_batch_any_status + getBatch => get_batch + getBatchStatus => get_batch_status + getFirstBatchId => first_batch_id + getLastBatchId => last_batch_id + setMaxBridgedAmount => set_max_bridged_amount + getMaxBridgedAmount => max_bridged_amount + pause => pause_endpoint + unpause => unpause_endpoint + isPaused => paused_status ) } -multiversx_sc_wasm_adapter::empty_callback! {} +multiversx_sc_wasm_adapter::async_callback_empty! {} diff --git a/multi-transfer-esdt/src/lib.rs b/multi-transfer-esdt/src/lib.rs index e13e9519..2c2036fd 100644 --- a/multi-transfer-esdt/src/lib.rs +++ b/multi-transfer-esdt/src/lib.rs @@ -28,6 +28,9 @@ pub trait MultiTransferEsdt: self.last_batch_id().set_if_empty(1); } + #[endpoint] + fn upgrade(&self) {} + #[only_owner] #[endpoint(batchTransferEsdtToken)] fn batch_transfer_esdt_token( diff --git a/multi-transfer-esdt/wasm/Cargo.lock b/multi-transfer-esdt/wasm/Cargo.lock index fa0324f9..2881fd4a 100644 --- a/multi-transfer-esdt/wasm/Cargo.lock +++ b/multi-transfer-esdt/wasm/Cargo.lock @@ -8,7 +8,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "once_cell", "version_check", ] @@ -40,12 +40,6 @@ dependencies = [ "transaction", ] -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" - [[package]] name = "cfg-if" version = "1.0.0" @@ -58,13 +52,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" -[[package]] -name = "eth-address" -version = "0.0.0" -dependencies = [ - "multiversx-sc", -] - [[package]] name = "hashbrown" version = "0.13.2" @@ -86,12 +73,6 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" -[[package]] -name = "libc" -version = "0.2.147" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" - [[package]] name = "max-bridged-amount-module" version = "0.0.0" @@ -99,12 +80,6 @@ dependencies = [ "multiversx-sc", ] -[[package]] -name = "memory_units" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" - [[package]] name = "multi-transfer-esdt" version = "0.0.0" @@ -126,9 +101,9 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.39.8" +version = "0.43.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31561133b64837f1a7835ae4ba96383ab07d9ce401e703ad2a37aef45789a1e7" +checksum = "406939660d0c79dd191c6677f4b048df873a95f4531d8abafc9cdbe282bf1725" dependencies = [ "bitflags", "hashbrown", @@ -140,20 +115,19 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.17.1" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7638cb46a0e99c636fd55443ac534ff0a5fad0bd772e1037fbac9a75e04c3c9" +checksum = "0f1e15b46c17b87c0c7cdd79b041a4abd7f3a2b45f3c993f6ce38c0f233e82b6" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", - "wee_alloc", ] [[package]] name = "multiversx-sc-codec-derive" -version = "0.17.1" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e976002d51367f16140929c10ee695f95dd8d34c150a45db60d3fcd1328a267a" +checksum = "9a7bc0762cd6d88f8bc54805bc652b042a61cd7fbc2d0a325010f088b78fb2ac" dependencies = [ "hex", "proc-macro2", @@ -163,9 +137,9 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.39.8" +version = "0.43.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23187464277575f8055c92cffbd664592825591f5cebb8dae038d2af04c5e639" +checksum = "9e006240993963b482fe0682ae49b2d07255495e3c86706925d119137376cdfc" dependencies = [ "hex", "proc-macro2", @@ -176,21 +150,20 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.39.8" +version = "0.43.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbcb0b06f37396484f01d89295091db401b8b515ab781e3580a6bb333e912591" +checksum = "75dc2548fe5072cad37b5c816d2344d7cd12e8cafb1a0ff8bbf2bc1829054710" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.39.8" +version = "0.43.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af5fee54f1498ec8181593cd54a96ef7436543ad78848e2e805b9b62c27c4095" +checksum = "40e721d1bc80de2ede4099a9040519486c3c1139cb0287d8fc4f9fc3e8a3f19e" dependencies = [ "multiversx-sc", - "wee_alloc", ] [[package]] @@ -219,18 +192,18 @@ checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "proc-macro2" -version = "1.0.63" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.28" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -266,7 +239,6 @@ dependencies = [ name = "transaction" version = "0.0.0" dependencies = [ - "eth-address", "multiversx-sc", ] @@ -289,37 +261,3 @@ name = "version_check" version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "wee_alloc" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb3b5a6b2bb17cb6ad44a2e68a43e8d2722c997da10e928665c72ec6c0a0b8e" -dependencies = [ - "cfg-if 0.1.10", - "libc", - "memory_units", - "winapi", -] - -[[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-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/multi-transfer-esdt/wasm/src/lib.rs b/multi-transfer-esdt/wasm/src/lib.rs index 86ea70f1..394b7e01 100644 --- a/multi-transfer-esdt/wasm/src/lib.rs +++ b/multi-transfer-esdt/wasm/src/lib.rs @@ -5,12 +5,15 @@ //////////////////////////////////////////////////// // Init: 1 -// Endpoints: 14 +// Endpoints: 15 // Async Callback (empty): 1 -// Total number of exported functions: 16 +// Total number of exported functions: 17 #![no_std] -#![feature(alloc_error_handler, lang_items)] + +// Configuration that works with rustc < 1.73.0. +// TODO: Recommended rustc version: 1.73.0 or newer. +#![feature(lang_items)] multiversx_sc_wasm_adapter::allocator!(); multiversx_sc_wasm_adapter::panic_handler!(); @@ -18,21 +21,23 @@ multiversx_sc_wasm_adapter::panic_handler!(); multiversx_sc_wasm_adapter::endpoints! { multi_transfer_esdt ( - batchTransferEsdtToken - getAndClearFirstRefundBatch - setWrappingContractAddress - getWrappingContractAddress - setMaxTxBatchSize - setMaxTxBatchBlockDuration - getCurrentTxBatch - getFirstBatchAnyStatus - getBatch - getBatchStatus - getFirstBatchId - getLastBatchId - setMaxBridgedAmount - getMaxBridgedAmount + init => init + upgrade => upgrade + batchTransferEsdtToken => batch_transfer_esdt_token + getAndClearFirstRefundBatch => get_and_clear_first_refund_batch + setWrappingContractAddress => set_wrapping_contract_address + getWrappingContractAddress => wrapping_contract_address + setMaxTxBatchSize => set_max_tx_batch_size + setMaxTxBatchBlockDuration => set_max_tx_batch_block_duration + getCurrentTxBatch => get_current_tx_batch + getFirstBatchAnyStatus => get_first_batch_any_status + getBatch => get_batch + getBatchStatus => get_batch_status + getFirstBatchId => first_batch_id + getLastBatchId => last_batch_id + setMaxBridgedAmount => set_max_bridged_amount + getMaxBridgedAmount => max_bridged_amount ) } -multiversx_sc_wasm_adapter::empty_callback! {} +multiversx_sc_wasm_adapter::async_callback_empty! {} diff --git a/multisig/src/action.rs b/multisig/src/action.rs index d2bf8850..40dcce57 100644 --- a/multisig/src/action.rs +++ b/multisig/src/action.rs @@ -1,7 +1,7 @@ use multiversx_sc::api::ManagedTypeApi; use multiversx_sc::types::ManagedVec; use transaction::transaction_status::TransactionStatus; -use transaction::EthTransaction; +use transaction::Transaction; multiversx_sc::derive_imports!(); @@ -13,8 +13,8 @@ pub enum Action { tx_batch_status: ManagedVec, }, BatchTransferEsdtToken { - eth_batch_id: u64, - transfers: ManagedVec>, + sov_batch_id: u64, + transfers: ManagedVec>, }, } diff --git a/multisig/src/lib.rs b/multisig/src/lib.rs index 9b5903ca..3f14f488 100644 --- a/multisig/src/lib.rs +++ b/multisig/src/lib.rs @@ -10,7 +10,6 @@ mod user_role; mod util; use action::Action; -use token_module::{AddressPercentagePair, INVALID_PERCENTAGE_SUM_OVER_ERR_MSG, PERCENTAGE_TOTAL}; use transaction::transaction_status::TransactionStatus; use transaction::TxBatchSplitInFields; use transaction::*; @@ -18,7 +17,6 @@ use user_role::UserRole; use esdt_safe::ProxyTrait as _; use multi_transfer_esdt::ProxyTrait as _; -use token_module::ProxyTrait as _; use tx_batch_module::ProxyTrait as _; multiversx_sc::imports!(); @@ -85,49 +83,15 @@ pub trait Multisig: self.set_paused(true); } - /// Distributes the accumulated fees to the given addresses. - /// Expected arguments are pairs of (address, percentage), - /// where percentages must add up to the PERCENTAGE_TOTAL constant - #[only_owner] - #[endpoint(distributeFeesFromChildContracts)] - fn distribute_fees_from_child_contracts( - &self, - dest_address_percentage_pairs: MultiValueEncoded>, - ) { - let mut args = ManagedVec::new(); - let mut total_percentage = 0u64; - - for pair in dest_address_percentage_pairs { - let (dest_address, percentage) = pair.into_tuple(); - - require!( - !self.blockchain().is_smart_contract(&dest_address), - "Cannot transfer to smart contract dest_address" - ); - - total_percentage += percentage as u64; - args.push(AddressPercentagePair { - address: dest_address, - percentage, - }); - } - - require!( - total_percentage == PERCENTAGE_TOTAL as u64, - INVALID_PERCENTAGE_SUM_OVER_ERR_MSG - ); - - let _: IgnoreValue = self - .get_esdt_safe_proxy_instance() - .distribute_fees(args) - .execute_on_dest_context(); - } + #[endpoint] + fn upgrade(&self) {} /// Board members have to stake a certain amount of EGLD /// before being allowed to sign actions #[payable("EGLD")] #[endpoint] - fn stake(&self, #[payment] payment: BigUint) { + fn stake(&self) { + let egld_payment = self.call_value().egld_value().clone_value(); let caller = self.blockchain().get_caller(); let caller_role = self.user_role(&caller); require!( @@ -136,7 +100,7 @@ pub trait Multisig: ); self.amount_staked(&caller) - .update(|amount_staked| *amount_staked += payment); + .update(|amount_staked| *amount_staked += egld_payment); } #[endpoint] @@ -163,7 +127,7 @@ pub trait Multisig: // ESDT Safe SC calls - /// After a batch is processed on the Ethereum side, + /// After a batch is processed on the Sovereign side, /// the EsdtSafe expects a list of statuses of said transactions (success or failure). /// /// This endpoint proposes an action to set the statuses to a certain list of values. @@ -215,48 +179,48 @@ pub trait Multisig: // Multi-transfer ESDT SC calls - /// Proposes a batch of Ethereum -> Elrond transfers. + /// Proposes a batch of Sovereign -> Elrond transfers. /// Transactions have to be separated by fields, in the following order: /// Sender Address, Destination Address, Token ID, Amount, Tx Nonce #[endpoint(proposeMultiTransferEsdtBatch)] fn propose_multi_transfer_esdt_batch( &self, - eth_batch_id: u64, - transfers: MultiValueEncoded>, + sov_batch_id: u64, + transfers: MultiValueEncoded>, ) -> usize { - let next_eth_batch_id = self.last_executed_eth_batch_id().get() + 1; + let next_sov_batch_id = self.last_executed_sov_batch_id().get() + 1; require!( - eth_batch_id == next_eth_batch_id, + sov_batch_id == next_sov_batch_id, "Can only propose for next batch ID" ); - let transfers_as_eth_tx = self.transfers_multi_value_to_eth_tx_vec(transfers); - self.require_valid_eth_tx_ids(&transfers_as_eth_tx); + let transfers_as_sov_tx = self.transfers_multi_value_to_sov_tx_vec(transfers); + self.require_valid_sov_tx_ids(&transfers_as_sov_tx); - let batch_hash = self.hash_eth_tx_batch(&transfers_as_eth_tx); + let batch_hash = self.hash_sov_tx_batch(&transfers_as_sov_tx); require!( - self.batch_id_to_action_id_mapping(eth_batch_id) + self.batch_id_to_action_id_mapping(sov_batch_id) .get(&batch_hash) .is_none(), "This batch was already proposed" ); let action_id = self.propose_action(Action::BatchTransferEsdtToken { - eth_batch_id, - transfers: transfers_as_eth_tx, + sov_batch_id, + transfers: transfers_as_sov_tx, }); - self.batch_id_to_action_id_mapping(eth_batch_id) + self.batch_id_to_action_id_mapping(sov_batch_id) .insert(batch_hash, action_id); action_id } - /// Failed Ethereum -> Elrond transactions are saved in the MultiTransfer SC + /// Failed Sovereign -> Elrond transactions are saved in the MultiTransfer SC /// as "refund transactions", and stored in batches, using the same mechanism as EsdtSafe. /// /// This function moves the first refund batch into the EsdtSafe SC, - /// converting the transactions into Elrond -> Ethereum transactions + /// converting the transactions into Elrond -> Sovereign transactions /// and adding them into EsdtSafe batches #[only_owner] #[endpoint(moveRefundBatchToSafe)] @@ -338,10 +302,10 @@ pub trait Multisig: .execute_on_dest_context(); } Action::BatchTransferEsdtToken { - eth_batch_id, + sov_batch_id, transfers, } => { - let mut action_ids_mapper = self.batch_id_to_action_id_mapping(eth_batch_id); + let mut action_ids_mapper = self.batch_id_to_action_id_mapping(sov_batch_id); // if there's only one proposed action, // the action was already cleared at the beginning of this function @@ -352,17 +316,17 @@ pub trait Multisig: } action_ids_mapper.clear(); - self.last_executed_eth_batch_id().update(|id| *id += 1); + self.last_executed_sov_batch_id().update(|id| *id += 1); let last_tx_index = transfers.len() - 1; let last_tx = transfers.get(last_tx_index); - self.last_executed_eth_tx_id().set(last_tx.tx_nonce); + self.last_executed_sov_tx_id().set(last_tx.nonce); - let transfers_multi: MultiValueEncoded> = + let transfers_multi: MultiValueEncoded> = transfers.into(); let _: IgnoreValue = self .get_multi_transfer_esdt_proxy_instance() - .batch_transfer_esdt_token(eth_batch_id, transfers_multi) + .batch_transfer_esdt_token(sov_batch_id, transfers_multi) .execute_on_dest_context(); } } diff --git a/multisig/src/queries.rs b/multisig/src/queries.rs index 4a100e48..3b3fbd52 100644 --- a/multisig/src/queries.rs +++ b/multisig/src/queries.rs @@ -1,7 +1,7 @@ multiversx_sc::imports!(); use crate::{action::Action, user_role::UserRole}; -use transaction::{transaction_status::TransactionStatus, TxBatchSplitInFields}; +use transaction::{transaction_status::TransactionStatus, TxBatchSplitInFields, TxAsMultiValue}; use tx_batch_module::ProxyTrait as _; @@ -10,10 +10,10 @@ use tx_batch_module::ProxyTrait as _; pub trait QueriesModule: crate::storage::StorageModule + crate::util::UtilModule { /// Returns the current EsdtSafe batch. /// - /// First result is the batch ID, then pairs of 6 results, representing transactions + /// First result is the batch ID, then pairs of 7 results, representing transactions /// split by fields: /// - /// Block Nonce, Tx Nonce, Sender Address, Receiver Address, Token ID, Amount + /// Block Nonce, Tx Nonce, Sender Address, Receiver Address, Token IDs, Token data, Opt transfer data #[view(getCurrentTxBatch)] fn get_current_tx_batch(&self) -> OptionalValue> { self.get_esdt_safe_proxy_instance() @@ -21,7 +21,7 @@ pub trait QueriesModule: crate::storage::StorageModule + crate::util::UtilModule .execute_on_dest_context() } - /// Returns a batch of failed Ethereum -> Elrond transactions. + /// Returns a batch of failed Sovereign -> Elrond transactions. /// The result format is the same as getCurrentTxBatch #[view(getCurrentRefundBatch)] fn get_current_refund_batch(&self) -> OptionalValue> { @@ -41,38 +41,38 @@ pub trait QueriesModule: crate::storage::StorageModule + crate::util::UtilModule } } - /// Used for Ethereum -> Elrond batches. + /// Used for Sovereign -> Elrond batches. /// If the mapping was made, it means that the transfer action was proposed in the past. /// To check if it was executed as well, use the wasActionExecuted view #[view(wasTransferActionProposed)] fn was_transfer_action_proposed( &self, - eth_batch_id: u64, - transfers: MultiValueEncoded>, + sov_batch_id: u64, + transfers: MultiValueEncoded>, ) -> bool { - let action_id = self.get_action_id_for_transfer_batch(eth_batch_id, transfers); + let action_id = self.get_action_id_for_transfer_batch(sov_batch_id, transfers); self.is_valid_action_id(action_id) } - /// Used for Ethereum -> Elrond batches. + /// Used for TxBatchSplitInFields -> Elrond batches. /// If `wasActionExecuted` returns true, then this can be used to get the action ID. /// Will return 0 if the transfers were not proposed #[view(getActionIdForTransferBatch)] fn get_action_id_for_transfer_batch( &self, - eth_batch_id: u64, - transfers: MultiValueEncoded>, + sov_batch_id: u64, + transfers: MultiValueEncoded>, ) -> usize { - let transfers_as_struct = self.transfers_multi_value_to_eth_tx_vec(transfers); - let batch_hash = self.hash_eth_tx_batch(&transfers_as_struct); + let transfers_as_struct = self.transfers_multi_value_to_sov_tx_vec(transfers); + let batch_hash = self.hash_sov_tx_batch(&transfers_as_struct); - self.batch_id_to_action_id_mapping(eth_batch_id) + self.batch_id_to_action_id_mapping(sov_batch_id) .get(&batch_hash) .unwrap_or(0) } - /// Used for Elrond -> Ethereum batches. + /// Used for Elrond -> Sovereign batches. /// Returns "true" if an action was already proposed for the given batch, /// with these exact transaction statuses, in this exact order #[view(wasSetCurrentTransactionBatchStatusActionProposed)] diff --git a/multisig/src/setup.rs b/multisig/src/setup.rs index 6d68debb..a22931dd 100644 --- a/multisig/src/setup.rs +++ b/multisig/src/setup.rs @@ -1,9 +1,6 @@ multiversx_sc::imports!(); multiversx_sc::derive_imports!(); -use eth_address::EthAddress; - -use fee_estimator_module::ProxyTrait as _; use max_bridged_amount_module::ProxyTrait as _; use multi_transfer_esdt::ProxyTrait as _; use multiversx_sc_modules::pause::ProxyTrait as _; @@ -92,47 +89,56 @@ pub trait SetupModule: self.quorum().set(new_quorum); } - /// Maps an ESDT token to an ERC20 address. Used by relayers. + /// Maps an ESDT token to a Sovereign ESDT token. Used by relayers. #[only_owner] #[endpoint(addMapping)] - fn add_mapping(&self, erc20_address: EthAddress, token_id: TokenIdentifier) { + fn add_mapping(&self, sov_token_id: TokenIdentifier, elrond_token_id: TokenIdentifier) { require!( - self.erc20_address_for_token_id(&token_id).is_empty(), + self.sov_token_id_for_elrond_token_id(&elrond_token_id) + .is_empty(), "Mapping already exists for token ID" ); require!( - self.token_id_for_erc20_address(&erc20_address).is_empty(), + self.elrond_token_id_for_sov_token_id(&sov_token_id) + .is_empty(), "Mapping already exists for ERC20 token" ); - self.erc20_address_for_token_id(&token_id) - .set(&erc20_address); - self.token_id_for_erc20_address(&erc20_address) - .set(&token_id); + self.sov_token_id_for_elrond_token_id(&elrond_token_id) + .set(&sov_token_id); + self.elrond_token_id_for_sov_token_id(&sov_token_id) + .set(&elrond_token_id); } #[only_owner] #[endpoint(clearMapping)] - fn clear_mapping(&self, erc20_address: EthAddress, token_id: TokenIdentifier) { + fn clear_mapping(&self, sov_token_id: TokenIdentifier, elrond_token_id: TokenIdentifier) { require!( - !self.erc20_address_for_token_id(&token_id).is_empty(), + !self + .sov_token_id_for_elrond_token_id(&elrond_token_id) + .is_empty(), "Mapping does not exist for ERC20 token" ); require!( - !self.token_id_for_erc20_address(&erc20_address).is_empty(), + !self + .elrond_token_id_for_sov_token_id(&sov_token_id) + .is_empty(), "Mapping does not exist for token id" ); - let mapped_erc_20 = self.erc20_address_for_token_id(&token_id).get(); - let mapped_token_id = self.token_id_for_erc20_address(&erc20_address).get(); + let mapped_sov_token_id = self + .sov_token_id_for_elrond_token_id(&elrond_token_id) + .get(); + let mapped_elrond_token_id = self.elrond_token_id_for_sov_token_id(&sov_token_id).get(); require!( - erc20_address.raw_addr == mapped_erc_20.raw_addr && token_id == mapped_token_id, + sov_token_id == mapped_sov_token_id && elrond_token_id == mapped_elrond_token_id, "Invalid mapping" ); - self.erc20_address_for_token_id(&token_id).clear(); - self.token_id_for_erc20_address(&erc20_address).clear(); + self.sov_token_id_for_elrond_token_id(&elrond_token_id) + .clear(); + self.elrond_token_id_for_sov_token_id(&sov_token_id).clear(); } #[only_owner] @@ -153,62 +159,12 @@ pub trait SetupModule: .execute_on_dest_context(); } - #[only_owner] - #[endpoint(changeFeeEstimatorContractAddress)] - fn change_fee_estimator_contract_address(&self, new_address: ManagedAddress) { - let _: IgnoreValue = self - .get_esdt_safe_proxy_instance() - .set_fee_estimator_contract_address(new_address) - .execute_on_dest_context(); - } - - /// Sets the gas limit being used for Ethereum transactions - /// This is used in the EsdtSafe contract to determine the fee amount - /// - /// fee_amount = eth_gas_limit * price_per_gas_unit - /// - /// where price_per_gas_unit is queried from the aggregator (fee estimator SC) - #[only_owner] - #[endpoint(changeElrondToEthGasLimit)] - fn change_elrond_to_eth_gas_limit(&self, new_gas_limit: BigUint) { - let _: IgnoreValue = self - .get_esdt_safe_proxy_instance() - .set_eth_tx_gas_limit(new_gas_limit) - .execute_on_dest_context(); - } - - /// Default price being used if the aggregator lacks a mapping for this token - /// or the aggregator address is not set - #[only_owner] - #[endpoint(changeDefaultPricePerGasUnit)] - fn change_default_price_per_gas_unit(&self, token_id: TokenIdentifier, new_value: BigUint) { - let _: IgnoreValue = self - .get_esdt_safe_proxy_instance() - .set_default_price_per_gas_unit(token_id, new_value) - .execute_on_dest_context(); - } - - /// Token ticker being used when querying the aggregator for GWEI prices - #[only_owner] - #[endpoint(changeTokenTicker)] - fn change_token_ticker(&self, token_id: TokenIdentifier, new_ticker: ManagedBuffer) { - let _: IgnoreValue = self - .get_esdt_safe_proxy_instance() - .set_token_ticker(token_id, new_ticker) - .execute_on_dest_context(); - } - #[only_owner] #[endpoint(esdtSafeAddTokenToWhitelist)] - fn esdt_safe_add_token_to_whitelist( - &self, - token_id: TokenIdentifier, - ticker: ManagedBuffer, - opt_default_price_per_gas_unit: OptionalValue, - ) { + fn esdt_safe_add_token_to_whitelist(&self, token_id: TokenIdentifier, ticker: ManagedBuffer) { let _: IgnoreValue = self .get_esdt_safe_proxy_instance() - .add_token_to_whitelist(token_id, ticker, opt_default_price_per_gas_unit) + .add_token_to_whitelist(token_id, ticker) .execute_on_dest_context(); } @@ -245,7 +201,7 @@ pub trait SetupModule: .execute_on_dest_context(); } - /// Sets the maximum bridged amount for the token for the Elrond -> Ethereum direction. + /// Sets the maximum bridged amount for the token for the Elrond -> Sovereign direction. /// Any attempt to transfer over this amount will be rejected. #[only_owner] #[endpoint(esdtSafeSetMaxBridgedAmountForToken)] @@ -260,7 +216,7 @@ pub trait SetupModule: .execute_on_dest_context(); } - /// Same as the function above, but for Ethereum -> Elrond transactions. + /// Same as the function above, but for Sovereign -> Elrond transactions. #[only_owner] #[endpoint(multiTransferEsdtSetMaxBridgedAmountForToken)] fn multi_transfer_esdt_set_max_bridged_amount_for_token( @@ -274,7 +230,7 @@ pub trait SetupModule: .execute_on_dest_context(); } - /// Any failed Ethereum -> Elrond transactions are added into so-called "refund batches" + /// Any failed Sovereign -> Elrond transactions are added into so-called "refund batches" /// This configures the size of a batch. #[only_owner] #[endpoint(multiTransferEsdtSetMaxRefundTxBatchSize)] diff --git a/multisig/src/storage.rs b/multisig/src/storage.rs index bbc353c2..fcb87b1a 100644 --- a/multisig/src/storage.rs +++ b/multisig/src/storage.rs @@ -1,13 +1,12 @@ multiversx_sc::imports!(); multiversx_sc::derive_imports!(); -use eth_address::EthAddress; use transaction::transaction_status::TransactionStatus; use crate::action::Action; use crate::user_role::UserRole; -pub type EthBatchHash = ManagedByteArray; // keccak256(ManagedVec) +pub type SovBatchHash = ManagedByteArray; // keccak256(ManagedVec) #[multiversx_sc::module] pub trait StorageModule { @@ -54,19 +53,19 @@ pub trait StorageModule { #[storage_mapper("slashedTokensAmount")] fn slashed_tokens_amount(&self) -> SingleValueMapper; - #[view(getLastExecutedEthBatchId)] - #[storage_mapper("lastExecutedEthBatchId")] - fn last_executed_eth_batch_id(&self) -> SingleValueMapper; + #[view(getLastExecutedSovBatchId)] + #[storage_mapper("lastExecutedSovBatchId")] + fn last_executed_sov_batch_id(&self) -> SingleValueMapper; - #[view(getLastExecutedEthTxId)] - #[storage_mapper("lastExecutedEthTxId")] - fn last_executed_eth_tx_id(&self) -> SingleValueMapper; + #[view(getLastExecutedSovTxId)] + #[storage_mapper("lastExecutedSovTxId")] + fn last_executed_sov_tx_id(&self) -> SingleValueMapper; #[storage_mapper("batchIdToActionIdMapping")] fn batch_id_to_action_id_mapping( &self, batch_id: u64, - ) -> MapMapper, usize>; + ) -> MapMapper, usize>; #[storage_mapper("actionIdForSetCurrentTransactionBatchStatus")] fn action_id_for_set_current_transaction_batch_status( @@ -74,20 +73,20 @@ pub trait StorageModule { esdt_safe_batch_id: u64, ) -> MapMapper, usize>; - /// Mapping between ERC20 Ethereum address and Elrond ESDT Token Identifiers + /// Mapping between Token Identifiers on Sovereign and Elrond ESDT Token Identifiers - #[view(getErc20AddressForTokenId)] - #[storage_mapper("erc20AddressForTokenId")] - fn erc20_address_for_token_id( + #[view(getSovTokenIdForElrondTokenId)] + #[storage_mapper("sovTokenIdForElrondTokenId")] + fn sov_token_id_for_elrond_token_id( &self, - token_id: &TokenIdentifier, - ) -> SingleValueMapper>; + elrond_token_id: &TokenIdentifier, + ) -> SingleValueMapper; - #[view(getTokenIdForErc20Address)] - #[storage_mapper("tokenIdForErc20Address")] - fn token_id_for_erc20_address( + #[view(getElrondTokenIdForSovTokenId)] + #[storage_mapper("elrondTokenIdForSovTokenId")] + fn elrond_token_id_for_sov_token_id( &self, - erc20_address: &EthAddress, + sov_token_id: &TokenIdentifier, ) -> SingleValueMapper; // SC addresses diff --git a/multisig/src/util.rs b/multisig/src/util.rs index 96fc007b..b5b2a0ac 100644 --- a/multisig/src/util.rs +++ b/multisig/src/util.rs @@ -1,8 +1,8 @@ multiversx_sc::imports!(); -use transaction::{EthTransaction, EthTxAsMultiValue}; +use transaction::{Transaction, TxAsMultiValue}; -use crate::storage::EthBatchHash; +use crate::storage::SovBatchHash; use crate::user_role::UserRole; #[multiversx_sc::module] @@ -43,42 +43,36 @@ pub trait UtilModule: crate::storage::StorageModule { amount_staked >= required_stake } - fn transfers_multi_value_to_eth_tx_vec( + fn transfers_multi_value_to_sov_tx_vec( &self, - transfers: MultiValueEncoded>, - ) -> ManagedVec> { - let mut transfers_as_eth_tx = ManagedVec::new(); + transfers: MultiValueEncoded>, + ) -> ManagedVec> { + let mut transfers_as_sov_tx = ManagedVec::new(); for transfer in transfers { - let (from, to, token_id, amount, tx_nonce) = transfer.into_tuple(); - - transfers_as_eth_tx.push(EthTransaction { - from, - to, - token_id, - amount, - tx_nonce, - }); + let transaction = Transaction::from(transfer); + + transfers_as_sov_tx.push(transaction); } - transfers_as_eth_tx + transfers_as_sov_tx } - fn require_valid_eth_tx_ids(&self, eth_tx_vec: &ManagedVec>) { - let last_executed_eth_tx_id = self.last_executed_eth_tx_id().get(); - let mut current_expected_tx_id = last_executed_eth_tx_id + 1; + fn require_valid_sov_tx_ids(&self, sov_tx_vec: &ManagedVec>) { + let last_executed_sov_tx_id = self.last_executed_sov_tx_id().get(); + let mut current_expected_tx_id = last_executed_sov_tx_id + 1; - for eth_tx in eth_tx_vec { - require!(eth_tx.tx_nonce == current_expected_tx_id, "Invalid Tx ID"); + for sov_tx in sov_tx_vec { + require!(sov_tx.nonce == current_expected_tx_id, "Invalid Tx ID"); current_expected_tx_id += 1; } } - fn hash_eth_tx_batch( + fn hash_sov_tx_batch( &self, - eth_tx_batch: &ManagedVec>, - ) -> EthBatchHash { + sov_tx_batch: &ManagedVec>, + ) -> SovBatchHash { let mut serialized = ManagedBuffer::new(); - if eth_tx_batch.top_encode(&mut serialized).is_err() { + if sov_tx_batch.top_encode(&mut serialized).is_err() { sc_panic!("Failed to serialized batch"); } diff --git a/multisig/wasm/Cargo.lock b/multisig/wasm/Cargo.lock index deda533d..42a9ac97 100644 --- a/multisig/wasm/Cargo.lock +++ b/multisig/wasm/Cargo.lock @@ -8,7 +8,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "once_cell", "version_check", ] @@ -40,12 +40,6 @@ dependencies = [ "transaction", ] -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" - [[package]] name = "cfg-if" version = "1.0.0" @@ -62,8 +56,6 @@ checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" name = "esdt-safe" version = "0.0.0" dependencies = [ - "eth-address", - "fee-estimator-module", "max-bridged-amount-module", "multiversx-sc", "multiversx-sc-modules", @@ -72,20 +64,6 @@ dependencies = [ "tx-batch-module", ] -[[package]] -name = "eth-address" -version = "0.0.0" -dependencies = [ - "multiversx-sc", -] - -[[package]] -name = "fee-estimator-module" -version = "0.0.0" -dependencies = [ - "multiversx-sc", -] - [[package]] name = "hashbrown" version = "0.13.2" @@ -107,12 +85,6 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" -[[package]] -name = "libc" -version = "0.2.147" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" - [[package]] name = "max-bridged-amount-module" version = "0.0.0" @@ -120,12 +92,6 @@ dependencies = [ "multiversx-sc", ] -[[package]] -name = "memory_units" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" - [[package]] name = "multi-transfer-esdt" version = "0.0.0" @@ -142,8 +108,6 @@ name = "multisig" version = "0.0.0" dependencies = [ "esdt-safe", - "eth-address", - "fee-estimator-module", "max-bridged-amount-module", "multi-transfer-esdt", "multiversx-sc", @@ -163,9 +127,9 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.39.8" +version = "0.43.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31561133b64837f1a7835ae4ba96383ab07d9ce401e703ad2a37aef45789a1e7" +checksum = "406939660d0c79dd191c6677f4b048df873a95f4531d8abafc9cdbe282bf1725" dependencies = [ "bitflags", "hashbrown", @@ -177,20 +141,19 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.17.1" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7638cb46a0e99c636fd55443ac534ff0a5fad0bd772e1037fbac9a75e04c3c9" +checksum = "0f1e15b46c17b87c0c7cdd79b041a4abd7f3a2b45f3c993f6ce38c0f233e82b6" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", - "wee_alloc", ] [[package]] name = "multiversx-sc-codec-derive" -version = "0.17.1" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e976002d51367f16140929c10ee695f95dd8d34c150a45db60d3fcd1328a267a" +checksum = "9a7bc0762cd6d88f8bc54805bc652b042a61cd7fbc2d0a325010f088b78fb2ac" dependencies = [ "hex", "proc-macro2", @@ -200,9 +163,9 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.39.8" +version = "0.43.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23187464277575f8055c92cffbd664592825591f5cebb8dae038d2af04c5e639" +checksum = "9e006240993963b482fe0682ae49b2d07255495e3c86706925d119137376cdfc" dependencies = [ "hex", "proc-macro2", @@ -213,21 +176,20 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.39.8" +version = "0.43.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbcb0b06f37396484f01d89295091db401b8b515ab781e3580a6bb333e912591" +checksum = "75dc2548fe5072cad37b5c816d2344d7cd12e8cafb1a0ff8bbf2bc1829054710" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.39.8" +version = "0.43.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af5fee54f1498ec8181593cd54a96ef7436543ad78848e2e805b9b62c27c4095" +checksum = "40e721d1bc80de2ede4099a9040519486c3c1139cb0287d8fc4f9fc3e8a3f19e" dependencies = [ "multiversx-sc", - "wee_alloc", ] [[package]] @@ -256,18 +218,18 @@ checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "proc-macro2" -version = "1.0.63" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.28" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -303,7 +265,6 @@ dependencies = [ name = "token-module" version = "0.0.0" dependencies = [ - "fee-estimator-module", "multiversx-sc", ] @@ -311,7 +272,6 @@ dependencies = [ name = "transaction" version = "0.0.0" dependencies = [ - "eth-address", "multiversx-sc", ] @@ -334,37 +294,3 @@ name = "version_check" version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "wee_alloc" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb3b5a6b2bb17cb6ad44a2e68a43e8d2722c997da10e928665c72ec6c0a0b8e" -dependencies = [ - "cfg-if 0.1.10", - "libc", - "memory_units", - "winapi", -] - -[[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-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/multisig/wasm/src/lib.rs b/multisig/wasm/src/lib.rs index 4cf423c2..8dc79849 100644 --- a/multisig/wasm/src/lib.rs +++ b/multisig/wasm/src/lib.rs @@ -5,12 +5,15 @@ //////////////////////////////////////////////////// // Init: 1 -// Endpoints: 61 +// Endpoints: 57 // Async Callback (empty): 1 -// Total number of exported functions: 63 +// Total number of exported functions: 59 #![no_std] -#![feature(alloc_error_handler, lang_items)] + +// Configuration that works with rustc < 1.73.0. +// TODO: Recommended rustc version: 1.73.0 or newer. +#![feature(lang_items)] multiversx_sc_wasm_adapter::allocator!(); multiversx_sc_wasm_adapter::panic_handler!(); @@ -18,68 +21,65 @@ multiversx_sc_wasm_adapter::panic_handler!(); multiversx_sc_wasm_adapter::endpoints! { multisig ( - distributeFeesFromChildContracts - stake - unstake - proposeEsdtSafeSetCurrentTransactionBatchStatus - proposeMultiTransferEsdtBatch - moveRefundBatchToSafe - performAction - sign - upgradeChildContractFromSource - addBoardMember - removeUser - slashBoardMember - changeQuorum - addMapping - clearMapping - pauseEsdtSafe - unpauseEsdtSafe - changeFeeEstimatorContractAddress - changeElrondToEthGasLimit - changeDefaultPricePerGasUnit - changeTokenTicker - esdtSafeAddTokenToWhitelist - esdtSafeRemoveTokenFromWhitelist - esdtSafeSetMaxTxBatchSize - esdtSafeSetMaxTxBatchBlockDuration - esdtSafeSetMaxBridgedAmountForToken - multiTransferEsdtSetMaxBridgedAmountForToken - multiTransferEsdtSetMaxRefundTxBatchSize - multiTransferEsdtSetMaxRefundTxBatchBlockDuration - multiTransferEsdtSetWrappingContractAddress - getQuorum - getNumBoardMembers - getRequiredStakeAmount - getAmountStaked - getSlashAmount - getSlashedTokensAmount - getLastExecutedEthBatchId - getLastExecutedEthTxId - getErc20AddressForTokenId - getTokenIdForErc20Address - getEsdtSafeAddress - getMultiTransferEsdtAddress - getCurrentTxBatch - getCurrentRefundBatch - wasActionExecuted - wasTransferActionProposed - getActionIdForTransferBatch - wasSetCurrentTransactionBatchStatusActionProposed - getActionIdForSetCurrentTransactionBatchStatus - signed - userRole - getAllBoardMembers - getAllStakedRelayers - getActionSignerCount - getActionValidSignerCount - quorumReached - getActionLastIndex - getActionData - pause - unpause - isPaused + init => init + upgrade => upgrade + stake => stake + unstake => unstake + proposeEsdtSafeSetCurrentTransactionBatchStatus => propose_esdt_safe_set_current_transaction_batch_status + proposeMultiTransferEsdtBatch => propose_multi_transfer_esdt_batch + moveRefundBatchToSafe => move_refund_batch_to_safe + performAction => perform_action_endpoint + sign => sign + upgradeChildContractFromSource => upgrade_child_contract_from_source + addBoardMember => add_board_member_endpoint + removeUser => remove_user + slashBoardMember => slash_board_member + changeQuorum => change_quorum + addMapping => add_mapping + clearMapping => clear_mapping + pauseEsdtSafe => pause_esdt_safe + unpauseEsdtSafe => unpause_esdt_safe + esdtSafeAddTokenToWhitelist => esdt_safe_add_token_to_whitelist + esdtSafeRemoveTokenFromWhitelist => esdt_safe_remove_token_from_whitelist + esdtSafeSetMaxTxBatchSize => esdt_safe_set_max_tx_batch_size + esdtSafeSetMaxTxBatchBlockDuration => esdt_safe_set_max_tx_batch_block_duration + esdtSafeSetMaxBridgedAmountForToken => esdt_safe_set_max_bridged_amount_for_token + multiTransferEsdtSetMaxBridgedAmountForToken => multi_transfer_esdt_set_max_bridged_amount_for_token + multiTransferEsdtSetMaxRefundTxBatchSize => multi_transfer_esdt_set_max_refund_tx_batch_size + multiTransferEsdtSetMaxRefundTxBatchBlockDuration => multi_transfer_esdt_set_max_refund_tx_batch_block_duration + multiTransferEsdtSetWrappingContractAddress => multi_transfer_esdt_set_wrapping_contract_address + getQuorum => quorum + getNumBoardMembers => num_board_members + getRequiredStakeAmount => required_stake_amount + getAmountStaked => amount_staked + getSlashAmount => slash_amount + getSlashedTokensAmount => slashed_tokens_amount + getLastExecutedSovBatchId => last_executed_sov_batch_id + getLastExecutedSovTxId => last_executed_sov_tx_id + getSovTokenIdForElrondTokenId => sov_token_id_for_elrond_token_id + getElrondTokenIdForSovTokenId => elrond_token_id_for_sov_token_id + getEsdtSafeAddress => esdt_safe_address + getMultiTransferEsdtAddress => multi_transfer_esdt_address + getCurrentTxBatch => get_current_tx_batch + getCurrentRefundBatch => get_current_refund_batch + wasActionExecuted => was_action_executed + wasTransferActionProposed => was_transfer_action_proposed + getActionIdForTransferBatch => get_action_id_for_transfer_batch + wasSetCurrentTransactionBatchStatusActionProposed => was_set_current_transaction_batch_status_action_proposed + getActionIdForSetCurrentTransactionBatchStatus => get_action_id_for_set_current_transaction_batch_status + signed => signed + userRole => user_role + getAllBoardMembers => get_all_board_members + getAllStakedRelayers => get_all_staked_relayers + getActionSignerCount => get_action_signer_count + getActionValidSignerCount => get_action_valid_signer_count + quorumReached => quorum_reached + getActionLastIndex => get_action_last_index + getActionData => get_action_data + pause => pause_endpoint + unpause => unpause_endpoint + isPaused => paused_status ) } -multiversx_sc_wasm_adapter::empty_callback! {} +multiversx_sc_wasm_adapter::async_callback_empty! {}