From c065c2128ea87745cdd69f509a7e47f599d3e5a4 Mon Sep 17 00:00:00 2001 From: Edwin Wang Date: Wed, 7 Jul 2021 20:11:05 +0800 Subject: [PATCH 1/2] update chain spec --- node/service/src/chain_spec/asgard.rs | 100 ++++++++++++------------- node/service/src/chain_spec/bifrost.rs | 32 ++++++++ node/service/src/chain_spec/mod.rs | 73 +----------------- 3 files changed, 82 insertions(+), 123 deletions(-) diff --git a/node/service/src/chain_spec/asgard.rs b/node/service/src/chain_spec/asgard.rs index 021aa4b069..fbb864ff96 100644 --- a/node/service/src/chain_spec/asgard.rs +++ b/node/service/src/chain_spec/asgard.rs @@ -16,8 +16,6 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -use std::collections::BTreeMap; - use asgard_runtime::{ constants::{currency::DOLLARS, time::DAYS}, AccountId, AuraId, Balance, BalancesConfig, BancorConfig, BlockNumber, CollatorSelectionConfig, @@ -34,9 +32,7 @@ use sp_core::{crypto::UncheckedInto, sr25519}; use sp_runtime::{traits::Zero, Permill}; use super::TELEMETRY_URL; -use crate::chain_spec::{ - get_account_id_from_seed, get_from_seed, testnet_accounts, RelayExtensions, -}; +use crate::chain_spec::{get_account_id_from_seed, get_from_seed, RelayExtensions}; const DEFAULT_PROTOCOL_ID: &str = "asgard"; @@ -143,7 +139,7 @@ fn development_config_genesis(id: ParaId) -> GenesisConfig { let endowed_accounts = vec![get_account_id_from_seed::("Alice")]; let balances = endowed_accounts .iter() - .chain(super::faucet_accounts().iter()) + .chain(faucet_accounts().iter()) .cloned() .map(|x| (x, ENDOWMENT)) .collect(); @@ -154,7 +150,7 @@ fn development_config_genesis(id: ParaId) -> GenesisConfig { .collect(); let tokens = endowed_accounts .iter() - .chain(super::faucet_accounts().iter()) + .chain(faucet_accounts().iter()) .flat_map(|x| { vec![ (x.clone(), CurrencyId::Stable(TokenSymbol::AUSD), ENDOWMENT * 10_000), @@ -193,10 +189,23 @@ pub fn development_config(id: ParaId) -> Result { } fn local_config_genesis(id: ParaId) -> GenesisConfig { - let endowed_accounts = testnet_accounts(); + let endowed_accounts = vec![ + get_account_id_from_seed::("Alice"), + get_account_id_from_seed::("Bob"), + get_account_id_from_seed::("Charlie"), + get_account_id_from_seed::("Dave"), + get_account_id_from_seed::("Eve"), + get_account_id_from_seed::("Ferdie"), + get_account_id_from_seed::("Alice//stash"), + get_account_id_from_seed::("Bob//stash"), + get_account_id_from_seed::("Charlie//stash"), + get_account_id_from_seed::("Dave//stash"), + get_account_id_from_seed::("Eve//stash"), + get_account_id_from_seed::("Ferdie//stash"), + ]; let balances = endowed_accounts .iter() - .chain(super::faucet_accounts().iter()) + .chain(faucet_accounts().iter()) .cloned() .map(|x| (x, ENDOWMENT)) .collect(); @@ -207,7 +216,7 @@ fn local_config_genesis(id: ParaId) -> GenesisConfig { .collect(); let tokens = endowed_accounts .iter() - .chain(super::faucet_accounts().iter()) + .chain(faucet_accounts().iter()) .flat_map(|x| { vec![ (x.clone(), CurrencyId::Stable(TokenSymbol::AUSD), ENDOWMENT * 10_000), @@ -296,52 +305,19 @@ fn asgard_config_genesis(id: ParaId) -> GenesisConfig { ] .into(); - let exe_dir = { - let mut exe_dir = std::env::current_exe().unwrap(); - exe_dir.pop(); - - exe_dir - }; - - let balances_configs: Vec = - super::config_from_json_files(exe_dir.join("res/genesis_config/balances")).unwrap(); - - let mut total_issuance: Balance = Zero::zero(); - let balances = balances_configs - .into_iter() - .flat_map(|bc| bc.balances) - .chain( - super::faucet_accounts() - .into_iter() - .map(|x| (x, ENDOWMENT)) - .collect::>(), - ) - .fold(BTreeMap::::new(), |mut acc, (account_id, amount)| { - if let Some(balance) = acc.get_mut(&account_id) { - *balance = balance - .checked_add(amount) - .expect("balance cannot overflow when building genesis"); - } else { - acc.insert(account_id.clone(), amount); - } - - total_issuance = total_issuance - .checked_add(amount) - .expect("total insurance cannot overflow when building genesis"); - acc - }) + let balances = faucet_accounts() .into_iter() - .collect(); - - // assert_eq!(total_issuance, 32_000_000 * DOLLARS, "total issuance must be equal to 320 - // million");} + .map(|x| (x, ENDOWMENT)) + .collect::>(); - let vesting_configs: Vec = - super::config_from_json_files(exe_dir.join("res/genesis_config/vesting")).unwrap(); - let endowed_accounts = vec![get_account_id_from_seed::("Alice")]; + let vesting_configs: Vec = vec![]; + let endowed_accounts = vec![ + get_account_id_from_seed::("Alice"), + get_account_id_from_seed::("Bob"), + ]; let tokens = endowed_accounts .iter() - .chain(super::faucet_accounts().iter()) + .chain(faucet_accounts().iter()) .flat_map(|x| { vec![ (x.clone(), CurrencyId::Stable(TokenSymbol::AUSD), ENDOWMENT * 10_000), @@ -361,3 +337,23 @@ fn asgard_config_genesis(id: ParaId) -> GenesisConfig { tokens, ) } + +pub fn faucet_accounts() -> Vec { + vec![ + hex!["ce6072037670ca8e974fd571eae4f215a58d0bf823b998f619c3f87a911c3541"].into(), /* asgard sudo account */ + hex!["a2d57b8e781327bd2853b36e6f290bd8beeaa850971c9b0789ec4969f8beb01b"].into(), /* bifrost-faucet */ + hex!["a272fa6e2282767b61a299e81023d44ef583c640fef99b0bafe216399775cd17"].into(), + hex!["56f6e7bb0826cd128672ad3a03016533834123c319adc635c6db595c6f72272e"].into(), + hex!["7e9005c247601a0d0e967f68b03f6e39e402a735ec65c20e4965c6d94a22e42f"].into(), + hex!["f2449dfbb431a5f9e8dc7468e5f3521baff4c0125edcda746f38df5295d5fb28"].into(), + hex!["aaa565b52ea12bf3c8d7abb79411976bccd8054c5581922acc0165ad88640f09"].into(), + hex!["8afadc065940f22f73b745aab694b1b20cafea3d4e52adad844f581614fbdd00"].into(), + hex!["0831325e2b4953f247db9df3f6452becbf23d8f7f806c0396ad853cb3c284d06"].into(), + hex!["7ea84934a575487fb02c44e01f4488c2f242cdbf48052630780dcd8ac567950c"].into(), + hex!["ee05492a82cb982392aad78f7e6f6fff56eaee4988fd9961ebb84e177dd6526d"].into(), /* bifrost-faucet */ + hex!["7435653321694ee115e8cea8c8e117c0b6703b6fb91298b6df5adeef7679a46f"].into(), /* danny testing account */ + hex!["263c78393f33b23cd23f3211726b2316e950910749d20c1552ea6972091a645e"].into(), /* jianbo testing account */ + hex!["803feefeab8e5c81c3d268038b6c494d3018714fc8c5d08cf027111fd8114b06"].into(), /* tieqiao testing account */ + hex!["8898ffd2cb04fb751655ede7bc0081b6b6ebe13cd0bdee5bbb9273e6dcc9b91c"].into(), /* tyrone testing account */ + ] +} diff --git a/node/service/src/chain_spec/bifrost.rs b/node/service/src/chain_spec/bifrost.rs index 0cb09e0226..ee79f7b20b 100644 --- a/node/service/src/chain_spec/bifrost.rs +++ b/node/service/src/chain_spec/bifrost.rs @@ -16,6 +16,11 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +use std::{ + fs::{read_dir, File}, + path::PathBuf, +}; + use bifrost_runtime::{ constants::currency::DOLLARS, AccountId, AuraId, Balance, BalancesConfig, BlockNumber, CollatorSelectionConfig, GenesisConfig, IndicesConfig, ParachainInfoConfig, SessionConfig, @@ -23,8 +28,11 @@ use bifrost_runtime::{ }; use cumulus_primitives_core::ParaId; use hex_literal::hex; +use sc_chain_spec::{ChainSpecExtension, ChainSpecGroup}; use sc_service::ChainType; use sc_telemetry::TelemetryEndpoints; +use serde::{de::DeserializeOwned, Deserialize, Serialize}; +use serde_json as json; use sp_core::{crypto::UncheckedInto, sr25519}; use sp_runtime::traits::Zero; @@ -249,3 +257,27 @@ fn bifrost_config_genesis(id: ParaId) -> GenesisConfig { id, ) } + +fn config_from_json_file(path: PathBuf) -> Result { + let file = File::open(&path).map_err(|e| format!("Error opening genesis config: {}", e))?; + + let config = + json::from_reader(file).map_err(|e| format!("Error parsing config file: {}", e))?; + + Ok(config) +} + +fn config_from_json_files(dir: PathBuf) -> Result, String> { + let mut configs = vec![]; + + let iter = read_dir(&dir).map_err(|e| format!("Error opening directory: {}", e))?; + for entry in iter { + let path = entry.map_err(|e| format!("{}", e))?.path(); + + if !path.is_dir() { + configs.push(config_from_json_file(path)?); + } + } + + Ok(configs) +} diff --git a/node/service/src/chain_spec/mod.rs b/node/service/src/chain_spec/mod.rs index aa74a54baa..70252e7c87 100644 --- a/node/service/src/chain_spec/mod.rs +++ b/node/service/src/chain_spec/mod.rs @@ -21,17 +21,10 @@ pub mod asgard; #[cfg(feature = "with-bifrost-runtime")] pub mod bifrost; -use std::{ - fs::{read_dir, File}, - path::PathBuf, -}; - -use hex_literal::hex; pub use node_primitives::{AccountId, Block, Signature}; use sc_chain_spec::{ChainSpecExtension, ChainSpecGroup}; -use serde::{de::DeserializeOwned, Deserialize, Serialize}; -use serde_json as json; -use sp_core::{sr25519, Pair, Public}; +use serde::{Deserialize, Serialize}; +use sp_core::{Pair, Public}; use sp_runtime::traits::{IdentifyAccount, Verify}; pub const TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/"; @@ -82,65 +75,3 @@ where { AccountPublic::from(get_from_seed::(seed)).into_account() } - -#[allow(dead_code)] -fn testnet_accounts() -> Vec { - vec![ - get_account_id_from_seed::("Alice"), - get_account_id_from_seed::("Bob"), - get_account_id_from_seed::("Charlie"), - get_account_id_from_seed::("Dave"), - get_account_id_from_seed::("Eve"), - get_account_id_from_seed::("Ferdie"), - get_account_id_from_seed::("Alice//stash"), - get_account_id_from_seed::("Bob//stash"), - get_account_id_from_seed::("Charlie//stash"), - get_account_id_from_seed::("Dave//stash"), - get_account_id_from_seed::("Eve//stash"), - get_account_id_from_seed::("Ferdie//stash"), - ] -} - -pub fn faucet_accounts() -> Vec { - vec![ - hex!["ce6072037670ca8e974fd571eae4f215a58d0bf823b998f619c3f87a911c3541"].into(), /* asgard sudo account */ - hex!["a2d57b8e781327bd2853b36e6f290bd8beeaa850971c9b0789ec4969f8beb01b"].into(), /* bifrost-faucet */ - hex!["a272fa6e2282767b61a299e81023d44ef583c640fef99b0bafe216399775cd17"].into(), - hex!["56f6e7bb0826cd128672ad3a03016533834123c319adc635c6db595c6f72272e"].into(), - hex!["7e9005c247601a0d0e967f68b03f6e39e402a735ec65c20e4965c6d94a22e42f"].into(), - hex!["f2449dfbb431a5f9e8dc7468e5f3521baff4c0125edcda746f38df5295d5fb28"].into(), - hex!["aaa565b52ea12bf3c8d7abb79411976bccd8054c5581922acc0165ad88640f09"].into(), - hex!["8afadc065940f22f73b745aab694b1b20cafea3d4e52adad844f581614fbdd00"].into(), - hex!["0831325e2b4953f247db9df3f6452becbf23d8f7f806c0396ad853cb3c284d06"].into(), - hex!["7ea84934a575487fb02c44e01f4488c2f242cdbf48052630780dcd8ac567950c"].into(), - hex!["ee05492a82cb982392aad78f7e6f6fff56eaee4988fd9961ebb84e177dd6526d"].into(), /* bifrost-faucet */ - hex!["7435653321694ee115e8cea8c8e117c0b6703b6fb91298b6df5adeef7679a46f"].into(), /* danny testing account */ - hex!["263c78393f33b23cd23f3211726b2316e950910749d20c1552ea6972091a645e"].into(), /* jianbo testing account */ - hex!["803feefeab8e5c81c3d268038b6c494d3018714fc8c5d08cf027111fd8114b06"].into(), /* tieqiao testing account */ - hex!["8898ffd2cb04fb751655ede7bc0081b6b6ebe13cd0bdee5bbb9273e6dcc9b91c"].into(), /* tyrone testing account */ - ] -} - -fn config_from_json_file(path: PathBuf) -> Result { - let file = File::open(&path).map_err(|e| format!("Error opening genesis config: {}", e))?; - - let config = - json::from_reader(file).map_err(|e| format!("Error parsing config file: {}", e))?; - - Ok(config) -} - -fn config_from_json_files(dir: PathBuf) -> Result, String> { - let mut configs = vec![]; - - let iter = read_dir(&dir).map_err(|e| format!("Error opening directory: {}", e))?; - for entry in iter { - let path = entry.map_err(|e| format!("{}", e))?.path(); - - if !path.is_dir() { - configs.push(config_from_json_file(path)?); - } - } - - Ok(configs) -} From a826827095953082c0c2736e1689ffa7ed3c9dac Mon Sep 17 00:00:00 2001 From: Edwin Wang Date: Wed, 7 Jul 2021 20:49:50 +0800 Subject: [PATCH 2/2] fix --- node/service/src/chain_spec/bifrost.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/node/service/src/chain_spec/bifrost.rs b/node/service/src/chain_spec/bifrost.rs index ee79f7b20b..12d3549480 100644 --- a/node/service/src/chain_spec/bifrost.rs +++ b/node/service/src/chain_spec/bifrost.rs @@ -220,7 +220,7 @@ fn bifrost_config_genesis(id: ParaId) -> GenesisConfig { }; let balances_configs: Vec = - super::config_from_json_files(exe_dir.join("res/genesis_config/balances")).unwrap(); + config_from_json_files(exe_dir.join("res/genesis_config/balances")).unwrap(); let mut total_issuance: Balance = Zero::zero(); let balances = balances_configs @@ -246,7 +246,7 @@ fn bifrost_config_genesis(id: ParaId) -> GenesisConfig { assert_eq!(total_issuance, 32_000_000 * DOLLARS, "total issuance must be equal to 320 million"); let vesting_configs: Vec = - super::config_from_json_files(exe_dir.join("res/genesis_config/vesting")).unwrap(); + config_from_json_files(exe_dir.join("res/genesis_config/vesting")).unwrap(); use sp_core::sp_std::collections::btree_map::BTreeMap; bifrost_genesis(