From fc5b26af3046ddf0e57d19b458c17ce8898af4d9 Mon Sep 17 00:00:00 2001 From: PraetorP Date: Tue, 06 Sep 2022 07:15:54 +0000 Subject: [PATCH] fix runtime benchmarks, `payout_stakers` logic, bencmarkr for payout_stakers --- --- a/pallets/app-promotion/Cargo.toml +++ b/pallets/app-promotion/Cargo.toml @@ -20,18 +20,23 @@ 'frame-benchmarking', 'frame-support/runtime-benchmarks', 'frame-system/runtime-benchmarks', + # 'pallet-unique/runtime-benchmarks', ] std = [ 'codec/std', - 'serde/std', + 'frame-benchmarking/std', 'frame-support/std', 'frame-system/std', 'pallet-balances/std', 'pallet-timestamp/std', 'pallet-randomness-collective-flip/std', + 'pallet-evm/std', + 'sp-io/std', 'sp-std/std', 'sp-runtime/std', - 'frame-benchmarking/std', + 'sp-core/std', + 'serde/std', + ] ################################################################################ @@ -108,24 +113,24 @@ # local dependencies [dependencies.up-data-structs] default-features = false -path = "../../primitives/data-structs" +path = "../../primitives/data-structs" [dependencies.pallet-common] default-features = false -path = "../common" +path = "../common" [dependencies.pallet-unique] default-features = false -path = "../unique" +path = "../unique" [dependencies.pallet-evm-contract-helpers] default-features = false -path = "../evm-contract-helpers" +path = "../evm-contract-helpers" [dev-dependencies] [dependencies.pallet-evm-migration] default-features = false -path = "../evm-migration" +path = "../evm-migration" ################################################################################ --- a/pallets/app-promotion/src/benchmarking.rs +++ b/pallets/app-promotion/src/benchmarking.rs @@ -28,11 +28,8 @@ use pallet_unique::benchmarking::create_nft_collection; use pallet_evm_migration::Pallet as EvmMigrationPallet; -// trait BenchmarkingConfig: Config + pallet_unique::Config { } - -// impl BenchmarkingConfig for T { } +const SEED: u32 = 0; -const SEED: u32 = 0; benchmarks! { where_clause{ where T: Config + pallet_unique::Config + pallet_evm_migration::Config , @@ -53,18 +50,32 @@ } : {PromototionPallet::::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin))?} payout_stakers{ + let b in 1..101; + let pallet_admin = account::("admin", 0, SEED); - let share = Perbill::from_rational(1u32, 100); + let share = Perbill::from_rational(1u32, 20); 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()); + ::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + let staker: T::AccountId = account("caller", 0, SEED); - let stakers: Vec = (0..100).map(|index| account("staker", index, SEED)).collect(); + ::Currency::make_free_balance_be(&staker, 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()); }); - let _ = ::Currency::make_free_balance_be(&staker, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); - let _ = PromototionPallet::::stake(RawOrigin::Signed(staker.clone()).into(), share * ::Currency::total_balance(&staker))?; - } : {PromototionPallet::::payout_stakers(RawOrigin::Signed(pallet_admin.clone()).into(), Some(1))?} + (0..10).try_for_each(|_| { + stakers.iter() + .map(|staker| { + + PromototionPallet::::stake(RawOrigin::Signed(staker.clone()).into(), Into::>::into(100u128) * T::Nominal::get()) + }).collect::, _>>()?; + >::finalize(); + Result::<(), sp_runtime::DispatchError>::Ok(()) + })?; + + // let _ = ::Currency::make_free_balance_be(&staker, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + // let _ = PromototionPallet::::stake(RawOrigin::Signed(staker.clone()).into(), share * ::Currency::total_balance(&staker))?; + } : {PromototionPallet::::payout_stakers(RawOrigin::Signed(pallet_admin.clone()).into(), Some(b as u8))?} stake { let caller = account::("caller", 0, SEED); @@ -76,7 +87,10 @@ 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()); - (0..10).map(|_| PromototionPallet::::stake(RawOrigin::Signed(caller.clone()).into(), share * ::Currency::total_balance(&caller))).collect::, _>>()?; + (0..10).map(|_| { + >::finalize(); + PromototionPallet::::stake(RawOrigin::Signed(caller.clone()).into(), share * ::Currency::total_balance(&caller)) + }).collect::, _>>()?; } : {PromototionPallet::::unstake(RawOrigin::Signed(caller.clone()).into())?} --- a/pallets/app-promotion/src/lib.rs +++ b/pallets/app-promotion/src/lib.rs @@ -157,7 +157,7 @@ /// No permission to perform an action NoPermission, /// Insufficient funds to perform an action - NotSufficientFounds, + NotSufficientFunds, PendingForBlockOverflow, /// An error related to the fact that an invalid argument was passed to perform an action InvalidArgument, @@ -285,14 +285,23 @@ <::Currency as Currency>::ensure_can_withdraw( &staker_id, amount, - WithdrawReasons::all(), + WithdrawReasons::RESERVE, balance - amount, )?; Self::add_lock_balance(&staker_id, amount)?; let block_number = T::RelayBlockNumberProvider::current_block_number(); - let recalc_block = (block_number / T::RecalculationInterval::get() + 2u32.into()) + + let recalculate_after_interval: T::BlockNumber = + if block_number % T::RecalculationInterval::get() == 0u32.into() { + 1u32.into() + } else { + 2u32.into() + }; + + let recalc_block = (block_number / T::RecalculationInterval::get() + + recalculate_after_interval) * T::RecalculationInterval::get(); >::insert((&staker_id, block_number), { @@ -428,7 +437,7 @@ T::ContractHandler::remove_contract_sponsor(contract_id) } - #[pallet::weight(0)] + #[pallet::weight(T::WeightInfo::payout_stakers(stakers_number.unwrap_or(20) as u32))] pub fn payout_stakers(admin: OriginFor, stakers_number: Option) -> DispatchResult { let admin_id = ensure_signed(admin)?; @@ -495,6 +504,74 @@ // } // } + // { + // let mut stakers_number = stakers_number.unwrap_or(20); + // let last_id = RefCell::new(None); + // let income_acc = RefCell::new(BalanceOf::::default()); + // let amount_acc = RefCell::new(BalanceOf::::default()); + + // let flush_stake = || -> DispatchResult { + // if let Some(last_id) = &*last_id.borrow() { + // if !income_acc.borrow().is_zero() { + // >::transfer( + // &T::TreasuryAccountId::get(), + // last_id, + // *income_acc.borrow(), + // ExistenceRequirement::KeepAlive, + // ) + // .and_then(|_| { + // Self::add_lock_balance(last_id, *income_acc.borrow()); + // >::try_mutate(|staked| { + // staked + // .checked_add(&*income_acc.borrow()) + // .ok_or(ArithmeticError::Overflow.into()) + // }) + // })?; + + // Self::deposit_event(Event::StakingRecalculation( + // last_id.clone(), + // *amount_acc.borrow(), + // *income_acc.borrow(), + // )); + // } + + // *income_acc.borrow_mut() = BalanceOf::::default(); + // *amount_acc.borrow_mut() = BalanceOf::::default(); + // } + // Ok(()) + // }; + + // while let Some(( + // (current_id, staked_block), + // (amount, next_recalc_block_for_stake), + // )) = storage_iterator.next() + // { + // if stakers_number == 0 { + // NextCalculatedRecord::::set(Some((current_id, staked_block))); + // break; + // } + // stakers_number -= 1; + // if last_id.borrow().as_ref() != Some(¤t_id) { + // flush_stake()?; + // }; + // *last_id.borrow_mut() = Some(current_id.clone()); + // if current_recalc_block >= next_recalc_block_for_stake { + // *amount_acc.borrow_mut() += amount; + // Self::recalculate_and_insert_stake( + // ¤t_id, + // staked_block, + // next_recalc_block, + // amount, + // ((current_recalc_block - next_recalc_block_for_stake) + // / T::RecalculationInterval::get()) + // .into() + 1, + // &mut *income_acc.borrow_mut(), + // ); + // } + // } + // flush_stake()?; + // } + { let mut stakers_number = stakers_number.unwrap_or(20); let last_id = RefCell::new(None); @@ -510,7 +587,14 @@ *income_acc.borrow(), ExistenceRequirement::KeepAlive, ) - .and_then(|_| Self::add_lock_balance(last_id, *income_acc.borrow()))?; + .and_then(|_| { + Self::add_lock_balance(last_id, *income_acc.borrow())?; + >::try_mutate(|staked| { + staked + .checked_add(&*income_acc.borrow()) + .ok_or(ArithmeticError::Overflow.into()) + }) + })?; Self::deposit_event(Event::StakingRecalculation( last_id.clone(), @@ -534,11 +618,11 @@ NextCalculatedRecord::::set(Some((current_id, staked_block))); break; } - stakers_number -= 1; if last_id.borrow().as_ref() != Some(¤t_id) { flush_stake()?; + *last_id.borrow_mut() = Some(current_id.clone()); + stakers_number -= 1; }; - *last_id.borrow_mut() = Some(current_id.clone()); if current_recalc_block >= next_recalc_block_for_stake { *amount_acc.borrow_mut() += amount; Self::recalculate_and_insert_stake( --- 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, ensure, -}; +use frame_support::{traits::LockableCurrency, WeakBoundedVec, Parameter, dispatch::DispatchResult}; use pallet_balances::{BalanceLock, Config as BalancesConfig, Pallet as PalletBalances}; use pallet_common::CollectionHandle; --- a/pallets/app-promotion/src/weights.rs +++ b/pallets/app-promotion/src/weights.rs @@ -3,7 +3,7 @@ //! Autogenerated weights for pallet_app_promotion //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-09-01, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-09-06, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 // Executed Command: @@ -35,7 +35,7 @@ /// Weight functions needed for pallet_app_promotion. pub trait WeightInfo { fn set_admin_address() -> Weight; - fn payout_stakers() -> Weight; + fn payout_stakers(b: u32, ) -> Weight; fn stake() -> Weight; fn unstake() -> Weight; fn sponsor_collection() -> Weight; @@ -47,66 +47,70 @@ /// Weights for pallet_app_promotion using the Substrate node and recommended hardware. pub struct SubstrateWeight(PhantomData); impl WeightInfo for SubstrateWeight { - // Storage: Promotion Admin (r:0 w:1) + // Storage: AppPromotion Admin (r:0 w:1) fn set_admin_address() -> Weight { - (515_000 as Weight) + (5_297_000 as Weight) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } - // Storage: Promotion Admin (r:1 w:0) + // Storage: AppPromotion Admin (r:1 w:0) // Storage: ParachainSystem ValidationData (r:1 w:0) - // Storage: Promotion NextCalculatedRecord (r:1 w:1) - // Storage: Promotion Staked (r:2 w:0) - fn payout_stakers() -> Weight { - (8_475_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) + // Storage: AppPromotion NextCalculatedRecord (r:1 w:1) + // Storage: AppPromotion Staked (r:2 w:0) + fn payout_stakers(b: u32, ) -> Weight { + (8_045_000 as Weight) + // Standard Error: 19_000 + .saturating_add((4_778_000 as Weight).saturating_mul(b as Weight)) + .saturating_add(T::DbWeight::get().reads(4 as Weight)) + .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight))) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) - // Storage: Promotion StakesPerAccount (r:1 w:1) + // Storage: AppPromotion StakesPerAccount (r:1 w:1) // Storage: Balances Locks (r:1 w:1) // Storage: ParachainSystem ValidationData (r:1 w:0) - // Storage: Promotion Staked (r:1 w:1) - // Storage: Promotion TotalStaked (r:1 w:1) + // Storage: AppPromotion Staked (r:1 w:1) + // Storage: AppPromotion TotalStaked (r:1 w:1) fn stake() -> Weight { - (12_266_000 as Weight) + (17_623_000 as Weight) .saturating_add(T::DbWeight::get().reads(6 as Weight)) .saturating_add(T::DbWeight::get().writes(5 as Weight)) } - // Storage: Promotion Staked (r:2 w:1) - // Storage: ParachainSystem ValidationData (r:1 w:0) - // Storage: Promotion PendingUnstake (r:1 w:1) - // Storage: Promotion TotalStaked (r:1 w:1) - // Storage: Promotion StakesPerAccount (r:0 w:1) + // Storage: AppPromotion PendingUnstake (r:1 w:1) + // Storage: AppPromotion Staked (r:2 w:1) + // Storage: Balances Locks (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: AppPromotion TotalStaked (r:1 w:1) + // Storage: AppPromotion StakesPerAccount (r:0 w:1) fn unstake() -> Weight { - (10_663_000 as Weight) - .saturating_add(T::DbWeight::get().reads(5 as Weight)) - .saturating_add(T::DbWeight::get().writes(4 as Weight)) + (27_190_000 as Weight) + .saturating_add(T::DbWeight::get().reads(6 as Weight)) + .saturating_add(T::DbWeight::get().writes(6 as Weight)) } - // Storage: Promotion Admin (r:1 w:0) + // Storage: AppPromotion Admin (r:1 w:0) // Storage: Common CollectionById (r:1 w:1) fn sponsor_collection() -> Weight { - (10_879_000 as Weight) + (11_351_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } - // Storage: Promotion Admin (r:1 w:0) + // Storage: AppPromotion Admin (r:1 w:0) // Storage: Common CollectionById (r:1 w:1) fn stop_sponsoring_collection() -> Weight { - (10_548_000 as Weight) + (10_687_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } - // Storage: Promotion Admin (r:1 w:0) + // Storage: AppPromotion Admin (r:1 w:0) // Storage: EvmContractHelpers Sponsoring (r:0 w:1) fn sponsor_contract() -> Weight { - (2_130_000 as Weight) + (2_332_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } - // Storage: Promotion Admin (r:1 w:0) + // Storage: AppPromotion Admin (r:1 w:0) // Storage: EvmContractHelpers Sponsoring (r:1 w:1) fn stop_sponsoring_contract() -> Weight { - (3_509_000 as Weight) + (3_712_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -114,66 +118,70 @@ // For backwards compatibility and tests impl WeightInfo for () { - // Storage: Promotion Admin (r:0 w:1) + // Storage: AppPromotion Admin (r:0 w:1) fn set_admin_address() -> Weight { - (515_000 as Weight) + (5_297_000 as Weight) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } - // Storage: Promotion Admin (r:1 w:0) + // Storage: AppPromotion Admin (r:1 w:0) // Storage: ParachainSystem ValidationData (r:1 w:0) - // Storage: Promotion NextCalculatedRecord (r:1 w:1) - // Storage: Promotion Staked (r:2 w:0) - fn payout_stakers() -> Weight { - (8_475_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(5 as Weight)) + // Storage: AppPromotion NextCalculatedRecord (r:1 w:1) + // Storage: AppPromotion Staked (r:2 w:0) + fn payout_stakers(b: u32, ) -> Weight { + (8_045_000 as Weight) + // Standard Error: 19_000 + .saturating_add((4_778_000 as Weight).saturating_mul(b as Weight)) + .saturating_add(RocksDbWeight::get().reads(4 as Weight)) + .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight))) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: System Account (r:1 w:1) - // Storage: Promotion StakesPerAccount (r:1 w:1) + // Storage: AppPromotion StakesPerAccount (r:1 w:1) // Storage: Balances Locks (r:1 w:1) // Storage: ParachainSystem ValidationData (r:1 w:0) - // Storage: Promotion Staked (r:1 w:1) - // Storage: Promotion TotalStaked (r:1 w:1) + // Storage: AppPromotion Staked (r:1 w:1) + // Storage: AppPromotion TotalStaked (r:1 w:1) fn stake() -> Weight { - (12_266_000 as Weight) + (17_623_000 as Weight) .saturating_add(RocksDbWeight::get().reads(6 as Weight)) .saturating_add(RocksDbWeight::get().writes(5 as Weight)) } - // Storage: Promotion Staked (r:2 w:1) - // Storage: ParachainSystem ValidationData (r:1 w:0) - // Storage: Promotion PendingUnstake (r:1 w:1) - // Storage: Promotion TotalStaked (r:1 w:1) - // Storage: Promotion StakesPerAccount (r:0 w:1) + // Storage: AppPromotion PendingUnstake (r:1 w:1) + // Storage: AppPromotion Staked (r:2 w:1) + // Storage: Balances Locks (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: AppPromotion TotalStaked (r:1 w:1) + // Storage: AppPromotion StakesPerAccount (r:0 w:1) fn unstake() -> Weight { - (10_663_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(5 as Weight)) - .saturating_add(RocksDbWeight::get().writes(4 as Weight)) + (27_190_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(6 as Weight)) + .saturating_add(RocksDbWeight::get().writes(6 as Weight)) } - // Storage: Promotion Admin (r:1 w:0) + // Storage: AppPromotion Admin (r:1 w:0) // Storage: Common CollectionById (r:1 w:1) fn sponsor_collection() -> Weight { - (10_879_000 as Weight) + (11_351_000 as Weight) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } - // Storage: Promotion Admin (r:1 w:0) + // Storage: AppPromotion Admin (r:1 w:0) // Storage: Common CollectionById (r:1 w:1) fn stop_sponsoring_collection() -> Weight { - (10_548_000 as Weight) + (10_687_000 as Weight) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } - // Storage: Promotion Admin (r:1 w:0) + // Storage: AppPromotion Admin (r:1 w:0) // Storage: EvmContractHelpers Sponsoring (r:0 w:1) fn sponsor_contract() -> Weight { - (2_130_000 as Weight) + (2_332_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } - // Storage: Promotion Admin (r:1 w:0) + // Storage: AppPromotion Admin (r:1 w:0) // Storage: EvmContractHelpers Sponsoring (r:1 w:1) fn stop_sponsoring_contract() -> Weight { - (3_509_000 as Weight) + (3_712_000 as Weight) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } --- a/pallets/common/Cargo.toml +++ b/pallets/common/Cargo.toml @@ -40,4 +40,7 @@ "up-data-structs/std", "pallet-evm/std", ] -runtime-benchmarks = ["frame-benchmarking"] +runtime-benchmarks = [ + "frame-benchmarking/runtime-benchmarks", + "up-data-structs/runtime-benchmarks", +] --- a/runtime/common/config/pallets/app_promotion.rs +++ b/runtime/common/config/pallets/app_promotion.rs @@ -22,7 +22,7 @@ use frame_support::{parameter_types, PalletId}; use sp_arithmetic::Perbill; use up_common::{ - constants::{ UNIQUE, RELAY_DAYS}, + constants::{UNIQUE, RELAY_DAYS}, types::Balance, }; --- a/runtime/common/runtime_apis.rs +++ b/runtime/common/runtime_apis.rs @@ -680,7 +680,7 @@ list_benchmark!(list, extra, pallet_unique, Unique); list_benchmark!(list, extra, pallet_structure, Structure); list_benchmark!(list, extra, pallet_inflation, Inflation); - list_benchmark!(list, extra, pallet_app_promotion, Promotion); + list_benchmark!(list, extra, pallet_app_promotion, AppPromotion); list_benchmark!(list, extra, pallet_fungible, Fungible); list_benchmark!(list, extra, pallet_nonfungible, Nonfungible); @@ -736,7 +736,7 @@ add_benchmark!(params, batches, pallet_unique, Unique); add_benchmark!(params, batches, pallet_structure, Structure); add_benchmark!(params, batches, pallet_inflation, Inflation); - add_benchmark!(params, batches, pallet_app_promotion, Promotion); + add_benchmark!(params, batches, pallet_app_promotion, AppPromotion); add_benchmark!(params, batches, pallet_fungible, Fungible); add_benchmark!(params, batches, pallet_nonfungible, Nonfungible); --- a/tests/src/interfaces/augment-api-consts.ts +++ b/tests/src/interfaces/augment-api-consts.ts @@ -16,10 +16,6 @@ declare module '@polkadot/api-base/types/consts' { interface AugmentedConsts { appPromotion: { - /** - * In chain blocks. - **/ - day: u32 & AugmentedConst; intervalIncome: Perbill & AugmentedConst; nominal: u128 & AugmentedConst; /** --- a/tests/src/interfaces/augment-api-errors.ts +++ b/tests/src/interfaces/augment-api-errors.ts @@ -27,7 +27,7 @@ /** * Insufficient funds to perform an action **/ - NotSufficientFounds: AugmentedError; + NotSufficientFunds: AugmentedError; PendingForBlockOverflow: AugmentedError; /** * Generic error --- a/tests/src/interfaces/augment-api-events.ts +++ b/tests/src/interfaces/augment-api-events.ts @@ -16,7 +16,10 @@ declare module '@polkadot/api-base/types/events' { interface AugmentedEvents { appPromotion: { + SetAdmin: AugmentedEvent; + Stake: AugmentedEvent; StakingRecalculation: AugmentedEvent; + Unstake: AugmentedEvent; /** * Generic event **/ --- a/tests/src/interfaces/augment-api-query.ts +++ b/tests/src/interfaces/augment-api-query.ts @@ -36,10 +36,6 @@ * Amount of stakes for an Account **/ stakesPerAccount: AugmentedQuery Observable, [AccountId32]> & QueryableStorageEntry; - /** - * A block when app-promotion has started .I think this is redundant, because we only need `NextInterestBlock`. - **/ - startBlock: AugmentedQuery Observable, []> & QueryableStorageEntry; totalStaked: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Generic query --- a/tests/src/interfaces/default/types.ts +++ b/tests/src/interfaces/default/types.ts @@ -844,17 +844,23 @@ export interface PalletAppPromotionError extends Enum { readonly isAdminNotSet: boolean; readonly isNoPermission: boolean; - readonly isNotSufficientFounds: boolean; + readonly isNotSufficientFunds: boolean; readonly isPendingForBlockOverflow: boolean; readonly isInvalidArgument: boolean; - readonly type: 'AdminNotSet' | 'NoPermission' | 'NotSufficientFounds' | 'PendingForBlockOverflow' | 'InvalidArgument'; + readonly type: 'AdminNotSet' | 'NoPermission' | 'NotSufficientFunds' | 'PendingForBlockOverflow' | 'InvalidArgument'; } /** @name PalletAppPromotionEvent */ export interface PalletAppPromotionEvent extends Enum { readonly isStakingRecalculation: boolean; readonly asStakingRecalculation: ITuple<[AccountId32, u128, u128]>; - readonly type: 'StakingRecalculation'; + readonly isStake: boolean; + readonly asStake: ITuple<[AccountId32, u128]>; + readonly isUnstake: boolean; + readonly asUnstake: ITuple<[AccountId32, u128]>; + readonly isSetAdmin: boolean; + readonly asSetAdmin: AccountId32; + readonly type: 'StakingRecalculation' | 'Stake' | 'Unstake' | 'SetAdmin'; } /** @name PalletBalancesAccountData */ --- a/tests/src/interfaces/lookup.ts +++ b/tests/src/interfaces/lookup.ts @@ -1061,7 +1061,10 @@ **/ PalletAppPromotionEvent: { _enum: { - StakingRecalculation: '(AccountId32,u128,u128)' + StakingRecalculation: '(AccountId32,u128,u128)', + Stake: '(AccountId32,u128)', + Unstake: '(AccountId32,u128)', + SetAdmin: 'AccountId32' } }, /** @@ -3102,7 +3105,7 @@ * Lookup415: pallet_app_promotion::pallet::Error **/ PalletAppPromotionError: { - _enum: ['AdminNotSet', 'NoPermission', 'NotSufficientFounds', 'PendingForBlockOverflow', 'InvalidArgument'] + _enum: ['AdminNotSet', 'NoPermission', 'NotSufficientFunds', 'PendingForBlockOverflow', 'InvalidArgument'] }, /** * Lookup418: pallet_evm::pallet::Error --- a/tests/src/interfaces/types-lookup.ts +++ b/tests/src/interfaces/types-lookup.ts @@ -1202,7 +1202,13 @@ interface PalletAppPromotionEvent extends Enum { readonly isStakingRecalculation: boolean; readonly asStakingRecalculation: ITuple<[AccountId32, u128, u128]>; - readonly type: 'StakingRecalculation'; + readonly isStake: boolean; + readonly asStake: ITuple<[AccountId32, u128]>; + readonly isUnstake: boolean; + readonly asUnstake: ITuple<[AccountId32, u128]>; + readonly isSetAdmin: boolean; + readonly asSetAdmin: AccountId32; + readonly type: 'StakingRecalculation' | 'Stake' | 'Unstake' | 'SetAdmin'; } /** @name PalletEvmEvent (104) */ @@ -3290,10 +3296,10 @@ interface PalletAppPromotionError extends Enum { readonly isAdminNotSet: boolean; readonly isNoPermission: boolean; - readonly isNotSufficientFounds: boolean; + readonly isNotSufficientFunds: boolean; readonly isPendingForBlockOverflow: boolean; readonly isInvalidArgument: boolean; - readonly type: 'AdminNotSet' | 'NoPermission' | 'NotSufficientFounds' | 'PendingForBlockOverflow' | 'InvalidArgument'; + readonly type: 'AdminNotSet' | 'NoPermission' | 'NotSufficientFunds' | 'PendingForBlockOverflow' | 'InvalidArgument'; } /** @name PalletEvmError (418) */ -- gitstuff