From 8e23a09f490c82314b195942c3a7d43f16d9067d Mon Sep 17 00:00:00 2001
From: bgallois <benjamin@gallois.cc>
Date: Thu, 4 Jul 2024 17:53:22 +0200
Subject: [PATCH] fix
 https://git.duniter.org/nodes/rust/duniter-v2s/-/issues/244

---
 node/src/chain_spec/g1.rs               | 12 +++++-------
 node/src/chain_spec/gdev.rs             | 15 +++++++--------
 node/src/chain_spec/gen_genesis_data.rs | 10 +++++++++-
 node/src/chain_spec/gtest.rs            | 12 +++++-------
 runtime/common/src/pallets_config.rs    |  1 -
 runtime/g1/src/parameters.rs            |  1 +
 runtime/gdev/src/parameters.rs          |  1 +
 runtime/gtest/src/parameters.rs         |  1 +
 8 files changed, 29 insertions(+), 24 deletions(-)

diff --git a/node/src/chain_spec/g1.rs b/node/src/chain_spec/g1.rs
index b84e42225..e2fc8361e 100644
--- a/node/src/chain_spec/g1.rs
+++ b/node/src/chain_spec/g1.rs
@@ -147,7 +147,7 @@ fn genesis_data_to_g1_genesis_conf(
         initial_monetary_mass,
         memberships,
         parameters: _,
-        common_parameters: _,
+        common_parameters,
         session_keys_map,
         initial_smiths,
         sudo_key,
@@ -191,7 +191,7 @@ fn genesis_data_to_g1_genesis_conf(
                          name,
                          owner_key,
                          status,
-                         expires_on,
+                         expires_on: _,
                          revokes_on,
                      }| GenesisIdty {
                         index: idty_index,
@@ -205,11 +205,9 @@ fn genesis_data_to_g1_genesis_conf(
                                 IdtyStatus::Unconfirmed | IdtyStatus::Unvalidated => {
                                     panic!("Unconfirmed or Unvalidated identity in genesis")
                                 }
-                                IdtyStatus::Member => expires_on.expect("must have expires_on set"),
-                                IdtyStatus::Revoked => 0,
-                                IdtyStatus::NotMember => {
-                                    revokes_on.expect("must have revokes_on set")
-                                }
+                                IdtyStatus::Member => 0,
+                                IdtyStatus::Revoked => common_parameters.as_ref().expect("must have common_parameters").identity_deletion_period,
+                                IdtyStatus::NotMember => revokes_on.expect("must have revokes_on set"),
                             },
                             status,
                         },
diff --git a/node/src/chain_spec/gdev.rs b/node/src/chain_spec/gdev.rs
index 5b4a27c1d..8f9371817 100644
--- a/node/src/chain_spec/gdev.rs
+++ b/node/src/chain_spec/gdev.rs
@@ -79,6 +79,7 @@ fn get_parameters(parameters_from_file: &Option<GenesisParameters>) -> CommonPar
         identity_change_owner_key_period: parameters::ChangeOwnerKeyPeriod::get(),
         identity_idty_creation_period: parameters_from_file.idty_creation_period,
         identity_autorevocation_period: parameters::AutorevocationPeriod::get(),
+        identity_deletion_period: parameters::DeletionPeriod::get(),
         membership_membership_period: parameters_from_file.membership_period,
         membership_membership_renewal_period: parameters_from_file.membership_renewal_period,
         cert_max_by_issuer: parameters_from_file.cert_max_by_issuer,
@@ -231,7 +232,7 @@ fn genesis_data_to_gdev_genesis_conf(
         initial_monetary_mass,
         memberships,
         parameters,
-        common_parameters: _,
+        common_parameters,
         session_keys_map,
         initial_smiths,
         sudo_key,
@@ -278,7 +279,7 @@ fn genesis_data_to_gdev_genesis_conf(
                          name,
                          owner_key,
                          status,
-                         expires_on,
+                         expires_on: _,
                          revokes_on,
                      }| GenesisIdty {
                         index: idty_index,
@@ -290,13 +291,11 @@ fn genesis_data_to_gdev_genesis_conf(
                             owner_key,
                             next_scheduled: match status {
                                 IdtyStatus::Unconfirmed | IdtyStatus::Unvalidated => {
-                                    panic!("Unconfirmed or Unvalidated identity in genesis")
-                                }
-                                IdtyStatus::Member => expires_on.expect("must have expires_on set"),
-                                IdtyStatus::Revoked => 0,
-                                IdtyStatus::NotMember => {
-                                    revokes_on.expect("must have revokes_on set")
+                                    panic!("Unconfirmed or Unvalidated or Revoked identity in genesis")
                                 }
+                                IdtyStatus::Member => 0,
+                                IdtyStatus::Revoked => common_parameters.as_ref().expect("must have common_parameters").identity_deletion_period,
+                                IdtyStatus::NotMember => revokes_on.expect("must have revokes_on set"),
                             },
                             status,
                         },
diff --git a/node/src/chain_spec/gen_genesis_data.rs b/node/src/chain_spec/gen_genesis_data.rs
index 72a7a0dc6..f9ca6f0ab 100644
--- a/node/src/chain_spec/gen_genesis_data.rs
+++ b/node/src/chain_spec/gen_genesis_data.rs
@@ -1759,7 +1759,14 @@ where
         initial_authorities,
         initial_monetary_mass: initial_identities_len as u64 * initial_idty_balance,
         memberships: (1..=initial_identities.len())
-            .map(|i| (i as u32, MembershipData { expire_on: 0 }))
+            .map(|i| {
+                (
+                    i as u32,
+                    MembershipData {
+                        expire_on: common_parameters.membership_membership_period,
+                    },
+                )
+            })
             .collect(),
         parameters,
         common_parameters: None,
@@ -1935,6 +1942,7 @@ pub struct CommonParameters {
     pub identity_change_owner_key_period: u32,
     pub identity_idty_creation_period: u32,
     pub identity_autorevocation_period: u32,
+    pub identity_deletion_period: u32,
     pub membership_membership_period: u32,
     pub membership_membership_renewal_period: u32,
     pub cert_cert_period: u32,
diff --git a/node/src/chain_spec/gtest.rs b/node/src/chain_spec/gtest.rs
index 930d5ea75..c654aa050 100644
--- a/node/src/chain_spec/gtest.rs
+++ b/node/src/chain_spec/gtest.rs
@@ -241,7 +241,7 @@ fn genesis_data_to_gtest_genesis_conf(
         initial_monetary_mass,
         memberships,
         parameters: _,
-        common_parameters: _,
+        common_parameters,
         session_keys_map,
         initial_smiths,
         sudo_key,
@@ -285,7 +285,7 @@ fn genesis_data_to_gtest_genesis_conf(
                          name,
                          owner_key,
                          status,
-                         expires_on,
+                         expires_on: _,
                          revokes_on,
                      }| GenesisIdty {
                         index: idty_index,
@@ -299,11 +299,9 @@ fn genesis_data_to_gtest_genesis_conf(
                                 IdtyStatus::Unconfirmed | IdtyStatus::Unvalidated => {
                                     panic!("Unconfirmed or Unvalidated identity in genesis")
                                 }
-                                IdtyStatus::Member => expires_on.expect("must have expires_on set"),
-                                IdtyStatus::Revoked => 0,
-                                IdtyStatus::NotMember => {
-                                    revokes_on.expect("must have revokes_on set")
-                                }
+                                IdtyStatus::Member => 0,
+                                IdtyStatus::Revoked => common_parameters.as_ref().expect("must have common_parameters").identity_deletion_period,
+                                IdtyStatus::NotMember => revokes_on.expect("must have revokes_on set"),
                             },
                             status,
                         },
diff --git a/runtime/common/src/pallets_config.rs b/runtime/common/src/pallets_config.rs
index 119e0ce1a..b5cbe75c7 100644
--- a/runtime/common/src/pallets_config.rs
+++ b/runtime/common/src/pallets_config.rs
@@ -454,7 +454,6 @@ macro_rules! pallets_config {
 
         parameter_types! {
             pub const ValidationPeriod: BlockNumber = 2 * MONTHS;
-            pub const DeletionPeriod: BlockNumber = 10 * YEARS;
         }
         impl pallet_identity::Config for Runtime {
             type AccountLinker = Account;
diff --git a/runtime/g1/src/parameters.rs b/runtime/g1/src/parameters.rs
index ee768989c..d787eb5bf 100644
--- a/runtime/g1/src/parameters.rs
+++ b/runtime/g1/src/parameters.rs
@@ -112,6 +112,7 @@ parameter_types! {
     pub const IdtyCreationPeriod: BlockNumber = MONTHS;
     pub const ValidationPeriod: BlockNumber = YEARS;
     pub const AutorevocationPeriod: BlockNumber = YEARS;
+    pub const DeletionPeriod: BlockNumber = 10 * YEARS;
 }
 
 // Membership
diff --git a/runtime/gdev/src/parameters.rs b/runtime/gdev/src/parameters.rs
index 0b7083313..860d63696 100644
--- a/runtime/gdev/src/parameters.rs
+++ b/runtime/gdev/src/parameters.rs
@@ -92,6 +92,7 @@ parameter_types! {
 frame_support::parameter_types! {
     pub const ChangeOwnerKeyPeriod: BlockNumber = 7 * DAYS;
     pub const AutorevocationPeriod: BlockNumber = YEARS;
+    pub const DeletionPeriod: BlockNumber = 10 * YEARS;
 }
 
 // Membership
diff --git a/runtime/gtest/src/parameters.rs b/runtime/gtest/src/parameters.rs
index 6295b34bc..307f59b19 100644
--- a/runtime/gtest/src/parameters.rs
+++ b/runtime/gtest/src/parameters.rs
@@ -105,6 +105,7 @@ parameter_types! {
     pub const ConfirmPeriod: BlockNumber = DAYS;
     pub const IdtyCreationPeriod: BlockNumber = DAYS;
     pub const AutorevocationPeriod: BlockNumber = YEARS;
+    pub const DeletionPeriod: BlockNumber = 10 * YEARS;
 }
 
 // Membership
-- 
GitLab