difftreelog
fix appPromotion RPC diasbling, refactor benchmarks, fix `WithdrawReasons`, rename `get_sponsor` to `sponsor` in hadlers traits + change their behavior in impl's blocks
in: master
11 files changed
node/rpc/src/lib.rsdiffbeforeafterboth234234235 io.merge(Unique::new(client.clone()).into_rpc())?;235 io.merge(Unique::new(client.clone()).into_rpc())?;236236237 #[cfg(any(feature = "opal-runtime"))]237 #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]238 io.merge(AppPromotion::new(client.clone()).into_rpc())?;238 io.merge(AppPromotion::new(client.clone()).into_rpc())?;239239240 #[cfg(not(feature = "unique-runtime"))]240 #[cfg(not(feature = "unique-runtime"))]pallets/app-promotion/src/benchmarking.rsdiffbeforeafterboth303031const SEED: u32 = 0;31const SEED: u32 = 0;323233fn set_admin<T>() -> DispatchResult33fn set_admin<T>() -> Result<T::AccountId, sp_runtime::DispatchError>34where34where35 T: Config + pallet_unique::Config + pallet_evm_migration::Config,35 T: Config + pallet_unique::Config + pallet_evm_migration::Config,36 T::BlockNumber: From<u32> + Into<u32>,36 T::BlockNumber: From<u32> + Into<u32>,46 PromototionPallet::<T>::set_admin_address(46 PromototionPallet::<T>::set_admin_address(47 RawOrigin::Root.into(),47 RawOrigin::Root.into(),48 T::CrossAccountId::from_sub(pallet_admin.clone()),48 T::CrossAccountId::from_sub(pallet_admin.clone()),49 )49 )?;5051 Ok(pallet_admin)50}52}515352benchmarks! {54benchmarks! {73 set_admin_address {75 set_admin_address {74 let pallet_admin = account::<T::AccountId>("admin", 0, SEED);76 let pallet_admin = account::<T::AccountId>("admin", 0, SEED);75 let _ = <T as Config>::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());77 let _ = <T as Config>::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());76 } : {PromototionPallet::<T>::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin))?}78 } : _(RawOrigin::Root, T::CrossAccountId::from_sub(pallet_admin))777978 payout_stakers{80 payout_stakers{79 let b in 1..101;81 let b in 1..101;808281 let pallet_admin = account::<T::AccountId>("admin", 0, SEED);83 let pallet_admin = account::<T::AccountId>("admin", 1, SEED);82 let share = Perbill::from_rational(1u32, 20);84 let share = Perbill::from_rational(1u32, 20);83 PromototionPallet::<T>::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?;85 PromototionPallet::<T>::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?;84 <T as Config>::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());86 <T as Config>::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());99 Result::<(), sp_runtime::DispatchError>::Ok(())100 Result::<(), sp_runtime::DispatchError>::Ok(())100 })?;101 })?;101102 // let _ = <T as Config>::Currency::make_free_balance_be(&staker, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());103 // let _ = PromototionPallet::<T>::stake(RawOrigin::Signed(staker.clone()).into(), share * <T as Config>::Currency::total_balance(&staker))?;104 } : {PromototionPallet::<T>::payout_stakers(RawOrigin::Signed(pallet_admin.clone()).into(), Some(b as u8))?}102 } : _(RawOrigin::Signed(pallet_admin.clone()), Some(b as u8))105103106 stake {104 stake {107 let caller = account::<T::AccountId>("caller", 0, SEED);105 let caller = account::<T::AccountId>("caller", 0, SEED);108 let share = Perbill::from_rational(1u32, 10);106 let share = Perbill::from_rational(1u32, 10);109 let _ = <T as Config>::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());107 let _ = <T as Config>::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());110 } : {PromototionPallet::<T>::stake(RawOrigin::Signed(caller.clone()).into(), share * <T as Config>::Currency::total_balance(&caller))?}108 } : _(RawOrigin::Signed(caller.clone()), share * <T as Config>::Currency::total_balance(&caller))111109112 unstake {110 unstake {113 let caller = account::<T::AccountId>("caller", 0, SEED);111 let caller = account::<T::AccountId>("caller", 0, SEED);118 PromototionPallet::<T>::stake(RawOrigin::Signed(caller.clone()).into(), share * <T as Config>::Currency::total_balance(&caller))116 PromototionPallet::<T>::stake(RawOrigin::Signed(caller.clone()).into(), share * <T as Config>::Currency::total_balance(&caller))119 }).collect::<Result<Vec<_>, _>>()?;117 }).collect::<Result<Vec<_>, _>>()?;120118121 } : {PromototionPallet::<T>::unstake(RawOrigin::Signed(caller.clone()).into())?}119 } : _(RawOrigin::Signed(caller.clone()))122123 // recalculate_and_insert_stake{124 // let caller = account::<T::AccountId>("caller", 0, SEED);125 // let share = Perbill::from_rational(1u32, 10);126 // let _ = <T as Config>::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());127 // let _ = PromototionPallet::<T>::stake(RawOrigin::Signed(caller.clone()).into(), share * <T as Config>::Currency::total_balance(&caller))?;128 // let block = <T::RelayBlockNumberProvider as BlockNumberProvider>::current_block_number();129 // let mut acc = <BalanceOf<T>>::default();130 // } : {PromototionPallet::<T>::recalculate_and_insert_stake(&caller, block, share * <T as Config>::Currency::total_balance(&caller), &mut acc)}131120132 sponsor_collection {121 sponsor_collection {133 let pallet_admin = account::<T::AccountId>("admin", 0, SEED);122 let pallet_admin = account::<T::AccountId>("admin", 0, SEED);136 let caller: T::AccountId = account("caller", 0, SEED);125 let caller: T::AccountId = account("caller", 0, SEED);137 let _ = <T as Config>::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());126 let _ = <T as Config>::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());138 let collection = create_nft_collection::<T>(caller.clone())?;127 let collection = create_nft_collection::<T>(caller.clone())?;139 } : {PromototionPallet::<T>::sponsor_collection(RawOrigin::Signed(pallet_admin.clone()).into(), collection)?}128 } : _(RawOrigin::Signed(pallet_admin.clone()), collection)140129141 stop_sponsoring_collection {130 stop_sponsoring_collection {142 let pallet_admin = account::<T::AccountId>("admin", 0, SEED);131 let pallet_admin = account::<T::AccountId>("admin", 0, SEED);146 let _ = <T as Config>::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());135 let _ = <T as Config>::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());147 let collection = create_nft_collection::<T>(caller.clone())?;136 let collection = create_nft_collection::<T>(caller.clone())?;148 PromototionPallet::<T>::sponsor_collection(RawOrigin::Signed(pallet_admin.clone()).into(), collection)?;137 PromototionPallet::<T>::sponsor_collection(RawOrigin::Signed(pallet_admin.clone()).into(), collection)?;149 } : {PromototionPallet::<T>::stop_sponsoring_collection(RawOrigin::Signed(pallet_admin.clone()).into(), collection)?}138 } : _(RawOrigin::Signed(pallet_admin.clone()), collection)150139151 sponsor_contract {140 sponsor_contract {152 let pallet_admin = account::<T::AccountId>("admin", 0, SEED);141 let pallet_admin = account::<T::AccountId>("admin", 0, SEED);157 let data: Vec<u8> = (0..20 as u8).collect();146 let data: Vec<u8> = (0..20 as u8).collect();158 <EvmMigrationPallet<T>>::begin(RawOrigin::Root.into(), address)?;147 <EvmMigrationPallet<T>>::begin(RawOrigin::Root.into(), address)?;159 <EvmMigrationPallet<T>>::finish(RawOrigin::Root.into(), address, data)?;148 <EvmMigrationPallet<T>>::finish(RawOrigin::Root.into(), address, data)?;160 } : {PromototionPallet::<T>::sponsor_conract(RawOrigin::Signed(pallet_admin.clone()).into(), address)?}149 } : _(RawOrigin::Signed(pallet_admin.clone()), address)161150162 stop_sponsoring_contract {151 stop_sponsoring_contract {163 let pallet_admin = account::<T::AccountId>("admin", 0, SEED);152 let pallet_admin = account::<T::AccountId>("admin", 0, SEED);168 let data: Vec<u8> = (0..20 as u8).collect();157 let data: Vec<u8> = (0..20 as u8).collect();169 <EvmMigrationPallet<T>>::begin(RawOrigin::Root.into(), address)?;158 <EvmMigrationPallet<T>>::begin(RawOrigin::Root.into(), address)?;170 <EvmMigrationPallet<T>>::finish(RawOrigin::Root.into(), address, data)?;159 <EvmMigrationPallet<T>>::finish(RawOrigin::Root.into(), address, data)?;171 PromototionPallet::<T>::sponsor_conract(RawOrigin::Signed(pallet_admin.clone()).into(), address)?;160 PromototionPallet::<T>::sponsor_contract(RawOrigin::Signed(pallet_admin.clone()).into(), address)?;172 } : {PromototionPallet::<T>::stop_sponsoring_contract(RawOrigin::Signed(pallet_admin.clone()).into(), address)?}161 } : _(RawOrigin::Signed(pallet_admin.clone()), address)173}162}174163pallets/app-promotion/src/lib.rsdiffbeforeafterboth226 where226 where227 <T as frame_system::Config>::BlockNumber: From<u32>,227 <T as frame_system::Config>::BlockNumber: From<u32>,228 {228 {229 // let mut consumed_weight = 0;230 // let mut add_weight = |reads, writes, weight| {231 // consumed_weight += T::DbWeight::get().reads_writes(reads, writes);232 // consumed_weight += weight;233 // };234235 let block_pending = PendingUnstake::<T>::take(current_block_number);229 let block_pending = PendingUnstake::<T>::take(current_block_number);236 let counter = block_pending.len() as u32;230 let counter = block_pending.len() as u32;243 }237 }244238245 T::WeightInfo::on_initialize(counter)239 T::WeightInfo::on_initialize(counter)246 // consumed_weight247 }240 }248 }241 }249242286 <<T as Config>::Currency as Currency<T::AccountId>>::ensure_can_withdraw(279 <<T as Config>::Currency as Currency<T::AccountId>>::ensure_can_withdraw(287 &staker_id,280 &staker_id,288 amount,281 amount,289 WithdrawReasons::RESERVE,282 WithdrawReasons::all(),290 balance - amount,283 balance - amount,291 )?;284 )?;292285398 );391 );399392400 ensure!(393 ensure!(401 T::CollectionHandler::get_sponsor(collection_id)?394 T::CollectionHandler::sponsor(collection_id)?.ok_or(<Error<T>>::InvalidArgument)?402 .ok_or(<Error<T>>::InvalidArgument)?403 == Self::account_id(),395 == Self::account_id(),404 <Error<T>>::NoPermission396 <Error<T>>::NoPermission407 }399 }408400409 #[pallet::weight(T::WeightInfo::sponsor_contract())]401 #[pallet::weight(T::WeightInfo::sponsor_contract())]410 pub fn sponsor_conract(admin: OriginFor<T>, contract_id: H160) -> DispatchResult {402 pub fn sponsor_contract(admin: OriginFor<T>, contract_id: H160) -> DispatchResult {411 let admin_id = ensure_signed(admin)?;403 let admin_id = ensure_signed(admin)?;412404413 ensure!(405 ensure!(431 );423 );432424433 ensure!(425 ensure!(434 T::ContractHandler::get_sponsor(contract_id)?.ok_or(<Error<T>>::InvalidArgument)?426 T::ContractHandler::sponsor(contract_id)?.ok_or(<Error<T>>::InvalidArgument)?435 == T::CrossAccountId::from_sub(Self::account_id()),427 == T::CrossAccountId::from_sub(Self::account_id()),436 <Error<T>>::NoPermission428 <Error<T>>::NoPermission437 );429 );673 LOCK_IDENTIFIER,665 LOCK_IDENTIFIER,674 staker,666 staker,675 amount,667 amount,676 WithdrawReasons::RESERVE,668 WithdrawReasons::all(),677 )669 )678 }670 }679 }671 }pallets/app-promotion/src/types.rsdiffbeforeafterboth373738 fn remove_collection_sponsor(collection_id: Self::CollectionId) -> DispatchResult;38 fn remove_collection_sponsor(collection_id: Self::CollectionId) -> DispatchResult;393940 fn get_sponsor(40 fn sponsor(collection_id: Self::CollectionId)41 collection_id: Self::CollectionId,42 ) -> Result<Option<Self::AccountId>, DispatchError>;41 -> Result<Option<Self::AccountId>, DispatchError>;43}42}58 Self::force_remove_collection_sponsor(collection_id)57 Self::force_remove_collection_sponsor(collection_id)59 }58 }605961 fn get_sponsor(60 fn sponsor(62 collection_id: Self::CollectionId,61 collection_id: Self::CollectionId,63 ) -> Result<Option<Self::AccountId>, DispatchError> {62 ) -> Result<Option<Self::AccountId>, DispatchError> {64 Ok(<CollectionHandle<T>>::try_get(collection_id)?63 Ok(<CollectionHandle<T>>::try_get(collection_id)?65 .sponsorship64 .sponsorship66 .pending_sponsor()65 .sponsor()67 .map(|acc| acc.to_owned()))66 .map(|acc| acc.to_owned()))68 }67 }69}68}797880 fn remove_contract_sponsor(contract_address: Self::ContractId) -> DispatchResult;79 fn remove_contract_sponsor(contract_address: Self::ContractId) -> DispatchResult;818082 fn get_sponsor(81 fn sponsor(83 contract_address: Self::ContractId,82 contract_address: Self::ContractId,84 ) -> Result<Option<Self::AccountId>, DispatchError>;83 ) -> Result<Option<Self::AccountId>, DispatchError>;85}84}100 Self::force_remove_sponsor(contract_address)99 Self::force_remove_sponsor(contract_address)101 }100 }102101103 fn get_sponsor(102 fn sponsor(104 contract_address: Self::ContractId,103 contract_address: Self::ContractId,105 ) -> Result<Option<Self::AccountId>, DispatchError> {104 ) -> Result<Option<Self::AccountId>, DispatchError> {106 Ok(Self::get_sponsor(contract_address))105 Ok(Self::get_sponsor(contract_address))pallets/app-promotion/src/weights.rsdiffbeforeafterboth3//! Autogenerated weights for pallet_app_promotion3//! Autogenerated weights for pallet_app_promotion4//!4//!5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev5//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev6//! DATE: 2022-09-06, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`6//! DATE: 2022-09-07, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`7//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 10247//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024889// Executed Command:9// Executed Command:51 // Storage: AppPromotion PendingUnstake (r:1 w:0)51 // Storage: AppPromotion PendingUnstake (r:1 w:0)52 // Storage: System Account (r:1 w:1)52 // Storage: System Account (r:1 w:1)53 fn on_initialize(b: u32, ) -> Weight {53 fn on_initialize(b: u32, ) -> Weight {54 (2_461_000 as Weight)54 (2_651_000 as Weight)55 // Standard Error: 87_00055 // Standard Error: 103_00056 .saturating_add((6_006_000 as Weight).saturating_mul(b as Weight))56 .saturating_add((6_024_000 as Weight).saturating_mul(b as Weight))57 .saturating_add(T::DbWeight::get().reads(1 as Weight))57 .saturating_add(T::DbWeight::get().reads(1 as Weight))58 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))58 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))59 .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(b as Weight)))59 .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(b as Weight)))60 }60 }61 // Storage: AppPromotion Admin (r:0 w:1)61 // Storage: AppPromotion Admin (r:0 w:1)62 fn set_admin_address() -> Weight {62 fn set_admin_address() -> Weight {63 (5_467_000 as Weight)63 (7_117_000 as Weight)64 .saturating_add(T::DbWeight::get().writes(1 as Weight))64 .saturating_add(T::DbWeight::get().writes(1 as Weight))65 }65 }66 // Storage: AppPromotion Admin (r:1 w:0)66 // Storage: AppPromotion Admin (r:1 w:0)67 // Storage: ParachainSystem ValidationData (r:1 w:0)67 // Storage: ParachainSystem ValidationData (r:1 w:0)68 // Storage: AppPromotion NextCalculatedRecord (r:1 w:1)68 // Storage: AppPromotion NextCalculatedRecord (r:1 w:1)69 // Storage: AppPromotion Staked (r:2 w:0)69 // Storage: AppPromotion Staked (r:2 w:0)70 fn payout_stakers(b: u32, ) -> Weight {70 fn payout_stakers(b: u32, ) -> Weight {71 (4_946_000 as Weight)71 (9_958_000 as Weight)72 // Standard Error: 5_00072 // Standard Error: 8_00073 .saturating_add((4_599_000 as Weight).saturating_mul(b as Weight))73 .saturating_add((4_406_000 as Weight).saturating_mul(b as Weight))74 .saturating_add(T::DbWeight::get().reads(4 as Weight))74 .saturating_add(T::DbWeight::get().reads(4 as Weight))75 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))75 .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))76 .saturating_add(T::DbWeight::get().writes(1 as Weight))76 .saturating_add(T::DbWeight::get().writes(1 as Weight))77 }77 }78 // Storage: System Account (r:1 w:1)79 // Storage: AppPromotion StakesPerAccount (r:1 w:1)78 // Storage: AppPromotion StakesPerAccount (r:1 w:1)79 // Storage: System Account (r:1 w:1)80 // Storage: Balances Locks (r:1 w:1)80 // Storage: Balances Locks (r:1 w:1)81 // Storage: ParachainSystem ValidationData (r:1 w:0)81 // Storage: ParachainSystem ValidationData (r:1 w:0)82 // Storage: AppPromotion Staked (r:1 w:1)82 // Storage: AppPromotion Staked (r:1 w:1)83 // Storage: AppPromotion TotalStaked (r:1 w:1)83 // Storage: AppPromotion TotalStaked (r:1 w:1)84 fn stake() -> Weight {84 fn stake() -> Weight {85 (17_766_000 as Weight)85 (20_574_000 as Weight)86 .saturating_add(T::DbWeight::get().reads(6 as Weight))86 .saturating_add(T::DbWeight::get().reads(6 as Weight))87 .saturating_add(T::DbWeight::get().writes(5 as Weight))87 .saturating_add(T::DbWeight::get().writes(5 as Weight))88 }88 }93 // Storage: AppPromotion TotalStaked (r:1 w:1)93 // Storage: AppPromotion TotalStaked (r:1 w:1)94 // Storage: AppPromotion StakesPerAccount (r:0 w:1)94 // Storage: AppPromotion StakesPerAccount (r:0 w:1)95 fn unstake() -> Weight {95 fn unstake() -> Weight {96 (27_250_000 as Weight)96 (31_703_000 as Weight)97 .saturating_add(T::DbWeight::get().reads(6 as Weight))97 .saturating_add(T::DbWeight::get().reads(6 as Weight))98 .saturating_add(T::DbWeight::get().writes(6 as Weight))98 .saturating_add(T::DbWeight::get().writes(6 as Weight))99 }99 }100 // Storage: AppPromotion Admin (r:1 w:0)100 // Storage: AppPromotion Admin (r:1 w:0)101 // Storage: Common CollectionById (r:1 w:1)101 // Storage: Common CollectionById (r:1 w:1)102 fn sponsor_collection() -> Weight {102 fn sponsor_collection() -> Weight {103 (11_014_000 as Weight)103 (12_932_000 as Weight)104 .saturating_add(T::DbWeight::get().reads(2 as Weight))104 .saturating_add(T::DbWeight::get().reads(2 as Weight))105 .saturating_add(T::DbWeight::get().writes(1 as Weight))105 .saturating_add(T::DbWeight::get().writes(1 as Weight))106 }106 }107 // Storage: AppPromotion Admin (r:1 w:0)107 // Storage: AppPromotion Admin (r:1 w:0)108 // Storage: Common CollectionById (r:1 w:1)108 // Storage: Common CollectionById (r:1 w:1)109 fn stop_sponsoring_collection() -> Weight {109 fn stop_sponsoring_collection() -> Weight {110 (10_494_000 as Weight)110 (12_453_000 as Weight)111 .saturating_add(T::DbWeight::get().reads(2 as Weight))111 .saturating_add(T::DbWeight::get().reads(2 as Weight))112 .saturating_add(T::DbWeight::get().writes(1 as Weight))112 .saturating_add(T::DbWeight::get().writes(1 as Weight))113 }113 }114 // Storage: AppPromotion Admin (r:1 w:0)114 // Storage: AppPromotion Admin (r:1 w:0)115 // Storage: EvmContractHelpers Sponsoring (r:0 w:1)115 // Storage: EvmContractHelpers Sponsoring (r:0 w:1)116 fn sponsor_contract() -> Weight {116 fn sponsor_contract() -> Weight {117 (9_754_000 as Weight)117 (11_952_000 as Weight)118 .saturating_add(T::DbWeight::get().reads(1 as Weight))118 .saturating_add(T::DbWeight::get().reads(1 as Weight))119 .saturating_add(T::DbWeight::get().writes(1 as Weight))119 .saturating_add(T::DbWeight::get().writes(1 as Weight))120 }120 }121 // Storage: AppPromotion Admin (r:1 w:0)121 // Storage: AppPromotion Admin (r:1 w:0)122 // Storage: EvmContractHelpers Sponsoring (r:1 w:1)122 // Storage: EvmContractHelpers Sponsoring (r:1 w:1)123 fn stop_sponsoring_contract() -> Weight {123 fn stop_sponsoring_contract() -> Weight {124 (10_063_000 as Weight)124 (12_538_000 as Weight)125 .saturating_add(T::DbWeight::get().reads(2 as Weight))125 .saturating_add(T::DbWeight::get().reads(2 as Weight))126 .saturating_add(T::DbWeight::get().writes(1 as Weight))126 .saturating_add(T::DbWeight::get().writes(1 as Weight))127 }127 }132 // Storage: AppPromotion PendingUnstake (r:1 w:0)132 // Storage: AppPromotion PendingUnstake (r:1 w:0)133 // Storage: System Account (r:1 w:1)133 // Storage: System Account (r:1 w:1)134 fn on_initialize(b: u32, ) -> Weight {134 fn on_initialize(b: u32, ) -> Weight {135 (2_461_000 as Weight)135 (2_651_000 as Weight)136 // Standard Error: 87_000136 // Standard Error: 103_000137 .saturating_add((6_006_000 as Weight).saturating_mul(b as Weight))137 .saturating_add((6_024_000 as Weight).saturating_mul(b as Weight))138 .saturating_add(RocksDbWeight::get().reads(1 as Weight))138 .saturating_add(RocksDbWeight::get().reads(1 as Weight))139 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))139 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))140 .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(b as Weight)))140 .saturating_add(RocksDbWeight::get().writes((1 as Weight).saturating_mul(b as Weight)))141 }141 }142 // Storage: AppPromotion Admin (r:0 w:1)142 // Storage: AppPromotion Admin (r:0 w:1)143 fn set_admin_address() -> Weight {143 fn set_admin_address() -> Weight {144 (5_467_000 as Weight)144 (7_117_000 as Weight)145 .saturating_add(RocksDbWeight::get().writes(1 as Weight))145 .saturating_add(RocksDbWeight::get().writes(1 as Weight))146 }146 }147 // Storage: AppPromotion Admin (r:1 w:0)147 // Storage: AppPromotion Admin (r:1 w:0)148 // Storage: ParachainSystem ValidationData (r:1 w:0)148 // Storage: ParachainSystem ValidationData (r:1 w:0)149 // Storage: AppPromotion NextCalculatedRecord (r:1 w:1)149 // Storage: AppPromotion NextCalculatedRecord (r:1 w:1)150 // Storage: AppPromotion Staked (r:2 w:0)150 // Storage: AppPromotion Staked (r:2 w:0)151 fn payout_stakers(b: u32, ) -> Weight {151 fn payout_stakers(b: u32, ) -> Weight {152 (4_946_000 as Weight)152 (9_958_000 as Weight)153 // Standard Error: 5_000153 // Standard Error: 8_000154 .saturating_add((4_599_000 as Weight).saturating_mul(b as Weight))154 .saturating_add((4_406_000 as Weight).saturating_mul(b as Weight))155 .saturating_add(RocksDbWeight::get().reads(4 as Weight))155 .saturating_add(RocksDbWeight::get().reads(4 as Weight))156 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))156 .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight)))157 .saturating_add(RocksDbWeight::get().writes(1 as Weight))157 .saturating_add(RocksDbWeight::get().writes(1 as Weight))158 }158 }159 // Storage: System Account (r:1 w:1)160 // Storage: AppPromotion StakesPerAccount (r:1 w:1)159 // Storage: AppPromotion StakesPerAccount (r:1 w:1)160 // Storage: System Account (r:1 w:1)161 // Storage: Balances Locks (r:1 w:1)161 // Storage: Balances Locks (r:1 w:1)162 // Storage: ParachainSystem ValidationData (r:1 w:0)162 // Storage: ParachainSystem ValidationData (r:1 w:0)163 // Storage: AppPromotion Staked (r:1 w:1)163 // Storage: AppPromotion Staked (r:1 w:1)164 // Storage: AppPromotion TotalStaked (r:1 w:1)164 // Storage: AppPromotion TotalStaked (r:1 w:1)165 fn stake() -> Weight {165 fn stake() -> Weight {166 (17_766_000 as Weight)166 (20_574_000 as Weight)167 .saturating_add(RocksDbWeight::get().reads(6 as Weight))167 .saturating_add(RocksDbWeight::get().reads(6 as Weight))168 .saturating_add(RocksDbWeight::get().writes(5 as Weight))168 .saturating_add(RocksDbWeight::get().writes(5 as Weight))169 }169 }174 // Storage: AppPromotion TotalStaked (r:1 w:1)174 // Storage: AppPromotion TotalStaked (r:1 w:1)175 // Storage: AppPromotion StakesPerAccount (r:0 w:1)175 // Storage: AppPromotion StakesPerAccount (r:0 w:1)176 fn unstake() -> Weight {176 fn unstake() -> Weight {177 (27_250_000 as Weight)177 (31_703_000 as Weight)178 .saturating_add(RocksDbWeight::get().reads(6 as Weight))178 .saturating_add(RocksDbWeight::get().reads(6 as Weight))179 .saturating_add(RocksDbWeight::get().writes(6 as Weight))179 .saturating_add(RocksDbWeight::get().writes(6 as Weight))180 }180 }181 // Storage: AppPromotion Admin (r:1 w:0)181 // Storage: AppPromotion Admin (r:1 w:0)182 // Storage: Common CollectionById (r:1 w:1)182 // Storage: Common CollectionById (r:1 w:1)183 fn sponsor_collection() -> Weight {183 fn sponsor_collection() -> Weight {184 (11_014_000 as Weight)184 (12_932_000 as Weight)185 .saturating_add(RocksDbWeight::get().reads(2 as Weight))185 .saturating_add(RocksDbWeight::get().reads(2 as Weight))186 .saturating_add(RocksDbWeight::get().writes(1 as Weight))186 .saturating_add(RocksDbWeight::get().writes(1 as Weight))187 }187 }188 // Storage: AppPromotion Admin (r:1 w:0)188 // Storage: AppPromotion Admin (r:1 w:0)189 // Storage: Common CollectionById (r:1 w:1)189 // Storage: Common CollectionById (r:1 w:1)190 fn stop_sponsoring_collection() -> Weight {190 fn stop_sponsoring_collection() -> Weight {191 (10_494_000 as Weight)191 (12_453_000 as Weight)192 .saturating_add(RocksDbWeight::get().reads(2 as Weight))192 .saturating_add(RocksDbWeight::get().reads(2 as Weight))193 .saturating_add(RocksDbWeight::get().writes(1 as Weight))193 .saturating_add(RocksDbWeight::get().writes(1 as Weight))194 }194 }195 // Storage: AppPromotion Admin (r:1 w:0)195 // Storage: AppPromotion Admin (r:1 w:0)196 // Storage: EvmContractHelpers Sponsoring (r:0 w:1)196 // Storage: EvmContractHelpers Sponsoring (r:0 w:1)197 fn sponsor_contract() -> Weight {197 fn sponsor_contract() -> Weight {198 (9_754_000 as Weight)198 (11_952_000 as Weight)199 .saturating_add(RocksDbWeight::get().reads(1 as Weight))199 .saturating_add(RocksDbWeight::get().reads(1 as Weight))200 .saturating_add(RocksDbWeight::get().writes(1 as Weight))200 .saturating_add(RocksDbWeight::get().writes(1 as Weight))201 }201 }202 // Storage: AppPromotion Admin (r:1 w:0)202 // Storage: AppPromotion Admin (r:1 w:0)203 // Storage: EvmContractHelpers Sponsoring (r:1 w:1)203 // Storage: EvmContractHelpers Sponsoring (r:1 w:1)204 fn stop_sponsoring_contract() -> Weight {204 fn stop_sponsoring_contract() -> Weight {205 (10_063_000 as Weight)205 (12_538_000 as Weight)206 .saturating_add(RocksDbWeight::get().reads(2 as Weight))206 .saturating_add(RocksDbWeight::get().reads(2 as Weight))207 .saturating_add(RocksDbWeight::get().writes(1 as Weight))207 .saturating_add(RocksDbWeight::get().writes(1 as Weight))208 }208 }tests/src/app-promotion.test.tsdiffbeforeafterboth460 const flipper = await deployFlipper(web3, contractOwner);460 const flipper = await deployFlipper(web3, contractOwner);461 const contractMethods = contractHelpers(web3, contractOwner);461 const contractMethods = contractHelpers(web3, contractOwner);462462463 await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorConract(flipper.options.address));463 await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorContract(flipper.options.address));464 464 465 expect(await contractMethods.methods.hasSponsor(flipper.options.address).call()).to.be.true; 465 expect(await contractMethods.methods.hasSponsor(flipper.options.address).call()).to.be.true; 466 expect((await api.query.evmContractHelpers.owner(flipper.options.address)).toJSON()).to.be.equal(contractOwner); 466 expect((await api.query.evmContractHelpers.owner(flipper.options.address)).toJSON()).to.be.equal(contractOwner); 488 });488 });489489490 // set promotion sponsoring490 // set promotion sponsoring491 await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorConract(flipper.options.address));491 await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorContract(flipper.options.address));492492493 // new sponsor is pallet address493 // new sponsor is pallet address494 expect(await contractMethods.methods.hasSponsor(flipper.options.address).call()).to.be.true; 494 expect(await contractMethods.methods.hasSponsor(flipper.options.address).call()).to.be.true; 508 const contractMethods = contractHelpers(web3, contractOwner);508 const contractMethods = contractHelpers(web3, contractOwner);509509510 // contract sponsored by pallet510 // contract sponsored by pallet511 await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorConract(flipper.options.address));511 await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorContract(flipper.options.address));512512513 // owner sets self sponsoring513 // owner sets self sponsoring514 await expect(contractMethods.methods.selfSponsoredEnable(flipper.options.address).send()).to.be.not.rejected;514 await expect(contractMethods.methods.selfSponsoredEnable(flipper.options.address).send()).to.be.not.rejected;532532533 await expect(contractMethods.methods.selfSponsoredEnable(flipper.options.address).send()).to.be.not.rejected;533 await expect(contractMethods.methods.selfSponsoredEnable(flipper.options.address).send()).to.be.not.rejected;534534535 // nonAdmin calls sponsorConract535 // nonAdmin calls sponsorContract536 await expect(helper.signTransaction(nonAdmin, api.tx.appPromotion.sponsorConract(flipper.options.address))).to.be.rejected;536 await expect(helper.signTransaction(nonAdmin, api.tx.appPromotion.sponsorContract(flipper.options.address))).to.be.rejected;537537538 // contract still self-sponsored 538 // contract still self-sponsored 539 expect((await api.query.evmContractHelpers.sponsoring(flipper.options.address)).toJSON()).to.deep.equal({539 expect((await api.query.evmContractHelpers.sponsoring(flipper.options.address)).toJSON()).to.deep.equal({560 await contractHelper.methods.setSponsoringMode(flipper.options.address, SponsoringMode.Generous).send({from: contractOwner});560 await contractHelper.methods.setSponsoringMode(flipper.options.address, SponsoringMode.Generous).send({from: contractOwner});561 await transferBalanceToEth(api, alice, flipper.options.address, 1000n);561 await transferBalanceToEth(api, alice, flipper.options.address, 1000n);562562563 await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorConract(flipper.options.address));563 await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorContract(flipper.options.address));564 await flipper.methods.flip().send({from: caller});564 await flipper.methods.flip().send({from: caller});565 expect(await flipper.methods.getValue().call()).to.be.true;565 expect(await flipper.methods.getValue().call()).to.be.true;566566582 await transferBalanceToEth(api, alice, flipper.options.address);582 await transferBalanceToEth(api, alice, flipper.options.address);583 const contractHelper = contractHelpers(web3, contractOwner);583 const contractHelper = contractHelpers(web3, contractOwner);584 await contractHelper.methods.setSponsoringMode(flipper.options.address, SponsoringMode.Generous).send({from: contractOwner});584 await contractHelper.methods.setSponsoringMode(flipper.options.address, SponsoringMode.Generous).send({from: contractOwner});585 await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorConract(flipper.options.address));585 await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorContract(flipper.options.address));586 await helper.signTransaction(palletAdmin, api.tx.appPromotion.stopSponsoringContract(flipper.options.address));586 await helper.signTransaction(palletAdmin, api.tx.appPromotion.stopSponsoringContract(flipper.options.address));587587588 expect(await contractHelper.methods.hasSponsor(flipper.options.address).call()).to.be.false; 588 expect(await contractHelper.methods.hasSponsor(flipper.options.address).call()).to.be.false; 609 const contractOwner = (await createEthAccountWithBalance(api, web3, privateKeyWrapper)).toLowerCase();609 const contractOwner = (await createEthAccountWithBalance(api, web3, privateKeyWrapper)).toLowerCase();610 const flipper = await deployFlipper(web3, contractOwner);610 const flipper = await deployFlipper(web3, contractOwner);611611612 await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorConract(flipper.options.address));612 await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorContract(flipper.options.address));613 await expect(helper.signTransaction(nonAdmin, api.tx.appPromotion.stopSponsoringContract(flipper.options.address))).to.be.rejected;613 await expect(helper.signTransaction(nonAdmin, api.tx.appPromotion.stopSponsoringContract(flipper.options.address))).to.be.rejected;614 });614 });615 });615 });tests/src/interfaces/augment-api-tx.tsdiffbeforeafterboth21 payoutStakers: AugmentedSubmittable<(stakersNumber: Option<u8> | null | Uint8Array | u8 | AnyNumber) => SubmittableExtrinsic<ApiType>, [Option<u8>]>;21 payoutStakers: AugmentedSubmittable<(stakersNumber: Option<u8> | null | Uint8Array | u8 | AnyNumber) => SubmittableExtrinsic<ApiType>, [Option<u8>]>;22 setAdminAddress: AugmentedSubmittable<(admin: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [PalletEvmAccountBasicCrossAccountIdRepr]>;22 setAdminAddress: AugmentedSubmittable<(admin: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [PalletEvmAccountBasicCrossAccountIdRepr]>;23 sponsorCollection: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32]>;23 sponsorCollection: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32]>;24 sponsorConract: AugmentedSubmittable<(contractId: H160 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [H160]>;24 sponsorContract: AugmentedSubmittable<(contractId: H160 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [H160]>;25 stake: AugmentedSubmittable<(amount: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u128]>;25 stake: AugmentedSubmittable<(amount: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u128]>;26 stopSponsoringCollection: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32]>;26 stopSponsoringCollection: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32]>;27 stopSponsoringContract: AugmentedSubmittable<(contractId: H160 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [H160]>;27 stopSponsoringContract: AugmentedSubmittable<(contractId: H160 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [H160]>;tests/src/interfaces/default/types.tsdiffbeforeafterboth825 readonly asStopSponsoringCollection: {825 readonly asStopSponsoringCollection: {826 readonly collectionId: u32;826 readonly collectionId: u32;827 } & Struct;827 } & Struct;828 readonly isSponsorConract: boolean;828 readonly isSponsorContract: boolean;829 readonly asSponsorConract: {829 readonly asSponsorContract: {830 readonly contractId: H160;830 readonly contractId: H160;831 } & Struct;831 } & Struct;832 readonly isStopSponsoringContract: boolean;832 readonly isStopSponsoringContract: boolean;837 readonly asPayoutStakers: {837 readonly asPayoutStakers: {838 readonly stakersNumber: Option<u8>;838 readonly stakersNumber: Option<u8>;839 } & Struct;839 } & Struct;840 readonly type: 'SetAdminAddress' | 'Stake' | 'Unstake' | 'SponsorCollection' | 'StopSponsoringCollection' | 'SponsorConract' | 'StopSponsoringContract' | 'PayoutStakers';840 readonly type: 'SetAdminAddress' | 'Stake' | 'Unstake' | 'SponsorCollection' | 'StopSponsoringCollection' | 'SponsorContract' | 'StopSponsoringContract' | 'PayoutStakers';841}841}842842843/** @name PalletAppPromotionError */843/** @name PalletAppPromotionError */tests/src/interfaces/lookup.tsdiffbeforeafterboth2483 stop_sponsoring_collection: {2483 stop_sponsoring_collection: {2484 collectionId: 'u32',2484 collectionId: 'u32',2485 },2485 },2486 sponsor_conract: {2486 sponsor_contract: {2487 contractId: 'H160',2487 contractId: 'H160',2488 },2488 },2489 stop_sponsoring_contract: {2489 stop_sponsoring_contract: {tests/src/interfaces/types-lookup.tsdiffbeforeafterboth2695 readonly asStopSponsoringCollection: {2695 readonly asStopSponsoringCollection: {2696 readonly collectionId: u32;2696 readonly collectionId: u32;2697 } & Struct;2697 } & Struct;2698 readonly isSponsorConract: boolean;2698 readonly isSponsorContract: boolean;2699 readonly asSponsorConract: {2699 readonly asSponsorContract: {2700 readonly contractId: H160;2700 readonly contractId: H160;2701 } & Struct;2701 } & Struct;2702 readonly isStopSponsoringContract: boolean;2702 readonly isStopSponsoringContract: boolean;2707 readonly asPayoutStakers: {2707 readonly asPayoutStakers: {2708 readonly stakersNumber: Option<u8>;2708 readonly stakersNumber: Option<u8>;2709 } & Struct;2709 } & Struct;2710 readonly type: 'SetAdminAddress' | 'Stake' | 'Unstake' | 'SponsorCollection' | 'StopSponsoringCollection' | 'SponsorConract' | 'StopSponsoringContract' | 'PayoutStakers';2710 readonly type: 'SetAdminAddress' | 'Stake' | 'Unstake' | 'SponsorCollection' | 'StopSponsoringCollection' | 'SponsorContract' | 'StopSponsoringContract' | 'PayoutStakers';2711 }2711 }271227122713 /** @name PalletEvmCall (307) */2713 /** @name PalletEvmCall (307) */tests/src/pallet-presence.test.tsdiffbeforeafterboth68 const refungible = 'refungible';68 const refungible = 'refungible';69 const scheduler = 'scheduler';69 const scheduler = 'scheduler';70 const rmrkPallets = ['rmrkcore', 'rmrkequip'];70 const rmrkPallets = ['rmrkcore', 'rmrkequip'];71 const appPromotion = 'promotion';71 const appPromotion = 'apppromotion';727273 if (chain.eq('OPAL by UNIQUE')) {73 if (chain.eq('OPAL by UNIQUE')) {74 requiredPallets.push(refungible, scheduler, appPromotion, ...rmrkPallets);74 requiredPallets.push(refungible, scheduler, appPromotion, ...rmrkPallets);