Skip to content
Snippets Groups Projects

some chain spec stuff

Merged Éloïs requested to merge elois-chain-spec into master
2 files
+ 32
2
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -21,6 +21,8 @@ use std::collections::BTreeMap;
type MembershipData = sp_membership::MembershipData<u32>;
const EXISTENTIAL_DEPOSIT: u64 = 100;
#[derive(Clone)]
pub struct GenesisData<Parameters: DeserializeOwned, SessionKeys: Decode> {
pub accounts: BTreeMap<AccountId, GenesisAccountData<u64>>,
@@ -57,6 +59,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 +137,7 @@ where
parameters,
identities,
smith_identities,
wallets,
} = genesis_config;
// MONEY AND WOT //
@@ -145,13 +150,31 @@ 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));
}
// Money
let balance = if identity.balance >= 100 {
let balance = if identity.balance >= EXISTENTIAL_DEPOSIT {
identity.balance
} else {
//total_dust += identity.balance;
@@ -221,6 +244,13 @@ where
.get(&idty_name)
.ok_or(format!("Identity '{}' not exist", &idty_name))?;
if identity.balance < EXISTENTIAL_DEPOSIT {
return Err(format!(
"Identity '{}' have balance '{}' < EXISTENTIAL_DEPOSIT",
idty_name, identity.balance,
));
}
// Initial authorities
initial_authorities.insert(*idty_index, (identity.pubkey.clone(), smith_data.authority));
Loading