1234567891011121314151617#![cfg(feature = "runtime-benchmarks")]1819use super::*;20use crate::Pallet as PromototionPallet;2122use sp_runtime::traits::Bounded;23use sp_std::vec;2425use frame_benchmarking::{benchmarks, account};2627use frame_system::{Origin, RawOrigin};28use pallet_unique::benchmarking::create_nft_collection;29use pallet_evm_migration::Pallet as EvmMigrationPallet;303132333435const SEED: u32 = 0;36benchmarks! {37 where_clause{38 where T: Config + pallet_unique::Config + pallet_evm_migration::Config ,39 T::BlockNumber: From<u32> + Into<u32>,40 <<T as Config>::Currency as Currency<T::AccountId>>::Balance: Sum + From<u128>41 }42 4344 4546 47 48 4950 set_admin_address {51 let pallet_admin = account::<T::AccountId>("admin", 0, SEED);52 let _ = <T as Config>::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());53 } : {PromototionPallet::<T>::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin))?}5455 payout_stakers{56 let pallet_admin = account::<T::AccountId>("admin", 0, SEED);57 let share = Perbill::from_rational(1u32, 10);58 PromototionPallet::<T>::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?;59 let _ = <T as Config>::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());60 let staker: T::AccountId = account("caller", 0, SEED);61 let stakers: Vec<T::AccountId> = (0..100).map(|index| account("staker", index, SEED)).collect();62 stakers.iter().for_each(|staker| {63 <T as Config>::Currency::make_free_balance_be(&staker, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());64 });65 let _ = <T as Config>::Currency::make_free_balance_be(&staker, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());66 let _ = PromototionPallet::<T>::stake(RawOrigin::Signed(staker.clone()).into(), share * <T as Config>::Currency::total_balance(&staker))?;67 } : {PromototionPallet::<T>::payout_stakers(RawOrigin::Signed(pallet_admin.clone()).into(), Some(1))?}6869 stake {70 let caller = account::<T::AccountId>("caller", 0, SEED);71 let share = Perbill::from_rational(1u32, 10);72 let _ = <T as Config>::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());73 } : {PromototionPallet::<T>::stake(RawOrigin::Signed(caller.clone()).into(), share * <T as Config>::Currency::total_balance(&caller))?}7475 unstake {76 let caller = account::<T::AccountId>("caller", 0, SEED);77 let share = Perbill::from_rational(1u32, 20);78 let _ = <T as Config>::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());79 (0..10).map(|_| PromototionPallet::<T>::stake(RawOrigin::Signed(caller.clone()).into(), share * <T as Config>::Currency::total_balance(&caller))).collect::<Result<Vec<_>, _>>()?;8081 } : {PromototionPallet::<T>::unstake(RawOrigin::Signed(caller.clone()).into())?}8283 84 85 86 87 88 89 90 9192 sponsor_collection {93 let pallet_admin = account::<T::AccountId>("admin", 0, SEED);94 PromototionPallet::<T>::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?;95 let _ = <T as Config>::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());96 let caller: T::AccountId = account("caller", 0, SEED);97 let _ = <T as Config>::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());98 let collection = create_nft_collection::<T>(caller.clone())?;99 } : {PromototionPallet::<T>::sponsor_collection(RawOrigin::Signed(pallet_admin.clone()).into(), collection)?}100101 stop_sponsoring_collection {102 let pallet_admin = account::<T::AccountId>("admin", 0, SEED);103 PromototionPallet::<T>::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?;104 let _ = <T as Config>::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());105 let caller: T::AccountId = account("caller", 0, SEED);106 let _ = <T as Config>::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());107 let collection = create_nft_collection::<T>(caller.clone())?;108 PromototionPallet::<T>::sponsor_collection(RawOrigin::Signed(pallet_admin.clone()).into(), collection)?;109 } : {PromototionPallet::<T>::stop_sponsoring_collection(RawOrigin::Signed(pallet_admin.clone()).into(), collection)?}110111 sponsor_contract {112 let pallet_admin = account::<T::AccountId>("admin", 0, SEED);113 PromototionPallet::<T>::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?;114115 let _ = <T as Config>::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());116 let address = H160::from_low_u64_be(SEED as u64);117 let data: Vec<u8> = (0..20 as u8).collect();118 <EvmMigrationPallet<T>>::begin(RawOrigin::Root.into(), address)?;119 <EvmMigrationPallet<T>>::finish(RawOrigin::Root.into(), address, data)?;120 } : {PromototionPallet::<T>::sponsor_conract(RawOrigin::Signed(pallet_admin.clone()).into(), address)?}121122 stop_sponsoring_contract {123 let pallet_admin = account::<T::AccountId>("admin", 0, SEED);124 PromototionPallet::<T>::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?;125126 let _ = <T as Config>::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::<T>::max_value());127 let address = H160::from_low_u64_be(SEED as u64);128 let data: Vec<u8> = (0..20 as u8).collect();129 <EvmMigrationPallet<T>>::begin(RawOrigin::Root.into(), address)?;130 <EvmMigrationPallet<T>>::finish(RawOrigin::Root.into(), address, data)?;131 PromototionPallet::<T>::sponsor_conract(RawOrigin::Signed(pallet_admin.clone()).into(), address)?;132 } : {PromototionPallet::<T>::stop_sponsoring_contract(RawOrigin::Signed(pallet_admin.clone()).into(), address)?}133}