diff --git a/node/src/chain_spec/gdev.rs b/node/src/chain_spec/gdev.rs index 133dddd494a7aa97b0e2b13224941c3a6fccbc84..31dc65ae8b462962b7ae6e5bc1b0c3ed05a9749a 100644 --- a/node/src/chain_spec/gdev.rs +++ b/node/src/chain_spec/gdev.rs @@ -140,6 +140,7 @@ fn devnet_genesis( .collect(), }, strong_cert: StrongCertConfig { + apply_cert_period_at_genesis: false, certs_by_issuer: clique_wot( initial_identities.len(), gdev_runtime::parameters::ValidityPeriod::get(), diff --git a/node/src/chain_spec/gtest.rs b/node/src/chain_spec/gtest.rs index 8035544744cf3fd3c9d1c6302b752b1bf3a042e5..f601d22212249782ded7ef0082876424559cfb28 100644 --- a/node/src/chain_spec/gtest.rs +++ b/node/src/chain_spec/gtest.rs @@ -128,6 +128,7 @@ fn devnet_genesis( .collect(), }, strong_cert: StrongCertConfig { + apply_cert_period_at_genesis: false, certs_by_issuer: clique_wot( initial_identities.len(), gtest_runtime::parameters::ValidityPeriod::get(), @@ -333,6 +334,7 @@ fn testnet_genesis( .collect(), }, strong_cert: StrongCertConfig { + apply_cert_period_at_genesis: false, certs_by_issuer: clique_wot( initial_identities.len(), gtest_runtime::parameters::ValidityPeriod::get(), diff --git a/pallets/certification/src/lib.rs b/pallets/certification/src/lib.rs index 3462440a0f4d55f6ba3641a9d9f866d920608548..2636ad7295711a055475ad413ec1119ab48b0133 100644 --- a/pallets/certification/src/lib.rs +++ b/pallets/certification/src/lib.rs @@ -39,6 +39,7 @@ pub mod pallet { use super::*; use frame_support::pallet_prelude::*; use frame_system::pallet_prelude::*; + use sp_runtime::traits::Saturating; use sp_std::collections::btree_map::BTreeMap; /// The current storage version. @@ -89,6 +90,7 @@ pub mod pallet { #[pallet::genesis_config] pub struct GenesisConfig<T: Config<I>, I: 'static = ()> { + pub apply_cert_period_at_genesis: bool, pub certs_by_issuer: BTreeMap<T::IdtyIndex, BTreeMap<T::IdtyIndex, T::BlockNumber>>, } @@ -96,6 +98,7 @@ pub mod pallet { impl<T: Config<I>, I: 'static> Default for GenesisConfig<T, I> { fn default() -> Self { Self { + apply_cert_period_at_genesis: false, certs_by_issuer: Default::default(), } } @@ -152,13 +155,14 @@ pub mod pallet { .or_default() .push((*issuer, *receiver)); - use sp_runtime::traits::Saturating as _; - let issuer_next_issuable_on = removable_on - .saturating_add(T::CertPeriod::get()) - .saturating_sub(T::ValidityPeriod::get()); - if let Some(cert_meta) = cert_meta_by_issuer.get_mut(issuer) { - if cert_meta.next_issuable_on < issuer_next_issuable_on { - cert_meta.next_issuable_on = issuer_next_issuable_on; + if self.apply_cert_period_at_genesis { + let issuer_next_issuable_on = removable_on + .saturating_add(T::CertPeriod::get()) + .saturating_sub(T::ValidityPeriod::get()); + if let Some(cert_meta) = cert_meta_by_issuer.get_mut(issuer) { + if cert_meta.next_issuable_on < issuer_next_issuable_on { + cert_meta.next_issuable_on = issuer_next_issuable_on; + } } } let renewable_on = removable_on.saturating_sub( diff --git a/pallets/certification/src/tests.rs b/pallets/certification/src/tests.rs index 7c50f5768fdf20f3e0107812f7d6e42ceba85275..9c870412e473d95a369df1a1a293385276f60bf5 100644 --- a/pallets/certification/src/tests.rs +++ b/pallets/certification/src/tests.rs @@ -25,6 +25,7 @@ use sp_std::collections::btree_map::BTreeMap; #[test] fn test_must_receive_cert_before_can_issue() { new_test_ext(DefaultCertificationConfig { + apply_cert_period_at_genesis: true, certs_by_issuer: BTreeMap::new(), }) .execute_with(|| { @@ -38,6 +39,7 @@ fn test_must_receive_cert_before_can_issue() { #[test] fn test_genesis_build() { new_test_ext(DefaultCertificationConfig { + apply_cert_period_at_genesis: true, certs_by_issuer: btreemap![ 0 => btreemap![ 1 => 10, @@ -111,6 +113,7 @@ fn test_genesis_build() { #[test] fn test_cert_period() { new_test_ext(DefaultCertificationConfig { + apply_cert_period_at_genesis: true, certs_by_issuer: btreemap![0 => btreemap![1 => 10]], }) .execute_with(|| { @@ -133,6 +136,7 @@ fn test_cert_period() { #[test] fn test_renewable_period() { new_test_ext(DefaultCertificationConfig { + apply_cert_period_at_genesis: true, certs_by_issuer: btreemap![0 => btreemap![1 => 10]], }) .execute_with(|| {