From 4249248e596a85d1d07434c6ca95489aac496bc3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=89lo=C3=AFs?= <c@elo.tf>
Date: Mon, 15 Aug 2022 22:52:35 +0200
Subject: [PATCH] Resolve "Get ParamsAppliedAtGenesis values from json genesis
 conf" (nodes/rust/duniter-v2s!96)

* fix(binary):  get ParamsAppliedAtGenesis values from json genesis conf
---
 end2end-tests/cucumber-genesis/default.json |  8 ++++++++
 end2end-tests/cucumber-genesis/wot.json     |  8 ++++++++
 node/src/chain_spec/gdev.rs                 | 16 ---------------
 node/src/chain_spec/gen_genesis_data.rs     | 22 ++++++++++-----------
 resources/gdev.json                         |  8 ++++++++
 5 files changed, 35 insertions(+), 27 deletions(-)

diff --git a/end2end-tests/cucumber-genesis/default.json b/end2end-tests/cucumber-genesis/default.json
index 7eb7b1392..9b59a9153 100644
--- a/end2end-tests/cucumber-genesis/default.json
+++ b/end2end-tests/cucumber-genesis/default.json
@@ -1,6 +1,14 @@
 {
   "first_ud": 1000,
   "first_ud_reeval": 100,
+  "genesis_parameters": {
+    "genesis_certs_expire_on": 100000,
+    "genesis_certs_min_received": 2,
+    "genesis_memberships_expire_on": 100000,
+    "genesis_smith_certs_expire_on": 100000,
+    "genesis_smith_certs_min_received": 2,
+    "genesis_smith_memberships_expire_on": 100000
+  },
   "identities": {
     "Alice": {
       "balance": 1000,
diff --git a/end2end-tests/cucumber-genesis/wot.json b/end2end-tests/cucumber-genesis/wot.json
index f4048b0b1..ac93ccc96 100644
--- a/end2end-tests/cucumber-genesis/wot.json
+++ b/end2end-tests/cucumber-genesis/wot.json
@@ -1,6 +1,14 @@
 {
   "first_ud": 1000,
   "first_ud_reeval": 100,
+  "genesis_parameters": {
+    "genesis_certs_expire_on": 100000,
+    "genesis_certs_min_received": 2,
+    "genesis_memberships_expire_on": 100000,
+    "genesis_smith_certs_expire_on": 100000,
+    "genesis_smith_certs_min_received": 2,
+    "genesis_smith_memberships_expire_on": 100000
+  },
   "identities": {
     "Alice": {
       "balance": 1000,
diff --git a/node/src/chain_spec/gdev.rs b/node/src/chain_spec/gdev.rs
index 04ede2da9..6836f23d3 100644
--- a/node/src/chain_spec/gdev.rs
+++ b/node/src/chain_spec/gdev.rs
@@ -96,14 +96,6 @@ pub fn development_chain_spec() -> Result<ChainSpec, String> {
                 )
             },
             Some(get_authority_keys_from_seed("Alice").encode()),
-            Some(super::gen_genesis_data::ParamsAppliedAtGenesis {
-                genesis_certs_expire_on: 100_000,
-                genesis_certs_min_received: 2,
-                genesis_memberships_expire_on: 100_000,
-                genesis_smith_certs_expire_on: 100_000,
-                genesis_smith_certs_min_received: 2,
-                genesis_smith_memberships_expire_on: 100_000,
-            }),
         )
     } else {
         Ok(ChainSpec::from_genesis(
@@ -191,14 +183,6 @@ pub fn gen_live_conf() -> Result<ChainSpec, String> {
             )
         },
         None,
-        Some(super::gen_genesis_data::ParamsAppliedAtGenesis {
-            genesis_certs_expire_on: 2_102_400,
-            genesis_certs_min_received: 3,
-            genesis_memberships_expire_on: 1_051_200,
-            genesis_smith_certs_expire_on: 2_102_400,
-            genesis_smith_certs_min_received: 3,
-            genesis_smith_memberships_expire_on: 1_051_200,
-        }),
     )
 }
 
diff --git a/node/src/chain_spec/gen_genesis_data.rs b/node/src/chain_spec/gen_genesis_data.rs
index fccfe574c..1b47ee55d 100644
--- a/node/src/chain_spec/gen_genesis_data.rs
+++ b/node/src/chain_spec/gen_genesis_data.rs
@@ -41,7 +41,7 @@ pub struct GenesisData<Parameters: DeserializeOwned, SessionKeys: Decode> {
     pub technical_committee_members: Vec<AccountId>,
 }
 
-#[derive(Default)]
+#[derive(Default, Deserialize, Serialize)]
 pub struct ParamsAppliedAtGenesis {
     pub genesis_certs_expire_on: u32,
     pub genesis_certs_min_received: u32,
@@ -55,6 +55,7 @@ pub struct ParamsAppliedAtGenesis {
 struct GenesisConfig<Parameters> {
     first_ud: u64,
     first_ud_reeval: u32,
+    genesis_parameters: ParamsAppliedAtGenesis,
     identities: BTreeMap<String, Idty>,
     #[serde(default)]
     parameters: Parameters,
@@ -87,22 +88,12 @@ struct SmithData {
 pub fn generate_genesis_data<CS, P, SK, F>(
     f: F,
     maybe_force_authority: Option<Vec<u8>>,
-    params_applied_at_genesis: Option<ParamsAppliedAtGenesis>,
 ) -> Result<CS, String>
 where
     P: Default + DeserializeOwned,
     SK: Decode,
     F: Fn(GenesisData<P, SK>) -> CS,
 {
-    let ParamsAppliedAtGenesis {
-        genesis_certs_expire_on,
-        genesis_certs_min_received,
-        genesis_memberships_expire_on,
-        genesis_smith_certs_expire_on,
-        genesis_smith_certs_min_received,
-        genesis_smith_memberships_expire_on,
-    } = params_applied_at_genesis.unwrap_or_default();
-
     let genesis_timestamp: u64 =
         if let Ok(genesis_timestamp) = std::env::var("DUNITER_GENESIS_TIMESTAMP") {
             genesis_timestamp
@@ -137,6 +128,15 @@ where
         sudo_key,
         first_ud,
         first_ud_reeval,
+        genesis_parameters:
+            ParamsAppliedAtGenesis {
+                genesis_certs_expire_on,
+                genesis_certs_min_received,
+                genesis_memberships_expire_on,
+                genesis_smith_certs_expire_on,
+                genesis_smith_certs_min_received,
+                genesis_smith_memberships_expire_on,
+            },
         parameters,
         identities,
         smith_identities,
diff --git a/resources/gdev.json b/resources/gdev.json
index ea5d8bb38..aa09f2d51 100644
--- a/resources/gdev.json
+++ b/resources/gdev.json
@@ -1,6 +1,14 @@
 {
   "first_ud": 10000,
   "first_ud_reeval": 100800,
+  "genesis_parameters": {
+    "genesis_certs_expire_on": 2102400,
+    "genesis_certs_min_received": 3,
+    "genesis_memberships_expire_on": 1051200,
+    "genesis_smith_certs_expire_on": 2102400,
+    "genesis_smith_certs_min_received": 3,
+    "genesis_smith_memberships_expire_on": 1051200
+  },
   "identities": {
     "Elois": {
       "balance": 10000,
-- 
GitLab