diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/lib.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/lib.rs index e95d364679c40667a7df782e37305785fa5b2928..6097fb72d052fcc4ff9459072988533f0cb7b487 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/lib.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/lib.rs @@ -947,7 +947,10 @@ impl pallet_asset_rewards::Config for Runtime { type Assets = NativeAndAllAssets; type AssetId = xcm::v3::Location; type PermissionedOrigin = EnsureWithSuccess< - EnsureXcm<IsVoiceOfBody<GovernanceLocation, TreasurerBodyId>>, + EitherOfDiverse< + EnsureRoot<AccountId>, + EnsureXcm<IsVoiceOfBody<GovernanceLocation, TreasurerBodyId>>, + >, AccountId, TreasurerBodyAccount, >; @@ -1109,6 +1112,7 @@ mod benches { [pallet_assets, Foreign] [pallet_assets, Pool] [pallet_asset_conversion, AssetConversion] + [pallet_asset_rewards, AssetRewards] [pallet_balances, Balances] [pallet_message_queue, MessageQueue] [pallet_multisig, Multisig] diff --git a/substrate/frame/asset-rewards/src/benchmarking.rs b/substrate/frame/asset-rewards/src/benchmarking.rs index 847385dd412f7799c76793156666e84d38ed7a19..e589ecd53121516b8321b9b31d6b765b9f96250b 100644 --- a/substrate/frame/asset-rewards/src/benchmarking.rs +++ b/substrate/frame/asset-rewards/src/benchmarking.rs @@ -28,7 +28,7 @@ use frame_support::{ EnsureOrigin, }, }; -use frame_system::RawOrigin; +use frame_system::{RawOrigin, RawOrigin::Root}; use sp_runtime::{traits::One, SaturatedConversion}; use sp_std::prelude::*; @@ -102,24 +102,23 @@ mod benchmarks { fn create_pool() { use super::*; - let origin = T::PermissionedOrigin::try_successful_origin().unwrap(); - let acc = T::PermissionedOrigin::ensure_origin(origin.clone()).unwrap(); + let root_acc = T::PermissionedOrigin::ensure_origin(Root.into()).unwrap(); let staked_asset = T::BenchmarkHelper::to_asset_id(NativeOrWithId::WithId(1)); let reward_asset = T::BenchmarkHelper::to_asset_id(NativeOrWithId::Native); create_and_mint_asset::<T>( - &acc, + &root_acc, &staked_asset, T::Assets::minimum_balance(staked_asset.clone()), ); create_and_mint_asset::<T>( - &acc, + &root_acc, &reward_asset, T::Assets::minimum_balance(reward_asset.clone()), ); #[extrinsic_call] _( - origin as T::RuntimeOrigin, + Root, Box::new(staked_asset.clone()), Box::new(reward_asset.clone()), 100u32.into(), @@ -129,8 +128,8 @@ mod benchmarks { assert_last_event::<T>( Event::PoolCreated { - creator: acc.clone(), - admin: acc, + creator: root_acc.clone(), + admin: root_acc, staked_asset_id: staked_asset, reward_asset_id: reward_asset, reward_rate_per_block: 100u32.into(), @@ -145,7 +144,6 @@ mod benchmarks { fn stake() { use super::*; - let permissioned = T::PermissionedOrigin::try_successful_origin().unwrap(); let staker = T::BenchmarkHelper::to_account_id(2); let staked_asset = T::BenchmarkHelper::to_asset_id(NativeOrWithId::WithId(1)); let reward_asset = T::BenchmarkHelper::to_asset_id(NativeOrWithId::Native); @@ -161,7 +159,7 @@ mod benchmarks { ); assert_ok!(AssetRewards::<T>::create_pool( - permissioned as T::RuntimeOrigin, + Root.into(), Box::new(staked_asset.clone()), Box::new(reward_asset.clone()), 100u32.into(), @@ -181,7 +179,6 @@ mod benchmarks { fn unstake() { use super::*; - let permissioned = T::PermissionedOrigin::try_successful_origin().unwrap(); let staker = T::BenchmarkHelper::to_account_id(2); let staked_asset = T::BenchmarkHelper::to_asset_id(NativeOrWithId::WithId(1)); let reward_asset = T::BenchmarkHelper::to_asset_id(NativeOrWithId::Native); @@ -197,7 +194,7 @@ mod benchmarks { ); assert_ok!(AssetRewards::<T>::create_pool( - permissioned as T::RuntimeOrigin, + Root.into(), Box::new(staked_asset.clone()), Box::new(reward_asset.clone()), 100u32.into(), @@ -225,7 +222,6 @@ mod benchmarks { let block_number_before = frame_system::Pallet::<T>::block_number(); - let permissioned = T::PermissionedOrigin::try_successful_origin().unwrap(); let staker = T::BenchmarkHelper::to_account_id(2); let staked_asset = T::BenchmarkHelper::to_asset_id(NativeOrWithId::WithId(1)); let reward_asset = T::BenchmarkHelper::to_asset_id(NativeOrWithId::Native); @@ -240,7 +236,7 @@ mod benchmarks { T::Assets::minimum_balance(reward_asset.clone()), ); assert_ok!(AssetRewards::<T>::create_pool( - permissioned, + Root.into(), Box::new(staked_asset.clone()), Box::new(reward_asset.clone()), 100u32.into(), @@ -283,7 +279,6 @@ mod benchmarks { fn set_pool_reward_rate_per_block() { use super::*; - let permissioned = T::PermissionedOrigin::try_successful_origin().unwrap(); let acc = T::BenchmarkHelper::to_account_id(1); let staked_asset = T::BenchmarkHelper::to_asset_id(NativeOrWithId::WithId(1)); let reward_asset = T::BenchmarkHelper::to_asset_id(NativeOrWithId::Native); @@ -299,7 +294,7 @@ mod benchmarks { ); assert_ok!(AssetRewards::<T>::create_pool( - permissioned.clone() as T::RuntimeOrigin, + Root.into(), Box::new(staked_asset.clone()), Box::new(reward_asset.clone()), 100u32.into(), @@ -308,7 +303,7 @@ mod benchmarks { )); #[extrinsic_call] - _(permissioned as T::RuntimeOrigin, 0u32.into(), 5u32.into()); + _(Root, 0u32.into(), 5u32.into()); assert_last_event::<T>( Event::PoolRewardRateModified { @@ -323,7 +318,6 @@ mod benchmarks { fn set_pool_admin() { use super::*; - let permissioned = T::PermissionedOrigin::try_successful_origin().unwrap(); let new_admin = T::BenchmarkHelper::to_account_id(2); let staked_asset = T::BenchmarkHelper::to_asset_id(NativeOrWithId::WithId(1)); let reward_asset = T::BenchmarkHelper::to_asset_id(NativeOrWithId::Native); @@ -339,7 +333,7 @@ mod benchmarks { ); assert_ok!(AssetRewards::<T>::create_pool( - permissioned.clone() as T::RuntimeOrigin, + Root.into(), Box::new(staked_asset.clone()), Box::new(reward_asset.clone()), 100u32.into(), @@ -348,7 +342,7 @@ mod benchmarks { )); #[extrinsic_call] - _(permissioned as T::RuntimeOrigin, 0u32.into(), new_admin.clone()); + _(Root, 0u32.into(), new_admin.clone()); assert_last_event::<T>(Event::PoolAdminModified { pool_id: 0u32.into(), new_admin }.into()); } @@ -357,7 +351,6 @@ mod benchmarks { fn set_pool_expiry_block() { use super::*; - let permissioned = T::PermissionedOrigin::try_successful_origin().unwrap(); let staked_asset = T::BenchmarkHelper::to_asset_id(NativeOrWithId::WithId(1)); let reward_asset = T::BenchmarkHelper::to_asset_id(NativeOrWithId::Native); let acc = T::BenchmarkHelper::to_account_id(1); @@ -373,7 +366,7 @@ mod benchmarks { ); assert_ok!(AssetRewards::<T>::create_pool( - permissioned.clone() as T::RuntimeOrigin, + Root.into(), Box::new(staked_asset.clone()), Box::new(reward_asset.clone()), 100u32.into(), @@ -382,7 +375,7 @@ mod benchmarks { )); #[extrinsic_call] - _(permissioned as T::RuntimeOrigin, 0u32.into(), 1000u32.into()); + _(Root, 0u32.into(), 1000u32.into()); assert_last_event::<T>( Event::PoolExpiryBlockModified { @@ -397,15 +390,14 @@ mod benchmarks { fn deposit_reward_tokens() { use super::*; - let permissioned = T::PermissionedOrigin::try_successful_origin().unwrap(); - let permissioned_acc = T::PermissionedOrigin::ensure_origin(permissioned.clone()).unwrap(); + let acc = T::BenchmarkHelper::to_account_id(1); let staked_asset = T::BenchmarkHelper::to_asset_id(NativeOrWithId::WithId(1)); let reward_asset = T::BenchmarkHelper::to_asset_id(NativeOrWithId::Native); - create_and_mint_asset::<T>(&permissioned_acc, &reward_asset, 100_000u32.into()); - create_and_mint_asset::<T>(&permissioned_acc, &staked_asset, 100_000u32.into()); + create_and_mint_asset::<T>(&acc, &reward_asset, 100_000u32.into()); + create_and_mint_asset::<T>(&acc, &staked_asset, 100_000u32.into()); assert_ok!(AssetRewards::<T>::create_pool( - permissioned.clone() as T::RuntimeOrigin, + Root.into(), Box::new(staked_asset.clone()), Box::new(reward_asset.clone()), 100u32.into(), @@ -416,12 +408,12 @@ mod benchmarks { let pool_acc = AssetRewards::<T>::pool_account_id(&0u32).unwrap(); create_and_mint_sufficient::<T>(&pool_acc); - let balance_before = T::Assets::balance(reward_asset.clone(), &permissioned_acc); + let balance_before = T::Assets::balance(reward_asset.clone(), &acc); #[extrinsic_call] - _(RawOrigin::Signed(permissioned_acc.clone()), 0u32.into(), 10_000u32.into()); + _(RawOrigin::Signed(acc.clone()), 0u32.into(), 10_000u32.into()); - let balance_after = T::Assets::balance(reward_asset.clone(), &permissioned_acc); + let balance_after = T::Assets::balance(reward_asset.clone(), &acc); assert_eq!(balance_after, balance_before - 10_000u32.into()); } @@ -430,15 +422,14 @@ mod benchmarks { fn withdraw_reward_tokens() { use super::*; - let permissioned = T::PermissionedOrigin::try_successful_origin().unwrap(); - let permissioned_acc = T::PermissionedOrigin::ensure_origin(permissioned.clone()).unwrap(); + let acc = T::BenchmarkHelper::to_account_id(1); let staked_asset = T::BenchmarkHelper::to_asset_id(NativeOrWithId::WithId(1)); let reward_asset = T::BenchmarkHelper::to_asset_id(NativeOrWithId::Native); - create_and_mint_asset::<T>(&permissioned_acc, &staked_asset, 10000u32.into()); - create_and_mint_asset::<T>(&permissioned_acc, &reward_asset, 10000u32.into()); + create_and_mint_asset::<T>(&acc, &staked_asset, 10000u32.into()); + create_and_mint_asset::<T>(&acc, &reward_asset, 10000u32.into()); assert_ok!(AssetRewards::<T>::create_pool( - permissioned.clone() as T::RuntimeOrigin, + Root.into(), Box::new(staked_asset.clone()), Box::new(reward_asset.clone()), 100u32.into(), @@ -448,23 +439,18 @@ mod benchmarks { let pool_acc = AssetRewards::<T>::pool_account_id(&0u32).unwrap(); create_and_mint_sufficient::<T>(&pool_acc); - let balance_before = T::Assets::balance(reward_asset.clone(), &permissioned_acc); + let balance_before = T::Assets::balance(reward_asset.clone(), &acc); assert_ok!(AssetRewards::<T>::deposit_reward_tokens( - RawOrigin::Signed(permissioned_acc.clone()).into(), + RawOrigin::Signed(acc.clone()).into(), 0u32.into(), 100u32.into() )); #[extrinsic_call] - _( - RawOrigin::Signed(permissioned_acc.clone()), - 0u32.into(), - 50u32.into(), - permissioned_acc.clone(), - ); + _(Root, 0u32.into(), 50u32.into(), acc.clone()); - let balance_after = T::Assets::balance(reward_asset.clone(), &permissioned_acc); + let balance_after = T::Assets::balance(reward_asset.clone(), &acc); // Deposited 100, withdrew 50 assert_eq!(balance_after, balance_before - 50u32.into());