Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • nodes/rust/duniter-v2s
  • llaq/lc-core-substrate
  • pini-gh/duniter-v2s
  • vincentux/duniter-v2s
  • mildred/duniter-v2s
  • d0p1/duniter-v2s
  • bgallois/duniter-v2s
  • Nicolas80/duniter-v2s
8 results
Show changes
Commits on Source (2)
Showing
with 481 additions and 35 deletions
......@@ -146,10 +146,12 @@ impl pallet_membership::Config<Instance1> for Test {
type CheckCallAllowed = DuniterWot;
type IdtyId = IdtyIndex;
type IdtyIdOf = IdentityIndexOf<Self>;
type AccountIdOf = ();
type MembershipPeriod = MembershipPeriod;
type MetaData = ();
type OnEvent = DuniterWot;
type RuntimeEvent = RuntimeEvent;
type WeightInfo = ();
type PendingMembershipPeriod = PendingMembershipPeriod;
}
......@@ -199,10 +201,12 @@ impl pallet_membership::Config<Instance2> for Test {
type CheckCallAllowed = SmithSubWot;
type IdtyId = IdtyIndex;
type IdtyIdOf = IdentityIndexOf<Self>;
type AccountIdOf = ();
type MembershipPeriod = SmithMembershipPeriod;
type MetaData = ();
type OnEvent = SmithSubWot;
type PendingMembershipPeriod = SmithPendingMembershipPeriod;
type WeightInfo = ();
type RuntimeEvent = RuntimeEvent;
}
......
......@@ -11,7 +11,9 @@ version = '3.0.0'
[features]
default = ['std']
runtime-benchmarks = ['frame-benchmarking']
runtime-benchmarks = [
"frame-benchmarking/runtime-benchmarks",
]
std = [
'codec/std',
'frame-support/std',
......@@ -73,6 +75,7 @@ default-features = false
git = 'https://github.com/duniter/substrate'
branch = 'duniter-substrate-v0.9.32'
### DOC ###
[package.metadata.docs.rs]
......
// 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/>.
#![cfg(feature = "runtime-benchmarks")]
use super::*;
use frame_benchmarking::benchmarks_instance_pallet;
use frame_support::dispatch::UnfilteredDispatchable;
use frame_system::RawOrigin;
use sp_runtime::traits::Convert;
#[cfg(test)]
use maplit::btreemap;
use crate::Pallet;
fn assert_has_event<T: Config<I>, I: 'static>(generic_event: <T as Config<I>>::RuntimeEvent) {
frame_system::Pallet::<T>::assert_has_event(generic_event.into());
}
benchmarks_instance_pallet! {
where_clause {
where
T::IdtyId: From<u32>,
}
force_request_membership {
let idty: T::IdtyId = 5.into();
}: _<T::RuntimeOrigin>(RawOrigin::Root.into(), idty, T::MetaData ::default() )
verify {
assert_has_event::<T, I>(Event::<T, I>::MembershipRequested(idty).into());
}
request_membership {
// Dave identity (4)
// for main wot, no constraints
// for smith subwot, his pubkey is hardcoded in default metadata
let idty: T::IdtyId = 4.into();
Membership::<T, I>::take(idty);
let caller: T::AccountId = T::AccountIdOf::convert(idty.clone()).unwrap();
let caller_origin: <T as frame_system::Config>::RuntimeOrigin = RawOrigin::Signed(caller.clone()).into();
// Lazily prepare call as this extrinsic will always return an errror when in subwot
let call = Call::<T, I>::request_membership { metadata: T::MetaData ::default()};
}: {
call.dispatch_bypass_filter(caller_origin).ok();
}
verify {
if T::CheckCallAllowed::check_idty_allowed_to_request_membership(&idty).is_ok() {
assert_has_event::<T, I>(Event::<T, I>::MembershipRequested(idty).into());
}
}
claim_membership {
let idty: T::IdtyId = 3.into();
Membership::<T, I>::take(idty);
PendingMembership::<T, I>::insert(idty.clone(), T::MetaData::default());
let caller: T::AccountId = T::AccountIdOf::convert(idty.clone()).unwrap();
let caller_origin: <T as frame_system::Config>::RuntimeOrigin = RawOrigin::Signed(caller.clone()).into();
}: _<T::RuntimeOrigin>(caller_origin, Some(idty))
verify {
assert_has_event::<T, I>(Event::<T, I>::MembershipAcquired(idty).into());
}
renew_membership {
let idty: T::IdtyId = 3.into();
let caller: T::AccountId = T::AccountIdOf::convert(idty.clone()).unwrap();
let caller_origin: <T as frame_system::Config>::RuntimeOrigin = RawOrigin::Signed(caller.clone()).into();
}: _<T::RuntimeOrigin>(caller_origin, Some(idty))
verify {
assert_has_event::<T, I>(Event::<T, I>::MembershipRenewed(idty).into());
}
revoke_membership {
let idty: T::IdtyId = 3.into();
let caller: T::AccountId = T::AccountIdOf::convert(idty.clone()).unwrap();
let caller_origin: <T as frame_system::Config>::RuntimeOrigin = RawOrigin::Signed(caller.clone()).into();
}: _<T::RuntimeOrigin>(caller_origin, Some(idty))
verify {
assert_has_event::<T, I>(Event::<T, I>::MembershipRevoked(idty).into());
}
impl_benchmark_test_suite!(
Pallet,
crate::mock::new_test_ext(crate::mock::DefaultMembershipConfig {
memberships: btreemap![
3 => MembershipData {
expire_on: 3,
},
],}),
crate::mock::Test
);
}
......@@ -23,10 +23,13 @@ mod mock;
#[cfg(test)]
mod tests;
/*#[cfg(feature = "runtime-benchmarks")]
mod benchmarking;*/
#[cfg(feature = "runtime-benchmarks")]
mod benchmarking;
pub mod weights;
pub use pallet::*;
pub use weights::WeightInfo;
use frame_support::dispatch::Weight;
use frame_support::error::BadOrigin;
......@@ -65,6 +68,8 @@ pub mod pallet {
type IdtyId: Copy + MaybeSerializeDeserialize + Parameter + Ord;
/// Something that give the IdtyId on an account id
type IdtyIdOf: Convert<Self::AccountId, Option<Self::IdtyId>>;
/// Something that give the account id on an OdtyId
type AccountIdOf: Convert<Self::IdtyId, Option<Self::AccountId>>;
/// Optional metadata
type MetaData: Default + Parameter + Validate<Self::AccountId>;
#[pallet::constant]
......@@ -78,6 +83,7 @@ pub mod pallet {
/// Because this pallet emits events, it depends on the runtime's definition of an event.
type RuntimeEvent: From<Event<Self, I>>
+ IsType<<Self as frame_system::Config>::RuntimeEvent>;
type WeightInfo: WeightInfo;
}
// GENESIS STUFF //
......@@ -195,8 +201,8 @@ pub mod pallet {
#[pallet::call]
impl<T: Config<I>, I: 'static> Pallet<T, I> {
#[pallet::weight(1_000_000_000)]
/// request membership without checks
#[pallet::weight(T::WeightInfo::force_request_membership())]
pub fn force_request_membership(
origin: OriginFor<T>,
idty_id: T::IdtyId,
......@@ -207,9 +213,9 @@ pub mod pallet {
Self::do_request_membership(idty_id, metadata)
}
#[pallet::weight(1_000_000_000)]
/// submit a membership request (must have a declared identity)
/// (only available for sub wot, automatic for main wot)
#[pallet::weight(T::WeightInfo::request_membership())]
pub fn request_membership(
origin: OriginFor<T>,
metadata: T::MetaData,
......@@ -225,9 +231,9 @@ pub mod pallet {
Self::do_request_membership(idty_id, metadata)
}
#[pallet::weight(1_000_000_000)]
/// claim that the previously requested membership fullfills the requirements
/// (only available for sub wot, automatic for main wot)
#[pallet::weight(T::WeightInfo::claim_membership())]
pub fn claim_membership(
origin: OriginFor<T>,
maybe_idty_id: Option<T::IdtyId>,
......@@ -253,8 +259,8 @@ pub mod pallet {
Ok(().into())
}
#[pallet::weight(1_000_000_000)]
/// extend the validity period of an active membership
#[pallet::weight(T::WeightInfo::renew_membership())]
pub fn renew_membership(
origin: OriginFor<T>,
maybe_idty_id: Option<T::IdtyId>,
......@@ -274,9 +280,9 @@ pub mod pallet {
Ok(().into())
}
#[pallet::weight(1_000_000_000)]
/// revoke an active membership
/// (only available for sub wot, automatic for main wot)
#[pallet::weight(T::WeightInfo::revoke_membership())]
pub fn revoke_membership(
origin: OriginFor<T>,
maybe_idty_id: Option<T::IdtyId>,
......
......@@ -86,11 +86,13 @@ impl pallet_membership::Config for Test {
type CheckCallAllowed = ();
type IdtyId = IdtyId;
type IdtyIdOf = ConvertInto;
type AccountIdOf = ConvertInto;
type MembershipPeriod = MembershipPeriod;
type MetaData = ();
type OnEvent = ();
type PendingMembershipPeriod = PendingMembershipPeriod;
type RuntimeEvent = RuntimeEvent;
type WeightInfo = ();
}
// Build genesis storage according to the mock runtime.
......
// Copyright 2021-2023 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/>.
#![allow(clippy::unnecessary_cast)]
use frame_support::weights::{constants::RocksDbWeight, Weight};
/// Weight functions needed for pallet_universal_dividend.
pub trait WeightInfo {
fn force_request_membership() -> Weight;
fn request_membership() -> Weight;
fn claim_membership() -> Weight;
fn renew_membership() -> Weight;
fn revoke_membership() -> Weight;
}
// Insecure weights implementation, use it for tests only!
impl WeightInfo for () {
// Storage: Membership PendingMembership (r:1 w:1)
// Storage: Membership Membership (r:1 w:0)
// Storage: Parameters ParametersStorage (r:1 w:0)
// Storage: Membership PendingMembershipsExpireOn (r:1 w:1)
fn force_request_membership() -> Weight {
// Minimum execution time: 89_725 nanoseconds.
Weight::from_ref_time(98_333_000 as u64)
.saturating_add(RocksDbWeight::get().reads(4 as u64))
.saturating_add(RocksDbWeight::get().writes(2 as u64))
}
// Storage: Identity IdentityIndexOf (r:1 w:0)
// Storage: Identity Identities (r:1 w:0)
fn request_membership() -> Weight {
// Minimum execution time: 48_477 nanoseconds.
Weight::from_ref_time(50_689_000 as u64)
.saturating_add(RocksDbWeight::get().reads(2 as u64))
}
// Storage: Identity IdentityIndexOf (r:1 w:0)
// Storage: Membership Membership (r:1 w:1)
// Storage: Cert StorageIdtyCertMeta (r:1 w:0)
// Storage: Parameters ParametersStorage (r:1 w:0)
// Storage: Membership PendingMembership (r:1 w:1)
// Storage: Membership CounterForMembership (r:1 w:1)
// Storage: Membership MembershipsExpireOn (r:1 w:1)
fn claim_membership() -> Weight {
// Minimum execution time: 144_079 nanoseconds.
Weight::from_ref_time(146_565_000 as u64)
.saturating_add(RocksDbWeight::get().reads(7 as u64))
.saturating_add(RocksDbWeight::get().writes(4 as u64))
}
// Storage: Identity IdentityIndexOf (r:1 w:0)
// Storage: Membership Membership (r:1 w:1)
// Storage: Identity Identities (r:1 w:0)
// Storage: Parameters ParametersStorage (r:1 w:0)
// Storage: Membership MembershipsExpireOn (r:1 w:1)
fn renew_membership() -> Weight {
// Minimum execution time: 120_859 nanoseconds.
Weight::from_ref_time(124_222_000 as u64)
.saturating_add(RocksDbWeight::get().reads(5 as u64))
.saturating_add(RocksDbWeight::get().writes(2 as u64))
}
// Storage: Identity IdentityIndexOf (r:1 w:0)
// Storage: Membership Membership (r:1 w:1)
// Storage: Membership CounterForMembership (r:1 w:1)
// Storage: Identity Identities (r:1 w:0)
// Storage: UniversalDividend CurrentUdIndex (r:1 w:0)
fn revoke_membership() -> Weight {
// Minimum execution time: 109_486 nanoseconds.
Weight::from_ref_time(113_303_000 as u64)
.saturating_add(RocksDbWeight::get().reads(5 as u64))
.saturating_add(RocksDbWeight::get().writes(2 as u64))
}
}
......@@ -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();
......
......@@ -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,
......
......@@ -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;
......
......@@ -51,6 +51,18 @@ macro_rules! declare_session_keys {
Self::Identity::type_info()
}
}
// Dummy implementation only for benchmarking
impl Default for SessionKeysWrapper {
fn default() -> Self {
SessionKeysWrapper(SessionKeys{
grandpa: sp_core::ed25519::Public([0u8; 32]).into(),
babe: sp_core::sr25519::Public([0u8; 32]).into(),
im_online: sp_core::sr25519::Public([0u8; 32]).into(),
authority_discovery: sp_core::sr25519::Public([0u8; 32]).into(),
})
}
}
}
}
}
......@@ -112,11 +124,27 @@ pub struct SmithMembershipMetaData<SessionKeysWrapper> {
pub p2p_endpoint: sp_runtime::RuntimeString,
pub session_keys: SessionKeysWrapper,
}
impl<SessionKeysWrapper> Default for SmithMembershipMetaData<SessionKeysWrapper> {
impl<SessionKeysWrapper: Default> Default for SmithMembershipMetaData<SessionKeysWrapper> {
#[cfg(not(feature = "runtime-benchmarks"))]
fn default() -> Self {
unreachable!()
}
#[cfg(feature = "runtime-benchmarks")]
// dummy implementation for benchmarking
fn default() -> Self {
SmithMembershipMetaData {
owner_key: AccountId::from([
// Dave (FIXME avoid stupid metadata)
48, 103, 33, 33, 29, 84, 4, 189, 157, 168, 142, 2, 4, 54, 10, 26, 154, 184, 184,
124, 102, 193, 188, 47, 205, 211, 127, 60, 34, 34, 204, 32,
]),
p2p_endpoint: sp_runtime::RuntimeString::default(),
session_keys: SessionKeysWrapper::default(),
}
}
}
impl<SessionKeysWrapper> sp_membership::traits::Validate<AccountId>
for SmithMembershipMetaData<SessionKeysWrapper>
{
......
......@@ -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 //
......@@ -447,11 +448,13 @@ macro_rules! pallets_config {
type CheckCallAllowed = Wot;
type IdtyId = IdtyIndex;
type IdtyIdOf = common_runtime::providers::IdentityIndexOf<Self>;
type AccountIdOf = common_runtime::providers::IdentityAccountIdProvider<Self>;
type MembershipPeriod = MembershipPeriod;
type MetaData = ();
type OnEvent = OnMembershipEventHandler<Wot, Runtime>;
type PendingMembershipPeriod = PendingMembershipPeriod;
type RuntimeEvent = RuntimeEvent;
type WeightInfo = common_runtime::weights::pallet_membership_membership::WeightInfo<Runtime>;
}
impl pallet_certification::Config<Instance1> for Runtime {
......@@ -482,11 +485,13 @@ macro_rules! pallets_config {
type CheckCallAllowed = SmithSubWot;
type IdtyId = IdtyIndex;
type IdtyIdOf = common_runtime::providers::IdentityIndexOf<Self>;
type AccountIdOf = common_runtime::providers::IdentityAccountIdProvider<Self>;
type MembershipPeriod = SmithMembershipPeriod;
type MetaData = SmithMembershipMetaData<opaque::SessionKeysWrapper>;
type OnEvent = OnSmithMembershipEventHandler<SmithSubWot, Runtime>;
type PendingMembershipPeriod = SmithPendingMembershipPeriod;
type RuntimeEvent = RuntimeEvent;
type WeightInfo = common_runtime::weights::pallet_membership_smith_membership::WeightInfo<Runtime>;
}
impl pallet_certification::Config<Instance2> for Runtime {
......
......@@ -33,6 +33,9 @@ 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 pallet_membership_membership;
pub mod pallet_membership_smith_membership;
pub mod paritydb_weights;
......@@ -46,10 +46,10 @@ use sp_std::marker::PhantomData;
/// Weight functions for `common_runtime::certification`.
pub struct WeightInfo<T>(PhantomData<T>);
impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T> {
// Storage: SmithsCert StorageIdtyCertMeta (r:2 w:2)
// Storage: SmithCert StorageIdtyCertMeta (r:2 w:2)
// Storage: Parameters ParametersStorage (r:1 w:0)
// Storage: SmithsCert StorageCertsRemovableOn (r:1 w:1)
// Storage: SmithsCert CertsByReceiver (r:1 w:1)
// Storage: SmithCert StorageCertsRemovableOn (r:1 w:1)
// Storage: SmithCert CertsByReceiver (r:1 w:1)
fn force_add_cert() -> Weight {
// Minimum execution time: 125_287 nanoseconds.
Weight::from_ref_time(128_059_000 as u64)
......@@ -57,18 +57,18 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
.saturating_add(T::DbWeight::get().writes(4 as u64))
}
// Storage: Identity Identities (r:2 w:0)
// Storage: SmithsCert StorageIdtyCertMeta (r:2 w:2)
// Storage: SmithCert StorageIdtyCertMeta (r:2 w:2)
// Storage: Parameters ParametersStorage (r:1 w:0)
// Storage: SmithsCert StorageCertsRemovableOn (r:1 w:1)
// Storage: SmithsCert CertsByReceiver (r:1 w:1)
// Storage: SmithCert StorageCertsRemovableOn (r:1 w:1)
// Storage: SmithCert CertsByReceiver (r:1 w:1)
fn add_cert() -> Weight {
// Minimum execution time: 147_626 nanoseconds.
Weight::from_ref_time(152_571_000 as u64)
.saturating_add(T::DbWeight::get().reads(7 as u64))
.saturating_add(T::DbWeight::get().writes(4 as u64))
}
// Storage: SmithsCert CertsByReceiver (r:1 w:1)
// Storage: SmithsCert StorageIdtyCertMeta (r:2 w:2)
// Storage: SmithCert CertsByReceiver (r:1 w:1)
// Storage: SmithCert StorageIdtyCertMeta (r:2 w:2)
// Storage: Parameters ParametersStorage (r:1 w:0)
// Storage: SmithMembership Membership (r:1 w:0)
fn del_cert() -> Weight {
......@@ -77,8 +77,8 @@ impl<T: frame_system::Config> pallet_certification::WeightInfo for WeightInfo<T>
.saturating_add(T::DbWeight::get().reads(5 as u64))
.saturating_add(T::DbWeight::get().writes(3 as u64))
}
// Storage: SmithsCert CertsByReceiver (r:1 w:1)
// Storage: SmithsCert StorageIdtyCertMeta (r:2 w:2)
// Storage: SmithCert CertsByReceiver (r:1 w:1)
// Storage: SmithCert StorageIdtyCertMeta (r:2 w:2)
// Storage: Parameters ParametersStorage (r:1 w:0)
// Storage: SmithMembership Membership (r:1 w:0)
/// The range of component `i` is `[2, 1000]`.
......
// 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-04-26, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]`
//! HOSTNAME: `benjamin-xps139380`, CPU: `Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz`
//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
// Executed Command:
// target/release/duniter
// benchmark
// pallet
// --chain=dev
// --steps=50
// --repeat=20
// --pallet=pallet_membership
// --extrinsic=*
// --execution=wasm
// --wasm-execution=compiled
// --heap-pages=4096
// --header=./file_header.txt
// --output=./runtime/common/src/weights/
#![cfg_attr(rustfmt, rustfmt_skip)]
#![allow(unused_parens)]
#![allow(unused_imports)]
use frame_support::{traits::Get, weights::Weight};
use sp_std::marker::PhantomData;
/// Weight functions for `pallet_membership`.
pub struct WeightInfo<T>(PhantomData<T>);
impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
// Storage: Membership PendingMembership (r:1 w:1)
// Storage: Membership Membership (r:1 w:0)
// Storage: Parameters ParametersStorage (r:1 w:0)
// Storage: Membership PendingMembershipsExpireOn (r:1 w:1)
fn force_request_membership() -> Weight {
// Minimum execution time: 89_725 nanoseconds.
Weight::from_ref_time(98_333_000 as u64)
.saturating_add(T::DbWeight::get().reads(4 as u64))
.saturating_add(T::DbWeight::get().writes(2 as u64))
}
// Storage: Identity IdentityIndexOf (r:1 w:0)
// Storage: Identity Identities (r:1 w:0)
fn request_membership() -> Weight {
// Minimum execution time: 48_477 nanoseconds.
Weight::from_ref_time(50_689_000 as u64)
.saturating_add(T::DbWeight::get().reads(2 as u64))
}
// Storage: Identity IdentityIndexOf (r:1 w:0)
// Storage: Membership Membership (r:1 w:1)
// Storage: Cert StorageIdtyCertMeta (r:1 w:0)
// Storage: Parameters ParametersStorage (r:1 w:0)
// Storage: Membership PendingMembership (r:1 w:1)
// Storage: Membership CounterForMembership (r:1 w:1)
// Storage: Membership MembershipsExpireOn (r:1 w:1)
fn claim_membership() -> Weight {
// Minimum execution time: 144_079 nanoseconds.
Weight::from_ref_time(146_565_000 as u64)
.saturating_add(T::DbWeight::get().reads(7 as u64))
.saturating_add(T::DbWeight::get().writes(4 as u64))
}
// Storage: Identity IdentityIndexOf (r:1 w:0)
// Storage: Membership Membership (r:1 w:1)
// Storage: Identity Identities (r:1 w:0)
// Storage: Parameters ParametersStorage (r:1 w:0)
// Storage: Membership MembershipsExpireOn (r:1 w:1)
fn renew_membership() -> Weight {
// Minimum execution time: 120_859 nanoseconds.
Weight::from_ref_time(124_222_000 as u64)
.saturating_add(T::DbWeight::get().reads(5 as u64))
.saturating_add(T::DbWeight::get().writes(2 as u64))
}
// Storage: Identity IdentityIndexOf (r:1 w:0)
// Storage: Membership Membership (r:1 w:1)
// Storage: Membership CounterForMembership (r:1 w:1)
// Storage: Identity Identities (r:1 w:0)
// Storage: UniversalDividend CurrentUdIndex (r:1 w:0)
fn revoke_membership() -> Weight {
// Minimum execution time: 109_486 nanoseconds.
Weight::from_ref_time(113_303_000 as u64)
.saturating_add(T::DbWeight::get().reads(5 as u64))
.saturating_add(T::DbWeight::get().writes(2 as u64))
}
}
// 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-04-26, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]`
//! HOSTNAME: `benjamin-xps139380`, CPU: `Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz`
//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
// Executed Command:
// target/release/duniter
// benchmark
// pallet
// --chain=dev
// --steps=50
// --repeat=20
// --pallet=pallet_membership
// --extrinsic=*
// --execution=wasm
// --wasm-execution=compiled
// --heap-pages=4096
// --header=./file_header.txt
// --output=./runtime/common/src/weights/
#![cfg_attr(rustfmt, rustfmt_skip)]
#![allow(unused_parens)]
#![allow(unused_imports)]
use frame_support::{traits::Get, weights::Weight};
use sp_std::marker::PhantomData;
/// Weight functions for `pallet_membership`.
pub struct WeightInfo<T>(PhantomData<T>);
impl<T: frame_system::Config> pallet_membership::WeightInfo for WeightInfo<T> {
// Storage: SmithMembership PendingMembership (r:1 w:1)
// Storage: SmithMembership Membership (r:1 w:0)
// Storage: Parameters ParametersStorage (r:1 w:0)
// Storage: SmithMembership PendingMembershipsExpireOn (r:1 w:1)
fn force_request_membership() -> Weight {
// Minimum execution time: 96_077 nanoseconds.
Weight::from_ref_time(98_570_000 as u64)
.saturating_add(T::DbWeight::get().reads(4 as u64))
.saturating_add(T::DbWeight::get().writes(2 as u64))
}
// Storage: Identity IdentityIndexOf (r:1 w:0)
// Storage: Identity Identities (r:1 w:0)
// Storage: SmithMembership PendingMembership (r:1 w:1)
// Storage: SmithMembership Membership (r:1 w:0)
// Storage: Parameters ParametersStorage (r:1 w:0)
// Storage: SmithMembership PendingMembershipsExpireOn (r:1 w:1)
fn request_membership() -> Weight {
// Minimum execution time: 122_839 nanoseconds.
Weight::from_ref_time(125_861_000 as u64)
.saturating_add(T::DbWeight::get().reads(6 as u64))
.saturating_add(T::DbWeight::get().writes(2 as u64))
}
// Storage: Identity IdentityIndexOf (r:2 w:0)
// Storage: SmithMembership Membership (r:2 w:1)
// Storage: SmithCert StorageIdtyCertMeta (r:1 w:0)
// Storage: Parameters ParametersStorage (r:1 w:0)
// Storage: SmithMembership PendingMembership (r:1 w:1)
// Storage: SmithMembership CounterForMembership (r:1 w:1)
// Storage: SmithMembership MembershipsExpireOn (r:1 w:1)
fn claim_membership() -> Weight {
// Minimum execution time: 165_369 nanoseconds.
Weight::from_ref_time(167_607_000 as u64)
.saturating_add(T::DbWeight::get().reads(9 as u64))
.saturating_add(T::DbWeight::get().writes(4 as u64))
}
// Storage: Identity IdentityIndexOf (r:1 w:0)
// Storage: SmithMembership Membership (r:1 w:1)
// Storage: Identity Identities (r:1 w:0)
// Storage: Parameters ParametersStorage (r:1 w:0)
// Storage: SmithMembership MembershipsExpireOn (r:1 w:1)
fn renew_membership() -> Weight {
// Minimum execution time: 121_761 nanoseconds.
Weight::from_ref_time(125_210_000 as u64)
.saturating_add(T::DbWeight::get().reads(5 as u64))
.saturating_add(T::DbWeight::get().writes(2 as u64))
}
// Storage: Identity IdentityIndexOf (r:1 w:0)
// Storage: SmithMembership Membership (r:1 w:1)
// Storage: SmithMembership CounterForMembership (r:1 w:1)
// Storage: AuthorityMembers Members (r:1 w:1)
// Storage: AuthorityMembers OnlineAuthorities (r:1 w:1)
// Storage: AuthorityMembers AuthoritiesCounter (r:1 w:1)
// Storage: AuthorityMembers IncomingAuthorities (r:1 w:1)
// Storage: Session NextKeys (r:1 w:1)
// Storage: System Account (r:1 w:1)
// Storage: Session KeyOwner (r:0 w:4)
fn revoke_membership() -> Weight {
// Minimum execution time: 234_173 nanoseconds.
Weight::from_ref_time(239_334_000 as u64)
.saturating_add(T::DbWeight::get().reads(9 as u64))
.saturating_add(T::DbWeight::get().writes(12 as u64))
}
}
......@@ -140,13 +140,15 @@ pub type TechnicalCommitteeInstance = Instance2;
mod benches {
define_benchmarks!(
[pallet_certification, Cert]
[pallet_certification, SmithsCert]
[pallet_certification, SmithCert]
[pallet_oneshot_account, OneshotAccount]
[pallet_universal_dividend, UniversalDividend]
[pallet_provide_randomness, ProvideRandomness]
[pallet_upgrade_origin, UpgradeOrigin]
[pallet_duniter_account, Account]
[pallet_identity, Identity]
[pallet_membership, Membership]
[pallet_membership, SmithMembership]
// Substrate
[pallet_balances, Balances]
[frame_benchmarking::baseline, Baseline::<Runtime>]
......