diff --git a/pallets/membership/src/benchmarking.rs b/pallets/membership/src/benchmarking.rs index 11c95849efa4196bd17807b37e3fd6c377b68ae7..9573d5354cb62a15222d51d59cdea587528df244 100644 --- a/pallets/membership/src/benchmarking.rs +++ b/pallets/membership/src/benchmarking.rs @@ -20,6 +20,7 @@ use super::*; use frame_benchmarking::benchmarks_instance_pallet; use frame_support::dispatch::UnfilteredDispatchable; +use frame_system::pallet_prelude::BlockNumberFor; use frame_system::RawOrigin; use sp_runtime::traits::Convert; @@ -83,6 +84,9 @@ benchmarks_instance_pallet! { verify { assert_has_event::<T, I>(Event::<T, I>::MembershipRevoked(idty).into()); } + // Base weight of an empty initialize + on_initialize { + }: {Pallet::<T, I>::on_initialize(BlockNumberFor::<T>::zero());} impl_benchmark_test_suite!( Pallet, diff --git a/pallets/membership/src/lib.rs b/pallets/membership/src/lib.rs index 3855bf927d51cfb435f7bc9f6de0f0c6cc4a8bc4..3513a6e6608e93d9d5e48a5a517e79dfc010af90 100644 --- a/pallets/membership/src/lib.rs +++ b/pallets/membership/src/lib.rs @@ -199,9 +199,11 @@ pub mod pallet { impl<T: Config<I>, I: 'static> Hooks<BlockNumberFor<T>> for Pallet<T, I> { fn on_initialize(n: T::BlockNumber) -> Weight { if n > T::BlockNumber::zero() { - Self::expire_pending_memberships(n) + Self::expire_memberships(n) + Self::expire_pending_memberships(n) + .saturating_add(Self::expire_memberships(n)) + .saturating_add(T::WeightInfo::on_initialize()) } else { - Weight::zero() + T::WeightInfo::on_initialize() } } } @@ -224,11 +226,11 @@ pub mod pallet { Self::do_request_membership(idty_id) } - /// claim membership - /// a pending membership should exist - /// it must fullfill the requirements (certs, distance) - /// for main wot claim_membership is called automatically when validating identity - /// for smith wot, it means joining the authority members + /// claim membership + /// a pending membership should exist + /// it must fullfill the requirements (certs, distance) + /// for main wot claim_membership is called automatically when validating identity + /// for smith wot, it means joining the authority members #[pallet::call_index(1)] #[pallet::weight(T::WeightInfo::claim_membership())] pub fn claim_membership(origin: OriginFor<T>) -> DispatchResultWithPostInfo { diff --git a/pallets/membership/src/weights.rs b/pallets/membership/src/weights.rs index 4012544a7df34b2e460e1ff05917efe697d68ae1..fd6cfb36e541b9d680a6aeddbec48b43231668d4 100644 --- a/pallets/membership/src/weights.rs +++ b/pallets/membership/src/weights.rs @@ -24,6 +24,7 @@ pub trait WeightInfo { fn claim_membership() -> Weight; fn renew_membership() -> Weight; fn revoke_membership() -> Weight; + fn on_initialize() -> Weight; } // Insecure weights implementation, use it for tests only! @@ -70,4 +71,10 @@ impl WeightInfo for () { .saturating_add(RocksDbWeight::get().reads(5 as u64)) .saturating_add(RocksDbWeight::get().writes(2 as u64)) } + fn on_initialize() -> Weight { + // Minimum execution time: 109_486 nanoseconds. + Weight::from_parts(113_303_000 as u64, 0) + .saturating_add(RocksDbWeight::get().reads(5 as u64)) + .saturating_add(RocksDbWeight::get().writes(2 as u64)) + } } diff --git a/runtime/common/src/weights/pallet_membership_membership.rs b/runtime/common/src/weights/pallet_membership_membership.rs index 93478265a6bcf2841cb9dbe2c154eb7be5b76f5c..050996ad9c2187c00087d95fcabd556378fe60c5 100644 --- a/runtime/common/src/weights/pallet_membership_membership.rs +++ b/runtime/common/src/weights/pallet_membership_membership.rs @@ -1,41 +1,28 @@ -// Copyright 2021-2022 Axiom-Team -// -// This file is part of Duniter-v2S. -// -// Duniter-v2S is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, version 3 of the License. -// -// Duniter-v2S 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 Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>. //! Autogenerated weights for `pallet_membership` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-06-08, STEPS: `5`, REPEAT: `2`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-11-20, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` -//! HOSTNAME: `benjamin-xps139380`, CPU: `Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("gdev-benchmark"), DB CACHE: 1024 +//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F` +//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024 // Executed Command: -// target/release/duniter +// ./target/release/duniter // benchmark // pallet -// --chain=gdev-benchmark -// --steps=5 -// --repeat=2 -// --pallet=* -// --extrinsic=* -// --execution=wasm +// --chain +// dev // --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/common/src/weights/ +// --pallet +// pallet-membership +// --extrinsic +// * +// --steps +// 50 +// --repeat +// 20 +// --output=runtime/common/src/weights/ #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -54,11 +41,11 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> { /// Proof Skipped: Identity Identities (max_values: None, max_size: None, mode: Measured) fn request_membership() -> Weight { // Proof Size summary in bytes: - // Measured: `365` - // Estimated: `3830` - // Minimum execution time: 39_742_000 picoseconds. - Weight::from_parts(51_466_000, 0) - .saturating_add(Weight::from_parts(0, 3830)) + // Measured: `429` + // Estimated: `3894` + // Minimum execution time: 6_733_000 picoseconds. + Weight::from_parts(9_726_000, 0) + .saturating_add(Weight::from_parts(0, 3894)) .saturating_add(T::DbWeight::get().reads(2)) } /// Storage: Identity IdentityIndexOf (r:1 w:0) @@ -69,6 +56,8 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> { /// Proof Skipped: Cert StorageIdtyCertMeta (max_values: None, max_size: None, mode: Measured) /// Storage: Parameters ParametersStorage (r:1 w:0) /// Proof Skipped: Parameters ParametersStorage (max_values: Some(1), max_size: None, mode: Measured) + /// Storage: Distance IdentityDistanceStatus (r:1 w:0) + /// Proof Skipped: Distance IdentityDistanceStatus (max_values: None, max_size: None, mode: Measured) /// Storage: Membership Membership (r:1 w:1) /// Proof Skipped: Membership Membership (max_values: None, max_size: None, mode: Measured) /// Storage: Membership CounterForMembership (r:1 w:1) @@ -81,12 +70,12 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> { /// Proof: UniversalDividend CurrentUdIndex (max_values: Some(1), max_size: Some(2), added: 497, mode: MaxEncodedLen) fn claim_membership() -> Weight { // Proof Size summary in bytes: - // Measured: `982` - // Estimated: `4447` - // Minimum execution time: 156_273_000 picoseconds. - Weight::from_parts(169_724_000, 0) - .saturating_add(Weight::from_parts(0, 4447)) - .saturating_add(T::DbWeight::get().reads(9)) + // Measured: `1302` + // Estimated: `4767` + // Minimum execution time: 30_591_000 picoseconds. + Weight::from_parts(32_861_000, 0) + .saturating_add(Weight::from_parts(0, 4767)) + .saturating_add(T::DbWeight::get().reads(10)) .saturating_add(T::DbWeight::get().writes(5)) } /// Storage: Identity IdentityIndexOf (r:1 w:0) @@ -95,18 +84,20 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> { /// Proof Skipped: Membership Membership (max_values: None, max_size: None, mode: Measured) /// Storage: Identity Identities (r:1 w:0) /// Proof Skipped: Identity Identities (max_values: None, max_size: None, mode: Measured) + /// Storage: Distance IdentityDistanceStatus (r:1 w:0) + /// Proof Skipped: Distance IdentityDistanceStatus (max_values: None, max_size: None, mode: Measured) /// Storage: Membership MembershipsExpireOn (r:2 w:2) /// Proof Skipped: Membership MembershipsExpireOn (max_values: None, max_size: None, mode: Measured) /// Storage: Parameters ParametersStorage (r:1 w:0) /// Proof Skipped: Parameters ParametersStorage (max_values: Some(1), max_size: None, mode: Measured) fn renew_membership() -> Weight { // Proof Size summary in bytes: - // Measured: `646` - // Estimated: `6586` - // Minimum execution time: 110_180_000 picoseconds. - Weight::from_parts(126_218_000, 0) - .saturating_add(Weight::from_parts(0, 6586)) - .saturating_add(T::DbWeight::get().reads(6)) + // Measured: `988` + // Estimated: `6928` + // Minimum execution time: 21_215_000 picoseconds. + Weight::from_parts(22_473_000, 0) + .saturating_add(Weight::from_parts(0, 6928)) + .saturating_add(T::DbWeight::get().reads(7)) .saturating_add(T::DbWeight::get().writes(3)) } /// Storage: Identity IdentityIndexOf (r:1 w:0) @@ -123,12 +114,20 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> { /// Proof: UniversalDividend CurrentUdIndex (max_values: Some(1), max_size: Some(2), added: 497, mode: MaxEncodedLen) fn revoke_membership() -> Weight { // Proof Size summary in bytes: - // Measured: `639` - // Estimated: `4104` - // Minimum execution time: 102_688_000 picoseconds. - Weight::from_parts(129_033_000, 0) - .saturating_add(Weight::from_parts(0, 4104)) + // Measured: `703` + // Estimated: `4168` + // Minimum execution time: 16_543_000 picoseconds. + Weight::from_parts(17_758_000, 0) + .saturating_add(Weight::from_parts(0, 4168)) .saturating_add(T::DbWeight::get().reads(6)) .saturating_add(T::DbWeight::get().writes(3)) } + fn on_initialize() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 27_000 picoseconds. + Weight::from_parts(30_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + } } diff --git a/runtime/common/src/weights/pallet_membership_smith_membership.rs b/runtime/common/src/weights/pallet_membership_smith_membership.rs index 3d842ee7ae84d714d61a648bee3e2abcb851e31c..74648b15e00a957fd245dd6444137e263eba1c3c 100644 --- a/runtime/common/src/weights/pallet_membership_smith_membership.rs +++ b/runtime/common/src/weights/pallet_membership_smith_membership.rs @@ -1,41 +1,28 @@ -// Copyright 2021-2022 Axiom-Team -// -// This file is part of Duniter-v2S. -// -// Duniter-v2S is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, version 3 of the License. -// -// Duniter-v2S 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 Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>. //! Autogenerated weights for `pallet_membership` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-06-08, STEPS: `5`, REPEAT: `2`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-11-20, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` -//! HOSTNAME: `benjamin-xps139380`, CPU: `Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("gdev-benchmark"), DB CACHE: 1024 +//! HOSTNAME: `bgallois-ms7d43`, CPU: `12th Gen Intel(R) Core(TM) i3-12100F` +//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024 // Executed Command: -// target/release/duniter +// ./target/release/duniter // benchmark // pallet -// --chain=gdev-benchmark -// --steps=5 -// --repeat=2 -// --pallet=* -// --extrinsic=* -// --execution=wasm +// --chain +// dev // --wasm-execution=compiled -// --heap-pages=4096 -// --header=./file_header.txt -// --output=./runtime/common/src/weights/ +// --pallet +// pallet-membership +// --extrinsic +// * +// --steps +// 50 +// --repeat +// 20 +// --output=runtime/common/src/weights/ #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -52,16 +39,25 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> { /// Proof Skipped: Identity IdentityIndexOf (max_values: None, max_size: None, mode: Measured) /// Storage: Identity Identities (r:1 w:0) /// Proof Skipped: Identity Identities (max_values: None, max_size: None, mode: Measured) + /// Storage: SmithMembership PendingMembership (r:1 w:1) + /// Proof Skipped: SmithMembership PendingMembership (max_values: None, max_size: None, mode: Measured) + /// Storage: SmithMembership Membership (r:1 w:0) + /// Proof Skipped: SmithMembership Membership (max_values: None, max_size: None, mode: Measured) + /// Storage: Parameters ParametersStorage (r:1 w:0) + /// Proof Skipped: Parameters ParametersStorage (max_values: Some(1), max_size: None, mode: Measured) + /// Storage: SmithMembership PendingMembershipsExpireOn (r:1 w:1) + /// Proof Skipped: SmithMembership PendingMembershipsExpireOn (max_values: None, max_size: None, mode: Measured) fn request_membership() -> Weight { // Proof Size summary in bytes: - // Measured: `365` - // Estimated: `3830` - // Minimum execution time: 40_411_000 picoseconds. - Weight::from_parts(42_517_000, 0) - .saturating_add(Weight::from_parts(0, 3830)) - .saturating_add(T::DbWeight::get().reads(2)) + // Measured: `706` + // Estimated: `4171` + // Minimum execution time: 15_687_000 picoseconds. + Weight::from_parts(24_412_000, 0) + .saturating_add(Weight::from_parts(0, 4171)) + .saturating_add(T::DbWeight::get().reads(6)) + .saturating_add(T::DbWeight::get().writes(2)) } - /// Storage: Identity IdentityIndexOf (r:2 w:0) + /// Storage: Identity IdentityIndexOf (r:1 w:0) /// Proof Skipped: Identity IdentityIndexOf (max_values: None, max_size: None, mode: Measured) /// Storage: SmithMembership PendingMembership (r:1 w:1) /// Proof Skipped: SmithMembership PendingMembership (max_values: None, max_size: None, mode: Measured) @@ -69,7 +65,7 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> { /// Proof Skipped: SmithCert StorageIdtyCertMeta (max_values: None, max_size: None, mode: Measured) /// Storage: Parameters ParametersStorage (r:1 w:0) /// Proof Skipped: Parameters ParametersStorage (max_values: Some(1), max_size: None, mode: Measured) - /// Storage: SmithMembership Membership (r:2 w:1) + /// Storage: SmithMembership Membership (r:1 w:1) /// Proof Skipped: SmithMembership Membership (max_values: None, max_size: None, mode: Measured) /// Storage: SmithMembership CounterForMembership (r:1 w:1) /// Proof: SmithMembership CounterForMembership (max_values: Some(1), max_size: Some(4), added: 499, mode: MaxEncodedLen) @@ -77,12 +73,12 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> { /// Proof Skipped: SmithMembership MembershipsExpireOn (max_values: None, max_size: None, mode: Measured) fn claim_membership() -> Weight { // Proof Size summary in bytes: - // Measured: `827` - // Estimated: `6767` - // Minimum execution time: 142_215_000 picoseconds. - Weight::from_parts(152_753_000, 0) - .saturating_add(Weight::from_parts(0, 6767)) - .saturating_add(T::DbWeight::get().reads(9)) + // Measured: `734` + // Estimated: `4199` + // Minimum execution time: 19_737_000 picoseconds. + Weight::from_parts(20_570_000, 0) + .saturating_add(Weight::from_parts(0, 4199)) + .saturating_add(T::DbWeight::get().reads(7)) .saturating_add(T::DbWeight::get().writes(4)) } /// Storage: Identity IdentityIndexOf (r:1 w:0) @@ -97,11 +93,11 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> { /// Proof Skipped: Parameters ParametersStorage (max_values: Some(1), max_size: None, mode: Measured) fn renew_membership() -> Weight { // Proof Size summary in bytes: - // Measured: `645` - // Estimated: `6585` - // Minimum execution time: 110_054_000 picoseconds. - Weight::from_parts(112_760_000, 0) - .saturating_add(Weight::from_parts(0, 6585)) + // Measured: `717` + // Estimated: `6657` + // Minimum execution time: 17_014_000 picoseconds. + Weight::from_parts(18_201_000, 0) + .saturating_add(Weight::from_parts(0, 6657)) .saturating_add(T::DbWeight::get().reads(6)) .saturating_add(T::DbWeight::get().writes(3)) } @@ -124,17 +120,25 @@ impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> { /// Storage: Session NextKeys (r:1 w:1) /// Proof Skipped: Session NextKeys (max_values: None, max_size: None, mode: Measured) /// Storage: System Account (r:1 w:1) - /// Proof: System Account (max_values: None, max_size: Some(161), added: 2636, mode: MaxEncodedLen) + /// Proof: System Account (max_values: None, max_size: Some(126), added: 2601, mode: MaxEncodedLen) /// Storage: Session KeyOwner (r:0 w:4) /// Proof Skipped: Session KeyOwner (max_values: None, max_size: None, mode: Measured) fn revoke_membership() -> Weight { // Proof Size summary in bytes: - // Measured: `1164` - // Estimated: `4629` - // Minimum execution time: 224_136_000 picoseconds. - Weight::from_parts(238_140_000, 0) - .saturating_add(Weight::from_parts(0, 4629)) + // Measured: `1183` + // Estimated: `4648` + // Minimum execution time: 35_851_000 picoseconds. + Weight::from_parts(38_916_000, 0) + .saturating_add(Weight::from_parts(0, 4648)) .saturating_add(T::DbWeight::get().reads(10)) .saturating_add(T::DbWeight::get().writes(13)) } + fn on_initialize() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 27_000 picoseconds. + Weight::from_parts(30_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + } }