Skip to content
Snippets Groups Projects
Commit 5159922c authored by mildred's avatar mildred Committed by Éloïs
Browse files

Remove RevocationPeriod rule (!94)

* Remove no longer needed test_revoke_smiths_them_rejoin in duniter-wot

* Remove dead code (MembershipRevokedRecently)

* Remove empty fn prune_revoked_memberships

* Remove RevokedMembershipPrunedOn never used

* Remove RevokedMembership that is always empty

* Remove RevocationPeriod
parent 554fe8d2
No related branches found
No related tags found
1 merge request!94Remove RevocationPeriod rule
...@@ -139,7 +139,6 @@ impl pallet_identity::Config for Test { ...@@ -139,7 +139,6 @@ impl pallet_identity::Config for Test {
parameter_types! { parameter_types! {
pub const MembershipPeriod: u64 = 8; pub const MembershipPeriod: u64 = 8;
pub const PendingMembershipPeriod: u64 = 3; pub const PendingMembershipPeriod: u64 = 3;
pub const RevocationPeriod: u64 = 4;
} }
impl pallet_membership::Config<Instance1> for Test { impl pallet_membership::Config<Instance1> for Test {
...@@ -153,7 +152,6 @@ impl pallet_membership::Config<Instance1> for Test { ...@@ -153,7 +152,6 @@ impl pallet_membership::Config<Instance1> for Test {
type MetaData = (); type MetaData = ();
type OnEvent = DuniterWot; type OnEvent = DuniterWot;
type PendingMembershipPeriod = PendingMembershipPeriod; type PendingMembershipPeriod = PendingMembershipPeriod;
type RevocationPeriod = RevocationPeriod;
} }
// Cert // Cert
...@@ -195,7 +193,6 @@ impl pallet_duniter_wot::Config<Instance2> for Test { ...@@ -195,7 +193,6 @@ impl pallet_duniter_wot::Config<Instance2> for Test {
parameter_types! { parameter_types! {
pub const SmithsMembershipPeriod: u64 = 20; pub const SmithsMembershipPeriod: u64 = 20;
pub const SmithsPendingMembershipPeriod: u64 = 3; pub const SmithsPendingMembershipPeriod: u64 = 3;
pub const SmithsRevocationPeriod: u64 = 4;
} }
impl pallet_membership::Config<Instance2> for Test { impl pallet_membership::Config<Instance2> for Test {
...@@ -209,7 +206,6 @@ impl pallet_membership::Config<Instance2> for Test { ...@@ -209,7 +206,6 @@ impl pallet_membership::Config<Instance2> for Test {
type MetaData = (); type MetaData = ();
type OnEvent = SmithsSubWot; type OnEvent = SmithsSubWot;
type PendingMembershipPeriod = SmithsPendingMembershipPeriod; type PendingMembershipPeriod = SmithsPendingMembershipPeriod;
type RevocationPeriod = SmithsRevocationPeriod;
} }
// SmithsCert // SmithsCert
......
...@@ -143,33 +143,6 @@ fn test_smith_member_cant_revoke_its_idty() { ...@@ -143,33 +143,6 @@ fn test_smith_member_cant_revoke_its_idty() {
}); });
} }
#[test]
fn test_revoke_smiths_them_rejoin() {
new_test_ext(5, 4).execute_with(|| {
run_to_block(2);
// Dave shoud be able to revoke his smith membership
assert_ok!(SmithsMembership::revoke_membership(
Origin::signed(4),
Some(4)
));
// Dave should not be able to re-request membership before the RevocationPeriod end
run_to_block(3);
assert_noop!(
SmithsMembership::request_membership(Origin::signed(4), ()),
pallet_membership::Error::<Test, crate::Instance2>::MembershipRevokedRecently
);
// At block #6, Dave shoud be able to request smith membership
run_to_block(6);
assert_ok!(SmithsMembership::request_membership(Origin::signed(4), ()));
// Then, Alice should be able to send a smith cert to Dave
assert_ok!(SmithsCert::add_cert(Origin::signed(1), 1, 4));
});
}
#[test] #[test]
fn test_create_idty_ok() { fn test_create_idty_ok() {
new_test_ext(5, 2).execute_with(|| { new_test_ext(5, 2).execute_with(|| {
......
...@@ -81,9 +81,6 @@ pub mod pallet { ...@@ -81,9 +81,6 @@ pub mod pallet {
#[pallet::constant] #[pallet::constant]
/// Maximum period (in number of blocks), where an identity can remain pending subscription. /// Maximum period (in number of blocks), where an identity can remain pending subscription.
type PendingMembershipPeriod: Get<Self::BlockNumber>; type PendingMembershipPeriod: Get<Self::BlockNumber>;
#[pallet::constant]
/// Minimum duration (in number of blocks between a revocation and a new entry request
type RevocationPeriod: Get<Self::BlockNumber>;
} }
// GENESIS STUFF // // GENESIS STUFF //
...@@ -134,16 +131,6 @@ pub mod pallet { ...@@ -134,16 +131,6 @@ pub mod pallet {
pub type PendingMembershipsExpireOn<T: Config<I>, I: 'static = ()> = pub type PendingMembershipsExpireOn<T: Config<I>, I: 'static = ()> =
StorageMap<_, Twox64Concat, T::BlockNumber, Vec<T::IdtyId>, ValueQuery>; StorageMap<_, Twox64Concat, T::BlockNumber, Vec<T::IdtyId>, ValueQuery>;
#[pallet::storage]
#[pallet::getter(fn revoked_membership)]
pub type RevokedMembership<T: Config<I>, I: 'static = ()> =
StorageMap<_, Twox64Concat, T::IdtyId, (), OptionQuery>;
#[pallet::storage]
#[pallet::getter(fn revoked_memberships_pruned_on)]
pub type RevokedMembershipsPrunedOn<T: Config<I>, I: 'static = ()> =
StorageMap<_, Twox64Concat, T::BlockNumber, Vec<T::IdtyId>, OptionQuery>;
// EVENTS // // EVENTS //
#[pallet::event] #[pallet::event]
...@@ -193,8 +180,6 @@ pub mod pallet { ...@@ -193,8 +180,6 @@ pub mod pallet {
OriginNotAllowedToUseIdty, OriginNotAllowedToUseIdty,
/// Membership request not found /// Membership request not found
MembershipRequestNotFound, MembershipRequestNotFound,
/// Membership revoked recently
MembershipRevokedRecently,
} }
// HOOKS // // HOOKS //
...@@ -203,9 +188,7 @@ pub mod pallet { ...@@ -203,9 +188,7 @@ pub mod pallet {
impl<T: Config<I>, I: 'static> Hooks<BlockNumberFor<T>> for Pallet<T, I> { impl<T: Config<I>, I: 'static> Hooks<BlockNumberFor<T>> for Pallet<T, I> {
fn on_initialize(n: T::BlockNumber) -> Weight { fn on_initialize(n: T::BlockNumber) -> Weight {
if n > T::BlockNumber::zero() { if n > T::BlockNumber::zero() {
Self::expire_pending_memberships(n) Self::expire_pending_memberships(n) + Self::expire_memberships(n)
+ Self::expire_memberships(n)
+ Self::prune_revoked_memberships(n)
} else { } else {
0 0
} }
...@@ -307,7 +290,10 @@ pub mod pallet { ...@@ -307,7 +290,10 @@ pub mod pallet {
let idty_id = Self::ensure_origin_and_get_idty_id(origin, maybe_idty_id)?; let idty_id = Self::ensure_origin_and_get_idty_id(origin, maybe_idty_id)?;
// Apply phase // Apply phase
let _ = Self::do_revoke_membership(idty_id); if Self::remove_membership(&idty_id) {
Self::deposit_event(Event::MembershipRevoked(idty_id));
T::OnEvent::on_event(&sp_membership::Event::MembershipRevoked(idty_id));
}
Ok(().into()) Ok(().into())
} }
...@@ -340,9 +326,6 @@ pub mod pallet { ...@@ -340,9 +326,6 @@ pub mod pallet {
if Membership::<T, I>::contains_key(&idty_id) { if Membership::<T, I>::contains_key(&idty_id) {
return Err(Error::<T, I>::MembershipAlreadyAcquired.into()); return Err(Error::<T, I>::MembershipAlreadyAcquired.into());
} }
if RevokedMembership::<T, I>::contains_key(&idty_id) {
return Err(Error::<T, I>::MembershipRevokedRecently.into());
}
let block_number = frame_system::pallet::Pallet::<T>::block_number(); let block_number = frame_system::pallet::Pallet::<T>::block_number();
let expire_on = block_number + T::PendingMembershipPeriod::get(); let expire_on = block_number + T::PendingMembershipPeriod::get();
...@@ -354,21 +337,6 @@ pub mod pallet { ...@@ -354,21 +337,6 @@ pub mod pallet {
Ok(().into()) Ok(().into())
} }
pub(super) fn do_revoke_membership(idty_id: T::IdtyId) -> Weight {
if Self::remove_membership(&idty_id) {
if T::RevocationPeriod::get() > Zero::zero() {
let block_number = frame_system::pallet::Pallet::<T>::block_number();
let pruned_on = block_number + T::RevocationPeriod::get();
RevokedMembership::<T, I>::insert(idty_id, ());
RevokedMembershipsPrunedOn::<T, I>::append(pruned_on, idty_id);
}
Self::deposit_event(Event::MembershipRevoked(idty_id));
T::OnEvent::on_event(&sp_membership::Event::MembershipRevoked(idty_id));
}
0
}
fn ensure_origin_and_get_idty_id( fn ensure_origin_and_get_idty_id(
origin: OriginFor<T>, origin: OriginFor<T>,
maybe_idty_id: Option<T::IdtyId>, maybe_idty_id: Option<T::IdtyId>,
...@@ -412,17 +380,6 @@ pub mod pallet { ...@@ -412,17 +380,6 @@ pub mod pallet {
total_weight total_weight
} }
fn prune_revoked_memberships(block_number: T::BlockNumber) -> Weight {
let total_weight: Weight = 0;
if let Some(identities_ids) = RevokedMembershipsPrunedOn::<T, I>::take(block_number) {
for idty_id in identities_ids {
RevokedMembership::<T, I>::remove(idty_id);
}
}
total_weight
}
pub(super) fn is_member_inner(idty_id: &T::IdtyId) -> bool { pub(super) fn is_member_inner(idty_id: &T::IdtyId) -> bool {
Membership::<T, I>::contains_key(idty_id) Membership::<T, I>::contains_key(idty_id)
......
...@@ -80,7 +80,6 @@ impl system::Config for Test { ...@@ -80,7 +80,6 @@ impl system::Config for Test {
parameter_types! { parameter_types! {
pub const MembershipPeriod: BlockNumber = 5; pub const MembershipPeriod: BlockNumber = 5;
pub const PendingMembershipPeriod: BlockNumber = 3; pub const PendingMembershipPeriod: BlockNumber = 3;
pub const RevocationPeriod: BlockNumber = 4;
} }
impl pallet_membership::Config for Test { impl pallet_membership::Config for Test {
...@@ -94,7 +93,6 @@ impl pallet_membership::Config for Test { ...@@ -94,7 +93,6 @@ impl pallet_membership::Config for Test {
type MetaData = (); type MetaData = ();
type OnEvent = (); type OnEvent = ();
type PendingMembershipPeriod = PendingMembershipPeriod; type PendingMembershipPeriod = PendingMembershipPeriod;
type RevocationPeriod = RevocationPeriod;
} }
// Build genesis storage according to the mock runtime. // Build genesis storage according to the mock runtime.
......
...@@ -113,14 +113,7 @@ fn test_membership_revocation() { ...@@ -113,14 +113,7 @@ fn test_membership_revocation() {
RuntimeEvent::DefaultMembership(Event::MembershipRevoked(0)) RuntimeEvent::DefaultMembership(Event::MembershipRevoked(0))
); );
// Membership 0 can't request membership before the end of RevokePeriod (1 + 4 = 5) // Membership 0 can re-request membership
run_to_block(2);
assert_eq!(
DefaultMembership::request_membership(Origin::signed(0), ()),
Err(Error::<Test, _>::MembershipRevokedRecently.into())
);
// Membership 0 can request membership after the end of RevokePeriod (1 + 4 = 5)
run_to_block(5); run_to_block(5);
assert_ok!(DefaultMembership::request_membership(Origin::signed(0), ()),); assert_ok!(DefaultMembership::request_membership(Origin::signed(0), ()),);
assert_eq!( assert_eq!(
......
...@@ -444,7 +444,7 @@ macro_rules! pallets_config { ...@@ -444,7 +444,7 @@ macro_rules! pallets_config {
} }
impl pallet_membership::Config<frame_support::instances::Instance1> for Runtime { impl pallet_membership::Config<frame_support::instances::Instance1> for Runtime {
type IsIdtyAllowedToClaimMembership = Wot; type IsIdtyAllowedToClaimMembership = Wot;
type IsIdtyAllowedToRenewMembership = Wot; type IsIdtyAllowedToRenewMembership = Wot;
type IsIdtyAllowedToRequestMembership = Wot; type IsIdtyAllowedToRequestMembership = Wot;
type Event = Event; type Event = Event;
...@@ -454,7 +454,6 @@ macro_rules! pallets_config { ...@@ -454,7 +454,6 @@ macro_rules! pallets_config {
type MetaData = (); type MetaData = ();
type OnEvent = OnMembershipEventHandler<Wot, Runtime>; type OnEvent = OnMembershipEventHandler<Wot, Runtime>;
type PendingMembershipPeriod = PendingMembershipPeriod; type PendingMembershipPeriod = PendingMembershipPeriod;
type RevocationPeriod = frame_support::traits::ConstU32<0>;
} }
impl pallet_certification::Config<Instance1> for Runtime { impl pallet_certification::Config<Instance1> for Runtime {
...@@ -481,7 +480,7 @@ macro_rules! pallets_config { ...@@ -481,7 +480,7 @@ macro_rules! pallets_config {
} }
impl pallet_membership::Config<Instance2> for Runtime { impl pallet_membership::Config<Instance2> for Runtime {
type IsIdtyAllowedToClaimMembership = SmithsSubWot; type IsIdtyAllowedToClaimMembership = SmithsSubWot;
type IsIdtyAllowedToRenewMembership = SmithsSubWot; type IsIdtyAllowedToRenewMembership = SmithsSubWot;
type IsIdtyAllowedToRequestMembership = SmithsSubWot; type IsIdtyAllowedToRequestMembership = SmithsSubWot;
type Event = Event; type Event = Event;
...@@ -491,7 +490,6 @@ macro_rules! pallets_config { ...@@ -491,7 +490,6 @@ macro_rules! pallets_config {
type MetaData = SmithsMembershipMetaData<opaque::SessionKeysWrapper>; type MetaData = SmithsMembershipMetaData<opaque::SessionKeysWrapper>;
type OnEvent = OnSmithMembershipEventHandler<SmithsSubWot, Runtime>; type OnEvent = OnSmithMembershipEventHandler<SmithsSubWot, Runtime>;
type PendingMembershipPeriod = SmithPendingMembershipPeriod; type PendingMembershipPeriod = SmithPendingMembershipPeriod;
type RevocationPeriod = frame_support::traits::ConstU32<0>;
} }
impl pallet_certification::Config<Instance2> for Runtime { impl pallet_certification::Config<Instance2> for Runtime {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment