From 894b95bd59005548f7634071c7cf4768b9161d38 Mon Sep 17 00:00:00 2001 From: librelois <c@elo.tf> Date: Tue, 12 Jul 2022 22:49:08 +0200 Subject: [PATCH] =?UTF-8?q?mod(cert):=C2=A0remove=20rule=20CertRenewablePe?= =?UTF-8?q?riod?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- end2end-tests/cucumber-genesis/default.json | 2 - end2end-tests/cucumber-genesis/wot.json | 2 - node/src/chain_spec/gdev.rs | 2 - pallets/certification/src/lib.rs | 40 ++------------------ pallets/certification/src/mock.rs | 2 - pallets/certification/src/tests.rs | 33 ---------------- pallets/certification/src/types.rs | 1 - pallets/duniter-test-parameters/src/lib.rs | 2 - pallets/duniter-wot/src/mock.rs | 4 -- resources/gdev.json | 2 - resources/metadata.scale | Bin 115699 -> 120450 bytes runtime/common/src/pallets_config.rs | 2 - runtime/g1/src/parameters.rs | 1 - runtime/gdev/src/lib.rs | 3 -- runtime/gdev/tests/common/mod.rs | 2 - runtime/gtest/src/parameters.rs | 1 - 16 files changed, 3 insertions(+), 96 deletions(-) diff --git a/end2end-tests/cucumber-genesis/default.json b/end2end-tests/cucumber-genesis/default.json index 7a9780910..b23ed7e91 100644 --- a/end2end-tests/cucumber-genesis/default.json +++ b/end2end-tests/cucumber-genesis/default.json @@ -23,7 +23,6 @@ "cert_period": 15, "cert_max_by_issuer": 10, "cert_min_received_cert_to_issue_cert": 2, - "cert_renewable_period": 50, "cert_validity_period": 1000, "idty_confirm_period": 40, "idty_creation_period": 50, @@ -35,7 +34,6 @@ "smith_cert_period": 15, "smith_cert_max_by_issuer": 8, "smith_cert_min_received_cert_to_issue_cert": 2, - "smith_cert_renewable_period": 50, "smith_cert_validity_period": 1000, "smith_membership_period": 1000, "smith_membership_renewable_period": 20, diff --git a/end2end-tests/cucumber-genesis/wot.json b/end2end-tests/cucumber-genesis/wot.json index 988e6857f..72e61ebcd 100644 --- a/end2end-tests/cucumber-genesis/wot.json +++ b/end2end-tests/cucumber-genesis/wot.json @@ -28,7 +28,6 @@ "cert_period": 15, "cert_max_by_issuer": 10, "cert_min_received_cert_to_issue_cert": 2, - "cert_renewable_period": 50, "cert_validity_period": 1000, "idty_confirm_period": 40, "idty_creation_period": 50, @@ -40,7 +39,6 @@ "smith_cert_period": 15, "smith_cert_max_by_issuer": 8, "smith_cert_min_received_cert_to_issue_cert": 2, - "smith_cert_renewable_period": 50, "smith_cert_validity_period": 1000, "smith_membership_period": 1000, "smith_membership_renewable_period": 20, diff --git a/node/src/chain_spec/gdev.rs b/node/src/chain_spec/gdev.rs index b31c4f7da..9d44f49c1 100644 --- a/node/src/chain_spec/gdev.rs +++ b/node/src/chain_spec/gdev.rs @@ -309,7 +309,6 @@ fn gen_genesis_for_local_chain( cert_period: 15, cert_max_by_issuer: 10, cert_min_received_cert_to_issue_cert: 2, - cert_renewable_period: 50, cert_validity_period, idty_confirm_period: 40, idty_creation_period: 50, @@ -321,7 +320,6 @@ fn gen_genesis_for_local_chain( smith_cert_period: 15, smith_cert_max_by_issuer: 8, smith_cert_min_received_cert_to_issue_cert: 2, - smith_cert_renewable_period: 50, smith_cert_validity_period: 1_000, smith_membership_period, smith_membership_renewable_period: 50, diff --git a/pallets/certification/src/lib.rs b/pallets/certification/src/lib.rs index cc577701f..5d333e7be 100644 --- a/pallets/certification/src/lib.rs +++ b/pallets/certification/src/lib.rs @@ -83,9 +83,6 @@ pub mod pallet { /// Handler for Removed event type OnRemovedCert: OnRemovedCert<Self::IdtyIndex>; #[pallet::constant] - /// Duration after which a certification is renewable - type CertRenewablePeriod: Get<Self::BlockNumber>; - #[pallet::constant] /// Duration of validity of a certification type ValidityPeriod: Get<Self::BlockNumber>; } @@ -169,15 +166,11 @@ pub mod pallet { } } } - let renewable_on = removable_on.saturating_sub( - T::ValidityPeriod::get().saturating_sub(T::CertRenewablePeriod::get()), - ); <StorageCertsByIssuer<T, I>>::insert( issuer, receiver, CertValue { - renewable_on, removable_on: *removable_on, }, ); @@ -274,8 +267,6 @@ pub mod pallet { NotEnoughCertReceived, /// This identity has already issued a certification too recently NotRespectCertPeriod, - /// This certification has already been issued or renewed recently - NotRespectRenewablePeriod, /// Receiver not found ReceiverNotFound, } @@ -302,7 +293,7 @@ pub mod pallet { let block_number = frame_system::pallet::Pallet::<T>::block_number(); - let create = if verify_rules { + if verify_rules { let issuer_idty_cert_meta = <StorageIdtyCertMeta<T, I>>::get(issuer); if issuer_idty_cert_meta.received_count == 0 { return Err(Error::<T, I>::IdtyMustReceiveCertsBeforeCanIssue.into()); @@ -317,22 +308,9 @@ pub mod pallet { } else if issuer_idty_cert_meta.issued_count >= T::MaxByIssuer::get() { return Err(Error::<T, I>::IssuedTooManyCert.into()); } - - // Verify rule CertRenewablePeriod - if let Ok(CertValue { renewable_on, .. }) = - <StorageCertsByIssuer<T, I>>::try_get(issuer, receiver) - { - if renewable_on > block_number { - return Err(Error::<T, I>::NotRespectRenewablePeriod.into()); - } - false - } else { - true - } - } else { - !StorageCertsByIssuer::<T, I>::contains_key(issuer, receiver) }; + let create = !StorageCertsByIssuer::<T, I>::contains_key(issuer, receiver); Self::do_add_cert(block_number, create, issuer, receiver) } /// Add a new certification or renew an existing one @@ -370,18 +348,7 @@ pub mod pallet { return Err(Error::<T, I>::IssuedTooManyCert.into()); } - // Verify rule CertRenewablePeriod - let create = if let Ok(CertValue { renewable_on, .. }) = - <StorageCertsByIssuer<T, I>>::try_get(issuer, receiver) - { - if renewable_on > block_number { - return Err(Error::<T, I>::NotRespectRenewablePeriod.into()); - } - false - } else { - true - }; - + let create = !StorageCertsByIssuer::<T, I>::contains_key(issuer, receiver); Self::do_add_cert(block_number, create, issuer, receiver) } @@ -439,7 +406,6 @@ pub mod pallet { // Write StorageCertsRemovableOn and StorageCertsByIssuer let cert_value = CertValue { - renewable_on: block_number + T::CertRenewablePeriod::get(), removable_on: block_number + T::ValidityPeriod::get(), }; <StorageCertsRemovableOn<T, I>>::append(cert_value.removable_on, (issuer, receiver)); diff --git a/pallets/certification/src/mock.rs b/pallets/certification/src/mock.rs index b33804637..96a467257 100644 --- a/pallets/certification/src/mock.rs +++ b/pallets/certification/src/mock.rs @@ -94,7 +94,6 @@ impl frame_support::traits::EnsureOrigin<(Origin, IdtyIndex, IdtyIndex)> for Ens parameter_types! { pub const MaxByIssuer: u32 = 3; pub const MinReceivedCertToBeAbleToIssueCert: u32 = 2; - pub const RenewablePeriod: BlockNumber = 4; pub const CertPeriod: u64 = 2; pub const ValidityPeriod: u64 = 10; } @@ -109,7 +108,6 @@ impl pallet_certification::Config for Test { type MinReceivedCertToBeAbleToIssueCert = MinReceivedCertToBeAbleToIssueCert; type OnNewcert = (); type OnRemovedCert = (); - type CertRenewablePeriod = RenewablePeriod; type ValidityPeriod = ValidityPeriod; } diff --git a/pallets/certification/src/tests.rs b/pallets/certification/src/tests.rs index 64b77fb2a..25998c16b 100644 --- a/pallets/certification/src/tests.rs +++ b/pallets/certification/src/tests.rs @@ -115,11 +115,6 @@ fn test_genesis_build() { DefaultCertification::certs_removable_on(3), Some(vec![(2, 1)]), ); - // Cert 2->0 cannot be renewed before #5 - assert_eq!( - DefaultCertification::add_cert(Origin::signed(2), 0), - Err(Error::<Test, _>::NotRespectRenewablePeriod.into()) - ); run_to_block(3); // Cert 2->1 must have expired @@ -162,31 +157,3 @@ fn test_cert_period() { assert_ok!(DefaultCertification::add_cert(Origin::signed(0), 3)); }); } - -#[test] -fn test_renewable_period() { - new_test_ext(DefaultCertificationConfig { - apply_cert_period_at_genesis: true, - certs_by_issuer: btreemap![ - 0 => btreemap![1 => 10], - 2 => btreemap![0 => 10], - 3 => btreemap![0 => 10], - ], - }) - .execute_with(|| { - run_to_block(CertPeriod::get()); - assert_eq!( - DefaultCertification::add_cert(Origin::signed(0), 1), - Err(Error::<Test, _>::NotRespectRenewablePeriod.into()) - ); - run_to_block(RenewablePeriod::get()); - assert_ok!(DefaultCertification::add_cert(Origin::signed(0), 1)); - run_to_block(RenewablePeriod::get() + CertPeriod::get()); - assert_eq!( - DefaultCertification::add_cert(Origin::signed(0), 1), - Err(Error::<Test, _>::NotRespectRenewablePeriod.into()) - ); - run_to_block((2 * RenewablePeriod::get()) + 1); - assert_ok!(DefaultCertification::add_cert(Origin::signed(0), 1)); - }); -} diff --git a/pallets/certification/src/types.rs b/pallets/certification/src/types.rs index d1b858f9f..4d2534c57 100644 --- a/pallets/certification/src/types.rs +++ b/pallets/certification/src/types.rs @@ -22,7 +22,6 @@ use scale_info::TypeInfo; #[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug, TypeInfo)] pub struct CertValue<BlockNumber> { - pub renewable_on: BlockNumber, pub removable_on: BlockNumber, } diff --git a/pallets/duniter-test-parameters/src/lib.rs b/pallets/duniter-test-parameters/src/lib.rs index b72c11341..9a3a6f402 100644 --- a/pallets/duniter-test-parameters/src/lib.rs +++ b/pallets/duniter-test-parameters/src/lib.rs @@ -40,7 +40,6 @@ pub mod types { pub cert_period: BlockNumber, pub cert_max_by_issuer: CertCount, pub cert_min_received_cert_to_issue_cert: CertCount, - pub cert_renewable_period: BlockNumber, pub cert_validity_period: BlockNumber, pub idty_confirm_period: BlockNumber, pub idty_creation_period: BlockNumber, @@ -52,7 +51,6 @@ pub mod types { pub smith_cert_period: BlockNumber, pub smith_cert_max_by_issuer: CertCount, pub smith_cert_min_received_cert_to_issue_cert: CertCount, - pub smith_cert_renewable_period: BlockNumber, pub smith_cert_validity_period: BlockNumber, pub smith_membership_period: BlockNumber, pub smith_membership_renewable_period: BlockNumber, diff --git a/pallets/duniter-wot/src/mock.rs b/pallets/duniter-wot/src/mock.rs index 9a8be5817..5e7ac0454 100644 --- a/pallets/duniter-wot/src/mock.rs +++ b/pallets/duniter-wot/src/mock.rs @@ -154,7 +154,6 @@ impl pallet_membership::Config<Instance1> for Test { parameter_types! { pub const MaxByIssuer: u8 = 8; pub const MinReceivedCertToBeAbleToIssueCert: u32 = 2; - pub const CertRenewablePeriod: u64 = 4; pub const CertPeriod: u64 = 2; pub const ValidityPeriod: u64 = 20; } @@ -169,7 +168,6 @@ impl pallet_certification::Config<Instance1> for Test { type MinReceivedCertToBeAbleToIssueCert = MinReceivedCertToBeAbleToIssueCert; type OnNewcert = DuniterWot; type OnRemovedCert = DuniterWot; - type CertRenewablePeriod = CertRenewablePeriod; type ValidityPeriod = ValidityPeriod; } @@ -213,7 +211,6 @@ impl pallet_membership::Config<Instance2> for Test { parameter_types! { pub const SmithsMaxByIssuer: u8 = 8; pub const SmithsMinReceivedCertToBeAbleToIssueCert: u32 = 2; - pub const SmithsCertRenewablePeriod: u64 = 4; pub const SmithsCertPeriod: u64 = 2; pub const SmithsValidityPeriod: u64 = 10; } @@ -228,7 +225,6 @@ impl pallet_certification::Config<Instance2> for Test { type MinReceivedCertToBeAbleToIssueCert = SmithsMinReceivedCertToBeAbleToIssueCert; type OnNewcert = SmithsSubWot; type OnRemovedCert = SmithsSubWot; - type CertRenewablePeriod = SmithsCertRenewablePeriod; type ValidityPeriod = SmithsValidityPeriod; } diff --git a/resources/gdev.json b/resources/gdev.json index aba51b912..f0be34c7e 100644 --- a/resources/gdev.json +++ b/resources/gdev.json @@ -137,7 +137,6 @@ "cert_period": 14400, "cert_max_by_issuer": 100, "cert_min_received_cert_to_issue_cert": 5, - "cert_renewable_period": 172800, "cert_validity_period": 2102400, "idty_confirm_period": 14400, "idty_creation_period": 14400, @@ -149,7 +148,6 @@ "smith_cert_period": 14400, "smith_cert_max_by_issuer": 12, "smith_cert_min_received_cert_to_issue_cert": 3, - "smith_cert_renewable_period": 172800, "smith_cert_validity_period": 2102400, "smith_membership_period": 1051200, "smith_membership_renewable_period": 172800, diff --git a/resources/metadata.scale b/resources/metadata.scale index 1f01cc4a16551841453d80d1d36da2e23037db3f..03a32f390272d496544efb76a0d62d77f0ffc50a 100644 GIT binary patch delta 12066 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 delta 8284 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 diff --git a/runtime/common/src/pallets_config.rs b/runtime/common/src/pallets_config.rs index 510c6e237..93050373d 100644 --- a/runtime/common/src/pallets_config.rs +++ b/runtime/common/src/pallets_config.rs @@ -461,7 +461,6 @@ macro_rules! pallets_config { type MinReceivedCertToBeAbleToIssueCert = MinReceivedCertToBeAbleToIssueCert; type OnNewcert = Wot; type OnRemovedCert = Wot; - type CertRenewablePeriod = CertRenewablePeriod; type ValidityPeriod = ValidityPeriod; } @@ -499,7 +498,6 @@ macro_rules! pallets_config { type MinReceivedCertToBeAbleToIssueCert = SmithMinReceivedCertToBeAbleToIssueCert; type OnNewcert = SmithsSubWot; type OnRemovedCert = SmithsSubWot; - type CertRenewablePeriod = SmithCertRenewablePeriod; type ValidityPeriod = SmithValidityPeriod; } diff --git a/runtime/g1/src/parameters.rs b/runtime/g1/src/parameters.rs index 44e8ced87..62ba9ada4 100644 --- a/runtime/g1/src/parameters.rs +++ b/runtime/g1/src/parameters.rs @@ -119,7 +119,6 @@ parameter_types! { pub const CertPeriod: BlockNumber = 5 * DAYS; pub const MaxByIssuer: u32 = 100; pub const MinReceivedCertToBeAbleToIssueCert: u32 = 5; - pub const CertRenewablePeriod: BlockNumber = 6 * MONTHS; pub const ValidityPeriod: BlockNumber = 2 * YEARS; } diff --git a/runtime/gdev/src/lib.rs b/runtime/gdev/src/lib.rs index 99f886d16..80c84ed22 100644 --- a/runtime/gdev/src/lib.rs +++ b/runtime/gdev/src/lib.rs @@ -227,7 +227,6 @@ common_runtime::pallets_config! { pub type MaxByIssuer = pallet_duniter_test_parameters::CertMaxByIssuer<Runtime>; pub type MinReceivedCertToBeAbleToIssueCert = pallet_duniter_test_parameters::CertMinReceivedCertToIssueCert<Runtime>; - pub type CertRenewablePeriod = pallet_duniter_test_parameters::CertRenewablePeriod<Runtime>; pub type ValidityPeriod = pallet_duniter_test_parameters::CertValidityPeriod<Runtime>; pub type ConfirmPeriod = pallet_duniter_test_parameters::IdtyConfirmPeriod<Runtime>; pub type IdtyCreationPeriod = pallet_duniter_test_parameters::IdtyCreationPeriod<Runtime>; @@ -247,8 +246,6 @@ common_runtime::pallets_config! { pub type SmithMaxByIssuer = pallet_duniter_test_parameters::SmithCertMaxByIssuer<Runtime>; pub type SmithMinReceivedCertToBeAbleToIssueCert = pallet_duniter_test_parameters::SmithCertMinReceivedCertToIssueCert<Runtime>; - pub type SmithCertRenewablePeriod = - pallet_duniter_test_parameters::SmithCertRenewablePeriod<Runtime>; pub type SmithValidityPeriod = pallet_duniter_test_parameters::SmithCertValidityPeriod<Runtime>; pub type SmithMembershipPeriod = pallet_duniter_test_parameters::SmithMembershipPeriod<Runtime>; pub type SmithPendingMembershipPeriod = diff --git a/runtime/gdev/tests/common/mod.rs b/runtime/gdev/tests/common/mod.rs index 4bcb9d45a..16bd159b3 100644 --- a/runtime/gdev/tests/common/mod.rs +++ b/runtime/gdev/tests/common/mod.rs @@ -99,7 +99,6 @@ impl ExtBuilder { cert_period: 15, cert_max_by_issuer: 10, cert_min_received_cert_to_issue_cert: 2, - cert_renewable_period: 50, cert_validity_period: 10_000, idty_confirm_period: 40, idty_creation_period: 50, @@ -111,7 +110,6 @@ impl ExtBuilder { smith_cert_period: 15, smith_cert_max_by_issuer: 8, smith_cert_min_received_cert_to_issue_cert: 2, - smith_cert_renewable_period: 50, smith_cert_validity_period: 1_000, smith_membership_period: 1_000, smith_membership_renewable_period: 50, diff --git a/runtime/gtest/src/parameters.rs b/runtime/gtest/src/parameters.rs index 8193b10c4..8b9fbd05f 100644 --- a/runtime/gtest/src/parameters.rs +++ b/runtime/gtest/src/parameters.rs @@ -119,7 +119,6 @@ parameter_types! { parameter_types! { pub const CertPeriod: BlockNumber = DAYS; pub const MaxByIssuer: u32 = 100; - pub const CertRenewablePeriod: BlockNumber = 12 * DAYS; pub const ValidityPeriod: BlockNumber = 146 * DAYS; } -- GitLab