From 87f464dc41c1592d302a17e02585070c4dd11e3f Mon Sep 17 00:00:00 2001 From: Grigoriy Simonov Date: Tue, 23 May 2023 07:45:50 +0000 Subject: [PATCH] feat: switch `inflation` from `Currency` trait to `fungible::*` traits fix: benchmarks --- --- a/pallets/app-promotion/src/benchmarking.rs +++ b/pallets/app-promotion/src/benchmarking.rs @@ -33,11 +33,11 @@ where T: Config + pallet_unique::Config + pallet_evm_migration::Config, T::BlockNumber: From + Into, - <::Currency as Currency>::Balance: Sum + From, + BalanceOf: Sum + From, { let pallet_admin = account::("admin", 0, SEED); - ::Currency::make_free_balance_be( + ::Currency::set_balance( &pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value(), ); @@ -54,7 +54,7 @@ where_clause{ where T: Config + pallet_unique::Config + pallet_evm_migration::Config , T::BlockNumber: From + Into, - <::Currency as Currency>::Balance: Sum + From + BalanceOf: Sum + From } on_initialize { @@ -63,7 +63,7 @@ (0..b).try_for_each(|index| { let staker = account::("staker", index, SEED); - ::Currency::make_free_balance_be(&staker, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + ::Currency::set_balance(&staker, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); PromototionPallet::::stake(RawOrigin::Signed(staker.clone()).into(), Into::>::into(100u128) * T::Nominal::get())?; PromototionPallet::::unstake_all(RawOrigin::Signed(staker.clone()).into())?; Result::<(), sp_runtime::DispatchError>::Ok(()) @@ -73,7 +73,7 @@ set_admin_address { let pallet_admin = account::("admin", 0, SEED); - let _ = ::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let _ = ::Currency::set_balance(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); } : _(RawOrigin::Root, T::CrossAccountId::from_sub(pallet_admin)) payout_stakers{ @@ -82,12 +82,12 @@ let pallet_admin = account::("admin", 1, SEED); let share = Perbill::from_rational(1u32, 20); PromototionPallet::::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?; - ::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); - ::Currency::make_free_balance_be(&::TreasuryAccountId::get(), Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + ::Currency::set_balance(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + ::Currency::set_balance(&::TreasuryAccountId::get(), Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); let stakers: Vec = (0..b).map(|index| account("staker", index, SEED)).collect(); stakers.iter().for_each(|staker| { - ::Currency::make_free_balance_be(&staker, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + ::Currency::set_balance(&staker, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); }); (1..11).try_for_each(|i| { >::set_block_number(i.into()); @@ -112,13 +112,13 @@ stake { let caller = account::("caller", 0, SEED); let share = Perbill::from_rational(1u32, 10); - let _ = ::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let _ = ::Currency::set_balance(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); } : _(RawOrigin::Signed(caller.clone()), share * ::Currency::total_balance(&caller)) unstake_all { let caller = account::("caller", 0, SEED); let share = Perbill::from_rational(1u32, 20); - let _ = ::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let _ = ::Currency::set_balance(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); (1..11).map(|i| { // used to change block number >::set_block_number(i.into()); @@ -133,7 +133,7 @@ unstake_partial { let caller = account::("caller", 0, SEED); let share = Perbill::from_rational(1u32, 20); - let _ = ::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let _ = ::Currency::set_balance(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); (1..11).map(|i| { // used to change block number >::set_block_number(i.into()); @@ -148,18 +148,18 @@ sponsor_collection { let pallet_admin = account::("admin", 0, SEED); PromototionPallet::::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?; - let _ = ::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let _ = ::Currency::set_balance(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); let caller: T::AccountId = account("caller", 0, SEED); - let _ = ::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let _ = ::Currency::set_balance(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); let collection = create_nft_collection::(caller.clone())?; } : _(RawOrigin::Signed(pallet_admin.clone()), collection) stop_sponsoring_collection { let pallet_admin = account::("admin", 0, SEED); PromototionPallet::::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?; - let _ = ::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let _ = ::Currency::set_balance(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); let caller: T::AccountId = account("caller", 0, SEED); - let _ = ::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let _ = ::Currency::set_balance(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); let collection = create_nft_collection::(caller.clone())?; PromototionPallet::::sponsor_collection(RawOrigin::Signed(pallet_admin.clone()).into(), collection)?; } : _(RawOrigin::Signed(pallet_admin.clone()), collection) @@ -168,7 +168,7 @@ let pallet_admin = account::("admin", 0, SEED); PromototionPallet::::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?; - let _ = ::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let _ = ::Currency::set_balance(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); let address = H160::from_low_u64_be(SEED as u64); let data: Vec = (0..20 as u8).collect(); >::begin(RawOrigin::Root.into(), address)?; @@ -179,7 +179,7 @@ let pallet_admin = account::("admin", 0, SEED); PromototionPallet::::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?; - let _ = ::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let _ = ::Currency::set_balance(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); let address = H160::from_low_u64_be(SEED as u64); let data: Vec = (0..20 as u8).collect(); >::begin(RawOrigin::Root.into(), address)?; --- a/pallets/configuration/src/benchmarking.rs +++ b/pallets/configuration/src/benchmarking.rs @@ -68,7 +68,7 @@ } set_collator_selection_license_bond { - let bond_cost: Option> = Some(T::Balances::minimum_balance() * 10u32.into()); + let bond_cost: Option> = Some(T::Currency::minimum_balance() * 10u32.into()); }: { assert_ok!( >::set_collator_selection_license_bond(RawOrigin::Root.into(), bond_cost.clone()) --- a/pallets/inflation/src/lib.rs +++ b/pallets/inflation/src/lib.rs @@ -39,18 +39,22 @@ use frame_support::{ dispatch::{DispatchResult}, - traits::{Currency, Get}, + traits::{ + fungible::{Balanced, Inspect, Mutate}, + Get, Imbalance, + tokens::Precision, + }, }; pub use pallet::*; use sp_runtime::{ Perbill, - traits::{BlockNumberProvider}, + traits::{BlockNumberProvider, Zero}, }; use sp_std::convert::TryInto; type BalanceOf = - <::Currency as Currency<::AccountId>>::Balance; + <::Currency as Inspect<::AccountId>>::Balance; pub const YEAR: u32 = 5_259_600; // 6-second block // pub const YEAR: u32 = 2_629_800; // 12-second block @@ -66,7 +70,9 @@ #[pallet::config] pub trait Config: frame_system::Config { - type Currency: Currency; + type Currency: Balanced + + Inspect + + Mutate; type TreasuryAccountId: Get; // The block number provider @@ -133,11 +139,8 @@ add_weight(0, 4, Weight::from_parts(5_000_000, 0)); } - T::Currency::deposit_into_existing( - &T::TreasuryAccountId::get(), - >::get(), - ) - .ok(); + T::Currency::mint_into(&T::TreasuryAccountId::get(), >::get()) + .ok(); // Update inflation block >::set(next_inflation + block_interval.into()); @@ -184,10 +187,12 @@ >::set(inflation_start_relay_block + block_interval.into()); // First time deposit - create Treasury account so that we can call deposit_into_existing everywhere else - T::Currency::deposit_creating( + let imbalance = T::Currency::deposit( &T::TreasuryAccountId::get(), >::get(), - ); + Precision::Exact, + )?; + debug_assert!(imbalance.peek().is_zero()); } Ok(()) --- a/pallets/structure/src/benchmarking.rs +++ b/pallets/structure/src/benchmarking.rs @@ -17,7 +17,7 @@ use super::*; use frame_benchmarking::{benchmarks, account}; -use frame_support::traits::{Currency, Get}; +use frame_support::traits::{fungible::Balanced, Get, tokens::Precision}; use up_data_structs::{ CreateCollectionData, CollectionMode, CreateItemData, CollectionFlags, CreateNftData, budget::Unlimited, @@ -32,7 +32,7 @@ let caller: T::AccountId = account("caller", 0, SEED); let caller_cross = T::CrossAccountId::from_sub(caller.clone()); - ::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get()); + let _ = ::Currency::deposit(&caller, T::CollectionCreationPrice::get(), Precision::Exact).unwrap(); T::CollectionDispatch::create( caller_cross.clone(), caller_cross.clone(), --- a/pallets/unique/src/benchmarking.rs +++ b/pallets/unique/src/benchmarking.rs @@ -19,7 +19,7 @@ use super::*; use crate::Pallet; use frame_system::RawOrigin; -use frame_support::traits::{tokens::currency::Currency, Get}; +use frame_support::traits::{fungible::Balanced, Get, tokens::Precision}; use frame_benchmarking::{benchmarks, account}; use sp_runtime::DispatchError; use pallet_common::{ @@ -38,7 +38,12 @@ owner: T::AccountId, mode: CollectionMode, ) -> Result { - ::Currency::deposit_creating(&owner, T::CollectionCreationPrice::get()); + let _ = ::Currency::deposit( + &owner, + T::CollectionCreationPrice::get(), + Precision::Exact, + ) + .unwrap(); let col_name = create_u16_data::<{ MAX_COLLECTION_NAME_LENGTH }>(); let col_desc = create_u16_data::<{ MAX_COLLECTION_DESCRIPTION_LENGTH }>(); let token_prefix = create_data::<{ MAX_TOKEN_PREFIX_LENGTH }>(); @@ -64,7 +69,7 @@ let token_prefix = create_data::<{MAX_TOKEN_PREFIX_LENGTH}>(); let mode: CollectionMode = CollectionMode::NFT; let caller: T::AccountId = account("caller", 0, SEED); - ::Currency::deposit_creating(&caller, T::CollectionCreationPrice::get()); + let _ = ::Currency::deposit(&caller, T::CollectionCreationPrice::get(), Precision::Exact).unwrap(); }: _(RawOrigin::Signed(caller.clone()), col_name.clone(), col_desc.clone(), token_prefix.clone(), mode) verify { assert_eq!(>::get(CollectionId(1)).unwrap().owner, caller); -- gitstuff