From 2a381814a3def2c8669c3bcdf2ad625ed9d527cb Mon Sep 17 00:00:00 2001
From: librelois <c@elo.tf>
Date: Mon, 11 Apr 2022 20:55:54 +0200
Subject: [PATCH] feat(chain-spec): handle simple wallets

---
 node/src/chain_spec/gen_genesis_data.rs | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/node/src/chain_spec/gen_genesis_data.rs b/node/src/chain_spec/gen_genesis_data.rs
index 492402a34..f799b081f 100644
--- a/node/src/chain_spec/gen_genesis_data.rs
+++ b/node/src/chain_spec/gen_genesis_data.rs
@@ -57,6 +57,8 @@ struct GenesisConfig<Parameters> {
     #[serde(rename = "smiths")]
     smith_identities: BTreeMap<String, SmithData>,
     sudo_key: Option<AccountId>,
+    #[serde(default)]
+    wallets: BTreeMap<AccountId, u64>,
 }
 
 #[derive(Clone, Deserialize, Serialize)]
@@ -133,6 +135,7 @@ where
         parameters,
         identities,
         smith_identities,
+        wallets,
     } = genesis_config;
 
     // MONEY AND WOT //
@@ -145,6 +148,24 @@ where
     let mut memberships = BTreeMap::new();
     //let mut total_dust = 0;
     let mut ud_accounts = BTreeMap::new();
+
+    // SIMPLE WALLETS //
+
+    let mut wallet_index: u32 = 0;
+    for (pubkey, balance) in wallets {
+        wallet_index += 1;
+        accounts.insert(
+            pubkey.clone(),
+            GenesisAccountData {
+                random_id: H256(blake2_256(&(wallet_index, &pubkey).encode())),
+                balance,
+                is_identity: false,
+            },
+        );
+    }
+
+    // IDENTITIES //
+
     for (idty_name, identity) in &identities {
         if !validate_idty_name(idty_name) {
             return Err(format!("Identity name '{}' is invalid", &idty_name));
-- 
GitLab