diff --git a/Cargo.lock b/Cargo.lock index 0da887cdabde0f3c4a88734abff546b594f9c01b..59fb60db43460492938abe741268325b50ae937f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1472,6 +1472,7 @@ dependencies = [ "pallet-collective", "pallet-distance", "pallet-duniter-account", + "pallet-duniter-wot", "pallet-grandpa", "pallet-identity", "pallet-im-online", diff --git a/pallets/duniter-wot/src/lib.rs b/pallets/duniter-wot/src/lib.rs index 6f828b72aa465a97bda9353ff8068add83cc3250..b84102845a79f8f08210b16f3fe345581490abff 100644 --- a/pallets/duniter-wot/src/lib.rs +++ b/pallets/duniter-wot/src/lib.rs @@ -200,15 +200,13 @@ impl<T: Config> sp_membership::traits::OnNewMembership<IdtyIndex> for Pallet<T> where T: pallet_membership::Config, { - fn on_created(idty_index: &IdtyIndex) -> Weight { + fn on_created(idty_index: &IdtyIndex) { // when main membership is acquired, tell identity // (only used on first membership acquiry) - pallet_identity::Pallet::<T>::membership_added(*idty_index) + pallet_identity::Pallet::<T>::membership_added(*idty_index); } - fn on_renewed(_idty_index: &IdtyIndex) -> Weight { - Weight::zero() - } + fn on_renewed(_idty_index: &IdtyIndex) {} } // implement membership event handler diff --git a/pallets/duniter-wot/src/mock.rs b/pallets/duniter-wot/src/mock.rs index c7be1ef5541523b46ebcc84629918232cd2b3ba3..29254167f2a1951bf6b6902b0e53e5298dfe3de7 100644 --- a/pallets/duniter-wot/src/mock.rs +++ b/pallets/duniter-wot/src/mock.rs @@ -147,7 +147,8 @@ impl pallet_membership::Config for Test { type IdtyIdOf = IdentityIndexOf<Self>; type MembershipPeriod = MembershipPeriod; type MembershipRenewalPeriod = MembershipRenewalPeriod; - type OnEvent = DuniterWot; + type OnNewMembership = DuniterWot; + type OnRemoveMembership = DuniterWot; type RuntimeEvent = RuntimeEvent; type WeightInfo = (); } diff --git a/pallets/identity/src/lib.rs b/pallets/identity/src/lib.rs index aa6a6c5a81c8a8f4571c7f63585c9a7e8d32de90..6e5c07c5843088955c3ef02bf241e00e69a46213 100644 --- a/pallets/identity/src/lib.rs +++ b/pallets/identity/src/lib.rs @@ -638,7 +638,7 @@ pub mod pallet { // when an identity becomes member, update its status // unschedule identity action, this falls back to membership scheduling // no identity schedule while membership is active - pub fn membership_added(idty_index: T::IdtyIndex) -> Weight { + pub fn membership_added(idty_index: T::IdtyIndex) { if let Some(mut idty_value) = Identities::<T>::get(idty_index) { Self::unschedule_identity_change(idty_index, idty_value.next_scheduled); idty_value.next_scheduled = BlockNumberFor::<T>::zero(); @@ -649,7 +649,6 @@ pub mod pallet { idty_value.status = IdtyStatus::Member; <Identities<T>>::insert(idty_index, idty_value); } - T::WeightInfo::membership_added() // else should not happen } diff --git a/pallets/membership/src/mock.rs b/pallets/membership/src/mock.rs index 27070cd5ff7199212632dfebdfd7e537bdeab161..5fb5d29ecf991aa935d7463a7a1344d6ec3837c2 100644 --- a/pallets/membership/src/mock.rs +++ b/pallets/membership/src/mock.rs @@ -85,7 +85,8 @@ impl pallet_membership::Config for Test { type IdtyIdOf = ConvertInto; type MembershipPeriod = MembershipPeriod; type MembershipRenewalPeriod = MembershipRenewalPeriod; - type OnEvent = (); + type OnNewMembership = (); + type OnRemoveMembership = (); type RuntimeEvent = RuntimeEvent; type WeightInfo = (); } diff --git a/primitives/membership/src/lib.rs b/primitives/membership/src/lib.rs index e14fe610d4df3aebb97b37819bdcd261b6eea886..e742473564dcab5588961fcc1e6c5b12dc7bd69b 100644 --- a/primitives/membership/src/lib.rs +++ b/primitives/membership/src/lib.rs @@ -61,18 +61,13 @@ use impl_trait_for_tuples::impl_for_tuples; // use frame_system::pallet_prelude::*; #[impl_for_tuples(5)] -#[allow(clippy::let_and_return)] impl<IdtyId> traits::OnNewMembership<IdtyId> for Tuple { - fn on_created(idty_index: &IdtyId) -> Weight { - let mut weight = Weight::zero(); - for_tuples!( #( weight = weight.saturating_add(Tuple::on_created(idty_index)); )* ); - weight + fn on_created(idty_index: &IdtyId) { + for_tuples!( #(Tuple::on_created(idty_index); )* ); } - fn on_renewed(idty_index: &IdtyId) -> Weight { - let mut weight = Weight::zero(); - for_tuples!( #( weight = weight.saturating_add(Tuple::on_renewed(idty_index)); )* ); - weight + fn on_renewed(idty_index: &IdtyId) { + for_tuples!( #( Tuple::on_renewed(idty_index); )* ); } } diff --git a/primitives/membership/src/traits.rs b/primitives/membership/src/traits.rs index cd1e5f85338b5e06c3f0fad0bcb9656239aa906d..f67655299026d3494848257b2a4ced44c310f09f 100644 --- a/primitives/membership/src/traits.rs +++ b/primitives/membership/src/traits.rs @@ -32,18 +32,14 @@ impl<IdtyId> CheckMembershipOpAllowed<IdtyId> for () { } pub trait OnNewMembership<IdtyId> { - fn on_created(idty_index: &IdtyId) -> Weight; - fn on_renewed(idty_index: &IdtyId) -> Weight; + fn on_created(idty_index: &IdtyId); + fn on_renewed(idty_index: &IdtyId); } pub trait OnRemoveMembership<IdtyId> { fn on_removed(idty_index: &IdtyId) -> Weight; } -// impl<IdtyId> OnEvent<IdtyId> for () { -// fn on_event(_: &crate::Event<IdtyId>) {} -// } - pub trait MembersCount { fn members_count() -> u32; } diff --git a/runtime/common/Cargo.toml b/runtime/common/Cargo.toml index 4dae708319da060ab31d88f70a9f7ff399b6a4e8..aafe5a6b14de465e42a911f8c36b4ef844a6c9ed 100644 --- a/runtime/common/Cargo.toml +++ b/runtime/common/Cargo.toml @@ -25,6 +25,7 @@ runtime-benchmarks = [ "pallet-collective/runtime-benchmarks", "pallet-distance/runtime-benchmarks", "pallet-duniter-account/runtime-benchmarks", + "pallet-duniter-wot/runtime-benchmarks", "pallet-grandpa/runtime-benchmarks", "pallet-identity/runtime-benchmarks", "pallet-im-online/runtime-benchmarks", @@ -61,6 +62,7 @@ std = [ "pallet-collective/std", "pallet-distance/std", "pallet-duniter-account/std", + "pallet-duniter-wot/std", "pallet-grandpa/std", "pallet-identity/std", "pallet-im-online/std", @@ -103,6 +105,7 @@ try-runtime = [ "pallet-collective/try-runtime", "pallet-distance/try-runtime", "pallet-duniter-account/try-runtime", + "pallet-duniter-wot/try-runtime", "pallet-grandpa/try-runtime", "pallet-identity/try-runtime", "pallet-im-online/try-runtime", @@ -141,6 +144,7 @@ pallet-certification = { workspace = true } pallet-collective = { workspace = true } pallet-distance = { workspace = true } pallet-duniter-account = { workspace = true } +pallet-duniter-wot = { workspace = true } pallet-grandpa = { workspace = true } pallet-identity = { workspace = true } pallet-im-online = { workspace = true } diff --git a/runtime/common/src/handlers.rs b/runtime/common/src/handlers.rs index 3f88fa64a76f195f699b6acfa750cc49525144b5..2c71468c2d1d63ffabf8030b27e9a181073c459e 100644 --- a/runtime/common/src/handlers.rs +++ b/runtime/common/src/handlers.rs @@ -32,23 +32,20 @@ where } } -// membership event runtime handler -pub struct OnNewMembershipHandler<Inner, Runtime>(core::marker::PhantomData<(Inner, Runtime)>); +/// New membership event runtime handler +pub struct OnNewMembershipHandler<Runtime>(core::marker::PhantomData<Runtime>); impl< - Inner: sp_membership::traits::OnNewMembership<IdtyIndex>, Runtime: frame_system::Config<AccountId = AccountId> + pallet_identity::Config<IdtyData = IdtyData, IdtyIndex = IdtyIndex> + pallet_membership::Config + pallet_smith_members::Config<IdtyIndex = IdtyIndex> + + pallet_duniter_wot::Config + pallet_universal_dividend::Config, - > sp_membership::traits::OnNewMembership<IdtyIndex> for OnNewMembershipHandler<Inner, Runtime> + > sp_membership::traits::OnNewMembership<IdtyIndex> for OnNewMembershipHandler<Runtime> { - fn on_created(idty_index: &IdtyIndex) -> Weight { - let mut weight = Weight::zero(); - let mut add_db_reads_writes = |reads, writes| { - weight += crate::constants::DbWeight::get().reads_writes(reads, writes); - }; - + fn on_created(idty_index: &IdtyIndex) { + // duniter-wot related actions + pallet_duniter_wot::Pallet::<Runtime>::on_created(idty_index); // when main membership is acquired, it starts getting right to UD pallet_identity::Identities::<Runtime>::mutate_exists(idty_index, |idty_val_opt| { if let Some(ref mut idty_val) = idty_val_opt { @@ -58,29 +55,25 @@ impl< }; } }); - add_db_reads_writes(1, 1); - weight.saturating_add(Inner::on_created(idty_index)) } - fn on_renewed(_idty_index: &IdtyIndex) -> Weight { - Weight::zero() - } + fn on_renewed(_idty_index: &IdtyIndex) {} } -// membership event runtime handler -pub struct OnRemoveMembershipHandler<Inner, Runtime>(core::marker::PhantomData<(Inner, Runtime)>); +/// Remove membership event runtime handler +pub struct OnRemoveMembershipHandler<Runtime>(core::marker::PhantomData<Runtime>); impl< - Inner: sp_membership::traits::OnRemoveMembership<IdtyIndex>, Runtime: frame_system::Config<AccountId = AccountId> + pallet_identity::Config<IdtyData = IdtyData, IdtyIndex = IdtyIndex> + pallet_membership::Config + pallet_smith_members::Config<IdtyIndex = IdtyIndex> + + pallet_duniter_wot::Config + pallet_universal_dividend::Config, - > sp_membership::traits::OnRemoveMembership<IdtyIndex> - for OnRemoveMembershipHandler<Inner, Runtime> + > sp_membership::traits::OnRemoveMembership<IdtyIndex> for OnRemoveMembershipHandler<Runtime> { fn on_removed(idty_index: &IdtyIndex) -> Weight { - let mut weight = Weight::zero(); + // duniter-wot related actions + let mut weight = pallet_duniter_wot::Pallet::<Runtime>::on_removed(idty_index); let mut add_db_reads_writes = |reads, writes| { weight += crate::constants::DbWeight::get().reads_writes(reads, writes); }; @@ -97,7 +90,7 @@ impl< } } weight += pallet_smith_members::Pallet::<Runtime>::on_removed_wot_member(*idty_index); - weight.saturating_add(Inner::on_removed(idty_index)) + weight } } diff --git a/runtime/common/src/pallets_config.rs b/runtime/common/src/pallets_config.rs index 45d73571ab30018ae92709a22191d0c0f4a59e88..c713b5bfb759411549e3a497ed0e57b94e41ab6d 100644 --- a/runtime/common/src/pallets_config.rs +++ b/runtime/common/src/pallets_config.rs @@ -499,8 +499,8 @@ type RuntimeFreezeReason = (); type AccountIdOf = common_runtime::providers::IdentityAccountIdProvider<Self>; type MembershipPeriod = MembershipPeriod; type MembershipRenewalPeriod = MembershipRenewalPeriod; - type OnNewMembership = (OnNewMembershipHandler<Wot, Runtime>, Wot); - type OnRemoveMembership = (OnRemoveMembershipHandler<Wot, Runtime>); + type OnNewMembership = OnNewMembershipHandler<Runtime>; + type OnRemoveMembership = OnRemoveMembershipHandler<Runtime>; type RuntimeEvent = RuntimeEvent; type WeightInfo = common_runtime::weights::pallet_membership::WeightInfo<Runtime>; #[cfg(feature = "runtime-benchmarks")]