git.delta.rocks / unique-network / refs/commits / d83ab4fde4e8

difftreelog

fix appPromotion RPC diasbling, refactor benchmarks, fix `WithdrawReasons`, rename `get_sponsor` to `sponsor` in hadlers traits + change their behavior in impl's blocks

PraetorP2022-09-07parent: #0102052.patch.diff
in: master

11 files changed

modifiednode/rpc/src/lib.rsdiffbeforeafterboth
234234
235 io.merge(Unique::new(client.clone()).into_rpc())?;235 io.merge(Unique::new(client.clone()).into_rpc())?;
236236
237 #[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())?;
239239
240 #[cfg(not(feature = "unique-runtime"))]240 #[cfg(not(feature = "unique-runtime"))]
modifiedpallets/app-promotion/src/benchmarking.rsdiffbeforeafterboth
3030
31const SEED: u32 = 0;31const SEED: u32 = 0;
3232
33fn set_admin<T>() -> DispatchResult33fn set_admin<T>() -> Result<T::AccountId, sp_runtime::DispatchError>
34where34where
35 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 )?;
50
51 Ok(pallet_admin)
50}52}
5153
52benchmarks! {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))
7779
78 payout_stakers{80 payout_stakers{
79 let b in 1..101;81 let b in 1..101;
8082
81 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 })?;
101
102 // 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))
105103
106 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))
111109
112 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<_>, _>>()?;
120118
121 } : {PromototionPallet::<T>::unstake(RawOrigin::Signed(caller.clone()).into())?}119 } : _(RawOrigin::Signed(caller.clone()))
122
123 // 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)}
131120
132 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)
140129
141 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)
150139
151 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)
161150
162 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}
174163
modifiedpallets/app-promotion/src/lib.rsdiffbeforeafterboth
226 where226 where
227 <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 // };
234
235 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 }
244238
245 T::WeightInfo::on_initialize(counter)239 T::WeightInfo::on_initialize(counter)
246 // consumed_weight
247 }240 }
248 }241 }
249242
286 <<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 )?;
292285
398 );391 );
399392
400 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>>::NoPermission
407 }399 }
408400
409 #[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)?;
412404
413 ensure!(405 ensure!(
431 );423 );
432424
433 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>>::NoPermission
437 );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 }
modifiedpallets/app-promotion/src/types.rsdiffbeforeafterboth
3737
38 fn remove_collection_sponsor(collection_id: Self::CollectionId) -> DispatchResult;38 fn remove_collection_sponsor(collection_id: Self::CollectionId) -> DispatchResult;
3939
40 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 }
6059
61 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 .sponsorship
66 .pending_sponsor()65 .sponsor()
67 .map(|acc| acc.to_owned()))66 .map(|acc| acc.to_owned()))
68 }67 }
69}68}
7978
80 fn remove_contract_sponsor(contract_address: Self::ContractId) -> DispatchResult;79 fn remove_contract_sponsor(contract_address: Self::ContractId) -> DispatchResult;
8180
82 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 }
102101
103 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))
modifiedpallets/app-promotion/src/weights.rsdiffbeforeafterboth
3//! Autogenerated weights for pallet_app_promotion3//! Autogenerated weights for pallet_app_promotion
4//!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-dev
6//! 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: 1024
88
9// 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_000
56 .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_000
73 .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_000
137 .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_000
154 .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 }
modifiedtests/src/app-promotion.test.tsdiffbeforeafterboth
460 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);
462462
463 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 });
489489
490 // set promotion sponsoring490 // set promotion sponsoring
491 await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorConract(flipper.options.address));491 await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorContract(flipper.options.address));
492492
493 // new sponsor is pallet address493 // new sponsor is pallet address
494 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);
509509
510 // contract sponsored by pallet510 // contract sponsored by pallet
511 await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorConract(flipper.options.address));511 await helper.signTransaction(palletAdmin, api.tx.appPromotion.sponsorContract(flipper.options.address));
512512
513 // owner sets self sponsoring513 // owner sets self sponsoring
514 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;
532532
533 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;
534534
535 // nonAdmin calls sponsorConract535 // nonAdmin calls sponsorContract
536 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;
537537
538 // 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);
562562
563 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;
566566
582 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));
587587
588 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);
611611
612 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 });
modifiedtests/src/interfaces/augment-api-tx.tsdiffbeforeafterboth
21 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]>;
modifiedtests/src/interfaces/default/types.tsdiffbeforeafterboth
825 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}
842842
843/** @name PalletAppPromotionError */843/** @name PalletAppPromotionError */
modifiedtests/src/interfaces/lookup.tsdiffbeforeafterboth
2483 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: {
modifiedtests/src/interfaces/types-lookup.tsdiffbeforeafterboth
2695 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 }
27122712
2713 /** @name PalletEvmCall (307) */2713 /** @name PalletEvmCall (307) */
modifiedtests/src/pallet-presence.test.tsdiffbeforeafterboth
68 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';
7272
73 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);