From 65414d643dd4dd6bbda40aae04be501ddedcbc6a Mon Sep 17 00:00:00 2001 From: PraetorP Date: Fri, 23 Jun 2023 13:55:10 +0000 Subject: [PATCH] feat(app-promo): types for `Currency` trait support has been removed & bench fix --- --- a/Cargo.lock +++ b/Cargo.lock @@ -6129,13 +6129,12 @@ [[package]] name = "pallet-app-promotion" -version = "0.2.0" +version = "0.2.1" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "log", - "pallet-balances", "pallet-common", "pallet-configuration", "pallet-evm", --- a/pallets/app-promotion/CHANGELOG.md +++ b/pallets/app-promotion/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. + +## [0.2.1] - 2023-06-23 + +### Changed + +- Removed types associated with support for `Currency` trait. + +### Fixed + +- Benchmarks. + ## [0.2.0] - 2023-05-19 ### Changed --- a/pallets/app-promotion/Cargo.toml +++ b/pallets/app-promotion/Cargo.toml @@ -9,7 +9,7 @@ license = 'GPLv3' name = 'pallet-app-promotion' repository = 'https://github.com/UniqueNetwork/unique-chain' -version = '0.2.0' +version = '0.2.1' [package.metadata.docs.rs] targets = ['x86_64-unknown-linux-gnu'] @@ -27,7 +27,6 @@ 'frame-benchmarking/std', 'frame-support/std', 'frame-system/std', - 'pallet-balances/std', 'pallet-evm/std', 'sp-core/std', 'sp-runtime/std', @@ -48,7 +47,7 @@ frame-benchmarking = { workspace = true, optional = true } frame-support = { workspace = true } frame-system = { workspace = true } -pallet-balances = { features = ["insecure_zero_ed"], workspace = true } + pallet-evm = { workspace = true } sp-core = { workspace = true } sp-runtime = { workspace = true } --- a/pallets/app-promotion/src/benchmarking.rs +++ b/pallets/app-promotion/src/benchmarking.rs @@ -18,7 +18,7 @@ use super::*; use crate::Pallet as PromototionPallet; - +use frame_support::traits::fungible::Unbalanced; use sp_runtime::traits::Bounded; use frame_benchmarking::{benchmarks, account}; @@ -63,9 +63,9 @@ (0..b).try_for_each(|index| { let staker = account::("staker", index, SEED); - ::Currency::set_balance(&staker, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + ::Currency::write_balance(&staker, Into::>::into(10_000u128) * T::Nominal::get())?; PromototionPallet::::stake(RawOrigin::Signed(staker.clone()).into(), Into::>::into(100u128) * T::Nominal::get())?; - PromototionPallet::::unstake_all(RawOrigin::Signed(staker.clone()).into())?; + PromototionPallet::::unstake_all(RawOrigin::Signed(staker).into())?; Result::<(), sp_runtime::DispatchError>::Ok(()) })?; let block_number = >::current_block_number() + T::PendingInterval::get(); @@ -82,13 +82,14 @@ 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::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()); + ::Currency::write_balance(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value())?; + ::Currency::write_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::set_balance(&staker, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); - }); + stakers.iter().try_for_each(|staker| { + ::Currency::write_balance(staker, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value())?; + Result::<(), sp_runtime::DispatchError>::Ok(()) + })?; (1..11).try_for_each(|i| { >::set_block_number(i.into()); T::RelayBlockNumberProvider::set_block_number((2*i).into()); @@ -102,7 +103,7 @@ Result::<(), sp_runtime::DispatchError>::Ok(()) })?; - let stakes = Staked::::iter_prefix((&stakers[0],)).into_iter().collect::>(); + let stakes = Staked::::iter_prefix((&stakers[0],)).collect::>(); assert_eq!(stakes.len(), 10); >::set_block_number(15_000.into()); @@ -112,13 +113,13 @@ stake { let caller = account::("caller", 0, SEED); let share = Perbill::from_rational(1u32, 10); - let _ = ::Currency::set_balance(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let _ = ::Currency::write_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::set_balance(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let _ = ::Currency::write_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 +134,7 @@ unstake_partial { let caller = account::("caller", 0, SEED); let share = Perbill::from_rational(1u32, 20); - let _ = ::Currency::set_balance(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let _ = ::Currency::write_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,19 +149,19 @@ 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::set_balance(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let _ = ::Currency::write_balance(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); let caller: T::AccountId = account("caller", 0, SEED); - let _ = ::Currency::set_balance(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); - let collection = create_nft_collection::(caller.clone())?; + let _ = ::Currency::write_balance(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let collection = create_nft_collection::(caller)?; } : _(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::set_balance(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let _ = ::Currency::write_balance(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); let caller: T::AccountId = account("caller", 0, SEED); - let _ = ::Currency::set_balance(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); - let collection = create_nft_collection::(caller.clone())?; + let _ = ::Currency::write_balance(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let collection = create_nft_collection::(caller)?; PromototionPallet::::sponsor_collection(RawOrigin::Signed(pallet_admin.clone()).into(), collection)?; } : _(RawOrigin::Signed(pallet_admin.clone()), collection) @@ -168,9 +169,9 @@ let pallet_admin = account::("admin", 0, SEED); PromototionPallet::::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?; - let _ = ::Currency::set_balance(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let _ = ::Currency::write_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(); + let data: Vec = (0..20).collect(); >::begin(RawOrigin::Root.into(), address)?; >::finish(RawOrigin::Root.into(), address, data)?; } : _(RawOrigin::Signed(pallet_admin.clone()), address) @@ -179,9 +180,9 @@ let pallet_admin = account::("admin", 0, SEED); PromototionPallet::::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?; - let _ = ::Currency::set_balance(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let _ = ::Currency::write_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(); + let data: Vec = (0..20).collect(); >::begin(RawOrigin::Root.into(), address)?; >::finish(RawOrigin::Root.into(), address, data)?; PromototionPallet::::sponsor_contract(RawOrigin::Signed(pallet_admin.clone()).into(), address)?; --- a/pallets/app-promotion/src/lib.rs +++ b/pallets/app-promotion/src/lib.rs @@ -53,16 +53,9 @@ pub mod types; pub mod weights; -use sp_std::{ - vec::{Vec}, - vec, - iter::Sum, - borrow::ToOwned, - cell::RefCell, -}; +use sp_std::{vec::Vec, vec, iter::Sum, borrow::ToOwned, cell::RefCell}; use sp_core::H160; use codec::EncodeLike; -use pallet_balances::BalanceLock; pub use types::*; use up_data_structs::CollectionId; @@ -70,7 +63,7 @@ use frame_support::{ dispatch::{DispatchResult}, traits::{ - Get, LockableCurrency, + Get, tokens::Balance, fungible::{Inspect, InspectFreeze, Mutate, MutateFreeze}, }, @@ -86,8 +79,6 @@ traits::{BlockNumberProvider, CheckedAdd, CheckedSub, AccountIdConversion, Zero}, ArithmeticError, DispatchError, }; - -pub const LOCK_IDENTIFIER: [u8; 8] = *b"appstake"; const PENDING_LIMIT_PER_BLOCK: u32 = 3; @@ -108,12 +99,7 @@ frame_system::Config + pallet_evm::Config + pallet_configuration::Config { /// Type to interact with the native token - type Currency: MutateFreeze - + Mutate - + ExtendedLockableCurrency< - Self::AccountId, - Balance = <::Currency as Inspect>::Balance, - >; + type Currency: MutateFreeze + Mutate; /// Type for interacting with collections type CollectionHandler: CollectionHandler< @@ -701,48 +687,7 @@ } flush_stake()?; } - - Ok(()) - } - - /// Migrates lock state into freeze one - /// - /// # Permissions - /// - /// * Sudo - /// - /// # Arguments - /// - /// * `origin`: Must be `Root`. - /// * `stakers`: Accounts to be upgraded. - #[pallet::call_index(9)] - #[pallet::weight(T::DbWeight::get().reads_writes(2, 2) * stakers.len() as u64)] - pub fn upgrade_accounts( - origin: OriginFor, - stakers: Vec, - ) -> DispatchResult { - ensure_root(origin)?; - stakers - .into_iter() - .try_for_each(|s| -> Result<_, DispatchError> { - if let Some(BalanceLock { amount, .. }) = Self::get_locked_balance(&s) { - if Self::get_frozen_balance(&s).is_some() { - return Err(Error::::InconsistencyState.into()); - } - - <::Currency as LockableCurrency>::remove_lock( - LOCK_IDENTIFIER, - &s, - ); - - Self::set_freeze_with_result(&s, amount)?; - Ok(()) - } else { - Ok(()) - } - })?; - Ok(()) } @@ -756,7 +701,7 @@ /// /// * `origin`: Must be `Root`. /// * `pending_blocks`: Block numbers that will be processed. - #[pallet::call_index(10)] + #[pallet::call_index(9)] #[pallet::weight(::WeightInfo::on_initialize(PENDING_LIMIT_PER_BLOCK*pending_blocks.len() as u32))] pub fn force_unstake( origin: OriginFor, @@ -933,17 +878,6 @@ amount, ) } - } - - /// Returns the balance locked by the pallet for the staker. - /// - /// - `staker`: staker account. - pub fn get_locked_balance( - staker: impl EncodeLike, - ) -> Option>> { - <::Currency as ExtendedLockableCurrency>::locks(staker) - .into_iter() - .find(|l| l.id == LOCK_IDENTIFIER) } /// Returns the balance frozen by the pallet for the staker. --- a/pallets/app-promotion/src/types.rs +++ b/pallets/app-promotion/src/types.rs @@ -1,7 +1,5 @@ -use codec::EncodeLike; -use frame_support::{traits::LockableCurrency, WeakBoundedVec, Parameter, dispatch::DispatchResult}; +use frame_support::{dispatch::DispatchResult}; -use pallet_balances::{BalanceLock, Config as BalancesConfig, Pallet as PalletBalances}; use pallet_common::CollectionHandle; use sp_runtime::{DispatchError, Perbill}; @@ -14,25 +12,6 @@ const MAX_NUMBER_PAYOUTS: u8 = 100; pub(crate) const DEFAULT_NUMBER_PAYOUTS: u8 = 20; -/// This trait was defined because `LockableCurrency` -/// has no way to know the state of the lock for an account. -pub trait ExtendedLockableCurrency: LockableCurrency { - /// Returns lock balance for an account. Allows to determine the cause of the lock. - fn locks(who: KArg) -> WeakBoundedVec, Self::MaxLocks> - where - KArg: EncodeLike; -} - -impl, I: 'static> ExtendedLockableCurrency - for PalletBalances -{ - fn locks(who: KArg) -> WeakBoundedVec, Self::MaxLocks> - where - KArg: EncodeLike, - { - Self::locks(who) - } -} /// Trait for interacting with collections. pub trait CollectionHandler { type CollectionId; --- a/pallets/nonfungible/src/benchmarking.rs +++ b/pallets/nonfungible/src/benchmarking.rs @@ -200,7 +200,7 @@ value: property_value(), }).collect::>(); let item = create_max_item(&collection, &owner, owner.clone())?; - }: {>::set_token_properties(&collection, &owner, item, props.into_iter(), false, &Unlimited)?} + }: {>::set_token_properties(&collection, &owner, item, props.into_iter(), SetPropertyMode::ExistingToken, &Unlimited)?} delete_token_properties { let b in 0..MAX_PROPERTIES_PER_ITEM; @@ -222,7 +222,7 @@ value: property_value(), }).collect::>(); let item = create_max_item(&collection, &owner, owner.clone())?; - >::set_token_properties(&collection, &owner, item, props.into_iter(), false, &Unlimited)?; + >::set_token_properties(&collection, &owner, item, props.into_iter(), SetPropertyMode::ExistingToken, &Unlimited)?; let to_delete = (0..b).map(|k| property_key(k as usize)).collect::>(); }: {>::delete_token_properties(&collection, &owner, item, to_delete.into_iter(), &Unlimited)?} --- a/pallets/refungible/src/benchmarking.rs +++ b/pallets/refungible/src/benchmarking.rs @@ -257,7 +257,7 @@ value: property_value(), }).collect::>(); let item = create_max_item(&collection, &owner, [(owner.clone(), 200)])?; - }: {>::set_token_properties(&collection, &owner, item, props.into_iter(), false, &Unlimited)?} + }: {>::set_token_properties(&collection, &owner, item, props.into_iter(), SetPropertyMode::ExistingToken, &Unlimited)?} delete_token_properties { let b in 0..MAX_PROPERTIES_PER_ITEM; @@ -279,7 +279,7 @@ value: property_value(), }).collect::>(); let item = create_max_item(&collection, &owner, [(owner.clone(), 200)])?; - >::set_token_properties(&collection, &owner, item, props.into_iter(), false, &Unlimited)?; + >::set_token_properties(&collection, &owner, item, props.into_iter(), SetPropertyMode::ExistingToken, &Unlimited)?; let to_delete = (0..b).map(|k| property_key(k as usize)).collect::>(); }: {>::delete_token_properties(&collection, &owner, item, to_delete.into_iter(), &Unlimited)?} -- gitstuff