--- a/Cargo.lock +++ b/Cargo.lock @@ -5846,6 +5846,7 @@ version = "0.1.2" dependencies = [ "fp-evm", + "frame-benchmarking", "frame-support", "frame-system", "parity-scale-codec 3.2.1", --- a/Makefile +++ b/Makefile @@ -89,6 +89,10 @@ bench-evm-migration: make _bench PALLET=evm-migration +.PHONY: bench-configuration +bench-configuration: + make _bench PALLET=configuration + .PHONY: bench-common bench-common: make _bench PALLET=common @@ -143,4 +147,4 @@ .PHONY: bench # Disabled: bench-scheduler, bench-rmrk-core, bench-rmrk-equip -bench: bench-evm-migration bench-unique bench-structure bench-fungible bench-refungible bench-nonfungible bench-foreign-assets bench-collator-selection bench-identity +bench: bench-evm-migration bench-unique bench-structure bench-fungible bench-refungible bench-nonfungible bench-configuration bench-foreign-assets bench-collator-selection bench-identity --- a/pallets/collator-selection/src/benchmarking.rs +++ b/pallets/collator-selection/src/benchmarking.rs @@ -52,9 +52,6 @@ }; use sp_std::prelude::*; -/*pub type BalanceOf = -<::Currency as Currency<::AccountId>>::Balance;*/ - const SEED: u32 = 0; // TODO: remove if this is given in substrate commit. @@ -116,14 +113,24 @@ validators.into_iter().map(|(who, _)| who).collect() } +fn register_invulnerables(count: u32) { + let candidates = (0..count) + .map(|c| account("candidate", c, SEED)) + .collect::>(); + + for who in candidates { + >::add_invulnerable(T::UpdateOrigin::successful_origin(), who).unwrap(); + } +} + fn register_candidates(count: u32) { let candidates = (0..count) .map(|c| account("candidate", c, SEED)) .collect::>(); - assert!( + /*assert!( >::get() > 0u32.into(), "Bond cannot be zero!" - ); + );*/ for who in candidates { T::Currency::make_free_balance_be(&who, >::get() * 2u32.into()); @@ -132,16 +139,45 @@ } } +fn get_licenses(count: u32) { + let candidates = (0..count) + .map(|c| account("candidate", c, SEED)) + .collect::>(); + /*assert!( + >::get() > 0u32.into(), + "Bond cannot be zero!" + );*/ + + for who in candidates { + T::Currency::make_free_balance_be(&who, >::get() * 2u32.into()); + >::get_license(RawOrigin::Signed(who.clone()).into()).unwrap(); + } +} + benchmarks! { where_clause { where T: pallet_authorship::Config + session::Config + configuration::Config } add_invulnerable { - let b in 1 .. T::MaxCollators::get(); - let new_invulnerable = register_validators::(b)[0].clone(); - let origin = T::UpdateOrigin::successful_origin(); + let b in 1 .. T::MaxCollators::get() - 3; + register_validators::(b); + register_invulnerables::(b); + + // log::info!("{} {}", >::get().len(), b); + + let new_invulnerable: T::AccountId = whitelisted_caller(); + let bond: BalanceOf = T::Currency::minimum_balance() * 2u32.into(); + T::Currency::make_free_balance_be(&new_invulnerable, bond.clone()); + + >::set_keys( + RawOrigin::Signed(new_invulnerable.clone()).into(), + keys::(b + 1), + Vec::new() + ).unwrap(); + + let root_origin = T::UpdateOrigin::successful_origin(); }: { assert_ok!( - >::add_invulnerable(origin, new_invulnerable.clone()) + >::add_invulnerable(root_origin, new_invulnerable.clone()) ); } verify { @@ -150,52 +186,28 @@ remove_invulnerable { let b in 1 .. T::MaxCollators::get(); - let new_invulnerable = register_validators::(b)[0].clone(); - let origin = T::UpdateOrigin::successful_origin(); - assert_ok!( - >::add_invulnerable(origin.clone(), new_invulnerable.clone()) - ); - }: { - assert_ok!( - >::remove_invulnerable(origin, new_invulnerable.clone()) - ); - } - verify { - assert_last_event::(Event::InvulnerableRemoved{invulnerable: new_invulnerable}.into()); - } + register_validators::(b); + register_invulnerables::(b); - /*set_desired_collators { - let max: u32 = 999; - let origin = T::UpdateOrigin::successful_origin(); + let root_origin = T::UpdateOrigin::successful_origin(); + let leaving = >::get().last().unwrap().clone(); + whitelist!(leaving); }: { assert_ok!( - >::set_desired_collators(origin, max.clone()) + >::remove_invulnerable(root_origin, leaving.clone()) ); } verify { - assert_last_event::(Event::NewDesiredCollators{desired_collators: max}.into()); + assert_last_event::(Event::InvulnerableRemoved{invulnerable: leaving}.into()); } - set_license_bond { - let bond_amount: BalanceOf = T::Currency::minimum_balance() * 10u32.into(); - let origin = T::UpdateOrigin::successful_origin(); - }: { - assert_ok!( - >::set_license_bond(origin, bond_amount.clone()) - ); - } - verify { - assert_last_event::(Event::NewLicenseBond{bond_amount}.into()); - }*/ - get_license { let c in 1 .. T::MaxCollators::get(); >::put(T::Currency::minimum_balance()); - >::put(c + 1); register_validators::(c); - register_candidates::(c); + get_licenses::(c); let caller: T::AccountId = whitelisted_caller(); let bond: BalanceOf = T::Currency::minimum_balance() * 2u32.into(); @@ -215,10 +227,10 @@ // worst case is when we have all the max-candidate slots filled except one, and we fill that // one. onboard { - let c in 1 .. T::MaxCollators::get(); + let c in 1 .. 5; >::put(T::Currency::minimum_balance()); - >::put(c + 1); + >::put(c + 2); register_validators::(c); register_candidates::(c); @@ -247,7 +259,7 @@ offboard { let c in 1 .. T::MaxCollators::get(); >::put(T::Currency::minimum_balance()); - >::put(c); + >::put(c + 2); register_validators::(c); register_candidates::(c); --- a/pallets/collator-selection/src/lib.rs +++ b/pallets/collator-selection/src/lib.rs @@ -285,7 +285,7 @@ impl Pallet { /// Add a collator to the list of invulnerable (fixed) collators. #[pallet::call_index(0)] - #[pallet::weight(T::WeightInfo::add_invulnerable(T::MaxCollators::get()))] + #[pallet::weight(::WeightInfo::add_invulnerable(T::MaxCollators::get()))] pub fn add_invulnerable( origin: OriginFor, new: T::AccountId, @@ -315,7 +315,7 @@ /// Remove a collator from the list of invulnerable (fixed) collators. #[pallet::call_index(1)] - #[pallet::weight(T::WeightInfo::remove_invulnerable(T::MaxCollators::get()))] + #[pallet::weight(::WeightInfo::remove_invulnerable(T::MaxCollators::get()))] pub fn remove_invulnerable( origin: OriginFor, who: T::AccountId, @@ -344,7 +344,7 @@ /// /// This call is not available to `Invulnerable` collators. #[pallet::call_index(2)] - #[pallet::weight(T::WeightInfo::get_license(T::MaxCollators::get()))] + #[pallet::weight(::WeightInfo::get_license(T::MaxCollators::get()))] pub fn get_license(origin: OriginFor) -> DispatchResultWithPostInfo { // register_as_candidate let who = ensure_signed(origin)?; @@ -377,7 +377,7 @@ /// /// This call is not available to `Invulnerable` collators. #[pallet::call_index(3)] - #[pallet::weight(T::WeightInfo::onboard(T::MaxCollators::get()))] + #[pallet::weight(::WeightInfo::onboard(T::MaxCollators::get()))] pub fn onboard(origin: OriginFor) -> DispatchResultWithPostInfo { // register_as_candidate let who = ensure_signed(origin)?; @@ -417,33 +417,36 @@ })?; Self::deposit_event(Event::CandidateAdded { account_id: who }); - Ok(Some(T::WeightInfo::onboard(current_count as u32)).into()) + Ok(Some(::WeightInfo::onboard(current_count as u32)).into()) } /// Deregister `origin` as a collator candidate. Note that the collator can only leave on /// session change. The license to `onboard` later at any other time will remain. #[pallet::call_index(4)] - #[pallet::weight(T::WeightInfo::offboard(T::MaxCollators::get()))] + #[pallet::weight(::WeightInfo::offboard(T::MaxCollators::get()))] pub fn offboard(origin: OriginFor) -> DispatchResultWithPostInfo { // leave_intent let who = ensure_signed(origin)?; let current_count = Self::try_remove_candidate(&who)?; - Ok(Some(T::WeightInfo::offboard(current_count as u32)).into()) + Ok(Some(::WeightInfo::offboard(current_count as u32)).into()) } /// Forfeit `origin`'s own license. The `LicenseBond` will be unreserved immediately. /// /// This call is not available to `Invulnerable` collators. #[pallet::call_index(5)] - #[pallet::weight(T::WeightInfo::release_license(T::MaxCollators::get()))] + #[pallet::weight(::WeightInfo::release_license(T::MaxCollators::get()))] pub fn release_license(origin: OriginFor) -> DispatchResultWithPostInfo { // leave_intent let who = ensure_signed(origin)?; let current_count = Self::try_remove_candidate_and_release_license(&who, false, true)?; - Ok(Some(T::WeightInfo::release_license(current_count as u32)).into()) + Ok(Some(::WeightInfo::release_license( + current_count as u32, + )) + .into()) } /// Force deregister `origin` as a collator candidate as a governing authority, and revoke its license. @@ -452,7 +455,7 @@ /// /// This call is, of course, not applicable to `Invulnerable` collators. #[pallet::call_index(6)] - #[pallet::weight(T::WeightInfo::force_release_license(T::MaxCollators::get()))] + #[pallet::weight(::WeightInfo::force_release_license(T::MaxCollators::get()))] pub fn force_release_license( origin: OriginFor, who: T::AccountId, @@ -462,7 +465,10 @@ let current_count = Self::try_remove_candidate_and_release_license(&who, false, true)?; - Ok(Some(T::WeightInfo::force_release_license(current_count as u32)).into()) + Ok(Some(::WeightInfo::force_release_license( + current_count as u32, + )) + .into()) } } @@ -599,7 +605,7 @@ >::insert(author, frame_system::Pallet::::block_number()); frame_system::Pallet::::register_extra_weight_unchecked( - T::WeightInfo::note_author(), + ::WeightInfo::note_author(), DispatchClass::Mandatory, ); } @@ -625,7 +631,10 @@ let result = Self::assemble_collators(active_candidates); frame_system::Pallet::::register_extra_weight_unchecked( - T::WeightInfo::new_session(candidates_len_before as u32, removed as u32), + ::WeightInfo::new_session( + candidates_len_before as u32, + removed as u32, + ), DispatchClass::Mandatory, ); Some(result) --- a/pallets/collator-selection/src/mock.rs +++ b/pallets/collator-selection/src/mock.rs @@ -225,6 +225,7 @@ type MaxXcmAllowedLocations = MaxXcmAllowedLocations; type AppPromotionDailyRate = AppPromotionDailyRate; type DayRelayBlocks = DayRelayBlocks; + type WeightInfo = (); } ord_parameter_types! { --- a/pallets/configuration/Cargo.toml +++ b/pallets/configuration/Cargo.toml @@ -12,6 +12,7 @@ ] } frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } @@ -22,10 +23,12 @@ [features] default = ["std"] +runtime-benchmarks = ["frame-benchmarking"] std = [ "parity-scale-codec/std", "frame-support/std", "frame-system/std", + "frame-benchmarking/std", "sp-runtime/std", "sp-std/std", "sp-core/std", --- /dev/null +++ b/pallets/configuration/src/benchmarking.rs @@ -0,0 +1,100 @@ +// Copyright 2019-2022 Unique Network (Gibraltar) Ltd. +// This file is part of Unique Network. + +// Unique Network is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Unique Network is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Unique Network. If not, see . + +//! Benchmarking setup for pallet-configuration + +use super::*; +use frame_benchmarking::benchmarks; +use frame_system::{EventRecord, RawOrigin}; +use frame_support::{assert_ok, BoundedVec, traits::Currency}; +use xcm::v1::MultiLocation; + +fn assert_last_event(generic_event: ::RuntimeEvent) { + let events = frame_system::Pallet::::events(); + let system_event: ::RuntimeEvent = generic_event.into(); + // compare to the last event record + let EventRecord { event, .. } = &events[events.len() - 1]; + assert_eq!(event, &system_event); +} + +benchmarks! { + where_clause { where T: Config } + + set_weight_to_fee_coefficient_override { + let coeff: u64 = 999; + }: { + assert_ok!( + >::set_weight_to_fee_coefficient_override(RawOrigin::Root.into(), Some(coeff)) + ); + } + + set_min_gas_price_override { + let coeff: u64 = 999; + }: { + assert_ok!( + >::set_min_gas_price_override(RawOrigin::Root.into(), Some(coeff)) + ); + } + + set_xcm_allowed_locations { + let locations: BoundedVec = Default::default(); + }: { + assert_ok!( + >::set_xcm_allowed_locations(RawOrigin::Root.into(), Some(locations)) + ); + } + + set_app_promotion_configuration_override { + let configuration: AppPromotionConfiguration = Default::default(); + }: { + assert_ok!( + >::set_app_promotion_configuration_override(RawOrigin::Root.into(), configuration) + ); + } + + set_collator_selection_desired_collators { + let max: u32 = 999; + }: { + assert_ok!( + >::set_collator_selection_desired_collators(RawOrigin::Root.into(), Some(max.clone())) + ); + } + verify { + assert_last_event::(Event::NewDesiredCollators{desired_collators: Some(max)}.into()); + } + + set_collator_selection_license_bond { + let bond_cost: Option> = Some(T::Currency::minimum_balance() * 10u32.into()); + }: { + assert_ok!( + >::set_collator_selection_license_bond(RawOrigin::Root.into(), bond_cost.clone()) + ); + } + verify { + assert_last_event::(Event::NewCollatorLicenseBond{bond_cost}.into()); + } + + set_collator_selection_kick_threshold { + let threshold: Option = Some(900u32.into()); + }: { + assert_ok!( + >::set_collator_selection_kick_threshold(RawOrigin::Root.into(), threshold.clone()) + ); + } + verify { + assert_last_event::(Event::NewCollatorKickThreshold{length_in_blocks: threshold}.into()); + } +} --- a/pallets/configuration/src/lib.rs +++ b/pallets/configuration/src/lib.rs @@ -34,6 +34,10 @@ pub use pallet::*; use sp_core::U256; +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; +pub mod weights; + #[pallet] mod pallet { use super::*; @@ -45,6 +49,7 @@ use frame_system::{pallet_prelude::OriginFor, ensure_root, Config as SystemConfig}; use xcm::v1::MultiLocation; + pub use crate::weights::WeightInfo; pub type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; @@ -74,6 +79,9 @@ type DefaultCollatorSelectionLicenseBond: Get>; #[pallet::constant] type DefaultCollatorSelectionKickThreshold: Get; + + /// The weight information of this pallet. + type WeightInfo: WeightInfo; } #[pallet::event] @@ -140,7 +148,7 @@ #[pallet::call] impl Pallet { #[pallet::call_index(0)] - #[pallet::weight(T::DbWeight::get().writes(1))] + #[pallet::weight(T::WeightInfo::set_weight_to_fee_coefficient_override())] pub fn set_weight_to_fee_coefficient_override( origin: OriginFor, coeff: Option, @@ -155,7 +163,7 @@ } #[pallet::call_index(1)] - #[pallet::weight(T::DbWeight::get().writes(1))] + #[pallet::weight(T::WeightInfo::set_min_gas_price_override())] pub fn set_min_gas_price_override( origin: OriginFor, coeff: Option, @@ -170,7 +178,7 @@ } #[pallet::call_index(2)] - #[pallet::weight(T::DbWeight::get().writes(1))] + #[pallet::weight(T::WeightInfo::set_xcm_allowed_locations())] pub fn set_xcm_allowed_locations( origin: OriginFor, locations: Option>, @@ -181,7 +189,7 @@ } #[pallet::call_index(3)] - #[pallet::weight(T::DbWeight::get().writes(1))] + #[pallet::weight(T::WeightInfo::set_app_promotion_configuration_override())] pub fn set_app_promotion_configuration_override( origin: OriginFor, mut configuration: AppPromotionConfiguration, @@ -202,7 +210,7 @@ } #[pallet::call_index(4)] - #[pallet::weight(T::DbWeight::get().writes(1))] + #[pallet::weight(T::WeightInfo::set_collator_selection_desired_collators())] pub fn set_collator_selection_desired_collators( origin: OriginFor, max: Option, @@ -224,7 +232,7 @@ } #[pallet::call_index(5)] - #[pallet::weight(T::DbWeight::get().writes(1))] + #[pallet::weight(T::WeightInfo::set_collator_selection_license_bond())] pub fn set_collator_selection_license_bond( origin: OriginFor, amount: Option>, @@ -240,7 +248,7 @@ } #[pallet::call_index(6)] - #[pallet::weight(T::DbWeight::get().writes(1))] + #[pallet::weight(T::WeightInfo::set_collator_selection_kick_threshold())] pub fn set_collator_selection_kick_threshold( origin: OriginFor, threshold: Option, --- /dev/null +++ b/pallets/configuration/src/weights.rs @@ -0,0 +1,123 @@ +// Template adopted from https://github.com/paritytech/substrate/blob/master/.maintain/frame-weight-template.hbs + +//! Autogenerated weights for pallet_configuration +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2022-12-28, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 + +// Executed Command: +// target/release/unique-collator +// benchmark +// pallet +// --pallet +// pallet-configuration +// --wasm-execution +// compiled +// --extrinsic +// * +// --template +// .maintain/frame-weight-template.hbs +// --steps=50 +// --repeat=80 +// --heap-pages=4096 +// --output=./pallets/configuration/src/weights.rs + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] +#![allow(missing_docs)] +#![allow(clippy::unnecessary_cast)] + +use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; +use sp_std::marker::PhantomData; + +/// Weight functions needed for pallet_configuration. +pub trait WeightInfo { + fn set_weight_to_fee_coefficient_override() -> Weight; + fn set_min_gas_price_override() -> Weight; + fn set_xcm_allowed_locations() -> Weight; + fn set_app_promotion_configuration_override() -> Weight; + fn set_collator_selection_desired_collators() -> Weight; + fn set_collator_selection_license_bond() -> Weight; + fn set_collator_selection_kick_threshold() -> Weight; +} + +/// Weights for pallet_configuration using the Substrate node and recommended hardware. +pub struct SubstrateWeight(PhantomData); +impl WeightInfo for SubstrateWeight { + // Storage: Configuration WeightToFeeCoefficientOverride (r:0 w:1) + fn set_weight_to_fee_coefficient_override() -> Weight { + Weight::from_ref_time(5_691_000 as u64) + .saturating_add(T::DbWeight::get().writes(1 as u64)) + } + // Storage: Configuration MinGasPriceOverride (r:0 w:1) + fn set_min_gas_price_override() -> Weight { + Weight::from_ref_time(5_521_000 as u64) + .saturating_add(T::DbWeight::get().writes(1 as u64)) + } + // Storage: Configuration XcmAllowedLocationsOverride (r:0 w:1) + fn set_xcm_allowed_locations() -> Weight { + Weight::from_ref_time(6_091_000 as u64) + .saturating_add(T::DbWeight::get().writes(1 as u64)) + } + // Storage: Configuration AppPromomotionConfigurationOverride (r:0 w:1) + fn set_app_promotion_configuration_override() -> Weight { + Weight::from_ref_time(6_241_000 as u64) + .saturating_add(T::DbWeight::get().writes(1 as u64)) + } + // Storage: Configuration CollatorSelectionDesiredCollatorsOverride (r:0 w:1) + fn set_collator_selection_desired_collators() -> Weight { + Weight::from_ref_time(25_298_000 as u64) + .saturating_add(T::DbWeight::get().writes(1 as u64)) + } + // Storage: Configuration CollatorSelectionLicenseBondOverride (r:0 w:1) + fn set_collator_selection_license_bond() -> Weight { + Weight::from_ref_time(18_675_000 as u64) + .saturating_add(T::DbWeight::get().writes(1 as u64)) + } + // Storage: Configuration CollatorSelectionKickThresholdOverride (r:0 w:1) + fn set_collator_selection_kick_threshold() -> Weight { + Weight::from_ref_time(18_044_000 as u64) + .saturating_add(T::DbWeight::get().writes(1 as u64)) + } +} + +// For backwards compatibility and tests +impl WeightInfo for () { + // Storage: Configuration WeightToFeeCoefficientOverride (r:0 w:1) + fn set_weight_to_fee_coefficient_override() -> Weight { + Weight::from_ref_time(5_691_000 as u64) + .saturating_add(RocksDbWeight::get().writes(1 as u64)) + } + // Storage: Configuration MinGasPriceOverride (r:0 w:1) + fn set_min_gas_price_override() -> Weight { + Weight::from_ref_time(5_521_000 as u64) + .saturating_add(RocksDbWeight::get().writes(1 as u64)) + } + // Storage: Configuration XcmAllowedLocationsOverride (r:0 w:1) + fn set_xcm_allowed_locations() -> Weight { + Weight::from_ref_time(6_091_000 as u64) + .saturating_add(RocksDbWeight::get().writes(1 as u64)) + } + // Storage: Configuration AppPromomotionConfigurationOverride (r:0 w:1) + fn set_app_promotion_configuration_override() -> Weight { + Weight::from_ref_time(6_241_000 as u64) + .saturating_add(RocksDbWeight::get().writes(1 as u64)) + } + // Storage: Configuration CollatorSelectionDesiredCollatorsOverride (r:0 w:1) + fn set_collator_selection_desired_collators() -> Weight { + Weight::from_ref_time(25_298_000 as u64) + .saturating_add(RocksDbWeight::get().writes(1 as u64)) + } + // Storage: Configuration CollatorSelectionLicenseBondOverride (r:0 w:1) + fn set_collator_selection_license_bond() -> Weight { + Weight::from_ref_time(18_675_000 as u64) + .saturating_add(RocksDbWeight::get().writes(1 as u64)) + } + // Storage: Configuration CollatorSelectionKickThresholdOverride (r:0 w:1) + fn set_collator_selection_kick_threshold() -> Weight { + Weight::from_ref_time(18_044_000 as u64) + .saturating_add(RocksDbWeight::get().writes(1 as u64)) + } +} --- a/runtime/common/config/pallets/mod.rs +++ b/runtime/common/config/pallets/mod.rs @@ -121,6 +121,7 @@ type MaxXcmAllowedLocations = ConstU32<16>; type AppPromotionDailyRate = AppPromotionDailyRate; type DayRelayBlocks = DayRelayBlocks; + type WeightInfo = pallet_configuration::weights::SubstrateWeight; } impl pallet_maintenance::Config for Runtime { --- a/runtime/common/construct_runtime/mod.rs +++ b/runtime/common/construct_runtime/mod.rs @@ -32,17 +32,17 @@ ParachainSystem: cumulus_pallet_parachain_system::{Pallet, Call, Config, Storage, Inherent, Event, ValidateUnsigned} = 20, ParachainInfo: parachain_info::{Pallet, Storage, Config} = 21, - Aura: pallet_aura::{Pallet, Config} = 22, - AuraExt: cumulus_pallet_aura_ext::{Pallet, Config} = 23, + #[runtimes(opal)] + Authorship: pallet_authorship::{Pallet, Call, Storage} = 22, #[runtimes(opal)] - Authorship: pallet_authorship::{Pallet, Call, Storage} = 24, + CollatorSelection: pallet_collator_selection::{Pallet, Call, Storage, Event, Config} = 23, #[runtimes(opal)] - CollatorSelection: pallet_collator_selection::{Pallet, Call, Storage, Event, Config} = 25, + Session: pallet_session::{Pallet, Call, Storage, Event, Config} = 24, - #[runtimes(opal)] - Session: pallet_session::{Pallet, Call, Storage, Event, Config} = 26, + Aura: pallet_aura::{Pallet, Config} = 25, + AuraExt: cumulus_pallet_aura_ext::{Pallet, Config} = 26, Balances: pallet_balances::{Pallet, Call, Storage, Config, Event} = 30, RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Pallet, Storage} = 31, --- a/runtime/common/runtime_apis.rs +++ b/runtime/common/runtime_apis.rs @@ -686,6 +686,7 @@ list_benchmark!(list, extra, pallet_unique, Unique); list_benchmark!(list, extra, pallet_structure, Structure); list_benchmark!(list, extra, pallet_inflation, Inflation); + list_benchmark!(list, extra, pallet_configuration, Configuration); #[cfg(feature = "app-promotion")] list_benchmark!(list, extra, pallet_app_promotion, AppPromotion); @@ -755,6 +756,7 @@ add_benchmark!(params, batches, pallet_unique, Unique); add_benchmark!(params, batches, pallet_structure, Structure); add_benchmark!(params, batches, pallet_inflation, Inflation); + add_benchmark!(params, batches, pallet_configuration, Configuration); #[cfg(feature = "app-promotion")] add_benchmark!(params, batches, pallet_app_promotion, AppPromotion); --- a/runtime/opal/Cargo.toml +++ b/runtime/opal/Cargo.toml @@ -28,6 +28,7 @@ 'pallet-evm-coder-substrate/runtime-benchmarks', 'pallet-balances/runtime-benchmarks', 'pallet-timestamp/runtime-benchmarks', + 'pallet-configuration/runtime-benchmarks', 'pallet-common/runtime-benchmarks', 'pallet-structure/runtime-benchmarks', 'pallet-fungible/runtime-benchmarks', --- a/runtime/quartz/Cargo.toml +++ b/runtime/quartz/Cargo.toml @@ -28,6 +28,7 @@ 'pallet-evm-coder-substrate/runtime-benchmarks', 'pallet-balances/runtime-benchmarks', 'pallet-timestamp/runtime-benchmarks', + 'pallet-configuration/runtime-benchmarks', 'pallet-common/runtime-benchmarks', 'pallet-structure/runtime-benchmarks', 'pallet-fungible/runtime-benchmarks', --- a/runtime/unique/Cargo.toml +++ b/runtime/unique/Cargo.toml @@ -28,6 +28,7 @@ 'pallet-evm-coder-substrate/runtime-benchmarks', 'pallet-balances/runtime-benchmarks', 'pallet-timestamp/runtime-benchmarks', + 'pallet-configuration/runtime-benchmarks', 'pallet-common/runtime-benchmarks', 'pallet-structure/runtime-benchmarks', 'pallet-fungible/runtime-benchmarks',