diff --git a/Cargo.lock b/Cargo.lock index f6df3c19a..55280f3bb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2037,7 +2037,7 @@ dependencies = [ [[package]] name = "currency" version = "1.2.0" -source = "git+https://github.com/pendulum-chain/spacewalk?rev=06873f16c4a7ab884e4759d98b7b86c712e0c0ae#06873f16c4a7ab884e4759d98b7b86c712e0c0ae" +source = "git+https://github.com/pendulum-chain/spacewalk?rev=ae95aa32f3cff47c5ff26d27af81540569bf81d3#ae95aa32f3cff47c5ff26d27af81540569bf81d3" dependencies = [ "frame-support", "frame-system", @@ -2807,7 +2807,7 @@ dependencies = [ [[package]] name = "fee" version = "1.0.0" -source = "git+https://github.com/pendulum-chain/spacewalk?rev=06873f16c4a7ab884e4759d98b7b86c712e0c0ae#06873f16c4a7ab884e4759d98b7b86c712e0c0ae" +source = "git+https://github.com/pendulum-chain/spacewalk?rev=ae95aa32f3cff47c5ff26d27af81540569bf81d3#ae95aa32f3cff47c5ff26d27af81540569bf81d3" dependencies = [ "currency", "frame-benchmarking", @@ -4096,7 +4096,7 @@ dependencies = [ [[package]] name = "issue" version = "1.0.0" -source = "git+https://github.com/pendulum-chain/spacewalk?rev=06873f16c4a7ab884e4759d98b7b86c712e0c0ae#06873f16c4a7ab884e4759d98b7b86c712e0c0ae" +source = "git+https://github.com/pendulum-chain/spacewalk?rev=ae95aa32f3cff47c5ff26d27af81540569bf81d3#ae95aa32f3cff47c5ff26d27af81540569bf81d3" dependencies = [ "base64 0.13.1", "currency", @@ -5376,7 +5376,7 @@ dependencies = [ [[package]] name = "module-issue-rpc" version = "1.2.0" -source = "git+https://github.com/pendulum-chain/spacewalk?rev=06873f16c4a7ab884e4759d98b7b86c712e0c0ae#06873f16c4a7ab884e4759d98b7b86c712e0c0ae" +source = "git+https://github.com/pendulum-chain/spacewalk?rev=ae95aa32f3cff47c5ff26d27af81540569bf81d3#ae95aa32f3cff47c5ff26d27af81540569bf81d3" dependencies = [ "jsonrpsee", "module-issue-rpc-runtime-api", @@ -5389,7 +5389,7 @@ dependencies = [ [[package]] name = "module-issue-rpc-runtime-api" version = "1.2.0" -source = "git+https://github.com/pendulum-chain/spacewalk?rev=06873f16c4a7ab884e4759d98b7b86c712e0c0ae#06873f16c4a7ab884e4759d98b7b86c712e0c0ae" +source = "git+https://github.com/pendulum-chain/spacewalk?rev=ae95aa32f3cff47c5ff26d27af81540569bf81d3#ae95aa32f3cff47c5ff26d27af81540569bf81d3" dependencies = [ "frame-support", "parity-scale-codec", @@ -5400,7 +5400,7 @@ dependencies = [ [[package]] name = "module-oracle-rpc" version = "1.2.0" -source = "git+https://github.com/pendulum-chain/spacewalk?rev=06873f16c4a7ab884e4759d98b7b86c712e0c0ae#06873f16c4a7ab884e4759d98b7b86c712e0c0ae" +source = "git+https://github.com/pendulum-chain/spacewalk?rev=ae95aa32f3cff47c5ff26d27af81540569bf81d3#ae95aa32f3cff47c5ff26d27af81540569bf81d3" dependencies = [ "jsonrpsee", "module-oracle-rpc-runtime-api", @@ -5413,7 +5413,7 @@ dependencies = [ [[package]] name = "module-oracle-rpc-runtime-api" version = "1.2.0" -source = "git+https://github.com/pendulum-chain/spacewalk?rev=06873f16c4a7ab884e4759d98b7b86c712e0c0ae#06873f16c4a7ab884e4759d98b7b86c712e0c0ae" +source = "git+https://github.com/pendulum-chain/spacewalk?rev=ae95aa32f3cff47c5ff26d27af81540569bf81d3#ae95aa32f3cff47c5ff26d27af81540569bf81d3" dependencies = [ "frame-support", "parity-scale-codec", @@ -5425,7 +5425,7 @@ dependencies = [ [[package]] name = "module-redeem-rpc" version = "1.2.0" -source = "git+https://github.com/pendulum-chain/spacewalk?rev=06873f16c4a7ab884e4759d98b7b86c712e0c0ae#06873f16c4a7ab884e4759d98b7b86c712e0c0ae" +source = "git+https://github.com/pendulum-chain/spacewalk?rev=ae95aa32f3cff47c5ff26d27af81540569bf81d3#ae95aa32f3cff47c5ff26d27af81540569bf81d3" dependencies = [ "jsonrpsee", "module-redeem-rpc-runtime-api", @@ -5438,7 +5438,7 @@ dependencies = [ [[package]] name = "module-redeem-rpc-runtime-api" version = "1.2.0" -source = "git+https://github.com/pendulum-chain/spacewalk?rev=06873f16c4a7ab884e4759d98b7b86c712e0c0ae#06873f16c4a7ab884e4759d98b7b86c712e0c0ae" +source = "git+https://github.com/pendulum-chain/spacewalk?rev=ae95aa32f3cff47c5ff26d27af81540569bf81d3#ae95aa32f3cff47c5ff26d27af81540569bf81d3" dependencies = [ "frame-support", "parity-scale-codec", @@ -5449,7 +5449,7 @@ dependencies = [ [[package]] name = "module-replace-rpc" version = "1.2.0" -source = "git+https://github.com/pendulum-chain/spacewalk?rev=06873f16c4a7ab884e4759d98b7b86c712e0c0ae#06873f16c4a7ab884e4759d98b7b86c712e0c0ae" +source = "git+https://github.com/pendulum-chain/spacewalk?rev=ae95aa32f3cff47c5ff26d27af81540569bf81d3#ae95aa32f3cff47c5ff26d27af81540569bf81d3" dependencies = [ "jsonrpsee", "module-replace-rpc-runtime-api", @@ -5462,7 +5462,7 @@ dependencies = [ [[package]] name = "module-replace-rpc-runtime-api" version = "1.2.0" -source = "git+https://github.com/pendulum-chain/spacewalk?rev=06873f16c4a7ab884e4759d98b7b86c712e0c0ae#06873f16c4a7ab884e4759d98b7b86c712e0c0ae" +source = "git+https://github.com/pendulum-chain/spacewalk?rev=ae95aa32f3cff47c5ff26d27af81540569bf81d3#ae95aa32f3cff47c5ff26d27af81540569bf81d3" dependencies = [ "frame-support", "parity-scale-codec", @@ -5473,7 +5473,7 @@ dependencies = [ [[package]] name = "module-vault-registry-rpc" version = "0.3.0" -source = "git+https://github.com/pendulum-chain/spacewalk?rev=06873f16c4a7ab884e4759d98b7b86c712e0c0ae#06873f16c4a7ab884e4759d98b7b86c712e0c0ae" +source = "git+https://github.com/pendulum-chain/spacewalk?rev=ae95aa32f3cff47c5ff26d27af81540569bf81d3#ae95aa32f3cff47c5ff26d27af81540569bf81d3" dependencies = [ "jsonrpsee", "module-oracle-rpc-runtime-api", @@ -5487,7 +5487,7 @@ dependencies = [ [[package]] name = "module-vault-registry-rpc-runtime-api" version = "0.3.0" -source = "git+https://github.com/pendulum-chain/spacewalk?rev=06873f16c4a7ab884e4759d98b7b86c712e0c0ae#06873f16c4a7ab884e4759d98b7b86c712e0c0ae" +source = "git+https://github.com/pendulum-chain/spacewalk?rev=ae95aa32f3cff47c5ff26d27af81540569bf81d3#ae95aa32f3cff47c5ff26d27af81540569bf81d3" dependencies = [ "frame-support", "module-oracle-rpc-runtime-api", @@ -5762,7 +5762,7 @@ dependencies = [ [[package]] name = "nomination" version = "0.5.0" -source = "git+https://github.com/pendulum-chain/spacewalk?rev=06873f16c4a7ab884e4759d98b7b86c712e0c0ae#06873f16c4a7ab884e4759d98b7b86c712e0c0ae" +source = "git+https://github.com/pendulum-chain/spacewalk?rev=ae95aa32f3cff47c5ff26d27af81540569bf81d3#ae95aa32f3cff47c5ff26d27af81540569bf81d3" dependencies = [ "currency", "fee", @@ -5933,7 +5933,7 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "oracle" version = "1.2.0" -source = "git+https://github.com/pendulum-chain/spacewalk?rev=06873f16c4a7ab884e4759d98b7b86c712e0c0ae#06873f16c4a7ab884e4759d98b7b86c712e0c0ae" +source = "git+https://github.com/pendulum-chain/spacewalk?rev=ae95aa32f3cff47c5ff26d27af81540569bf81d3#ae95aa32f3cff47c5ff26d27af81540569bf81d3" dependencies = [ "currency", "dia-oracle", @@ -7649,6 +7649,7 @@ dependencies = [ "sp-std", "sp-transaction-pool", "sp-version", + "spacewalk-primitives", "substrate-wasm-builder", "vesting-manager", "xcm", @@ -9404,7 +9405,7 @@ dependencies = [ [[package]] name = "redeem" version = "1.0.0" -source = "git+https://github.com/pendulum-chain/spacewalk?rev=06873f16c4a7ab884e4759d98b7b86c712e0c0ae#06873f16c4a7ab884e4759d98b7b86c712e0c0ae" +source = "git+https://github.com/pendulum-chain/spacewalk?rev=ae95aa32f3cff47c5ff26d27af81540569bf81d3#ae95aa32f3cff47c5ff26d27af81540569bf81d3" dependencies = [ "currency", "fee", @@ -9553,7 +9554,7 @@ dependencies = [ [[package]] name = "replace" version = "1.0.0" -source = "git+https://github.com/pendulum-chain/spacewalk?rev=06873f16c4a7ab884e4759d98b7b86c712e0c0ae#06873f16c4a7ab884e4759d98b7b86c712e0c0ae" +source = "git+https://github.com/pendulum-chain/spacewalk?rev=ae95aa32f3cff47c5ff26d27af81540569bf81d3#ae95aa32f3cff47c5ff26d27af81540569bf81d3" dependencies = [ "currency", "fee", @@ -9595,7 +9596,7 @@ dependencies = [ [[package]] name = "reward" version = "1.0.0" -source = "git+https://github.com/pendulum-chain/spacewalk?rev=06873f16c4a7ab884e4759d98b7b86c712e0c0ae#06873f16c4a7ab884e4759d98b7b86c712e0c0ae" +source = "git+https://github.com/pendulum-chain/spacewalk?rev=ae95aa32f3cff47c5ff26d27af81540569bf81d3#ae95aa32f3cff47c5ff26d27af81540569bf81d3" dependencies = [ "frame-benchmarking", "frame-support", @@ -9819,6 +9820,7 @@ dependencies = [ "sp-core", "sp-runtime", "spacewalk-primitives", + "zenlink-protocol", ] [[package]] @@ -11316,7 +11318,7 @@ dependencies = [ [[package]] name = "security" version = "1.2.0" -source = "git+https://github.com/pendulum-chain/spacewalk?rev=06873f16c4a7ab884e4759d98b7b86c712e0c0ae#06873f16c4a7ab884e4759d98b7b86c712e0c0ae" +source = "git+https://github.com/pendulum-chain/spacewalk?rev=ae95aa32f3cff47c5ff26d27af81540569bf81d3#ae95aa32f3cff47c5ff26d27af81540569bf81d3" dependencies = [ "frame-support", "frame-system", @@ -12358,7 +12360,7 @@ dependencies = [ [[package]] name = "spacewalk-primitives" version = "1.2.0" -source = "git+https://github.com/pendulum-chain/spacewalk?rev=06873f16c4a7ab884e4759d98b7b86c712e0c0ae#06873f16c4a7ab884e4759d98b7b86c712e0c0ae" +source = "git+https://github.com/pendulum-chain/spacewalk?rev=ae95aa32f3cff47c5ff26d27af81540569bf81d3#ae95aa32f3cff47c5ff26d27af81540569bf81d3" dependencies = [ "base58", "bstringify", @@ -12418,7 +12420,7 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "staking" version = "1.0.0" -source = "git+https://github.com/pendulum-chain/spacewalk?rev=06873f16c4a7ab884e4759d98b7b86c712e0c0ae#06873f16c4a7ab884e4759d98b7b86c712e0c0ae" +source = "git+https://github.com/pendulum-chain/spacewalk?rev=ae95aa32f3cff47c5ff26d27af81540569bf81d3#ae95aa32f3cff47c5ff26d27af81540569bf81d3" dependencies = [ "frame-benchmarking", "frame-support", @@ -12563,7 +12565,7 @@ dependencies = [ [[package]] name = "stellar-relay" version = "1.0.0" -source = "git+https://github.com/pendulum-chain/spacewalk?rev=06873f16c4a7ab884e4759d98b7b86c712e0c0ae#06873f16c4a7ab884e4759d98b7b86c712e0c0ae" +source = "git+https://github.com/pendulum-chain/spacewalk?rev=ae95aa32f3cff47c5ff26d27af81540569bf81d3#ae95aa32f3cff47c5ff26d27af81540569bf81d3" dependencies = [ "base64 0.13.1", "currency", @@ -13542,7 +13544,7 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "vault-registry" version = "1.2.0" -source = "git+https://github.com/pendulum-chain/spacewalk?rev=06873f16c4a7ab884e4759d98b7b86c712e0c0ae#06873f16c4a7ab884e4759d98b7b86c712e0c0ae" +source = "git+https://github.com/pendulum-chain/spacewalk?rev=ae95aa32f3cff47c5ff26d27af81540569bf81d3#ae95aa32f3cff47c5ff26d27af81540569bf81d3" dependencies = [ "currency", "fee", diff --git a/pallets/orml-currencies-allowance-extension/src/default_weights.rs b/pallets/orml-currencies-allowance-extension/src/default_weights.rs index b97de2a0c..8e15d9021 100644 --- a/pallets/orml-currencies-allowance-extension/src/default_weights.rs +++ b/pallets/orml-currencies-allowance-extension/src/default_weights.rs @@ -2,7 +2,7 @@ //! Autogenerated weights for `orml_currencies_allowance_extension` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-07-18, STEPS: `100`, REPEAT: `10`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-07-19, STEPS: `100`, REPEAT: `10`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` //! HOSTNAME: `Hugos-MacBook-Pro.local`, CPU: `` //! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("foucoco"), DB CACHE: 1024 @@ -35,7 +35,7 @@ impl crate::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 5_000_000 picoseconds. + // Minimum execution time: 6_000_000 picoseconds. Weight::from_parts(6_000_000, 0) .saturating_add(Weight::from_parts(0, 0)) .saturating_add(T::DbWeight::get().writes(1)) @@ -46,23 +46,23 @@ impl crate::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 5_000_000 picoseconds. + // Minimum execution time: 6_000_000 picoseconds. Weight::from_parts(6_000_000, 0) .saturating_add(Weight::from_parts(0, 0)) .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: TokenAllowance AllowedCurrencies (r:1 w:0) /// Proof Skipped: TokenAllowance AllowedCurrencies (max_values: None, max_size: None, mode: Measured) - /// Storage: TokenAllowance Approvals (r:1 w:1) + /// Storage: TokenAllowance Approvals (r:0 w:1) /// Proof Skipped: TokenAllowance Approvals (max_values: None, max_size: None, mode: Measured) fn approve() -> Weight { // Proof Size summary in bytes: // Measured: `184` - // Estimated: `7298` + // Estimated: `3833` // Minimum execution time: 11_000_000 picoseconds. Weight::from_parts(12_000_000, 0) - .saturating_add(Weight::from_parts(0, 7298)) - .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(Weight::from_parts(0, 3833)) + .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: TokenAllowance AllowedCurrencies (r:1 w:0) @@ -75,8 +75,8 @@ impl crate::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `561` // Estimated: `14248` - // Minimum execution time: 29_000_000 picoseconds. - Weight::from_parts(30_000_000, 0) + // Minimum execution time: 31_000_000 picoseconds. + Weight::from_parts(33_000_000, 0) .saturating_add(Weight::from_parts(0, 14248)) .saturating_add(T::DbWeight::get().reads(4)) .saturating_add(T::DbWeight::get().writes(3)) diff --git a/pallets/orml-currencies-allowance-extension/src/lib.rs b/pallets/orml-currencies-allowance-extension/src/lib.rs index 1654831d0..4f63d21b3 100644 --- a/pallets/orml-currencies-allowance-extension/src/lib.rs +++ b/pallets/orml-currencies-allowance-extension/src/lib.rs @@ -10,7 +10,7 @@ use frame_support::{dispatch::DispatchResult, ensure, weights::Weight}; #[cfg(test)] use mocktopus::macros::mockable; use orml_traits::MultiCurrency; -use sp_runtime::{traits::*, ArithmeticError}; +use sp_runtime::traits::*; use sp_std::{convert::TryInto, prelude::*, vec}; #[cfg(feature = "runtime-benchmarks")] @@ -245,18 +245,7 @@ impl Pallet { amount: BalanceOf, ) -> DispatchResult { ensure!(Self::is_allowed_currency(id), Error::::CurrencyNotLive); - Approvals::::try_mutate((id, &owner, &delegate), |maybe_approved| -> DispatchResult { - let mut approved = match maybe_approved.take() { - // an approval already exists and is being updated - Some(a) => a, - // a new approval is created - None => Default::default(), - }; - - approved = approved.checked_add(&amount).ok_or(ArithmeticError::Overflow)?; - *maybe_approved = Some(approved); - Ok(()) - })?; + Approvals::::set((id, &owner, &delegate), Some(amount)); Self::deposit_event(Event::TransferApproved { currency_id: id, source: owner.clone(), @@ -298,7 +287,10 @@ impl Pallet { if remaining.is_zero() { *maybe_approved = None; } else { - approved = remaining; + //decrement allowance only if it isn't max value (which acts as infinite allowance) + if approved != BalanceOf::::max_value() { + approved = remaining; + } *maybe_approved = Some(approved); } Ok(())