From a3f8dbbbabdbd635e7b4f2cdc1cf9be636f7eb4c Mon Sep 17 00:00:00 2001 From: Herry Ho <45537372+herryho@users.noreply.github.com> Date: Mon, 1 Apr 2024 21:00:16 +0800 Subject: [PATCH] query token decimals instead of vtoken (#1219) --- pallets/slp/src/lib.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/pallets/slp/src/lib.rs b/pallets/slp/src/lib.rs index 0b587e947..fb9c4da7d 100644 --- a/pallets/slp/src/lib.rs +++ b/pallets/slp/src/lib.rs @@ -53,7 +53,7 @@ pub use primitives::Ledger; use sp_arithmetic::{per_things::Permill, traits::Zero}; use sp_core::{bounded::BoundedVec, H160}; use sp_io::hashing::blake2_256; -use sp_runtime::traits::{CheckedAdd, CheckedSub, Convert, TrailingZeroInput}; +use sp_runtime::traits::{CheckedAdd, CheckedSub, Convert, TrailingZeroInput, UniqueSaturatedFrom}; use sp_std::{boxed::Box, vec, vec::Vec}; pub use weights::WeightInfo; use xcm::{ @@ -2413,14 +2413,17 @@ pub mod pallet { .ok_or(Error::::StablePoolTokenIndexNotFound)?; // ensure swap balance not exceed a 10 unit - let metadata = T::AssetIdMaps::get_currency_metadata(vtoken) + let metadata = T::AssetIdMaps::get_currency_metadata(token) .ok_or(Error::::NotSupportedCurrencyId)?; let decimals = metadata.decimals; // 10 * 10^decimals - let max_amount = - 10u32.pow(decimals.into()).checked_mul(10).ok_or(Error::::OverFlow)?; - ensure!(amount <= BalanceOf::::from(max_amount), Error::::ExceedLimit); + let max_amount: u128 = + 10u128.pow(decimals.into()).checked_mul(10).ok_or(Error::::OverFlow)?; + ensure!( + amount <= BalanceOf::::unique_saturated_from(max_amount), + Error::::ExceedLimit + ); // swap vtoken from treasury account for token let treasury = T::TreasuryAccount::get();