From 70ac32cd40a29d8df56a887728b3f3825b18d29d Mon Sep 17 00:00:00 2001 From: Benjamin Gallois <business@gallois.cc> Date: Fri, 5 May 2023 17:35:26 +0200 Subject: [PATCH] Oneshot account pallet benchmark (nodes/rust/duniter-v2s!153) * feat(runtimes): use our benchmarks for pallet oneshot_account * feat(pallet_oneshot_account): add weights info * fix(pallet_oneshot_account): remove unecessary where clause --- pallets/oneshot-account/src/benchmarking.rs | 15 +++------------ pallets/oneshot-account/src/lib.rs | 10 +++++++--- pallets/oneshot-account/src/mock.rs | 1 + runtime/common/src/pallets_config.rs | 1 + runtime/common/src/weights.rs | 1 + 5 files changed, 13 insertions(+), 15 deletions(-) diff --git a/pallets/oneshot-account/src/benchmarking.rs b/pallets/oneshot-account/src/benchmarking.rs index a72c65851..69bdf381d 100644 --- a/pallets/oneshot-account/src/benchmarking.rs +++ b/pallets/oneshot-account/src/benchmarking.rs @@ -29,10 +29,11 @@ use crate::Pallet; const SEED: u32 = 0; benchmarks! { - where_clause { where + where_clause { + where T: pallet_balances::Config, T::Balance: From<u64>, - <T::Currency as Currency<T::AccountId>>::Balance: IsType<T::Balance> + <T::Currency as Currency<T::AccountId>>::Balance: IsType<T::Balance>+From<T::Balance> } create_oneshot_account { let existential_deposit = T::ExistentialDeposit::get(); @@ -51,11 +52,6 @@ benchmarks! { assert_eq!(Balances::<T>::free_balance(&caller), transfer_amount); assert_eq!(OneshotAccounts::<T>::get(&recipient), Some(transfer_amount.into())); } - where_clause { where - T: pallet_balances::Config, - T::Balance: From<u64>, - <T::Currency as Currency<T::AccountId>>::Balance: IsType<T::Balance>+From<T::Balance> - } consume_oneshot_account { let existential_deposit = T::ExistentialDeposit::get(); let caller: T::AccountId = whitelisted_caller(); @@ -85,11 +81,6 @@ benchmarks! { existential_deposit.saturating_mul((3).into()) ); } - where_clause { where - T: pallet_balances::Config, - T::Balance: From<u64>, - <T::Currency as Currency<T::AccountId>>::Balance: IsType<T::Balance>+From<T::Balance> - } consume_oneshot_account_with_remaining { let existential_deposit = T::ExistentialDeposit::get(); let caller: T::AccountId = whitelisted_caller(); diff --git a/pallets/oneshot-account/src/lib.rs b/pallets/oneshot-account/src/lib.rs index 6c1b7f72e..91d782b56 100644 --- a/pallets/oneshot-account/src/lib.rs +++ b/pallets/oneshot-account/src/lib.rs @@ -21,10 +21,12 @@ mod check_nonce; #[cfg(test)] mod mock; mod types; +pub mod weights; pub use check_nonce::CheckNonce; pub use pallet::*; pub use types::*; +pub use weights::WeightInfo; use frame_support::pallet_prelude::*; use frame_support::traits::{ @@ -56,6 +58,8 @@ pub mod pallet { type Currency: Currency<Self::AccountId>; type InnerOnChargeTransaction: OnChargeTransaction<Self>; type RuntimeEvent: From<Event<Self>> + IsType<<Self as frame_system::Config>::RuntimeEvent>; + /// Type representing the weight of this pallet + type WeightInfo: WeightInfo; } // STORAGE // @@ -127,7 +131,7 @@ pub mod pallet { /// - `balance`: The balance to be transfered to this oneshot account. /// /// Origin account is kept alive. - #[pallet::weight(500_000_000)] + #[pallet::weight(T::WeightInfo::create_oneshot_account())] pub fn create_oneshot_account( origin: OriginFor<T>, dest: <T::Lookup as StaticLookup>::Source, @@ -165,7 +169,7 @@ pub mod pallet { /// - `block_height`: Must be a recent block number. The limit is `BlockHashCount` in the past. (this is to prevent replay attacks) /// - `dest`: The destination account. /// - `dest_is_oneshot`: If set to `true`, then a oneshot account is created at `dest`. Else, `dest` has to be an existing account. - #[pallet::weight(500_000_000)] + #[pallet::weight(T::WeightInfo::consume_oneshot_account())] pub fn consume_oneshot_account( origin: OriginFor<T>, block_height: T::BlockNumber, @@ -223,7 +227,7 @@ pub mod pallet { /// - `dest2`: The second destination account. /// - `dest2_is_oneshot`: If set to `true`, then a oneshot account is created at `dest2`. Else, `dest2` has to be an existing account. /// - `balance1`: The amount transfered to `dest`, the leftover being transfered to `dest2`. - #[pallet::weight(500_000_000)] + #[pallet::weight(T::WeightInfo::consume_oneshot_account_with_remaining())] pub fn consume_oneshot_account_with_remaining( origin: OriginFor<T>, block_height: T::BlockNumber, diff --git a/pallets/oneshot-account/src/mock.rs b/pallets/oneshot-account/src/mock.rs index 89ee71c47..2de611479 100644 --- a/pallets/oneshot-account/src/mock.rs +++ b/pallets/oneshot-account/src/mock.rs @@ -104,6 +104,7 @@ impl pallet_oneshot_account::Config for Test { type Currency = Balances; type InnerOnChargeTransaction = CurrencyAdapter<Balances, HandleFees>; type RuntimeEvent = RuntimeEvent; + type WeightInfo = (); } pub struct HandleFees; diff --git a/runtime/common/src/pallets_config.rs b/runtime/common/src/pallets_config.rs index 892cb3723..69323965e 100644 --- a/runtime/common/src/pallets_config.rs +++ b/runtime/common/src/pallets_config.rs @@ -186,6 +186,7 @@ macro_rules! pallets_config { type Currency = Balances; type RuntimeEvent = RuntimeEvent; type InnerOnChargeTransaction = CurrencyAdapter<Balances, HandleFees>; + type WeightInfo = common_runtime::weights::pallet_oneshot_account::WeightInfo<Runtime>; } // CONSENSUS // diff --git a/runtime/common/src/weights.rs b/runtime/common/src/weights.rs index b692cbca4..97903b4e1 100644 --- a/runtime/common/src/weights.rs +++ b/runtime/common/src/weights.rs @@ -33,6 +33,7 @@ pub mod pallet_upgrade_origin; pub mod pallet_provide_randomness; pub mod pallet_identity; pub mod pallet_duniter_account; +pub mod pallet_oneshot_account; pub mod pallet_certification_cert; pub mod pallet_certification_smith_cert; pub mod paritydb_weights; -- GitLab