From c52c1411f0b8f60dd4503cc5588989622003e791 Mon Sep 17 00:00:00 2001 From: metricaez Date: Tue, 19 Dec 2023 13:45:06 -0300 Subject: [PATCH] treasury benchmark fix --- runtime/trappist/src/lib.rs | 58 +++-- runtime/trappist/src/weights/mod.rs | 1 + .../trappist/src/weights/pallet_treasury.rs | 204 ++++++++++++++++++ 3 files changed, 242 insertions(+), 21 deletions(-) create mode 100644 runtime/trappist/src/weights/pallet_treasury.rs diff --git a/runtime/trappist/src/lib.rs b/runtime/trappist/src/lib.rs index 7e251c2a..6c0a48ee 100644 --- a/runtime/trappist/src/lib.rs +++ b/runtime/trappist/src/lib.rs @@ -28,8 +28,9 @@ use frame_support::{ dispatch::DispatchClass, parameter_types, traits::{ - tokens::UnityAssetBalanceConversion, AsEnsureOriginWithArg, ConstU128, ConstU16, ConstU32, - ConstU64, Contains, EitherOfDiverse, EqualPrivilegeOnly, InsideBoth, + tokens::{PayFromAccount, UnityAssetBalanceConversion}, + AsEnsureOriginWithArg, ConstU128, ConstU16, ConstU32, ConstU64, Contains, EitherOfDiverse, + EqualPrivilegeOnly, InsideBoth, }, weights::{constants::RocksDbWeight, ConstantMultiplier, Weight}, PalletId, @@ -48,9 +49,6 @@ pub use parachains_common::{ BlockNumber, Hash, Header, Signature, AVERAGE_ON_INITIALIZE_RATIO, DAYS, HOURS, MAXIMUM_BLOCK_WEIGHT, MINUTES, NORMAL_DISPATCH_RATIO, SLOT_DURATION, }; -use polkadot_runtime_common::impls::{ - LocatableAssetConverter, VersionedLocatableAsset, VersionedMultiLocationConverter, -}; pub use polkadot_runtime_common::BlockHashCount; use polkadot_runtime_common::{prod_or_fast, SlowAdjustingFeeUpdate}; use sp_api::impl_runtime_apis; @@ -69,8 +67,7 @@ use sp_std::prelude::*; use sp_version::NativeVersion; use sp_version::RuntimeVersion; use xcm::latest::{prelude::BodyId, InteriorMultiLocation, Junction::PalletInstance}; -use xcm::VersionedMultiLocation; -use xcm_builder::PayOverXcm; + use constants::{currency::*, fee::WeightToFee}; use impls::DealWithFees; @@ -644,9 +641,37 @@ parameter_types! { // The asset's interior location for the paying account. This is the Treasury // pallet instance (which sits at index 61). pub TreasuryInteriorLocation: InteriorMultiLocation = PalletInstance(61).into(); + pub TreasuryAccount: AccountId = Treasury::account_id(); pub const MaxBalance: Balance = Balance::max_value(); } +#[cfg(feature = "runtime-benchmarks")] +pub mod treasury_benchmark_helper { + use crate::constants::currency::EXISTENTIAL_DEPOSIT; + use crate::{Balances, RuntimeOrigin}; + use pallet_treasury::ArgumentsFactory; + use parachains_common::AccountId; + use sp_core::crypto::FromEntropy; + + pub struct TreasuryBenchmarkHelper; + impl ArgumentsFactory<(), AccountId> for TreasuryBenchmarkHelper { + fn create_asset_kind(_seed: u32) -> () { + () + } + fn create_beneficiary(seed: [u8; 32]) -> AccountId { + let beneficiary = AccountId::from_entropy(&mut seed.as_slice()).unwrap(); + // make sure the account has enough funds + Balances::force_set_balance( + RuntimeOrigin::root(), + sp_runtime::MultiAddress::Id(beneficiary.clone()), + EXISTENTIAL_DEPOSIT, + ) + .expect("Failure transferring the existential deposit"); + beneficiary + } + } +} + impl pallet_treasury::Config for Runtime { type Currency = Balances; type ApproveOrigin = TreasuryApproveCancelOrigin; @@ -660,27 +685,18 @@ impl pallet_treasury::Config for Runtime { type Burn = (); type PalletId = TreasuryPalletId; type BurnDestination = (); - type WeightInfo = pallet_treasury::weights::SubstrateWeight; + type WeightInfo = weights::pallet_treasury::WeightInfo; type SpendFunds = (); type MaxApprovals = MaxApprovals; type SpendOrigin = EnsureWithSuccess, AccountId, MaxBalance>; - type AssetKind = VersionedLocatableAsset; - type Beneficiary = VersionedMultiLocation; + type AssetKind = (); + type Beneficiary = Self::AccountId; type BeneficiaryLookup = IdentityLookup; - type Paymaster = PayOverXcm< - TreasuryInteriorLocation, - crate::xcm_config::XcmRouter, - PolkadotXcm, - ConstU32<{ 6 * HOURS }>, - Self::Beneficiary, - Self::AssetKind, - LocatableAssetConverter, - VersionedMultiLocationConverter, - >; + type Paymaster = PayFromAccount; type BalanceConverter = UnityAssetBalanceConversion; type PayoutPeriod = PayoutSpendPeriod; #[cfg(feature = "runtime-benchmarks")] - type BenchmarkHelper = polkadot_runtime_common::impls::benchmarks::TreasuryArguments; + type BenchmarkHelper = treasury_benchmark_helper::TreasuryBenchmarkHelper; } impl pallet_withdraw_teleport::Config for Runtime { diff --git a/runtime/trappist/src/weights/mod.rs b/runtime/trappist/src/weights/mod.rs index 2421608d..1d53db36 100644 --- a/runtime/trappist/src/weights/mod.rs +++ b/runtime/trappist/src/weights/mod.rs @@ -39,6 +39,7 @@ pub mod pallet_safe_mode; pub mod pallet_scheduler; pub mod pallet_session; pub mod pallet_timestamp; +pub mod pallet_treasury; pub mod pallet_tx_pause; pub mod pallet_uniques; pub mod pallet_utility; diff --git a/runtime/trappist/src/weights/pallet_treasury.rs b/runtime/trappist/src/weights/pallet_treasury.rs new file mode 100644 index 00000000..964686e6 --- /dev/null +++ b/runtime/trappist/src/weights/pallet_treasury.rs @@ -0,0 +1,204 @@ +// This file is part of Trappist. + +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//! Autogenerated weights for `pallet_treasury` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 29.0.0 +//! DATE: 2023-12-19, STEPS: `10`, REPEAT: `10`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! WORST CASE MAP SIZE: `1000000` +//! HOSTNAME: `Emilianos-MacBook-Pro.local`, CPU: `` +//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: 1024 + +// Executed Command: +// ./target/release/trappist-node +// benchmark +// pallet +// --chain=dev +// --steps=10 +// --repeat=10 +// --no-storage-info +// --no-median-slopes +// --no-min-squares +// --pallet=pallet_treasury +// --extrinsic=* +// --wasm-execution=compiled +// --header=./templates/file_header.txt +// --output=./runtime/trappist/src/weights/ + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] +#![allow(missing_docs)] + +use frame_support::{traits::Get, weights::Weight}; +use core::marker::PhantomData; + +/// Weight functions for `pallet_treasury`. +pub struct WeightInfo(PhantomData); +impl pallet_treasury::WeightInfo for WeightInfo { + /// Storage: `Treasury::ProposalCount` (r:1 w:1) + /// Proof: `Treasury::ProposalCount` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`) + /// Storage: `Treasury::Approvals` (r:1 w:1) + /// Proof: `Treasury::Approvals` (`max_values`: Some(1), `max_size`: Some(402), added: 897, mode: `MaxEncodedLen`) + /// Storage: `Treasury::Proposals` (r:0 w:1) + /// Proof: `Treasury::Proposals` (`max_values`: None, `max_size`: Some(108), added: 2583, mode: `MaxEncodedLen`) + fn spend_local() -> Weight { + // Proof Size summary in bytes: + // Measured: `6` + // Estimated: `1887` + // Minimum execution time: 11_000_000 picoseconds. + Weight::from_parts(12_000_000, 0) + .saturating_add(Weight::from_parts(0, 1887)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(3)) + } + /// Storage: `Treasury::ProposalCount` (r:1 w:1) + /// Proof: `Treasury::ProposalCount` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`) + /// Storage: `Treasury::Proposals` (r:0 w:1) + /// Proof: `Treasury::Proposals` (`max_values`: None, `max_size`: Some(108), added: 2583, mode: `MaxEncodedLen`) + fn propose_spend() -> Weight { + // Proof Size summary in bytes: + // Measured: `107` + // Estimated: `1489` + // Minimum execution time: 25_000_000 picoseconds. + Weight::from_parts(26_000_000, 0) + .saturating_add(Weight::from_parts(0, 1489)) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(2)) + } + /// Storage: `Treasury::Proposals` (r:1 w:1) + /// Proof: `Treasury::Proposals` (`max_values`: None, `max_size`: Some(108), added: 2583, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:2 w:2) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`) + fn reject_proposal() -> Weight { + // Proof Size summary in bytes: + // Measured: `368` + // Estimated: `6196` + // Minimum execution time: 40_000_000 picoseconds. + Weight::from_parts(42_000_000, 0) + .saturating_add(Weight::from_parts(0, 6196)) + .saturating_add(T::DbWeight::get().reads(3)) + .saturating_add(T::DbWeight::get().writes(3)) + } + /// Storage: `Treasury::Proposals` (r:1 w:0) + /// Proof: `Treasury::Proposals` (`max_values`: None, `max_size`: Some(108), added: 2583, mode: `MaxEncodedLen`) + /// Storage: `Treasury::Approvals` (r:1 w:1) + /// Proof: `Treasury::Approvals` (`max_values`: Some(1), `max_size`: Some(402), added: 897, mode: `MaxEncodedLen`) + /// The range of component `p` is `[0, 99]`. + fn approve_proposal(p: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `467 + p * (7 ±0)` + // Estimated: `3573` + // Minimum execution time: 8_000_000 picoseconds. + Weight::from_parts(10_530_303, 0) + .saturating_add(Weight::from_parts(0, 3573)) + // Standard Error: 3_343 + .saturating_add(Weight::from_parts(16_896, 0).saturating_mul(p.into())) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `Treasury::Approvals` (r:1 w:1) + /// Proof: `Treasury::Approvals` (`max_values`: Some(1), `max_size`: Some(402), added: 897, mode: `MaxEncodedLen`) + fn remove_approval() -> Weight { + // Proof Size summary in bytes: + // Measured: `90` + // Estimated: `1887` + // Minimum execution time: 6_000_000 picoseconds. + Weight::from_parts(7_000_000, 0) + .saturating_add(Weight::from_parts(0, 1887)) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `System::Account` (r:99 w:99) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`) + /// Storage: `Treasury::Deactivated` (r:1 w:1) + /// Proof: `Treasury::Deactivated` (`max_values`: Some(1), `max_size`: Some(16), added: 511, mode: `MaxEncodedLen`) + /// Storage: `Balances::InactiveIssuance` (r:1 w:1) + /// Proof: `Balances::InactiveIssuance` (`max_values`: Some(1), `max_size`: Some(16), added: 511, mode: `MaxEncodedLen`) + /// Storage: `Treasury::Approvals` (r:1 w:1) + /// Proof: `Treasury::Approvals` (`max_values`: Some(1), `max_size`: Some(402), added: 897, mode: `MaxEncodedLen`) + /// Storage: `Treasury::Proposals` (r:99 w:49) + /// Proof: `Treasury::Proposals` (`max_values`: None, `max_size`: Some(108), added: 2583, mode: `MaxEncodedLen`) + /// The range of component `p` is `[0, 99]`. + fn on_initialize_proposals(p: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `972 + p * (208 ±0)` + // Estimated: `61332 + p * (2583 ±168)` + // Minimum execution time: 21_000_000 picoseconds. + Weight::from_parts(397_593_939, 0) + .saturating_add(Weight::from_parts(0, 61332)) + // Standard Error: 1_096_456 + .saturating_add(Weight::from_parts(19_472_176, 0).saturating_mul(p.into())) + .saturating_add(T::DbWeight::get().reads(26)) + .saturating_add(T::DbWeight::get().reads((2_u64).saturating_mul(p.into()))) + .saturating_add(T::DbWeight::get().writes(37)) + .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(p.into()))) + .saturating_add(Weight::from_parts(0, 2583).saturating_mul(p.into())) + } + /// Storage: `Treasury::SpendCount` (r:1 w:1) + /// Proof: `Treasury::SpendCount` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`) + /// Storage: `Treasury::Spends` (r:0 w:1) + /// Proof: `Treasury::Spends` (`max_values`: None, `max_size`: Some(69), added: 2544, mode: `MaxEncodedLen`) + fn spend() -> Weight { + // Proof Size summary in bytes: + // Measured: `6` + // Estimated: `1489` + // Minimum execution time: 11_000_000 picoseconds. + Weight::from_parts(11_000_000, 0) + .saturating_add(Weight::from_parts(0, 1489)) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(2)) + } + /// Storage: `Treasury::Spends` (r:1 w:1) + /// Proof: `Treasury::Spends` (`max_values`: None, `max_size`: Some(69), added: 2544, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:2 w:2) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`) + fn payout() -> Weight { + // Proof Size summary in bytes: + // Measured: `330` + // Estimated: `6196` + // Minimum execution time: 52_000_000 picoseconds. + Weight::from_parts(52_000_000, 0) + .saturating_add(Weight::from_parts(0, 6196)) + .saturating_add(T::DbWeight::get().reads(3)) + .saturating_add(T::DbWeight::get().writes(3)) + } + /// Storage: `Treasury::Spends` (r:1 w:1) + /// Proof: `Treasury::Spends` (`max_values`: None, `max_size`: Some(69), added: 2544, mode: `MaxEncodedLen`) + fn check_status() -> Weight { + // Proof Size summary in bytes: + // Measured: `124` + // Estimated: `3534` + // Minimum execution time: 12_000_000 picoseconds. + Weight::from_parts(12_000_000, 0) + .saturating_add(Weight::from_parts(0, 3534)) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `Treasury::Spends` (r:1 w:1) + /// Proof: `Treasury::Spends` (`max_values`: None, `max_size`: Some(69), added: 2544, mode: `MaxEncodedLen`) + fn void_spend() -> Weight { + // Proof Size summary in bytes: + // Measured: `124` + // Estimated: `3534` + // Minimum execution time: 11_000_000 picoseconds. + Weight::from_parts(12_000_000, 0) + .saturating_add(Weight::from_parts(0, 3534)) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(1)) + } +}